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