Compare commits
2 commits
d5342c73fb
...
26dbe222dd
| Author | SHA1 | Date | |
|---|---|---|---|
| 26dbe222dd | |||
| d43991240a |
4 changed files with 84 additions and 16 deletions
38
product_print_category_supermarket/README.md
Normal file
38
product_print_category_supermarket/README.md
Normal 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
|
||||||
46
product_sale_price_from_pricelist/README.md
Normal file
46
product_sale_price_from_pricelist/README.md
Normal 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
|
||||||
|
|
@ -46,18 +46,6 @@ class ProductTemplate(models.Model):
|
||||||
company_dependent=True,
|
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):
|
def _compute_theoritical_price(self):
|
||||||
pricelist_obj = self.env["product.pricelist"]
|
pricelist_obj = self.env["product.pricelist"]
|
||||||
pricelist_id = (
|
pricelist_id = (
|
||||||
|
|
|
||||||
|
|
@ -73,10 +73,6 @@
|
||||||
name="products_updated_filter"
|
name="products_updated_filter"
|
||||||
domain="[('last_purchase_price_updated', '=', True), ('last_purchase_price_compute_type', '!=', 'manual_update')]"
|
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>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue