# WooCommerce Tier and Package Prices

A powerful WooCommerce plugin that adds tier pricing and package pricing functionality to your products with configurable quantities at fixed prices.

## Features

### Tier Pricing (Volume Discounts)
- Set quantity-based pricing tiers
- Automatic discounts when customers buy in larger quantities
- Display savings percentage and amount
- Dynamically updates price based on quantity selected

### Package Pricing
- Create fixed-price packages with specific quantities
- Example: 10 pieces for $50, 25 pieces for $100
- Custom labels for packages (e.g., "Starter Pack", "Value Bundle")
- One-click package selection on product pages

### Admin Features
- Easy-to-use product meta boxes for adding tiers and packages
- Global settings page under WooCommerce menu
- Configure display position (before/after add to cart, after price)
- Enable/disable tier or package pricing independently
- Sortable pricing rules

### Frontend Features
- Beautiful pricing tables on product pages
- Responsive design for mobile devices
- Visual highlighting of active tier/package
- Real-time price updates when quantity changes
- Cart integration with proper price calculations
- Clear pricing indicators in cart

## Installation

1. Upload the `wc-tier-and-package-prices` folder to the `/wp-content/plugins/` directory
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Make sure WooCommerce is installed and activated

## Configuration

### Global Settings

Navigate to **WooCommerce > Tier & Package Prices** to configure:

- **Enable Tier Pricing**: Turn on/off volume discounts
- **Enable Package Pricing**: Turn on/off fixed-price packages
- **Display Pricing Table**: Show/hide pricing tables on product pages
- **Display Position**: Choose where to show pricing tables

### Product Settings

When editing a product, scroll to the **Product data** panel:

1. Click on the **General** tab
2. Scroll down to find **Tier Pricing** and **Package Pricing** sections

#### Adding Tier Pricing

1. Click "Add Tier" button
2. Set minimum quantity (e.g., 10)
3. Set price per unit (e.g., 9.99)
4. Add more tiers as needed
5. Tiers are automatically sorted by quantity

**Example:**
- 1-9 items: $12.00 each (regular price)
- 10-24 items: $10.00 each (tier 1)
- 25-49 items: $8.50 each (tier 2)
- 50+ items: $7.00 each (tier 3)

#### Adding Package Pricing

1. Click "Add Package" button
2. Set exact quantity (e.g., 10)
3. Set fixed price for that quantity (e.g., 99.99)
4. Optionally add a custom label (e.g., "Starter Pack")
5. Add more packages as needed

**Example:**
- Package 1: 10 pieces for $95 (labeled "Small Bundle")
- Package 2: 25 pieces for $200 (labeled "Value Pack")
- Package 3: 50 pieces for $350 (labeled "Business Pack")

## How It Works

### Price Calculation Priority

1. **Package Price** (highest priority): If the exact quantity matches a package, the package price applies
2. **Tier Price**: If no package match, the highest applicable tier price is used
3. **Regular Price**: If no tier or package applies, the regular product price is used

### Frontend Display

- Pricing tables show all available tiers and packages
- Current tier/package is highlighted based on selected quantity
- Prices update dynamically when quantity changes
- Package buttons allow one-click quantity selection

### Cart Behavior

- Correct prices are applied in the cart
- Cart shows whether tier or package pricing is applied
- Subtotals are calculated correctly
- Compatible with WooCommerce checkout process

## File Structure

```
wc-tier-and-package-prices/
├── wc-tier-and-package-prices.php    # Main plugin file
├── includes/
│   ├── class-wc-tpp-admin.php        # Admin settings
│   ├── class-wc-tpp-product-meta.php # Product meta boxes
│   ├── class-wc-tpp-frontend.php     # Frontend display
│   └── class-wc-tpp-cart.php         # Cart price calculations
├── assets/
│   ├── css/
│   │   ├── admin.css                 # Admin styles
│   │   └── frontend.css              # Frontend styles
│   └── js/
│       ├── admin.js                  # Admin JavaScript
│       └── frontend.js               # Frontend JavaScript
└── README.md
```

## Requirements

- WordPress 6.0 or higher (tested up to 6.9.x)
- WooCommerce 8.0 or higher (tested up to 10.x)
- PHP 7.4 or higher

### Compatibility

- ✅ **WooCommerce 10.x**: Fully compatible with the latest WooCommerce release
- ✅ **WordPress 6.9.x**: Tested and verified with WordPress 6.9.x
- ✅ **HPOS (High-Performance Order Storage)**: Full support for WooCommerce Custom Order Tables
- ✅ **Block-based Themes**: Compatible with modern WordPress block themes
- ✅ **Multisite**: Works on WordPress multisite installations

## Frequently Asked Questions

**Q: Can I use both tier pricing and package pricing on the same product?**
A: Yes! Package pricing takes priority when the exact quantity matches.

**Q: What happens if a customer changes the quantity in the cart?**
A: The price will automatically recalculate based on the new quantity.

**Q: Can I set different tiers for different products?**
A: Yes, each product can have its own tier and package pricing configuration.

**Q: Does this work with variable products?**
A: Currently, this plugin is designed for simple products. Variable product support may be added in future versions.

## Support

For bug reports and feature requests, please use the plugin's support forum or contact the developer.

## License

This plugin is licensed under the GPL v2 or later.

## Changelog

### Version 1.0.0 - 2025-12-21

#### Compatibility Updates

- ✅ Updated for WooCommerce 10.x compatibility
- ✅ Updated for WordPress 6.9.x compatibility
- ✅ Added HPOS (High-Performance Order Storage) support
- ✅ Declared compatibility with WooCommerce Custom Order Tables

#### Security Enhancements

- ✅ Added nonce verification for product meta save operations
- ✅ Added capability checks for user permissions
- ✅ Enhanced data escaping and sanitization
- ✅ Implemented autosave prevention

#### Code Improvements

- ✅ Enhanced cart object validation
- ✅ Improved product object type checking
- ✅ Better error handling for edge cases
- ✅ Updated data storage methods for cart items
- ✅ Modernized JavaScript localization with proper escaping

#### Initial Features

- Initial release with tier pricing functionality
- Package pricing with fixed quantities
- Customizable pricing tables
- Global settings page
- Product-level configuration
- Cart integration with dynamic pricing
- Responsive frontend design

## Credits

Developed by Marco Graetsch for WooCommerce store owners who need flexible pricing options.
