Public release from ruodoo-project: 19.0 - 2026-05-10 21:19:01 UTC

This commit is contained in:
CI Publish Bot
2026-05-10 21:19:11 +00:00
commit cbf9e6e6d6
1213 changed files with 183945 additions and 0 deletions

View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import account_payment_register_prepaid

View File

@ -0,0 +1,104 @@
# -*- coding: utf-8 -*-
from collections import defaultdict
from odoo import models, fields, api
class AccountPaymentRegisterPrepaid(models.TransientModel):
_name = 'payment.register.prepaid'
_description = 'Регистрация авансовых платежей'
company_id = fields.Many2one(comodel_name='res.company', string='Компания')
payment_method_line_id = fields.Many2one(comodel_name='account.payment.method.line', string='Метод оплаты', required=True)
partner_bank_id = fields.Many2one(comodel_name='res.partner.bank', string="Банковский счёт получателя")
amount = fields.Monetary(currency_field='currency_id', string='Сумма', readonly=False, required=True)
currency_id = fields.Many2one(comodel_name='res.currency', string='Валюта', required=True)
payment_date = fields.Date(string="Дата платежа", required=True, default=fields.Date.context_today)
journal_id = fields.Many2one(comodel_name='account.journal', string='Журнал', required=True)
communication = fields.Char(string="Заметки")
prepaid_id = fields.Many2one(comodel_name='order.prepaid', string="Авансовый платеж")
advance_type = fields.Selection(selection=[('outbound', 'Входящий'), ('inbound', 'Исходящий')],
string='Тип счета на аванс', related='prepaid_id.advance_type')
method_line_type = fields.Many2one(comodel_name='account.payment.method.line', string="Метод")
amount_const = fields.Float(string='Сумма(Const)')
currency_const = fields.Many2one(comodel_name='res.currency', string='Валюта(Const)')
@api.onchange('partner_bank_id', 'journal_id')
def currency_bank(self):
if self.partner_bank_id:
self.currency_id = self.partner_bank_id.currency_id
@api.onchange('currency_id')
def _amount(self):
for wizard in self:
if not wizard.journal_id or not wizard.currency_id or not wizard.payment_date:
wizard.amount = wizard.amount
else:
test = self.prepaid_id.currency_id._convert(
self.amount_const,
self.currency_id,
self.company_id,
self.payment_date,
)
wizard.amount = test
@api.onchange('journal_id')
def _payment_method_line_id(self):
journal = self.journal_id
if journal:
if self.advance_type == 'outbound':
self.payment_method_line_id = journal.inbound_payment_method_line_ids[0] if journal.inbound_payment_method_line_ids else False
elif self.advance_type == 'inbound':
self.payment_method_line_id = journal.outbound_payment_method_line_ids[0] if journal.outbound_payment_method_line_ids else False
else:
self.payment_method_line_id = False
else:
self.payment_method_line_id = False
@api.onchange('journal_id')
def _bank(self):
if self.prepaid_id and self.prepaid_id.partner_bank_id:
self.partner_bank_id = self.prepaid_id.partner_bank_id
elif self.journal_id and self.journal_id.bank_account_id:
self.partner_bank_id = self.journal_id.bank_account_id
else:
self.partner_bank_id = False
def action_create_payments(self):
prepaid=self.prepaid_id
amount_adv_currency = self.currency_id._convert(
self.amount,
prepaid.currency_id,
self.company_id,
self.payment_date,
)
payment_vals = {
'date': self.payment_date,
'amount': self.amount,
'payment_type': self.advance_type,
'memo': self.communication,
'journal_id': self.journal_id.id,
'company_id': self.company_id.id,
'currency_id': self.currency_id.id,
'partner_id': prepaid.partner_id.id,
'partner_bank_id': self.partner_bank_id.id,
'payment_method_line_id': self.payment_method_line_id.id,
'prepaid_id': prepaid.id,
'amount_adv_currency': amount_adv_currency,
'state': 'draft'
}
payment = self.env['account.payment'].create(payment_vals)
prepaid.payment_id = payment.id
payment.action_post()
prepaid._compute_payment_amount()
return {
'type': 'ir.actions.act_window',
'res_model': 'account.payment',
'res_id': payment.id,
'view_mode': 'form',
'view_type': 'form',
'target': 'self'
}

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_account_payment_register_prepaid_form" model="ir.ui.view">
<field name="name">account.payment.register.prepaid.form</field>
<field name="model">payment.register.prepaid</field>
<field name="arch" type="xml">
<form string="Register Payment">
<group>
<field name="company_id" invisible="1"/>
<field name="advance_type" invisible="1"/>
<field name="prepaid_id" invisible="1"/>
<group name="group1">
<field name="journal_id" options="{'no_open': True, 'no_create': True}"
domain="[('company_id', '=', company_id), ('type', 'in', ['bank', 'cash'])]"/>
<field name="payment_method_line_id" options="{'no_create': True, 'no_open': True}"
domain="[('journal_id', '=', journal_id)]"/>
<field name="partner_bank_id" context="{'display_account_trust': True}"/>
</group>
<group name="group2">
<field name="amount_const" invisible="1"/>
<label for="amount" invisible="0"/>
<div name="amount_div" class="o_row">
<field name="amount"/>
<field name="currency_id" options="{'no_create': True, 'no_open': True}"
groups="base.group_multi_currency"/>
</div>
<field name="payment_date"/>
<field name="communication"/>
</group>
</group>
<footer>
<button string="Создать платеж" name="action_create_payments" type="object"
class="oe_highlight"/>
<button string="Отмена" class="btn btn-secondary" special="cancel" data-hotkey="x"/>
</footer>
</form>
</field>
</record>
</data>
</odoo>