Skip to content

wpcodefactory/wholesale-pricing-woocommerce

Repository files navigation

=== Price by Quantity & Bulk Quantity Discounts for WooCommerce ===
Contributors: wpcodefactory, algoritmika, anbinder, karzin, omardabbas
Tags: woocommerce, product price by quantity, price by quantity, dynamic product pricing, dynamic pricing
Requires at least: 4.4
Tested up to: 6.7
Stable tag: 4.0.0
License: GNU General Public License v3.0
License URI: http://www.gnu.org/licenses/gpl-3.0.html

Unlock advanced dynamic/tiered pricing strategies with quantity-based discounts. Optimize bulk pricing for increased savings and customer satisfaction

== Description ==

> “EXCELLENT PLUGIN AND TOP SUPPORT: The plugin has the features I was looking for, great integration with WooCommerce and easy and flexible configuration. I asked for support for some variations: professional and precise response and quick solution. Fully satisfied. TOP!” – ⭐⭐⭐⭐⭐ [gio61](https://wordpress.org/support/topic/excellent-plugin-and-top-support-4/)

[Main Page](https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "Main Page") | [Demo](https://dynamicpricing.instawp.xyz/ "Demo") | [Support Forum](https://wpfactory.com/support/item/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "Support Forum") | [Documentation & How to](https://wpfactory.com/docs/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "Documentation & How to")


Introducing Quantity Dynamic Pricing & Bulk Discounts for WooCommerce plugin, the game-changer your store needs.
Tired of manual price adjustments? Our plugin empowers you to effortlessly implement quantity discounts, tiered/volume pricing, and dynamic pricing strategies with ease.

Picture this: You've got a range of products in your store, each offering different price points depending on the quantity purchased. But managing these bulk discounts by coupons or -worse- manually  can be a headache, leading to inconsistencies and missed opportunities. That's where our plugin steps in.

Whether you prefer to base discounts on total cart quantity or individual product quantity, our plugin caters to your needs. Plus, you have the option to apply wholesale discounts only when no other cart discounts are present. Choose from a range of discount types, including percentage discounts, fixed discounts, or set prices per product, and much more.

## 🚀 Main Features: FREE Version##

### 🚀 Flexible Dynamic Pricing Strategies ###

Implement popular "buy more pay less" or less common "buy more pay more" pricing strategies.
For example, offer discounts for purchasing multiple units of a product.

### 🚀 Customizable Pricing Rules: By Product or at Once ###

Exercise granular control over pricing rules, allowing you to set rules for all products or customize them on a per-product basis for maximum flexibility.

### 🚀 Cart vs. Product Quantity Discount ###

Determine whether discounts should be based on total cart quantity or individual product quantity, ensuring discounts are applied according to your preferred criteria.
For example, offer a $5 discount per unit for Product A or a 10% discount on the total cart quantity exceeding 10 units.

### 🚀 Select When to Apply Discount ###

Decide whether quantity discounts & dynamic prices should only apply when no other cart discounts are present to prevent conflicting discount scenarios and/or mis-using your promotions.

### 🚀 Multiple Discounts Types ###

Choose from a variety of discounting methods, including percentage discounts, fixed discounts, or direct price adjustments per product, to suit your pricing strategy.

### 🚀 Apply Discounts by User Role ###

Tailor pricing options based on user roles, enabling you to create custom pricing structures for different user segments and enhance customer segmentation strategies.

### 🚀 Show Tiered Prices Table on Product Page ###

The free version allows displaying price tables on the frontend using simple shortcodes like `[alg_wc_ppq_table]` and `[alg_wc_product_ppq_table]`, so that you can provide transparent pricing information to your customers for informed purchasing decisions.

### 🚀 Show Saving & Discounts for Products in Cart ###

Show discount pricing information alongside each cart item, you can also utilize placeholders like `discount_percent`, `new_price_single`, and `old_price_single` to provide detailed insights into discounts applied to each item in the cart.

### 🚀 Show Total Price by Quantity in Real-Time ###

Instantly showcase the “Total Price by Quantity” on the product page and make prices clear based on the chosen quantity, you can also select to show the dynamic price instead/after/before the default standard price.
For example, on a $10 product where you sell it at $9 for quantities 20 & above, when a customer select quantity of 15, it shows $150 for 15 %unit%, and when they go 20, it shows $180 for 20 %unit%.

### 🚀 WCFM & WPML Compatible ###

* Multi-currency support with WordPress Multilingual (WPML) plugin, enabling you to display prices in multiple currencies to cater to an international customer base.
* Compatible with WCFM Marketplace to allow vendors to create tiered pricing strategies.
* High-Performance Order Storage (HPOS) compatible

### 🚀 Admin Tools ###

**Delete All Settings:**
The plugin has a small tool where you can delete all "per product" settings & values for your entire store, as well as deleting plugin values of product categories & tags.

**Reports:**
In a simple & organized view, you can see all dynamic prices you've applied to your products, product categories, or tags.


> “Amazing plugin and Great Support: I recommend this plugin, do what it has to do, and more! The support is great, they also listen to any improvement request and deploy great updates!” – ⭐⭐⭐⭐⭐ [jhdezc](https://wordpress.org/support/topic/amazing-plugin-and-great-support-22/)

> “Great and very useful for WCFM: This plugin is great and very useful, and the support is greater. Thanks for adding WCFM.” – ⭐⭐⭐⭐⭐  [mamunag8](https://wordpress.org/support/topic/great-and-very-useful-for-wcfm/)

## 🏆 Do More: PRO Version##

We have more, if you want to go further, you can get the premium version of [Quantity Dynamic Pricing & Bulk Discounts for WooCommerce](https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme) plugin.

### 🏆 Dynamic Pricing by Category or Tag ###

Implement dynamic pricing strategies tailored to specific product categories or tags, saving you the effort of doing it manually by product, this becomes very useful when you want to optimize bulk quantity discounts for targeted groups of products.

### 🏆 Define Tiered Pricing by Variation ###

Go further in defining price tiers and set them on variation level for variable products, very useful when you can offer more discounts for specific variations.

### 🏆 Add Tiered Pricing Table to Product & Shop Pages ###

If you don't like working with shortcodes, you can use the built-in option to show the tiered pricing table in product page, select from different positions like before/in/after product summary, or before/after product.

You can also add the table to your shop/categories pages.

### 🏆 Category & Tag Combined Quantities for Dynamic Pricing ###

Enable dynamic pricing calculations by counting the total quantity of products within a designated category/tag, a smart promotional strategy to offer discounts based on combined purchases across multiple products in the category or tag.

### 🏆 Replace Standard Price to Highlight Discount ###

Change standard WooCommerce product price display into discounted options to make text more compelling to customers, so instead of showing $7, you can say "From $5.00 for 10 items" to incentivize bulk purchases.
Applicable to product & shop pages.

### 🏆 Change Quantity Input Field to a Dropdown ###

Replace the traditional input or +/- quantity fields with a clear dropdown menu which includes shortoodes, so customers can see prices & select quantities directly with a click.

> “My favorite volume discounts plugin, and I've tried most on the market. Love that I can build out the discounts right from the product edit page. Also, Tom has been super responsive on tweaks and improvements.” – ⭐⭐⭐⭐⭐ [Scott](https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme)

> “Works well! Being able to us negative % is what drew me to this plugin. My theme was having issues with some of the display options but Tom with support had helpful and quick responses.” – ⭐⭐⭐⭐⭐ [Karla Jordan](https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme)

> “I highly recommend this plugin. It helps me a lot, and thanks to Tom who did some updates for me, the plugin has become a really important part of our site.” – ⭐⭐⭐⭐⭐ [Wojciech](https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme)

> “Perfect support: I’ve been looking days to find the right plugin and I can say that I enjoy using this one, it does exactly what I need and Tom the developer is always here to listen at our needs and improve the plugin or respond to mails within 24h.” – ⭐⭐⭐⭐⭐ [alexsandros](https://wordpress.org/support/topic/perfect-support-117/)

___
## 💯 Why WPFactory?##

* **Experience You Can Trust:** Over a decade in the business
* **Wide Plugin Selection:** Offering 65+ unique and powerful plugins
* **Highly-Rated Support:** Backed by hundreds of 5-star reviews
* **Expert Team:** Dedicated developers and technical support at your service

___
## What's Next? Discover More Plugins by WPFactory ##

WPFactory has a diverse range of plugins tailored to enhance your experience:

* [**EAN, UPC, ISBN Generator: Product Barcode Inventory for WooCommerce**](https://wpfactory.com/item/ean-barcodes-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**EAN, UPC, ISBN Generator: Product Barcode Inventory for WooCommerce***"): Manage GTINs (EAN, UPC, ISBN, etc.) effortlessly in WooCommerce! Create, save, search, and display EANs easily, with admin tools for bulk actions.
 (**[Free version](https://wordpress.org/plugins/ean-for-woocommerce/ "Free version")**)

* [**Wishlist for WooCommerce: Multi Wishlists per Customer**](https://wpfactory.com/item/wish-list-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Wishlist for WooCommerce: Multi Wishlists per Customer**"): Increase loyalty & sales by allowing customers to add products to wishlist, create multiple wishlists, save them, share them with friends & family on your WooCommerce store (**[Free version](https://wordpress.org/plugins/wish-list-for-woocommerce/ "Free version")**)

* [**Name Your Price: Make a Price Offer for WooCommerce**](https://wpfactory.com/item/price-offers-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "*Name Your Price: Make a Price Offer for WooCommerce**"): Allow customers to propose their own prices for your products, open a negotiation-driven shopping experience with options to accept, reject, or counter-offer. (**[Free version](https://wordpress.org/plugins/price-offerings-for-woocommerce/ "Free version")**)

* [**Additional Custom Emails for WooCommerce**](https://wpfactory.com/item/custom-emails-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Additional Custom Emails for WooCommerce**"): Define & customize more emails based on triggers, choose from multiple recipient options, personalize content, and send emails manually. (**[Free version](https://wordpress.org/plugins/custom-emails-for-woocommerce/ "Free version")**)

* [**Automated Order Status Controller for WooCommerce**](https://wpfactory.com/item/order-status-rules-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Automated Order Status Controller for WooCommerce**"): Change order statuses programmatically based on a wide range of conditions, like time intervals, user roles and more! (**[Free version](https://wordpress.org/plugins/order-status-rules-for-woocommerce/ "Free version")**)

* [**Custom Order Status for WooCommerce**](https://wpfactory.com/item/order-status-for-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Custom Order Status for WooCommerce**"): Create & manage unlimited number of custom statuses, to reflect your business desires & needs. (**[Free version](https://wordpress.org/plugins/order-status-for-woocommerce/ "Free version")**)

* [**Free Shipping Amount Label & Progress Bar for WooCommerce**](https://wpfactory.com/item/amount-left-free-shipping-woocommerce/?utm_source=wporg&utm_medium=organic&utm_campaign=readme "**Free Shipping Amount Label & Progress Bar for WooCommerce**"): Encourage higher spending by offering free shipping based on amount, with a progress bar for customers. (**[Free version](https://wordpress.org/plugins/amount-left-free-shipping-woocommerce/ "Free version")**)

== Installation ==

**Follow these simplified steps to get your plugin up and running:**

**From the WordPress Admin Panel:**
1. Navigate to “Plugins” > “Add New”.
2. Use the search bar and find the plugin using the exact name.
3. Click “Install Now” for the desired plugin.
4. Once the installation is finished, and click “Activate”.

**Manual Installation Using FTP:**
1. Download the desired plugin from WordPress.org.
2. Using your preferred FTP client, upload the entire plugin folder to the /wp-content/plugins/ directory of your WordPress installation.
3. Go to “Plugins” > “Installed Plugins” in your dashboard and click “Activate”.

**Manual download & upload from the WordPress Admin Panel:**
1. Download the desired plugin in a ZIP format.
2. On your site, navigate to “Plugins” > “Add New” and click the “Upload Plugin” button.
3. Choose the downloaded plugin file and click “Install Now.”
4. After the installation is complete, click “Activate”.

**Post-Activation:**
Once activated, access the plugin's settings by navigating to “WooCommerce > Settings” and look for the relevant tab.

== Changelog ==

= 4.0.0 - 26/12/2024 =
* Dev - Security - Output escaped.
* Dev - Security - Input sanitized.
* Dev - Recommendations - Library updated.
* Dev - Key Manager - Library updated.
* Dev - Admin settings descriptions updated.
* Dev - Code refactoring.
* Dev - Coding standards improved.
* Dev - Composer - `autoloader-suffix` param added.
* WC tested up to: 9.5.
* Tested up to: 6.7.
* Plugin name updated.

= 3.9.0 - 25/10/2024 =
* Dev - Plugin settings moved to the "WPFactory" menu.
* Dev - "Recommendations" added.
* Dev - Key Manager - Library updated.
* Dev - Code refactoring.

= 3.8.1 - 02/10/2024 =
* Dev - Security - Escape URLs.

= 3.8.0 - 30/09/2024 =
* Dev - "Key Manager" added.

= 3.7.8 - 22/09/2024 =
* Fix - Quantity calculation - Group by product category/tag - All product categories/tags must match now.

= 3.7.7 - 17/09/2024 =
* Fix - Other cart discounts - Discounts were reset for the first cart item only. This is fixed now.

= 3.7.6 - 14/09/2024 =
* Plugin name fixed.

= 3.7.5 - 13/09/2024 =
* Fix - Price Display by Quantity - Using standard WooCommerce price HTML for empty templates.
* WC tested up to: 9.3.

= 3.7.4 - 21/08/2024 =
* Dev - Developers - `alg_wc_ppq_price_display_by_qty_is_product` filter added.
* Dev - Developers - `alg_wc_ppq_price_display_by_qty_product_id` filter added.

= 3.7.3 - 31/07/2024 =
* WC tested up to: 9.1.
* Tested up to: 6.6.

= 3.7.2 - 22/05/2024 =
* WC tested up to: 8.9.
* Readme.txt - Plugin description updated.

= 3.7.1 - 13/05/2024 =
* Fix - General - Admin recalculate order - Ensuring that prices exclude tax.
* Fix - General - Admin recalculate order - Disabling the button for new orders.
* Dev - Admin settings descriptions updated.
* WooCommerce added to the "Requires Plugins" (plugin header).

= 3.7.0 - 18/04/2024 =
* Dev - Compatibility - "WooCommerce Multilingual" (WPML) plugin compatibility option added.
* Dev - Dropdown - Code refactoring.
* Dev - Admin settings rearranged - "Compatibility" section added (options moved from the "General > Compatibility Options" subsection).
* WC tested up to: 8.8.
* Tested up to: 6.5.

= 3.6.2 - 28/03/2024 =
* Dev - Developers - `alg_wc_ppq_discount_by_quantity` filter added.
* WC tested up to: 8.7.
* Readme.txt - Tags updated.

= 3.6.1 - 05/03/2024 =
* Dev - Shortcodes - `[alg_wc_product_ppq_table]`:
    * New attribute - `percent_row_format` (defaults to `-%level_discount_percent%%`).
    * New attribute - `percent_row_format_rounded` (defaults to `-%level_discount_percent_rounded%%`).
    * New attribute - `discount_row_format` (defaults to `-%level_discount_amount_price%`).
    * Developers - `alg_wc_product_ppq_table_placeholders` filter added.
    * Developers - `alg_wc_product_ppq_table_rows` filter added.
* WC tested up to: 8.6.

= 3.6.0 - 20/12/2023 =
* Dev - PHP 8.2 compatibility - "Creation of dynamic property is deprecated" notice fixed.
* Dev - Admin Settings - Info - Replace Price - Descriptions updated.
* WC tested up to: 8.4.
* Tested up to: 6.4.

= 3.5.5 - 25/10/2023 =
* Fix - Declaring HPOS compatibility for the free plugin version, even if the Pro version is activated.
* Dev - Shortcodes - `[alg_wc_ppq_products_list]` - `columns` - Allowing columns without titles, e.g., `image`.
* WC tested up to: 8.2.

= 3.5.4 - 25/09/2023 =
* WC tested up to: 8.1.
* Tested up to: 6.3.
* Plugin icon, banner updated.

= 3.5.3 - 25/07/2023 =
* Dev - Shortcodes - `[alg_wc_product_ppq_table]` - `price_row_format` attribute now accepts the `heading_format` placeholders as well, i.e.:
    * `%level_min_qty%`,
    * `%level_max_qty%`,
    * `%level_discount%`,
    * `%level_discount_amount%`,
    * `%level_discount_percent%`,
    * `%level_discount_percent_rounded%`.
* WC tested up to: 7.9.

= 3.5.2 - 12/07/2023 =
* Dev – "High-Performance Order Storage (HPOS)" compatibility.

= 3.5.1 - 05/07/2023 =
* Dev - Shortcodes - `[alg_wc_ppq_products_list]` - `columns` - `price_excl_tax` and `price_incl_tax` columns added.
* Dev - Shortcodes - `[alg_wc_ppq_products_list]` - `limit` attribute added (defaults to `-1`).

= 3.5.0 - 29/06/2023 =
* Dev - Tools - "User Role Tools" ("Add role" and "Delete roles") added.
* Dev - Developers - `alg_wc_wholesale_pricing_settings_per_item_get_options` filter added.

= 3.4.2 - 20/06/2023 =
* Dev - Developers - `alg_wc_wholesale_pricing_get_placeholders` filter added.
* Dev - Code refactoring (`Alg_WC_Wholesale_Pricing_Frontend::get_placeholders()` function).

= 3.4.1 - 18/06/2023 =
* WC tested up to: 7.8.

= 3.4.0 - 05/06/2023 =
* Dev - Now checking if number of levels is more than zero before applying the pricing (`has_levels()` function).
* Dev - Dropdown - "Custom dropdown values" option added.
* Dev - Developers - Dropdown - `alg_wc_wholesale_pricing_dropdown_levels_data_raw` filter added.

= 3.3.3 - 12/05/2023 =
* Dev - Shortcodes - `[alg_wc_product_ppq_table]` - `heading_format_singular` attribute added (defaults to an empty string).
* Dev - Developers - Shortcodes - `[alg_wc_product_ppq_table]` - Passing `$price_level` to the `alg_wc_product_wholesale_pricing_table_heading_format` filter now.
* WC tested up to: 7.7.

= 3.3.2 - 09/04/2023 =
* Dev - New placeholders added to the "Price Display by Quantity", "Info > Cart Items", "Dropdown" sections:
    * `%old_price_single_incl_tax%`,
    * `%new_price_single_incl_tax%`,
    * `%old_price_total_incl_tax%`,
    * `%new_price_total_incl_tax%`,
    * `%old_price_single_excl_tax%`,
    * `%new_price_single_excl_tax%`,
    * `%old_price_total_excl_tax%`,
    * `%new_price_total_excl_tax%`.
* Dev - Admin Settings - "Available placeholders" restyled.
* Dev - Admin Settings - Tools - Section description updated.
* Tested up to: 6.2.

= 3.3.1 - 17/03/2023 =
* Fix - Shortcodes - `[alg_wc_ppq_table]` and `[alg_wc_product_ppq_table]` - `qty_thousand_sep` shortcode attribute is applied to numeric quantities only.

= 3.3.0 - 17/03/2023 =
* Dev - Shortcodes are now processed in "Item price", "Item subtotal", "Cart & checkout totals", "Price display by quantity", "Quantity dropdown" templates.
* Dev - Shortcodes - `[alg_wc_ppq_table]` and `[alg_wc_product_ppq_table]` - `qty_thousand_sep` shortcode attribute added (defaults to an empty string).
* Dev - Compatibility - Shortcodes - `[alg_wc_ppq_translate]` shortcode added (for WPML and Polylang plugins).
* Dev - Compatibility - WPML/Polylang - `wpml-config.xml` file added.
* Dev - Developers - `alg_wc_ppq_price_display_by_qty_localize_script_args` filter added.
* WC tested up to: 7.5.

= 3.2.4 - 08/03/2023 =
* Dev - Shortcodes - `[alg_wc_ppq_products_list]` - `alg_wc_ppq_table` table HTML class removed.

= 3.2.3 - 08/03/2023 =
* Dev - Shortcodes - `[alg_wc_ppq_products_list]` - Table HTML classes added: `alg_wc_ppq_table alg_wc_ppq_products_list`.
* Dev - Developers - `alg_wc_wholesale_pricing_show_info_single_hook_options` filter added.
* WC tested up to: 7.4.

= 3.2.2 - 08/02/2023 =
* Dev - Shortcodes - `[alg_wc_ppq_products_list]` - New `columns` added: `image`, `image_with_add_to_cart_link`, `image_with_product_link`. New attribute added: `image_size`.
* Dev - Shortcodes - `[alg_wc_ppq_products_list]` - New attributes added: `orderby`, `order`.
* Dev - Developers - Shortcodes - `[alg_wc_ppq_products_list]` - `alg_wc_ppq_products_list_query_args` filter added.
* Dev - Developers - Shortcodes - `[alg_wc_ppq_products_list]` - `alg_wc_ppq_products_list_custom_column` filter added.
* Dev - Developers - Shortcodes - `[alg_wc_ppq_products_list]` - `alg_wc_ppq_products_list_row` filter added.

= 3.2.1 - 19/01/2023 =
* Dev - Price Display by Quantity - JS - Selector improved.

= 3.2.0 - 13/01/2023 =
* Dev - Price Display by Quantity - Compatibility - "Sticky Add To Cart Bar For WooCommerce" plugin option added (defaults to `no`).
* Dev - Price Display by Quantity - JS - Code refactoring.
* Dev - Shortcodes - `[alg_wc_product_ppq_data]` - New attribute added - `variation_type`. Defaults to `first`. Other possible values: `min` and `max`. Used only when `use_variation` attribute is set to `yes`.
* Tested up to: 6.1.
* WC tested up to: 7.3.

= 3.1.0 - 04/08/2022 =
* Fix - Shortcodes - `[alg_wc_product_ppq_data]` - Possible "Undefined variable $is_enabled..." PHP warning fixed.
* Fix - Shortcodes - `get_product_price()` - Possible tax display errors in `fixed` and `price_directly` discount types fixed.
* Dev - Shortcodes - `get_product_price()` - New placeholders added:
    * `%old_price_single_incl_tax%`,
    * `%new_price_single_incl_tax%`,
    * `%old_price_total_incl_tax%`,
    * `%new_price_total_incl_tax%`,
    * `%old_price_single_excl_tax%`,
    * `%new_price_single_excl_tax%`,
    * `%old_price_total_excl_tax%`,
    * `%new_price_total_excl_tax%`.
* Dev - Price Display by Quantity - Advanced Options - "Price identifier" options added.
* Dev - Price Display by Quantity - Settings rearranged ("Advanced Options" subsection added).
* WC tested up to: 6.7.

= 3.0.1 - 24/05/2022 =
* Contributor fixed.

= 3.0.0 - 24/05/2022 =
* Dev - General - "Add order discount" option added (defaults to `no`).
* Dev - Info:
    * "Cart & Checkout Totals" options added.
    * Admin settings descriptions updated.
    * Code refactoring.
* Dev - Developers - `alg_wc_product_wholesale_pricing` filter added.
* Dev - Deploy script added.
* Dev - Plugin renamed from "Wholesale Pricing for WooCommerce" to "Product Price by Quantity for WooCommerce".
* Dev - Shortcodes renamed (old shortcodes are still functional):
    * `[alg_wc_wh_pr_product_meta]` to `[alg_wc_ppq_product_meta]`.
    * `[alg_wc_wholesale_pricing_table]` to `[alg_wc_ppq_table]`.
    * `[alg_wc_product_wholesale_pricing_table]` to `[alg_wc_product_ppq_table]`.
    * `[alg_wc_wholesale_pricing_data]` to `[alg_wc_ppq_data]`.
    * `[alg_wc_product_wholesale_pricing_data]` to `[alg_wc_product_ppq_data]`.
    * `[alg_wc_wholesale_pricing_products_list]` to `[alg_wc_ppq_products_list]`.
* Tested up to: 6.0.
* WC tested up to: 6.5.

= 2.8.1 - 19/04/2022 =
* Fix - Info - Cart Page - Item subtotal - "Undefined property: Alg_WC_Wholesale_Pricing_Pro_Frontend::$core" notice fixed.
* Fix - Shortcodes - `[alg_wc_wholesale_pricing_products_list]` - "Undefined property: Alg_WC_Wholesale_Pricing_Pro_Shortcodes::$core" notice fixed.
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_table]` - attributes added:
    * `hide_table_if_guest`,
    * `hide_table_for_user_roles`,
    * `show_table_for_user_roles`,
    * `hide_table_if_out_of_stock`,
    * `hide_if_insufficient_quantity`.
* Dev - Code refactoring.

= 2.8.0 - 18/04/2022 =
* Fix - Per product - Per variation - Now ignoring if product price by quantity is enabled for the main variable product.
* Fix - Shortcodes - `[alg_wc_product_wholesale_pricing_table]` - `add_discount_row` fixed.
* Dev - Info - Discount Pricing Table - Single product page - "Position" (and "Priority") options added.
* Dev - Info - Discount Pricing Table - "Shop page" options added.
* Dev - All Products - Advanced - "Required/Excluded products" options now use AJAX. Separate settings section removed.
* Dev - General - "All products > Enable" option is now duplicated in "General > Settings".
* Dev - General - "Discount type" option moved to the "All Products" section.
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_table]`
    * `add_discount_row` - Showing value for non-fixed discount types now.
    * `add_percent_row` - Showing value for non-percent discount types now.
    * `add_percent_row_rounded` attribute added (defaults to `no`).
    * `heading_format` - `%level_discount%`, `%level_discount_amount%`, `%level_discount_percent%`, `%level_discount_percent_rounded%` placeholders added.
    * `table_style` attribute added.
    * Developers - `alg_wc_product_wholesale_pricing_table_heading_format` filter added.
* Dev - Code refactoring.
* WC tested up to: 6.4.
* Tested up to: 5.9.

= 2.7.0 - 10/12/2021 =
* Dev - Info - Replace Price - Now outputting unchanged (original) product price, if the (shortcode) result is empty.
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_table]` - `before` and `after` attributes added.
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_data]` - `before` and `after` attributes added.
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_data]` - `use_variation` attribute added (defaults to `no`).
* Dev - Shortcodes - `[alg_wc_wholesale_pricing_table]` - `before` and `after` attributes added.
* Dev - Shortcodes - `[alg_wc_wholesale_pricing_data]` - `before` and `after` attributes added.
* Dev - Developers - `alg_wc_wholesale_pricing_info_single_product_page_hook` and `alg_wc_wholesale_pricing_info_single_product_page_priority` filters added.
* WC tested up to: 5.9

= 2.6.5 - 27/10/2021 =
* Dev - Price Display by Quantity - "Apply to all products" option added (defaults to `yes`).
* WC tested up to: 5.8.

= 2.6.4 - 24/09/2021 =
* Fix - Reports - Ensuring `Alg_WC_Wholesale_Pricing_Settings_Per_Item` class is available now.

= 2.6.3 - 22/09/2021 =
* Dev - "Reports" section added.
* Dev - All admin settings input is properly sanitized now.
* Dev - Admin settings restyled; descriptions updated.
* WC tested up to: 5.7.

= 2.6.2 - 09/08/2021 =
* Dev - General - "Admin recalculate order" options added.
* Dev - Admin settings rearranged ("General > Compatibility Options" subsection added).

= 2.6.1 - 08/08/2021 =
* Dev - Allowing "Price directly" to be "0" now.
* Dev - Price Display by Qty - Better algorithm for choosing when to use "no discount" template.
* Dev - Admin settings descriptions updated ("Advanced" section).
* Dev - Code refactoring - `get_discount_by_quantity()`.

= 2.6.0 - 27/07/2021 =
* Fix - Shortcodes - `get_product_price()` - Variable - "Price directly". Affects `[alg_wc_product_wholesale_pricing_table]` and `[alg_wc_product_wholesale_pricing_data]` shortcodes.
* Dev - Tools - "Delete per product settings" and "Delete per term settings" tools added.
* Dev - Shortcodes - `[alg_wc_wholesale_pricing_products_list]` - Shortcode rewritten. `heading_format`, `row_sku`, `row_name`, `row_category`, `row_price`, `link_rows`, `custom_columns` attributes removed. `columns` attribute added.
* Dev - Developers - `alg_wc_wholesale_pricing_get_levels_data` filter added.
* Dev - Developers - `alg_wc_wholesale_pricing_dropdown_levels_data` filter added.
* Dev - Developers - `alg_wc_wh_pr_get_discount_type` filter renamed to `alg_wc_wholesale_pricing_get_discount_type`.
* Dev - Developers - `alg_wc_wh_pr_ajax_price_display_by_qty` filter renamed to `alg_wc_wholesale_pricing_ajax_price_display_by_qty`.
* Dev - Developers - `alg_wc_wh_pr_dropdown_input_value` filter renamed to `alg_wc_wholesale_pricing_dropdown_input_value`.
* Dev - Developers - `alg_wc_wh_pr_dropdown_option_label` filter renamed to `alg_wc_wholesale_pricing_dropdown_option_label`.
* Dev - Developers - `alg_wc_wh_pr_dropdown_option_style` filter renamed to `alg_wc_wholesale_pricing_dropdown_option_style`.
* Dev - Developers - `alg_wc_wh_pr_dropdown_option_class` filter renamed to `alg_wc_wholesale_pricing_dropdown_option_class`.
* Dev - Code refactoring.
* Tested up to: 5.8.
* WC tested up to: 5.5.

= 2.5.0 - 30/06/2021 =
* Dev - Shortcodes - `[alg_wc_wholesale_pricing_products_list]` - `custom_columns` attribute added.
* Dev - Shortcodes - `[alg_wc_wholesale_pricing_products_list]` - `link_rows` attribute added (defaults to `price,levels`).
* Dev - Shortcodes - `[alg_wc_wholesale_pricing_products_list]` - `use_transients` attribute added (defaults to `no`).
* Dev - Shortcodes - `get_product_price()` - Variable - Safe-checks added.
* Dev - Developers - `alg_wc_wh_pr_get_discount_type` filter added.
* Dev - Developers - `alg_wc_wh_pr_dropdown_input_value` filter added.
* Dev - Developers - `alg_wc_wh_pr_dropdown_option_label` filter added.
* Dev - Developers - `alg_wc_wh_pr_dropdown_option_style` filter added.
* Dev - Developers - `alg_wc_wh_pr_dropdown_option_class` filter added.
* Dev - Developers - `alg_wc_wh_pr_ajax_price_display_by_qty` filter added.
* Dev - Plugin is initialized on the `plugins_loaded` action now.
* Dev - Code refactoring.
* WC tested up to: 5.4.

= 2.4.2 - 14/05/2021 =
* Dev - Price Display by Qty - Variation hide event handler added.
* Dev - Price Display by Qty - Variation change (`table.variations select` on `change`) event handler removed.
* Dev - Dropdown - "Filter values" option added.
* Dev - Dropdown - "HTML before" and "HTML after" options added.
* Dev - Dropdown - Wrapping select element in `div` now.
* Dev - Settings - Dropdown options moved to a separate settings section. Section descriptions updated.
* WC tested up to: 5.3.

= 2.4.1 - 06/05/2021 =
* Fix - Dropdown - Prices in cart page dropdown fixed.
* Fix - Dropdown - Unnecessary `1` quantity value removed from dropdown.
* Dev - Dropdown - Variable products support added.
* Dev - Price Display by Qty - JS code refactoring.
* Dev - Price Display by Qty - `show_variation` JS event added.

= 2.4.0 - 30/04/2021 =
* Dev - General - "Dropdown" options added.

= 2.3.0 - 13/04/2021 =
* Dev - General - Quantity calculation - "Group by product parent (e.g., for variations)" option added.
* Dev - General - Quantity calculation - "Group by product category" option added.
* Dev - General - Quantity calculation - "Group by product tag" option added.
* Dev - General - "Total cart quantity" option redone as select (was checkbox); renamed to "Quantity calculation".
* Dev - Info - Cart Page - `%qty_total%` placeholder added.
* Dev - Code refactoring.
* WC tested up to: 5.2.

= 2.2.5 - 23/03/2021 =
* Dev - "WCFM plugin compatibility" options added.
* Dev - Code refactoring.
* Tested up to: 5.7.
* WC tested up to: 5.1.

= 2.2.4 - 02/03/2021 =
* Dev - Info - Discount Pricing Table - "Hide main variable table on visible variation" option added.
* Dev - Info - Discount Pricing Table - "Template for variable products" option added.
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_data]` - Min level quantity is now passed to the `price` function, so now `%old_price_total%` and `%new_price_total%` placeholders are correctly processed in the `price_format` attribute.
* Dev - Localization - `load_plugin_textdomain()` function moved to the `init` action.
* Dev - Settings - Restyled and descriptions updated, e.g., "Info > Single Product Page" renamed to "Info > Discount Pricing Table", etc.
* WC tested up to: 5.0.

= 2.2.3 - 29/12/2020 =
* Dev - Price Display by Quantity - "Force standard quantity input" option added.

= 2.2.2 - 22/12/2020 =
* Fix - Settings - All Products - "Undefined property: Alg_WC_Wholesale_Pricing_Core::$do_process_formula..." notice fixed.
* Dev - Info - "Replace Price" options section added.
* WC tested up to: 4.8.
* Tested up to: 5.6.

= 2.2.1 - 25/10/2020 =
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_table]` - Initializing all variables now.

= 2.2.0 - 25/10/2020 =
* Dev - Price Display by Quantity - `quantity_pq_dropdown` - Timer removed (also for `table.variations select`); `input` event removed; getting value from the element itself now (i.e., instead of from the original `quantity` field); standard qty input event handler removed.
* Dev - Shortcodes - `[alg_wc_product_wholesale_pricing_table]` - New attributes added: `add_total_min_qty_price_row` and `total_min_qty_price_row_format`; `extra_row_before` and `extra_row_after`; `table_heading_type`; `columns_styles`; `table_class`.
* Dev - Info - Single product pages - Template for non-variable products - Admin settings description updated.
* WC tested up to: 4.6.

= 2.1.0 - 09/10/2020 =
* Dev - Info - Single Product Page - "Template" options added.
* Dev - "Lumise - Product Designer Tool" plugin compatibility added.
* Dev - `alg_wc_wholesale_pricing_get_item_product_id` filter added.
* Dev - `alg_wc_wholesale_pricing_calculate_totals_product_id` filter added.

= 2.0.0 - 15/09/2020 =
* Dev - Free version max levels num limitation removed.
* Dev - General - "Rounding" option added (defaults to `yes`).
* Dev - General - Settings - "Enable per product category" and "Enable per product tag" options added.
* Dev - General - Settings - "Per variation" option added.
* Dev - General - Settings - Per product - "Price directly" option available in variable products as well now.
* Dev - General - Settings - Per product - "Reset all", "Copy variation" and "Reset variation" actions added to product settings.
* Dev - Info - "Single Product Page" subsection added.
* Dev - Info - Cart Page - Default message value added to translations.
* Dev - Info - Cart Page - Message placeholders renamed; default message value updated.
* Dev - Info - Cart Page - `%qty%`, `%old_price_total%`, `%new_price_total%`, `%discount_percent%`, `%discount_single%`, `%discount_total%` placeholders added.
* Dev - Info - Cart Page - "Item subtotal" options added.
* Dev - All Products - "Enable" option added.
* Dev - User Roles - "Enable" option added.
* Dev - Price Display by Quantity - Select event added (for the variable products).
* Dev - Price Display by Quantity - `change` event added for the quantity input.
* Dev - Price Display by Quantity - `quantity_pq_dropdown` events handler added.
* Dev - Price Display by Quantity - Message placeholders renamed; default message values updated.
* Dev - Price Display by Quantity - `%discount_percent%`, `%discount_single%` and `%discount_total%` placeholders added.
* Dev - Price Display by Quantity - "Variable products > Display in variation price" option added (defaults to `yes`).
* Dev - Shortcodes - `[alg_wc_wholesale_pricing_products_list]` shortcode added.
* Dev - Shortcodes - Placeholders renamed.
* Dev - Shortcodes - Handling products with empty price properly now.
* Dev - All input is sanitized now.
* Dev - JS files minified.
* Dev - Admin settings restyled; descriptions updated; "Info" section added; "Discount Table" section renamed to "All Products".
* Dev - Code refactoring.
* Tested up to: 5.5.
* WC tested up to: 4.5.

= 1.4.1 - 19/06/2020 =
* Fix - Advanced - Products to exclude - Bug fixed.
* Dev - Price Display by Quantity - Checking if product price by quantity is enabled for the product now (e.g., "Products to include/exclude" option).
* Dev - Advanced - Products to include/exclude - Product ID info added to the dropdown.
* Dev - Reset Settings - Description updated.
* Tested up to: 5.4.
* WC tested up to: 4.2.

= 1.4.0 - 19/03/2020 =
* Dev - General - "Process formula and shortcodes" option added.
* Dev - Code refactoring.
* Dev - Admin settings descriptions updated.
* WC tested up to: 4.0.

= 1.3.0 - 27/12/2019 =
* Dev - "Price Display by Quantity" options added.
* Dev - Admin settings restyled; "Advanced" section added.
* Dev - Code refactoring.
* Tested up to: 5.3.

= 1.2.0 - 06/11/2019 =
* Dev - Additional safeguards added when getting product ID.
* Dev - Admin settings split into sections.
* Dev - Code refactoring.
* WC tested up to: 3.8.

= 1.1.2 - 23/09/2019 =
* Dev - `[alg_wc_product_wholesale_pricing_data]` shortcode added.
* Dev - `[alg_wc_wholesale_pricing_data]` shortcode added.
* Dev - Code refactoring.
* Dev - Admin Settings - "Your settings have been reset" notice added.
* WC tested up to: 3.7.

= 1.1.1 - 07/06/2019 =
* Tested up to: 5.2.
* WC tested up to: 3.6.

= 1.1.0 - 31/10/2018 =
* Dev - "Raw" value is now allowed in "Discount info on cart page format" option.
* Dev - Admin settings restyled.
* Dev - Code refactoring.
* Dev - Plugin URI updated.

= 1.0.0 - 13/08/2017 =
* Initial Release.

== Upgrade Notice ==

= 1.0.0 =
This is the first release of the plugin.