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