Split DealerDiscount to Order Section
parent
905d4264df
commit
d28165d757
|
|
@ -59,6 +59,7 @@ class Invoice(models.Model):
|
|||
if invoice.dealer_discount_type == 'fixed':
|
||||
amount = invoice.dealer_discount_amount
|
||||
else:
|
||||
dlines = {}
|
||||
sep = "; "
|
||||
# discount_text = "-" + str(invoice.dealer_discount_percentage) + "% " + discount_text + ", "
|
||||
|
||||
|
|
@ -71,18 +72,24 @@ class Invoice(models.Model):
|
|||
discount_pos = ""
|
||||
n=0
|
||||
nd=0
|
||||
line_origin = ""
|
||||
for line in invoice.invoice_line_ids.sorted(key=lambda l: l.sequence):
|
||||
n += 1
|
||||
# dline = dlines.setdefault(line.layout_category_id, {})
|
||||
line_origin = line.origin or line_origin
|
||||
dline = dlines.setdefault(line_origin, {})
|
||||
if not line.product_id.product_tmpl_id.material_type_id.no_dealer_discount:
|
||||
dline.setdefault("pos", []).append(str(n))
|
||||
nd += 1
|
||||
dline["amount"] = dline.get("amount", 0) + (line.price_subtotal * invoice.dealer_discount_percentage)/100
|
||||
amount += (line.price_subtotal * invoice.dealer_discount_percentage)/100
|
||||
discount_pos += str(n)+sep
|
||||
if nd>1:
|
||||
discount_text = discount_text + "Positionen: "
|
||||
else:
|
||||
discount_text = discount_text + "Position: "
|
||||
# if nd>1:
|
||||
# discount_text = discount_text + "Positionen: "
|
||||
# else:
|
||||
# discount_text = discount_text + "Position: "
|
||||
|
||||
discount_text = discount_text + discount_pos.rstrip(sep)
|
||||
# discount_text = discount_text + discount_pos.rstrip(sep)
|
||||
|
||||
# Apply fiscal position
|
||||
taxes = discount_product_id.taxes_id.filtered(lambda t: t.company_id.id == invoice.company_id.id)
|
||||
|
|
@ -93,23 +100,45 @@ class Invoice(models.Model):
|
|||
layout_category_id = self.env['sale.layout_category'].search([('name', '=', discount_product_id.manufacturing_number)])
|
||||
|
||||
if amount != 0:
|
||||
last_inv_line = self.env['account.invoice.line'].search([('invoice_id', '=', invoice.id)], order='sequence desc',
|
||||
limit=1)
|
||||
last_sequence = last_inv_line.sequence + 1 if last_inv_line else 99999
|
||||
# Create the Invoice line
|
||||
InvoiceLine.create({
|
||||
'name': discount_text,
|
||||
'price_unit': -amount,
|
||||
'account_id': account_id,
|
||||
'quantity': 1.0,
|
||||
'discount': 0.0,
|
||||
'uom_id': discount_product_id.uom_id.id,
|
||||
'product_id': discount_product_id.id,
|
||||
'invoice_id': invoice.id,
|
||||
'invoice_line_tax_ids': [(6, 0, taxes_ids)],
|
||||
'layout_category_id':layout_category_id.id,
|
||||
'sequence': last_sequence,
|
||||
})
|
||||
# last_inv_line = self.env['account.invoice.line'].search([('invoice_id', '=', invoice.id)], order='sequence desc',
|
||||
# limit=1)
|
||||
# last_sequence = last_inv_line.sequence + 1 if last_inv_line else 99999
|
||||
# # Create the Invoice line
|
||||
# InvoiceLine.create({
|
||||
# 'name': discount_text,
|
||||
# 'price_unit': -amount,
|
||||
# 'account_id': account_id,
|
||||
# 'quantity': 1.0,
|
||||
# 'discount': 0.0,
|
||||
# 'uom_id': discount_product_id.uom_id.id,
|
||||
# 'product_id': discount_product_id.id,
|
||||
# 'invoice_id': invoice.id,
|
||||
# 'invoice_line_tax_ids': [(6, 0, taxes_ids)],
|
||||
# 'layout_category_id':layout_category_id.id,
|
||||
# 'sequence': last_sequence,
|
||||
# })
|
||||
|
||||
for oref, dpos in dlines.items():
|
||||
print("%s: %d,pos: %s" % (oref, dline['amount'], ",".join(dline['pos'])))
|
||||
discount_text += "Auftrag: "+oref
|
||||
discount_text += "Position:"+";".join(dpos['pos'])
|
||||
last_inv_line = self.env['account.invoice.line'].search([('invoice_id', '=', invoice.id)], order='sequence desc',
|
||||
limit=1)
|
||||
last_sequence = last_inv_line.sequence + 1 if last_inv_line else 99999
|
||||
# Create the Invoice line
|
||||
InvoiceLine.create({
|
||||
'name': discount_text,
|
||||
'price_unit': -amount,
|
||||
'account_id': account_id,
|
||||
'quantity': 1.0,
|
||||
'discount': 0.0,
|
||||
'uom_id': discount_product_id.uom_id.id,
|
||||
'product_id': discount_product_id.id,
|
||||
'invoice_id': invoice.id,
|
||||
'invoice_line_tax_ids': [(6, 0, taxes_ids)],
|
||||
'layout_category_id':layout_category_id.id,
|
||||
'sequence': last_sequence,
|
||||
})
|
||||
|
||||
super()._onchange_invoice_line_ids()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue