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,
|
||||
)
|
||||
|
||||
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 = (
|
||||
|
|
|
|||
|
|
@ -73,6 +73,10 @@
|
|||
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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue