diff --git a/product_print_category_supermarket/README.md b/product_print_category_supermarket/README.md deleted file mode 100644 index a270fca..0000000 --- a/product_print_category_supermarket/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# 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 deleted file mode 100644 index 4fbebb0..0000000 --- a/product_sale_price_from_pricelist/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# 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 diff --git a/product_sale_price_from_pricelist/models/product_template.py b/product_sale_price_from_pricelist/models/product_template.py index ad79bd0..0ac681b 100644 --- a/product_sale_price_from_pricelist/models/product_template.py +++ b/product_sale_price_from_pricelist/models/product_template.py @@ -46,6 +46,18 @@ 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 eca9ce8..b5d530b 100644 --- a/product_sale_price_from_pricelist/views/product_view.xml +++ b/product_sale_price_from_pricelist/views/product_view.xml @@ -73,6 +73,10 @@ name="products_updated_filter" domain="[('last_purchase_price_updated', '=', True), ('last_purchase_price_compute_type', '!=', 'manual_update')]" /> +