From b90d65d2457ad283cf28ffaf970e2c7a554bdf91 Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Wed, 25 Mar 2026 20:09:51 +0100 Subject: [PATCH] 25.03.26 --- modules/purchase_trade/sale.py | 50 +++++++++++++++++------ modules/purchase_trade/view/sale_form.xml | 6 ++- 2 files changed, 43 insertions(+), 13 deletions(-) diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py index 3e6782d..c6044f9 100755 --- a/modules/purchase_trade/sale.py +++ b/modules/purchase_trade/sale.py @@ -214,12 +214,19 @@ class Lot(metaclass=PoolMeta): if self.sale_line: return self.sale_line.sale.id -class Sale(metaclass=PoolMeta): - __name__ = 'sale.sale' - - btb = fields.Many2One('back.to.back',"Back to back") - from_location = fields.Many2One('stock.location', 'From location', required=True,domain=[('type', "!=", 'customer')]) - to_location = fields.Many2One('stock.location', 'To location', required=True,domain=[('type', "!=", 'supplier')]) +class Sale(metaclass=PoolMeta): + __name__ = 'sale.sale' + + btb = fields.Many2One('back.to.back',"Back to back") + bank_accounts = fields.Function( + fields.Many2Many('bank.account', None, None, "Bank Accounts"), + 'on_change_with_bank_accounts') + bank_account = fields.Many2One( + 'bank.account', "Bank Account", + domain=[('id', 'in', Eval('bank_accounts', []))], + depends=['bank_accounts']) + from_location = fields.Many2One('stock.location', 'From location', required=True,domain=[('type', "!=", 'customer')]) + to_location = fields.Many2One('stock.location', 'To location', required=True,domain=[('type', "!=", 'supplier')]) shipment_out = fields.Many2One('stock.shipment.out','Sales') #pnl = fields.One2Many('valuation.valuation', 'sale', 'Pnl') pnl = fields.One2Many('valuation.valuation.dyn', 'r_sale', 'Pnl',states={'invisible': ~Eval('group_pnl'),}) @@ -253,12 +260,31 @@ class Sale(metaclass=PoolMeta): lc_date = fields.Date("LC date") product_origin = fields.Char("Origin") - def get_company_info(self,name): - return (self.company.party.name == 'MELYA') - - @classmethod - def default_wb(cls): - WB = Pool().get('purchase.weight.basis') + def get_company_info(self,name): + return (self.company.party.name == 'MELYA') + + @fields.depends('party', '_parent_party.bank_accounts') + def on_change_with_bank_accounts(self, name=None): + if self.party and self.party.bank_accounts: + return [account.id for account in self.party.bank_accounts] + return [] + + @fields.depends( + 'company', 'party', 'invoice_party', 'shipment_party', 'warehouse', + 'payment_term', 'lines', 'bank_account', '_parent_party.bank_accounts') + def on_change_party(self): + super().on_change_party() + if self.party and self.party.bank_accounts: + party_bank_accounts = list(self.party.bank_accounts) + if (not self.bank_account + or self.bank_account not in party_bank_accounts): + self.bank_account = party_bank_accounts[0] + else: + self.bank_account = None + + @classmethod + def default_wb(cls): + WB = Pool().get('purchase.weight.basis') wb = WB.search(['id','>',0]) if wb: return wb[0].id diff --git a/modules/purchase_trade/view/sale_form.xml b/modules/purchase_trade/view/sale_form.xml index b27b8bb..8ec11b5 100755 --- a/modules/purchase_trade/view/sale_form.xml +++ b/modules/purchase_trade/view/sale_form.xml @@ -92,4 +92,8 @@ this repository contains the full copyright notices and license terms. -->