Compare commits

..

2 commits

Author SHA1 Message Date
26dbe222dd add READMEs 2025-12-19 09:22:33 +01:00
d43991240a product_sale_price_from_pricelist: remove redundant filter 2025-12-19 09:22:00 +01:00
4 changed files with 84 additions and 16 deletions

View file

@ -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

View file

@ -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

View file

@ -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 = (

View file

@ -73,10 +73,6 @@
name="products_updated_filter"
domain="[('last_purchase_price_updated', '=', True), ('last_purchase_price_compute_type', '!=', 'manual_update')]"
/>
<filter string="Different Theoritical Price"
name="products_diff_theoritical_filter"
domain="[('price_differs', '=', True)]"
/>
</xpath>
</field>
</record>