From e1e8c94c947ddb125ae1a6952b07d9e1a1ef8e88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20V=C3=A9zina?= Date: Wed, 19 Feb 2025 13:48:34 -0500 Subject: [PATCH] fix for merge PO with requisition id --- purchase_customer_requisition/__manifest__.py | 21 +++++++--- .../models/__init__.py | 1 + .../models/purchase_order.py | 39 +++++++------------ .../views/purchase_order_views.xml | 14 ------- 4 files changed, 31 insertions(+), 44 deletions(-) delete mode 100644 purchase_customer_requisition/views/purchase_order_views.xml diff --git a/purchase_customer_requisition/__manifest__.py b/purchase_customer_requisition/__manifest__.py index fd284e7..0332e2d 100644 --- a/purchase_customer_requisition/__manifest__.py +++ b/purchase_customer_requisition/__manifest__.py @@ -3,11 +3,21 @@ "version": "1.0", "category": "Purchase", "summary": "Link customer requisition references to purchase orders", - "description": """ - This module allows to: - * Store customer-specific requisition references for suppliers - * Automatically add these references to purchase order lines - * Track customer requisition numbers across purchase orders + "description": """\ + Advanced Customer Requisition Management + + Key Features: + - 🔗 Customer-specific requisition tracking in purchase orders + - 👥 Multi-customer agreement management + - 🔄 Automated price synchronization from framework contracts + - 🔍 Optimized search via key field indexing + - 📊 Full integration with Purchase, Sale and Stock modules + + Use Cases: + 1. Centralized management of customer procurement agreements + 2. Automated PO line referencing from customer contracts + 3. Real-time price updates from master agreements + 4. Unified purchasing/customer reporting """, "license": "LGPL-3", "depends": [ @@ -21,7 +31,6 @@ "data": [ "views/purchase_views.xml", "views/purchase_requisition_views.xml", - "views/purchase_order_views.xml", ], "installable": True, "application": False, diff --git a/purchase_customer_requisition/models/__init__.py b/purchase_customer_requisition/models/__init__.py index ab9f821..0076eac 100644 --- a/purchase_customer_requisition/models/__init__.py +++ b/purchase_customer_requisition/models/__init__.py @@ -1,2 +1,3 @@ from . import purchase_order_line from . import purchase_requisition +from . import purchase_order diff --git a/purchase_customer_requisition/models/purchase_order.py b/purchase_customer_requisition/models/purchase_order.py index c76453f..aee8ec4 100644 --- a/purchase_customer_requisition/models/purchase_order.py +++ b/purchase_customer_requisition/models/purchase_order.py @@ -3,28 +3,19 @@ from odoo import models class PurchaseOrder(models.Model): _inherit = 'purchase.order' - def _merge_alternative_po(self, rfqs): - """Override to handle requisition_id during merge. - - Args: - rfqs: recordset of purchase.order to merge + def action_merge(self): + """Override to clear requisition_id before merging multiple POs""" + if len(self) > 1: + # Check if all POs have the same requisition_id + unique_requisitions = set(order.requisition_id.id for order in self if order.requisition_id) - Returns: - purchase.order: the merged purchase order - """ - # Only merge orders in draft or sent state - rfqs = rfqs.filtered(lambda o: o.state in ('draft', 'sent')) - - # Get the oldest order as base - base_order = rfqs.sorted(lambda x: (x.date_order, x.id))[0] - - # Call parent method to merge orders - merged_order = super()._merge_alternative_po(rfqs) - - # After merge, ensure lines are properly linked to their requisitions - for line in merged_order.order_line: - line._compute_requisition_id() - if line.requisition_id and line.requisition_line_id: - line.price_unit = line.requisition_line_id.price_unit - - return merged_order + # Only clear requisition_ids if they are different + if len(unique_requisitions) > 1: + self.write({'requisition_id': False}) + + # Call parent method to perform merge + result = super().action_merge() + + return result + + return super().action_merge() diff --git a/purchase_customer_requisition/views/purchase_order_views.xml b/purchase_customer_requisition/views/purchase_order_views.xml deleted file mode 100644 index 1df5e8b..0000000 --- a/purchase_customer_requisition/views/purchase_order_views.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - purchase.order.form.inherit.requisition - purchase.order - - - - - 1 - - - -