From 5222b93391a310fb71fd761d2b4c14e4ae34ac9a Mon Sep 17 00:00:00 2001 From: Ernad Husremovic Date: Wed, 11 Feb 2026 11:21:14 +0100 Subject: [PATCH] purchase_advance_payment: use self.order_id instead of active_ids context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix make_advance_payment to use the order_id stored on the wizard instead of relying on active_ids from context, which can be lost or point to wrong PO after wizard reopens. Also fix partner_id to use PO partner directly instead of commercial_partner_id. 🤖 assisted by claude --- .../wizard/purchase_advance_payment_wizard.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/odoo-bringout-oca-purchase-workflow-purchase_advance_payment/purchase_advance_payment/wizard/purchase_advance_payment_wizard.py b/odoo-bringout-oca-purchase-workflow-purchase_advance_payment/purchase_advance_payment/wizard/purchase_advance_payment_wizard.py index 6ec9d3d..e2f8719 100644 --- a/odoo-bringout-oca-purchase-workflow-purchase_advance_payment/purchase_advance_payment/wizard/purchase_advance_payment_wizard.py +++ b/odoo-bringout-oca-purchase-workflow-purchase_advance_payment/purchase_advance_payment/wizard/purchase_advance_payment_wizard.py @@ -142,7 +142,7 @@ class AccountVoucherWizardPurchase(models.TransientModel): self.currency_amount = amount_advance def _prepare_payment_vals(self, purchase): - partner_id = purchase.partner_id.commercial_partner_id.id + partner_id = purchase.partner_id.id return { "purchase_id": purchase.id, "date": self.date, @@ -183,13 +183,9 @@ class AccountVoucherWizardPurchase(models.TransientModel): if self.journal_currency_id.compare_amounts(self.amount_advance, 0.0) <= 0: raise exceptions.ValidationError(_("Amount of advance must be positive.")) payment_obj = self.env["account.payment"] - purchase_obj = self.env["purchase.order"] - purchase_ids = self.env.context.get("active_ids", []) - if purchase_ids: - purchase_id = fields.first(purchase_ids) - purchase = purchase_obj.browse(purchase_id) - payment_vals = self._prepare_payment_vals(purchase) + if self.order_id: + payment_vals = self._prepare_payment_vals(self.order_id) payment = payment_obj.create(payment_vals) if bool( self.env["ir.config_parameter"]