From 2499458314f2607c9d4aca1624658b6664b21bb7 Mon Sep 17 00:00:00 2001 From: Berezi Date: Thu, 16 Jan 2025 13:34:47 +0100 Subject: [PATCH] [14.0][IMP] custom_p: Add changes in confirm multicompany. --- custom_p/__manifest__.py | 2 ++ custom_p/models/sale_order.py | 27 +++++++++++++++++++++++++++ custom_p/models/sale_order_line.py | 17 ++++++++++++++++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/custom_p/__manifest__.py b/custom_p/__manifest__.py index 6f78eaf065..4737e40e7a 100644 --- a/custom_p/__manifest__.py +++ b/custom_p/__manifest__.py @@ -26,6 +26,8 @@ "sale_order_usability", "sale_order_line_gross_weight", "custom_breeding_apps", + "custom_descarga", + "sale_order_confirm_multicompany", ], "data": [ "security/ir.model.access.csv", diff --git a/custom_p/models/sale_order.py b/custom_p/models/sale_order.py index cd0c2be1d8..de931a4da2 100644 --- a/custom_p/models/sale_order.py +++ b/custom_p/models/sale_order.py @@ -16,6 +16,33 @@ class SaleOrder(models.Model): copy=False, ) + def button_confirm_pickings(self): + if self.auto_purchase_order_id: + for line in self.order_line: + if line.auto_purchase_line_id: + lot = self.env["stock.production.lot"] + if line.lot_id: + lot_name = line.lot_id.name + company = line.sudo().auto_purchase_line_id.company_id + product = line.product_id + lot_domain = [ + ("name", "=", lot_name), + ("company_id", "=", company.id), + ("product_id", "=", product.id), + ] + lot = lot.sudo().search(lot_domain) + if not lot: + lot = lot.sudo().action_create_lot( + product, lot_name, company + ) + line.auto_purchase_line_id.sudo().write( + { + "lot_id": lot.id or False, + "return_qty": line.return_qty, + } + ) + return super().button_confirm_pickings() + def button_return_picking(self): self.update_line_qty = True return super().button_return_picking() diff --git a/custom_p/models/sale_order_line.py b/custom_p/models/sale_order_line.py index 0b215e933e..a9008456dc 100644 --- a/custom_p/models/sale_order_line.py +++ b/custom_p/models/sale_order_line.py @@ -1,5 +1,6 @@ # Copyright 2024 Berezi Amubieta - AvanzOSC # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from datetime import timedelta from odoo import api, fields, models @@ -93,7 +94,21 @@ def _get_invoice_qty(self): @api.model def create(self, values): + if "customer_lead" not in values: + order = self.env["sale.order"].browse(values.get("order_id")) + product = self.env["product.product"].browse(values.get("product_id")) + values.update( + {"customer_lead": order._get_customer_lead(product.product_tmpl_id)} + ) result = super(SaleOrderLine, self).create(values) if not result.order_id.commitment_date: - result.order_id.commitment_date = result.order_id.expected_date + order_date = fields.Datetime.from_string( + result.order_id.date_order + if result.order_id.date_order + and result.order_id.state in ["sale", "done"] + else fields.Datetime.now() + ) + result.order_id.commitment_date = order_date + timedelta( + days=result.customer_lead or 0.0 + ) return result