diff --git a/ext/custom-addons/tz_dealer_discount/models/invoice.py b/ext/custom-addons/tz_dealer_discount/models/invoice.py index 4d830f04..c5d06f65 100644 --- a/ext/custom-addons/tz_dealer_discount/models/invoice.py +++ b/ext/custom-addons/tz_dealer_discount/models/invoice.py @@ -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()