Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC
This commit is contained in:
43
l10n_ru_contract_account/models/account_payment.py
Normal file
43
l10n_ru_contract_account/models/account_payment.py
Normal file
@@ -0,0 +1,43 @@
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class AccountPayment(models.Model):
|
||||
_inherit = 'account.payment'
|
||||
|
||||
mt_contract_id = fields.Many2one(
|
||||
'partner.contract.customer', string=_('Номер договора'),
|
||||
compute='_compute_mt_contract_id', store=True, readonly=False,
|
||||
help='Договор-основание платежа. Используется для ведения расчётов '
|
||||
'с контрагентом в разрезе договора (в т.ч. в РСБУ-слое).')
|
||||
|
||||
@api.depends('partner_id', 'company_id', 'partner_type')
|
||||
def _compute_mt_contract_id(self):
|
||||
"""Подставить договор контрагента по умолчанию.
|
||||
|
||||
Для клиентских платежей — действующий (signed) клиентский договор
|
||||
партнёра в рамках компании; для платежей поставщикам — договор с
|
||||
поставщиком. Выбранный вручную договор не перезаписываем.
|
||||
"""
|
||||
Contract = self.env['partner.contract.customer']
|
||||
for payment in self:
|
||||
if payment.mt_contract_id:
|
||||
continue
|
||||
if not payment.partner_id:
|
||||
payment.mt_contract_id = False
|
||||
continue
|
||||
partner = payment.partner_id.commercial_partner_id \
|
||||
or payment.partner_id
|
||||
contract_type = 'customer' if payment.partner_type == 'customer' \
|
||||
else 'supplier'
|
||||
domain = [
|
||||
('partner_id', '=', partner.id),
|
||||
('type', '=', contract_type),
|
||||
('is_template', '=', False),
|
||||
]
|
||||
if payment.company_id:
|
||||
domain.append(('company_id', '=', payment.company_id.id))
|
||||
contract = Contract.search(
|
||||
domain + [('state', '=', 'signed')],
|
||||
order='date_start desc', limit=1,
|
||||
) or Contract.search(domain, order='date_start desc', limit=1)
|
||||
payment.mt_contract_id = contract.id if contract else False
|
||||
Reference in New Issue
Block a user