Files
Odoo-18.0-20251222/pricelist_cache/wizards/pricelist_cache_wizard.py
tocmo0nlord adbe430761
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled
Initial commit: Odoo 18.0-20251222 extra-addons
2026-03-13 20:43:25 +00:00

60 lines
2.2 KiB
Python
Executable File

# Copyright 2021 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
from odoo import api, fields, models
class PricelistCacheWizard(models.TransientModel):
_name = "product.pricelist.cache.wizard"
_description = "Wizard for pricelist cache"
partner_id = fields.Many2one("res.partner")
pricelist_id = fields.Many2one("product.pricelist")
product_id = fields.Many2one("product.product")
display_cache_line_ids = fields.Many2many(
"product.pricelist.cache", string="Cached prices"
)
@api.onchange("partner_id")
def _onchange_partner_id(self):
if self.partner_id:
self.pricelist_id = self.partner_id.property_product_pricelist
else:
self.pricelist_id = False
@api.onchange("pricelist_id", "product_id")
def _onchange_product_pricelist(self):
pricelist = self.pricelist_id
product = self.product_id
partner = self.partner_id
if not pricelist:
self.display_cache_line_ids = False
return
if product:
products = product
else:
products = self.env["product.product"].search([])
if partner and not partner.property_product_pricelist == pricelist:
partner = False
cache_model = self.env["product.pricelist.cache"]
cache_selfs = cache_model.get_cached_prices_for_pricelist(
self.pricelist_id, products
)
# TODO fields are flushed when get_cached_prices_for_pricelist
# is called. I wonder is this is because of the use of flush()
# in the code.
# There's maybe a better way to keep those fields values.
data = {
"display_cache_line_ids": [(6, 0, cache_selfs.ids)],
"pricelist_id": pricelist.id,
"product_id": product.id if product else False,
"partner_id": partner.id if partner else False,
}
self.update(data)
def open_in_tree_view(self):
prices = self.display_cache_line_ids
cache_model = self.env["product.pricelist.cache"]
domain = [("id", "in", prices.ids)]
return cache_model._get_tree_view(domain)