Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC

This commit is contained in:
CI Publish Bot
2026-11-01 22:54:30 +00:00
commit 26250aa580
2492 changed files with 664277 additions and 0 deletions

View 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