total_discount

This commit is contained in:
sinergia 2023-09-03 17:14:11 -05:00
parent 94279af9b8
commit b8c9db77f4

19
sale.py
View File

@ -13,9 +13,10 @@ class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
pizza_number = fields.Integer("Number pizza")
total_discount = fields.Function(Monetary("Total Discount", currency='currency', digits='currency'),
'get_amount')
total_discount_cache = Monetary("Total Discount cache", currency='currency', digits='currency')
total_discount = fields.Function(
Monetary("Total Discount", digits='currency', currency='currency'), 'get_amount')
total_discount_cache = Monetary(
"Total Discount cache", digits='currency', currency='currency')
@classmethod
def __setup__(cls):
@ -39,8 +40,8 @@ class Sale(metaclass=PoolMeta):
sale.tax_amount_cache = sale.tax_amount
sale.total_amount_cache = sale.total_amount
sale.total_discount_cache = sale.total_discount
cls.save(sales)
cls.save(sales)
@classmethod
def get_amount(cls, sales, names):
untaxed_amount = {}
@ -53,7 +54,7 @@ class Sale(metaclass=PoolMeta):
compute_taxes = False
# Sort cached first and re-instanciate to optimize cache management
sales = sorted(sales, key=lambda s: s.state in cls._states_cached,
reverse=True)
reverse=True)
sales = cls.browse(sales)
for sale in sales:
if (sale.state in cls._states_cached
@ -72,7 +73,7 @@ class Sale(metaclass=PoolMeta):
if line.type == 'line'), Decimal(0))
total_discount[sale.id] = sum(
(line.discount_amount for line in sale.lines
if line.type == 'line'), Decimal(0))
if line.type == 'line'), Decimal(0))
if compute_taxes:
tax_amount[sale.id] = sale.get_tax_amount()
total_amount[sale.id] = (
@ -97,7 +98,8 @@ class Sale(metaclass=PoolMeta):
return dict([
('resolution_number', resolution.resolution_number),
('resolution_prefix', resolution.prefix),
('valid_date_time_from', str(resolution.valid_date_time_from)),
('valid_date_time_from', str(
resolution.valid_date_time_from)),
('valid_date_time_to', str(resolution.valid_date_time_to)),
('from_number', resolution.from_number),
('to_number', resolution.to_number)])
@ -148,6 +150,7 @@ class Sale(metaclass=PoolMeta):
if line.type != 'title' and line.taxes else None
} for line in record.lines]
data["total_discount"] = str(round(record.total_discount,2))
data["untaxed_amount"] = str(record.untaxed_amount)
data["tax_amount"] = str(record.tax_amount)
data["total"] = str(record.total_amount)