You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
from odoo import api, fields, models
class ContractContract(models.Model): _inherit = 'contract.contract'
payment_mode_id = fields.Many2one( comodel_name='account.payment.mode', string='Payment Mode', domain=[('payment_type', '=', 'inbound')], index=True, )
@api.onchange('partner_id') def on_change_partner_id(self): self.payment_mode_id = self.partner_id.customer_payment_mode_id.id
@api.multi def _prepare_invoice(self, date_invoice, journal=None): invoice_vals = super(ContractContract, self)._prepare_invoice( date_invoice=date_invoice, journal=journal) if self.payment_mode_id: invoice_vals['payment_mode_id'] = self.payment_mode_id.id invoice = self.env['account.invoice'].new(invoice_vals) invoice._onchange_payment_mode_id() invoice_vals = invoice._convert_to_write(invoice._cache) return invoice_vals
@api.model def _finalize_invoice_creation(self, invoices): """
This override preserves the payment mode when calling the partner's onchange. """
payment_modes_by_invoice = {} for invoice in invoices: payment_modes_by_invoice[invoice] = invoice.payment_mode_id res = super(ContractContract, self)._finalize_invoice_creation( invoices) for invoice in invoices: invoice.payment_mode_id = payment_modes_by_invoice.get(invoice) return res
|