Feat: Se agrega total_tip
This commit is contained in:
parent
9cc0828696
commit
cec192af36
36
sale.py
36
sale.py
@ -20,6 +20,12 @@ class Sale(metaclass=PoolMeta):
|
|||||||
'get_amount')
|
'get_amount')
|
||||||
total_discount_cache = fields.Numeric(
|
total_discount_cache = fields.Numeric(
|
||||||
"Total Discount cache", digits='currency')
|
"Total Discount cache", digits='currency')
|
||||||
|
total_tip = fields.Function(
|
||||||
|
Monetary(
|
||||||
|
"Total Tip", digits='currency', currency='currency'),
|
||||||
|
'get_amount')
|
||||||
|
total_tip_cache = fields.Numeric(
|
||||||
|
"Total Tip cache", digits="currency")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def __setup__(cls):
|
def __setup__(cls):
|
||||||
@ -42,6 +48,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
self.tax_amount = Decimal('0.0')
|
self.tax_amount = Decimal('0.0')
|
||||||
self.total_amount = Decimal('0.0')
|
self.total_amount = Decimal('0.0')
|
||||||
self.total_discount = Decimal('0.0')
|
self.total_discount = Decimal('0.0')
|
||||||
|
self.total_tip = Decimal('0.0')
|
||||||
|
|
||||||
if self.lines:
|
if self.lines:
|
||||||
for line in self.lines:
|
for line in self.lines:
|
||||||
@ -52,6 +59,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
self.tax_amount = self.currency.round(self.tax_amount)
|
self.tax_amount = self.currency.round(self.tax_amount)
|
||||||
self.total_amount = self.untaxed_amount + self.tax_amount
|
self.total_amount = self.untaxed_amount + self.tax_amount
|
||||||
if self.currency:
|
if self.currency:
|
||||||
|
self.total_tip = self.currency.round(self.total_tip)
|
||||||
self.total_discount = self.currency.round(self.total_discount)
|
self.total_discount = self.currency.round(self.total_discount)
|
||||||
self.total_amount = self.currency.round(self.total_amount)
|
self.total_amount = self.currency.round(self.total_amount)
|
||||||
|
|
||||||
@ -62,6 +70,7 @@ 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
|
||||||
|
sale.total_tip_cache = sale.total_tip
|
||||||
cls.save(sales)
|
cls.save(sales)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -70,6 +79,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
tax_amount = {}
|
tax_amount = {}
|
||||||
total_amount = {}
|
total_amount = {}
|
||||||
total_discount = {}
|
total_discount = {}
|
||||||
|
total_tip = {}
|
||||||
if {'tax_amount', 'total_amount'} & set(names):
|
if {'tax_amount', 'total_amount'} & set(names):
|
||||||
compute_taxes = True
|
compute_taxes = True
|
||||||
else:
|
else:
|
||||||
@ -82,10 +92,10 @@ class Sale(metaclass=PoolMeta):
|
|||||||
if (sale.state in cls._states_cached
|
if (sale.state in cls._states_cached
|
||||||
and sale.untaxed_amount_cache is not None
|
and sale.untaxed_amount_cache is not None
|
||||||
and sale.tax_amount_cache is not None
|
and sale.tax_amount_cache is not None
|
||||||
and sale.total_amount_cache is not None
|
and sale.total_amount_cache is not None):
|
||||||
and sale.total_discount_cache is not None):
|
|
||||||
untaxed_amount[sale.id] = sale.untaxed_amount_cache
|
untaxed_amount[sale.id] = sale.untaxed_amount_cache
|
||||||
total_discount[sale.id] = sale.total_discount_cache
|
total_discount[sale.id] = sale.total_discount_cache
|
||||||
|
total_tip[sale.id] = sale.total_tip_cache
|
||||||
if compute_taxes:
|
if compute_taxes:
|
||||||
tax_amount[sale.id] = sale.tax_amount_cache
|
tax_amount[sale.id] = sale.tax_amount_cache
|
||||||
total_amount[sale.id] = sale.total_amount_cache
|
total_amount[sale.id] = sale.total_amount_cache
|
||||||
@ -94,8 +104,16 @@ class Sale(metaclass=PoolMeta):
|
|||||||
(line.amount for line in sale.lines
|
(line.amount for line in sale.lines
|
||||||
if line.type == 'line'), Decimal(0)), 2)
|
if line.type == 'line'), Decimal(0)), 2)
|
||||||
total_discount[sale.id] = round(sum(
|
total_discount[sale.id] = round(sum(
|
||||||
(line.discount_amount for line in sale.lines
|
(line.discount_amount * Decimal(
|
||||||
if line.type == 'line'), Decimal(0)), 2)
|
line.quantity) for line in sale.lines
|
||||||
|
if line.discount_amount and line.type == 'line'
|
||||||
|
), Decimal(0)), 2)
|
||||||
|
total_tip[sale.id] = round(
|
||||||
|
sum((
|
||||||
|
line.amount for line in sale.lines
|
||||||
|
if line.product and line.product.tip and (
|
||||||
|
line.type == 'line')
|
||||||
|
), Decimal(0)), 2)
|
||||||
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] = (
|
||||||
@ -106,7 +124,8 @@ class Sale(metaclass=PoolMeta):
|
|||||||
'tax_amount': tax_amount,
|
'tax_amount': tax_amount,
|
||||||
'total_amount': total_amount,
|
'total_amount': total_amount,
|
||||||
'total_discount': total_discount,
|
'total_discount': total_discount,
|
||||||
}
|
'total_tip': total_tip
|
||||||
|
}
|
||||||
for key in list(result.keys()):
|
for key in list(result.keys()):
|
||||||
if key not in names:
|
if key not in names:
|
||||||
del result[key]
|
del result[key]
|
||||||
@ -149,6 +168,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
data = {}
|
data = {}
|
||||||
shop = Shop.search([('id', '=', ctx["shop"])])[0]
|
shop = Shop.search([('id', '=', ctx["shop"])])[0]
|
||||||
data["shop_name"] = shop.name
|
data["shop_name"] = shop.name
|
||||||
|
data["shop_nit"] = shop.company.party.tax_identifier.code
|
||||||
data["shop_address"] = shop.address.street
|
data["shop_address"] = shop.address.street
|
||||||
data['invoice'] = cls.get_invoice(record)
|
data['invoice'] = cls.get_invoice(record)
|
||||||
data["party"] = record.party.name
|
data["party"] = record.party.name
|
||||||
@ -172,6 +192,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
data["total_discount"] = str(round(record.total_discount, 2))
|
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_tip"] = str(record.total_tip)
|
||||||
data["total"] = str(record.total_amount)
|
data["total"] = str(record.total_amount)
|
||||||
data["state"] = \
|
data["state"] = \
|
||||||
"SUBTOTAL" if record.state == "draft" else "CUENTA FINAL"
|
"SUBTOTAL" if record.state == "draft" else "CUENTA FINAL"
|
||||||
@ -392,12 +413,13 @@ class Line(metaclass=PoolMeta):
|
|||||||
@fields.depends('product', 'unit', 'sale',
|
@fields.depends('product', 'unit', 'sale',
|
||||||
'_parent_sale.party', '_parent_sale.invoice_party',
|
'_parent_sale.party', '_parent_sale.invoice_party',
|
||||||
'_parent_sale.pizza_number',
|
'_parent_sale.pizza_number',
|
||||||
'_parent_product.pizza',
|
'_parent_product.template',
|
||||||
|
'_parent_product._parent_template.pizza',
|
||||||
methods=['compute_taxes', 'compute_unit_price',
|
methods=['compute_taxes', 'compute_unit_price',
|
||||||
'on_change_with_amount'])
|
'on_change_with_amount'])
|
||||||
def on_change_product(self):
|
def on_change_product(self):
|
||||||
super(Line, self).on_change_product()
|
super(Line, self).on_change_product()
|
||||||
if self.product and self.product.pizza:
|
if self.product and self.product.template.pizza:
|
||||||
self.pizza = self.sale.pizza_number
|
self.pizza = self.sale.pizza_number
|
||||||
self.bought_pizza = True
|
self.bought_pizza = True
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user