Compare commits
No commits in common. "26dbe222ddf040005ac90555b941f0f6a9166d56" and "d5342c73fb95b689f428812dcab7d28155ba226f" have entirely different histories.
26dbe222dd
...
d5342c73fb
4 changed files with 16 additions and 84 deletions
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -46,6 +46,18 @@ 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,6 +73,10 @@
|
||||||
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