Add Our bank account
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
# Business Rules - Purchase Trade
|
# Business Rules - Purchase Trade
|
||||||
|
|
||||||
Statut: `draft`
|
Statut: `draft`
|
||||||
Version: `v0.5`
|
Version: `v0.6`
|
||||||
Derniere mise a jour: `2026-04-10`
|
Derniere mise a jour: `2026-04-23`
|
||||||
Owner metier: `a completer`
|
Owner metier: `a completer`
|
||||||
Owner technique: `a completer`
|
Owner technique: `a completer`
|
||||||
|
|
||||||
@@ -389,6 +389,27 @@ Owner technique: `a completer`
|
|||||||
- Priorite:
|
- Priorite:
|
||||||
- `importante`
|
- `importante`
|
||||||
|
|
||||||
|
### BR-PT-018 - Les contrats distinguent le compte bancaire tiers du compte bancaire compagnie
|
||||||
|
|
||||||
|
- Intent: eviter de confondre le compte bancaire du client/fournisseur avec le
|
||||||
|
compte bancaire de la compagnie courante utilise pour encaisser ou payer.
|
||||||
|
- Description:
|
||||||
|
- Sur `sale.sale` et `purchase.purchase`, `bank_account` represente le compte
|
||||||
|
bancaire propre a la `party` du contrat.
|
||||||
|
- Sur `sale.sale` et `purchase.purchase`, `our_bank_account` represente le
|
||||||
|
compte bancaire propre a `company.party`.
|
||||||
|
- Les deux champs sont limites aux comptes bancaires disponibles sur leur
|
||||||
|
party respective.
|
||||||
|
- Resultat attendu:
|
||||||
|
- si plusieurs comptes existent, le compte dont la devise correspond a la
|
||||||
|
devise du contrat est propose en priorite
|
||||||
|
- si aucun compte ne matche la devise, le premier compte disponible est
|
||||||
|
propose
|
||||||
|
- le champ `Our Bank Account` reste modifiable par l'utilisateur dans le
|
||||||
|
domaine des comptes de la compagnie
|
||||||
|
- Priorite:
|
||||||
|
- `importante`
|
||||||
|
|
||||||
### BR-PT-012 - Fallback valuation basis sans summary: utiliser le prix economique de la ligne
|
### BR-PT-012 - Fallback valuation basis sans summary: utiliser le prix economique de la ligne
|
||||||
|
|
||||||
- Intent: eviter qu'une valuation `basis` ouverte sorte a zero alors que la
|
- Intent: eviter qu'une valuation `basis` ouverte sorte a zero alors que la
|
||||||
|
|||||||
@@ -267,6 +267,13 @@ class Purchase(metaclass=PoolMeta):
|
|||||||
'bank.account', "Bank Account",
|
'bank.account', "Bank Account",
|
||||||
domain=[('id', 'in', Eval('bank_accounts', []))],
|
domain=[('id', 'in', Eval('bank_accounts', []))],
|
||||||
depends=['bank_accounts'])
|
depends=['bank_accounts'])
|
||||||
|
our_bank_accounts = fields.Function(
|
||||||
|
fields.Many2Many('bank.account', None, None, "Our Bank Accounts"),
|
||||||
|
'on_change_with_our_bank_accounts')
|
||||||
|
our_bank_account = fields.Many2One(
|
||||||
|
'bank.account', "Our Bank Account",
|
||||||
|
domain=[('id', 'in', Eval('our_bank_accounts', []))],
|
||||||
|
depends=['our_bank_accounts'])
|
||||||
from_location = fields.Many2One('stock.location', 'From location', required=True,domain=[('type', "!=", 'customer')])
|
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')])
|
to_location = fields.Many2One('stock.location', 'To location', required=True,domain=[('type', "!=", 'supplier')])
|
||||||
shipment_in = fields.Many2One('stock.shipment.in','Purchases')
|
shipment_in = fields.Many2One('stock.shipment.in','Purchases')
|
||||||
@@ -324,22 +331,52 @@ class Purchase(metaclass=PoolMeta):
|
|||||||
return account
|
return account
|
||||||
return party_bank_accounts[0]
|
return party_bank_accounts[0]
|
||||||
|
|
||||||
|
def _get_default_our_bank_account(self):
|
||||||
|
if (not self.company or not self.company.party
|
||||||
|
or not self.company.party.bank_accounts):
|
||||||
|
return None
|
||||||
|
company_bank_accounts = list(self.company.party.bank_accounts)
|
||||||
|
if self.currency:
|
||||||
|
for account in company_bank_accounts:
|
||||||
|
if account.currency == self.currency:
|
||||||
|
return account
|
||||||
|
return company_bank_accounts[0]
|
||||||
|
|
||||||
@fields.depends('party', '_parent_party.bank_accounts')
|
@fields.depends('party', '_parent_party.bank_accounts')
|
||||||
def on_change_with_bank_accounts(self, name=None):
|
def on_change_with_bank_accounts(self, name=None):
|
||||||
if self.party and self.party.bank_accounts:
|
if self.party and self.party.bank_accounts:
|
||||||
return [account.id for account in self.party.bank_accounts]
|
return [account.id for account in self.party.bank_accounts]
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
@fields.depends('company', '_parent_company.party',
|
||||||
|
'_parent_company.party.bank_accounts')
|
||||||
|
def on_change_with_our_bank_accounts(self, name=None):
|
||||||
|
if (self.company and self.company.party
|
||||||
|
and self.company.party.bank_accounts):
|
||||||
|
return [account.id for account in self.company.party.bank_accounts]
|
||||||
|
return []
|
||||||
|
|
||||||
@fields.depends(
|
@fields.depends(
|
||||||
'company', 'party', 'invoice_party', 'payment_term', 'lines',
|
'company', 'party', 'invoice_party', 'payment_term', 'lines',
|
||||||
'bank_account', '_parent_party.bank_accounts')
|
'bank_account', 'our_bank_account', '_parent_party.bank_accounts',
|
||||||
|
'_parent_company.party', '_parent_company.party.bank_accounts')
|
||||||
def on_change_party(self):
|
def on_change_party(self):
|
||||||
super().on_change_party()
|
super().on_change_party()
|
||||||
self.bank_account = self._get_default_bank_account()
|
self.bank_account = self._get_default_bank_account()
|
||||||
|
self.our_bank_account = self._get_default_our_bank_account()
|
||||||
|
|
||||||
@fields.depends('party', 'currency', '_parent_party.bank_accounts')
|
@fields.depends(
|
||||||
|
'party', 'company', 'currency', '_parent_party.bank_accounts',
|
||||||
|
'_parent_company.party', '_parent_company.party.bank_accounts')
|
||||||
def on_change_currency(self):
|
def on_change_currency(self):
|
||||||
self.bank_account = self._get_default_bank_account()
|
self.bank_account = self._get_default_bank_account()
|
||||||
|
self.our_bank_account = self._get_default_our_bank_account()
|
||||||
|
|
||||||
|
@fields.depends('company', 'currency', 'our_bank_account',
|
||||||
|
'_parent_company.party', '_parent_company.party.bank_accounts')
|
||||||
|
def on_change_company(self):
|
||||||
|
super().on_change_company()
|
||||||
|
self.our_bank_account = self._get_default_our_bank_account()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def default_wb(cls):
|
def default_wb(cls):
|
||||||
|
|||||||
@@ -232,6 +232,13 @@ class Sale(metaclass=PoolMeta):
|
|||||||
'bank.account', "Bank Account",
|
'bank.account', "Bank Account",
|
||||||
domain=[('id', 'in', Eval('bank_accounts', []))],
|
domain=[('id', 'in', Eval('bank_accounts', []))],
|
||||||
depends=['bank_accounts'])
|
depends=['bank_accounts'])
|
||||||
|
our_bank_accounts = fields.Function(
|
||||||
|
fields.Many2Many('bank.account', None, None, "Our Bank Accounts"),
|
||||||
|
'on_change_with_our_bank_accounts')
|
||||||
|
our_bank_account = fields.Many2One(
|
||||||
|
'bank.account', "Our Bank Account",
|
||||||
|
domain=[('id', 'in', Eval('our_bank_accounts', []))],
|
||||||
|
depends=['our_bank_accounts'])
|
||||||
from_location = fields.Many2One('stock.location', 'From location', required=True,domain=[('type', "!=", 'customer')])
|
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')])
|
to_location = fields.Many2One('stock.location', 'To location', required=True,domain=[('type', "!=", 'supplier')])
|
||||||
shipment_out = fields.Many2One('stock.shipment.out','Sales')
|
shipment_out = fields.Many2One('stock.shipment.out','Sales')
|
||||||
@@ -288,22 +295,53 @@ class Sale(metaclass=PoolMeta):
|
|||||||
return account
|
return account
|
||||||
return party_bank_accounts[0]
|
return party_bank_accounts[0]
|
||||||
|
|
||||||
|
def _get_default_our_bank_account(self):
|
||||||
|
if (not self.company or not self.company.party
|
||||||
|
or not self.company.party.bank_accounts):
|
||||||
|
return None
|
||||||
|
company_bank_accounts = list(self.company.party.bank_accounts)
|
||||||
|
if self.currency:
|
||||||
|
for account in company_bank_accounts:
|
||||||
|
if account.currency == self.currency:
|
||||||
|
return account
|
||||||
|
return company_bank_accounts[0]
|
||||||
|
|
||||||
@fields.depends('party', '_parent_party.bank_accounts')
|
@fields.depends('party', '_parent_party.bank_accounts')
|
||||||
def on_change_with_bank_accounts(self, name=None):
|
def on_change_with_bank_accounts(self, name=None):
|
||||||
if self.party and self.party.bank_accounts:
|
if self.party and self.party.bank_accounts:
|
||||||
return [account.id for account in self.party.bank_accounts]
|
return [account.id for account in self.party.bank_accounts]
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
@fields.depends('company', '_parent_company.party',
|
||||||
|
'_parent_company.party.bank_accounts')
|
||||||
|
def on_change_with_our_bank_accounts(self, name=None):
|
||||||
|
if (self.company and self.company.party
|
||||||
|
and self.company.party.bank_accounts):
|
||||||
|
return [account.id for account in self.company.party.bank_accounts]
|
||||||
|
return []
|
||||||
|
|
||||||
@fields.depends(
|
@fields.depends(
|
||||||
'company', 'party', 'invoice_party', 'shipment_party', 'warehouse',
|
'company', 'party', 'invoice_party', 'shipment_party', 'warehouse',
|
||||||
'payment_term', 'lines', 'bank_account', '_parent_party.bank_accounts')
|
'payment_term', 'lines', 'bank_account', 'our_bank_account',
|
||||||
|
'_parent_party.bank_accounts', '_parent_company.party',
|
||||||
|
'_parent_company.party.bank_accounts')
|
||||||
def on_change_party(self):
|
def on_change_party(self):
|
||||||
super().on_change_party()
|
super().on_change_party()
|
||||||
self.bank_account = self._get_default_bank_account()
|
self.bank_account = self._get_default_bank_account()
|
||||||
|
self.our_bank_account = self._get_default_our_bank_account()
|
||||||
|
|
||||||
@fields.depends('party', 'currency', '_parent_party.bank_accounts')
|
@fields.depends(
|
||||||
|
'party', 'company', 'currency', '_parent_party.bank_accounts',
|
||||||
|
'_parent_company.party', '_parent_company.party.bank_accounts')
|
||||||
def on_change_currency(self):
|
def on_change_currency(self):
|
||||||
self.bank_account = self._get_default_bank_account()
|
self.bank_account = self._get_default_bank_account()
|
||||||
|
self.our_bank_account = self._get_default_our_bank_account()
|
||||||
|
|
||||||
|
@fields.depends('company', 'currency', 'our_bank_account',
|
||||||
|
'_parent_company.party', '_parent_company.party.bank_accounts')
|
||||||
|
def on_change_company(self):
|
||||||
|
super().on_change_company()
|
||||||
|
self.our_bank_account = self._get_default_our_bank_account()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def default_wb(cls):
|
def default_wb(cls):
|
||||||
|
|||||||
@@ -82,5 +82,7 @@ this repository contains the full copyright notices and license terms. -->
|
|||||||
<xpath expr="/form/notebook/page[@id='info']/label[@name='invoice_party']" position="before">
|
<xpath expr="/form/notebook/page[@id='info']/label[@name='invoice_party']" position="before">
|
||||||
<label name="bank_account"/>
|
<label name="bank_account"/>
|
||||||
<field name="bank_account"/>
|
<field name="bank_account"/>
|
||||||
|
<label name="our_bank_account"/>
|
||||||
|
<field name="our_bank_account"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -95,5 +95,7 @@ this repository contains the full copyright notices and license terms. -->
|
|||||||
<xpath expr="/form/notebook/page[@id='other']/label[@name='company']" position="before">
|
<xpath expr="/form/notebook/page[@id='other']/label[@name='company']" position="before">
|
||||||
<label name="bank_account"/>
|
<label name="bank_account"/>
|
||||||
<field name="bank_account"/>
|
<field name="bank_account"/>
|
||||||
|
<label name="our_bank_account"/>
|
||||||
|
<field name="our_bank_account"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
Reference in New Issue
Block a user