# Product Sale Price from Pricelist

Automatically calculate and update product sale prices based on the last purchase price and configurable pricelists.

## Features

- **Automatic Price Calculation**: Set sale prices based on last purchase price and a configured pricelist
- **Flexible Discount Handling**: Choose how to apply discounts to the cost:
  - Without discounts
  - First discount only
  - Double discount
  - Triple discount
  - Manual update
- **Tax-Aware Pricing**: Automatically includes tax calculations in pricing
- **Configurable Price Rounding**: Round the final theoretical price (after taxes) to a configurable step, with choice of rounding direction
- **UoM Conversion**: Handles different purchase and sale units of measure
- **Batch Updates**: Update theoretical prices for multiple products
- **Product Flags**: Mark products for price updates and track status

## Configuration

1. **Settings > Sales > Automatic Price Configuration**: Select the pricelist for automatic price calculation
2. **Products > Products**: Configure per product:
   - **Last purchase price**: Cost at which the product was last purchased
   - **Last purchase price calculation type**: Choose how to apply discounts
   - Mark **Last purchase price updated** when prices need to be reviewed
## Price Rounding

Pricelist can be configured to round the final theoretical price (after taxes) to a fixed step:

- **Sale Price Rounding Step**: Interval to round to (e.g. `0.05` rounds to the nearest 5 cents). Set to `0.00` to disable.
- **Sale Price Rounding Method**: Direction applied when rounding:
  - **Always up (ceil)**: rounds to the next multiple of the step *(default)*
  - **Always down (floor)**: rounds to the previous multiple of the step
  - **Nearest (round)**: rounds to the closest multiple of the step

These settings are found on pricelist form under the **Sale Price Rounding** group.
## Price Calculation Types

- **Without Discounts**: Uses base purchase price without discounts
- **First Discount**: Applies only the first discount
- **Double Discount**: Applies first and second discount
- **Triple Discount**: Applies first, second, and third discount
- **Manual Update**: Price must be set manually

## Usage

1. Products are priced when received from purchase orders
2. System automatically updates **last_purchase_price** field
3. Sale price is calculated from the configured pricelist using the cost price
4. Taxes are automatically applied based on product tax settings
5. Go to **Products > Update Theoretical Prices** to batch update prices


## License

AGPL-3.0 or later
