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. -->
-
\ No newline at end of file
+
+
+
+
+