# WooCommerce Tier and Package Prices - Release 1.1.0

**Release Date:** December 21, 2025
**Version:** 1.1.0
**Package Size:** 387 KB
**Git Tag:** v1.1.0

## Download

**File:** `wc-tier-and-package-prices-1.1.0.zip`

### Checksums

**SHA256:**
```
da6b462f3dc297b282ed0da258b78fd9f2f82f3e76289c4c8fadd1ac9e02c55b
```

**MD5:**
```
ef68125c54b0c10f04ba82d48a98b4aa
```

## What's New in 1.1.0

### Major Features
- ✨ **Package Quantity Restriction** - NEW
  - Limit product purchases to predefined package sizes only
  - Perfect for bulk-only sales, sample packs, or fixed bundle quantities
  - Global and per-product configuration options

### New Settings
- 🌍 **Global Restriction Setting**
  - Enable quantity restrictions site-wide
  - Located in: WooCommerce > Settings > Tier & Package Prices
  - Description: "Limit quantities to defined package sizes only"

- 📦 **Per-Product Restriction Setting**
  - Override global setting on individual products
  - Located in: Product Edit > Package Pricing section
  - Checkbox: "Restrict to Package Quantities"

### Frontend Enhancements
- 🎨 **Enhanced Package Selection UI**
  - Automatic quantity field hiding when restriction is enabled
  - Clear notice: "Choose a package size below"
  - Visual package selection with highlighted states
  - Responsive package selection buttons

- ✅ **Client-Side Validation**
  - JavaScript prevents form submission without package selection
  - Alert message guides users to select a package
  - Real-time visual feedback on selection

### Backend Validation
- 🛡️ **Server-Side Cart Validation**
  - Validates quantity matches defined packages
  - Prevents manual quantity manipulation
  - User-friendly error messages
  - Example: "The quantity 15 is not available for Product Name. Please choose from the available package sizes: 10, 20, 50"

### Technical Improvements
- New method: `WC_TPP_Cart::validate_package_quantity()`
- New method: `WC_TPP_Frontend::maybe_hide_quantity_input()`
- Enhanced `woocommerce_add_to_cart_validation` filter integration
- Added `wc-tpp-restricted-mode` CSS class
- Added `wc-tpp-package-selectable` CSS class for styling
- New product meta key: `_wc_tpp_restrict_to_packages`
- New global option: `wc_tpp_restrict_package_quantities`

### Translations
- Added 7 new translatable strings
- Updated all language files (en_US, de_DE, de_CH_informal)
- All .mo files recompiled with new strings

## Installation

1. Download the ZIP file: `wc-tier-and-package-prices-1.1.0.zip`
2. Log in to your WordPress admin panel
3. Navigate to **Plugins > Add New > Upload Plugin**
4. Choose the downloaded ZIP file
5. Click **Install Now**
6. After installation, click **Activate Plugin**
7. Go to **WooCommerce > Settings > Tier & Package Prices** to configure

### Upgrade from 1.0.x

This is a **minor version** update with new features. No data migration needed.

**Steps:**
1. Deactivate the current version
2. Upload and activate version 1.1.0
3. All existing settings and data will be automatically preserved
4. Review new restriction settings if desired

### Upgrade from 1.0.2

No breaking changes. Safe to upgrade directly. New restriction feature is disabled by default.

### Requirements

- **WordPress:** 6.0 or higher
- **PHP:** 7.4 or higher
- **WooCommerce:** 8.0 or higher

## New Strings Translation Reference

All new strings in this release:

### Settings Page
1. "Restrict to Package Quantities" - Checkbox label
2. "Limit quantities to defined package sizes only" - Checkbox description
3. "When enabled, customers can only purchase..." - Tooltip text

### Product Meta Box
4. "Restrict to Package Quantities" - Checkbox label (same as above)
5. "Only allow quantities defined in packages above" - Tooltip text

### Frontend Display
6. "Choose a package size below" - User notice in restricted mode

### Cart Validation
7. "this product" - Fallback product name
8. "The quantity %1$d is not available for %2$s..." - Error message template

## Use Cases

### Bulk-Only Sales
Enable restriction globally to sell products only in bulk quantities.

**Example:**
- Package 1: 100 units at $500
- Package 2: 250 units at $1,100
- Package 3: 500 units at $2,000

Customers can only purchase these exact quantities.

### Sample Packs
Create fixed sample packs with no custom quantities.

**Example:**
- Starter Pack: 10 items
- Trial Pack: 25 items
- Full Pack: 50 items

### Promotional Bundles
Offer promotional pricing only for specific bundle sizes.

**Example:**
- Holiday Bundle: 12 units (seasonal pricing)
- Party Pack: 24 units (bulk discount)
- Wholesale Bundle: 100 units (wholesale pricing)

## Configuration Examples

### Example 1: Site-Wide Restriction

**Scenario:** All products should only be sold in packages

**Configuration:**
1. Go to WooCommerce > Settings > Tier & Package Prices
2. Check "Restrict to Package Quantities"
3. Save changes
4. Configure package sizes for each product

**Result:** All products with packages defined will enforce quantity restrictions

### Example 2: Per-Product Restriction

**Scenario:** Only specific products need quantity restrictions

**Configuration:**
1. Leave global setting unchecked
2. Edit the specific product
3. Scroll to Package Pricing section
4. Check "Restrict to Package Quantities"
5. Update product

**Result:** Only that product enforces restrictions

### Example 3: Mixed Approach

**Scenario:** Most products are restricted, but some allow custom quantities

**Configuration:**
1. Enable global restriction
2. For products that should allow custom quantities, simply don't define any packages
3. Products without packages defined won't show restrictions

## Feature Compatibility

### Works With
- ✅ WooCommerce 8.0 - 10.0
- ✅ WordPress 6.0+
- ✅ HPOS (High-Performance Order Storage)
- ✅ All WooCommerce themes
- ✅ Tier pricing (can use both features together)
- ✅ Package pricing (required for restriction)
- ✅ All pricing table display positions

### Requirements for Restriction Feature
- Product must have at least one package defined
- Either global or per-product restriction must be enabled
- Package pricing must be enabled in settings

## Package Contents

The installation package includes all files from version 1.0.2 plus:

### Modified Files
- `wc-tier-and-package-prices.php` - Version updated to 1.1.0
- `composer.json` - Version updated to 1.1.0
- `CHANGELOG.md` - Added v1.1.0 section
- `includes/class-wc-tpp-settings.php` - Added restriction setting
- `includes/class-wc-tpp-product-meta.php` - Added per-product checkbox
- `includes/class-wc-tpp-frontend.php` - Added quantity hiding logic
- `includes/class-wc-tpp-cart.php` - Added validation method
- `assets/js/frontend.js` - Added restricted mode handling
- `templates/frontend/package-pricing-display.twig` - Added restriction notice
- `templates/frontend/pricing-table.twig` - Pass restriction flag
- All translation files (.po/.mo) - Updated with new strings

### Complete Directory Structure
```
wc-tier-and-package-prices/
├── assets/
│   ├── css/
│   │   ├── admin.css
│   │   └── frontend.css
│   └── js/
│       ├── admin.js
│       └── frontend.js (UPDATED)
├── includes/
│   ├── class-wc-tpp-admin.php
│   ├── class-wc-tpp-cart.php (UPDATED)
│   ├── class-wc-tpp-frontend.php (UPDATED)
│   ├── class-wc-tpp-product-meta.php (UPDATED)
│   ├── class-wc-tpp-settings.php (UPDATED)
│   └── class-wc-tpp-template-loader.php
├── languages/ (ALL UPDATED)
│   ├── wc-tier-package-prices-de_CH_informal.po/mo
│   ├── wc-tier-package-prices-de_DE.po/mo
│   ├── wc-tier-package-prices-en_US.po/mo
│   └── wc-tier-package-prices.pot
├── templates/
│   ├── admin/
│   │   ├── package-row.twig
│   │   └── tier-row.twig
│   └── frontend/
│       ├── package-pricing-display.twig (UPDATED)
│       ├── pricing-table.twig (UPDATED)
│       └── tier-pricing-table.twig
├── vendor/ (Twig v3.22.2)
├── CHANGELOG.md (UPDATED)
├── composer.json (UPDATED)
└── wc-tier-and-package-prices.php (UPDATED)
```

## Features (Complete List)

### Tier Pricing
- ✅ Quantity-based discount tiers
- ✅ Automatic price calculation
- ✅ Volume discount display

### Package Pricing
- ✅ Fixed-price bundles
- ✅ Custom package labels
- ✅ Multiple package options per product
- ✅ **NEW:** Quantity restriction to packages only

### Admin Features
- ✅ WooCommerce Settings integration
- ✅ Easy-to-use product meta boxes
- ✅ Configurable display positions
- ✅ Native WooCommerce UI
- ✅ **NEW:** Global restriction setting
- ✅ **NEW:** Per-product restriction override

### Frontend Features
- ✅ Beautiful pricing tables (Twig templates)
- ✅ Real-time cart updates
- ✅ Responsive design
- ✅ 3 languages supported
- ✅ **NEW:** Package-only selection mode
- ✅ **NEW:** Automatic quantity field hiding
- ✅ **NEW:** Visual package selection

### Validation & Security
- ✅ **NEW:** Client-side JavaScript validation
- ✅ **NEW:** Server-side cart validation
- ✅ **NEW:** User-friendly error messages
- ✅ WooCommerce HPOS compatible

## Breaking Changes

**None.** This release is fully backward compatible.

The new restriction feature is disabled by default and must be explicitly enabled.

## Migration Notes

### From 1.0.2
- No migration needed
- New settings appear automatically in admin
- Feature is disabled by default

### Settings Location
All settings remain in: **WooCommerce > Settings > Tier & Package Prices**

### Data Preservation
- All existing tier pricing data preserved
- All existing package pricing data preserved
- All product meta data preserved
- No database changes required

## Known Limitations

### Current Version
1. Restriction only works when packages are defined
2. Cannot restrict to tier quantities (only packages)
3. Restriction applies to entire product (no variation-level control)

### Future Enhancements
These features may be added in future versions:
- Variation-level restriction control
- Restrict to tier quantities option
- Minimum/maximum package selection limits

## Support

- **Documentation:** See README.md and CHANGELOG.md
- **Previous Release:** See RELEASE-INFO-1.0.2.md
- **Issues:** https://src.bundespruefstelle.ch/wc-tier-package-prices/issues
- **Author:** Marco Graetsch

## License

GPL v2 or later - https://www.gnu.org/licenses/gpl-2.0.html

---

**Production Ready:** This package includes optimized autoloader and no development dependencies.

**What's Next:** Version 1.1.0 completes the package restriction feature set. Future versions may add variation-level controls and tier quantity restrictions.
