Can you provide an idea about about invoice/vendor bills payments allocation . I am using odoo15 . In payments i added a one2many for list customers' not fully paid invoices/vendor bills . I need to allocate partial/ full payment when post payments .
Here is my code .
class AccountPayment(models.Model):
_inherit = "account.payment" payment_line_ids = fields.One2many('account.payment.line', 'payment_id', string="Invoice Adjustment") @api.onchange('partner_id') def _onchange_partner_id(self): line_vals = [] for rec in self: rec.payment_line_ids = False if rec.partner_id: partner_moves = self.env['account.move'].search([('partner_id', '=', rec.partner_id.id),('state', '=', 'posted'), ('payment_state', 'in',('not_paid','partial'))]) for mov in partner_moves: open_invoice_lines = { 'move_id':mov.id, 'date':mov.date, 'date_due': mov.invoice_date_due, 'original_amount': mov.amount_total, 'balance_amount': mov.amount_residual, 'payment_id':rec.id, } line_vals.append((0, 0, open_invoice_lines)) rec.payment_line_ids = line_vals
class AccountPaymentLine(models.Model):
_name = 'account.payment.line' payment_id = fields.Many2one('account.payment') move_id = fields.Many2one('account.move', string="Invoices/Bills") date = fields.Date(string="Date") date_due = fields.Date(string="Due Date") original_amount = fields.Float(string="Original Amount") balance_amount = fields.Float(string="Balance Amount") allocation_amount = fields.Float(string="Allocation Amount")