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