=== DigiDiscount ===
Tags: woocommerce, discounts, dynamic pricing, cart discount, pricing
Requires at least: 6.8
Tested up to: 7.1
Requires PHP: 8.1
Requires Plugins: woocommerce
Stable tag: 1.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Automatic product, category and cart discounts with campaign stacking, scheduled offers and a responsive campaign builder.

== Description ==

DigiDiscount by Digitolye creates automatic WooCommerce discounts without changing saved product prices. Every feature included in this plugin is available immediately, without a license, subscription, trial period or usage quota.

* Unlimited product, category, cart and spend-threshold campaigns.
* Percentage, fixed-total and per-item discounts.
* Best-saving, priority and campaign-combination modes.
* Per-campaign stacking controls and exclusive groups.
* Product and category selection, exclusions and category descendants.
* Purchase and quantity conditions, optional schedules and sale-item exclusions.
* Coupon coexistence controls and maximum campaign savings.
* A responsive campaign builder with field help and basket previews.
* Campaign price cards on product lists, product pages and variations.
* WooCommerce coupon calculations for native tax and order totals.
* English by default, ready for WordPress.org language packs.

WooCommerce coupons must be enabled. Thresholds use eligible or paid cart item prices before coupons and shipping. Discounts use current sale prices unless sale items are excluded. A campaign runs only in its saved currency. These are merchant-configured offer conditions, not restrictions on using the plugin.

The optional, separately distributed DigiDiscount Pro add-on supplies its own advanced campaign implementations. No paid campaign code, license client, remote updater or locked upgrade interface is included in this package.

= Privacy =

DigiDiscount does not contact Digitolye, collect telemetry or load remote scripts, styles or fonts. Campaigns are stored on your WordPress site. WooCommerce stores cart and order discounts as part of its normal operation. No external account or service is required.

== Installation ==

1. Install and activate WooCommerce.
2. Upload the digidiscount folder or install this ZIP through Plugins > Add New.
3. Enable coupons under WooCommerce > Settings > General.
4. Open WooCommerce > DigiDiscount.
5. Create a campaign, preview a basket and enable it.

== Frequently Asked Questions ==

= How do I combine campaigns? =

Choose Combine permitted campaigns in the dashboard. Enable Allow stacking on each campaign you want to combine. Subsequent discounts use the remaining item price. Exclusive groups allow only the first matching campaign in that group. These controls are included in the free plugin.

= Are original prices changed? =

No. Campaigns use an automatic virtual WooCommerce coupon. Existing orders retain their recorded discounts.

= How are campaign prices displayed? =

Enable the product-list and product-page switches in a campaign. Price cards use the pricing engine and WooCommerce tax-display settings. Quantity requirements appear next to the price. Cart-wide offers show conditions when a reliable individual price cannot be calculated. The actual cart determines the final offer.

Price cards use WooCommerce price HTML hooks, including the Product Price block. Themes replacing these hooks need integration. Responses containing campaign pricing request private, uncached HTML through WordPress headers. The plugin does not define global cache constants or change cache-plugin settings. External caches must honor these headers or exclude campaign product pages. Custom templates that already sent public headers retain native prices. Variable products with over 100 visible variations retain native listing ranges and display offers for selected variations.

= Can customer coupons be combined? =

Each campaign can allow or pause for other coupons. Individual-use coupons take precedence. Discounts cannot reduce an item below zero.

= What happens to extension campaigns when an extension is removed? =

Their records are retained. A campaign whose type or nonempty condition fields are not registered by installed code is not evaluated or overwritten. This prevents an unknown customer restriction from becoming an unrestricted discount. Built-in campaigns remain fully functional. Restoring the extension restores its field definitions and calculations.

= Will an upgrade keep my campaigns? =

Yes. Campaign IDs, settings and order history are retained. Version 1.0.1 migrated older storage names. Version 1.0.2 makes stacking available to everyone. If you use DigiDiscount Pro, install Pro 1.0.0-beta.10 first, then update this plugin, so advanced product-price displays use the matching extension hooks. Back up your database before updating.

= How are translations delivered? =

WordPress.org language packs supply translations independently of the ZIP. The plugin includes the digidiscount translation template. Language-pack availability depends on translation approval.

= What is retained on uninstall? =

Campaign settings and order history are retained deliberately. Delete unwanted campaigns from the plugin before uninstalling.

== Screenshots ==

1. Campaign dashboard with status and processing controls.
2. Campaign editor with field help and preview.
3. Campaign prices and savings displayed in a product list.

== Changelog ==

= 1.0.2 =
* Make campaign combination, stacking and exclusive groups fully available without a license.
* Remove all Pro-status checks and locked editing or preview controls from the free plugin.
* Move advanced campaign display and preview implementations to the separately distributed add-on.
* Preserve unsupported extension records without applying incomplete conditions.
* Maintain integration with DigiDiscount Pro 1.0.0-beta.10.

= 1.0.1 =
* Make administrative REST permissions explicit.
* Migrate campaign storage to unique identifiers while retaining IDs and data.
* Replace global cache flags with targeted storefront headers.
* Use WordPress.org language packs for free translations.

= 1.0.0 =
* Initial stable release.
