From d43991240a26ee1a92adbd1d88b6aad8e5618ce4 Mon Sep 17 00:00:00 2001 From: luis Date: Fri, 19 Dec 2025 09:22:00 +0100 Subject: [PATCH 1/2] product_sale_price_from_pricelist: remove redundant filter --- .../models/product_template.py | 12 ------------ .../views/product_view.xml | 4 ---- 2 files changed, 16 deletions(-) diff --git a/product_sale_price_from_pricelist/models/product_template.py b/product_sale_price_from_pricelist/models/product_template.py index 0ac681b..ad79bd0 100644 --- a/product_sale_price_from_pricelist/models/product_template.py +++ b/product_sale_price_from_pricelist/models/product_template.py @@ -46,18 +46,6 @@ class ProductTemplate(models.Model): company_dependent=True, ) - price_differs = fields.Boolean( - string="Price Differs", compute="_compute_price_differs", store=True - ) - - @api.depends("list_price", "list_price_theoritical") - def _compute_price_differs(self): - for product in self: - product.price_differs = ( - product.list_price != product.list_price_theoritical - and product.last_purchase_price_compute_type != "manual_update" - ) - def _compute_theoritical_price(self): pricelist_obj = self.env["product.pricelist"] pricelist_id = ( diff --git a/product_sale_price_from_pricelist/views/product_view.xml b/product_sale_price_from_pricelist/views/product_view.xml index b5d530b..eca9ce8 100644 --- a/product_sale_price_from_pricelist/views/product_view.xml +++ b/product_sale_price_from_pricelist/views/product_view.xml @@ -73,10 +73,6 @@ name="products_updated_filter" domain="[('last_purchase_price_updated', '=', True), ('last_purchase_price_compute_type', '!=', 'manual_update')]" /> - From 26dbe222ddf040005ac90555b941f0f6a9166d56 Mon Sep 17 00:00:00 2001 From: luis Date: Fri, 19 Dec 2025 09:22:33 +0100 Subject: [PATCH 2/2] add READMEs --- product_print_category_supermarket/README.md | 38 ++++++++++++++++ product_sale_price_from_pricelist/README.md | 46 ++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 product_print_category_supermarket/README.md create mode 100644 product_sale_price_from_pricelist/README.md diff --git a/product_print_category_supermarket/README.md b/product_print_category_supermarket/README.md new file mode 100644 index 0000000..a270fca --- /dev/null +++ b/product_print_category_supermarket/README.md @@ -0,0 +1,38 @@ +# Product Print Category Supermarket + +Extends product_print_category with customizable product price tags for supermarkets with dual pricing (member and public). + +## Features + +- Dual price labels (member and public) from different pricelists +- Show product code, barcode, origin, and expiration date on labels +- Customizable label text ("PVS", "PVP", etc.) +- Support for 60x35mm and 60x30mm size formats + + +## Installation + +Install the module and ensure these dependencies are available: +- `product_print_category` +- `product_origin` +- `product_template_tags` +- `product_net_weight` + +## Configuration + +1. **Settings > Products > Label Configuration**: Select pricelists for members and public prices +2. **Sales -> Products > Print Categories**: Configure label settings (show code/barcode, price labels) +3. **Products > Products**: Set product info (origin, ingredients, expiration, balance code, print category) + +## Usage + +1. Go to **Products > Products** +2. Select products to print +3. **Action > Print Products** and choose the desired format + +Prices are automatically calculated from configured pricelists with taxes included. + + +## License + +AGPL-3.0 or later diff --git a/product_sale_price_from_pricelist/README.md b/product_sale_price_from_pricelist/README.md new file mode 100644 index 0000000..4fbebb0 --- /dev/null +++ b/product_sale_price_from_pricelist/README.md @@ -0,0 +1,46 @@ +# 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 +- **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 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