diff options
| -rw-r--r-- | indoteknik_custom/models/dunning_run.py | 30 | ||||
| -rw-r--r-- | indoteknik_custom/views/dunning_run.xml | 7 |
2 files changed, 36 insertions, 1 deletions
diff --git a/indoteknik_custom/models/dunning_run.py b/indoteknik_custom/models/dunning_run.py index b6531c5c..5d98bb98 100644 --- a/indoteknik_custom/models/dunning_run.py +++ b/indoteknik_custom/models/dunning_run.py @@ -1,4 +1,8 @@ from odoo import models, api, fields +from odoo.exceptions import AccessError, UserError, ValidationError +import logging + +_logger = logging.getLogger(__name__) class DunningRun(models.Model): @@ -14,6 +18,32 @@ class DunningRun(models.Model): dunning_line = fields.One2many('dunning.run.line', 'dunning_id', string='Dunning Lines', auto_join=True) dunning_level = fields.Integer(string='Dunning Level', default=30, help='30 hari sebelum jatuh tempo invoice') + def generate_dunning_line(self): + # validation + if not self.partner_id: + raise UserError('Customer harus diisi') + if self.dunning_level <= 0: + raise UserError('Dunning Level harus diisi lebih dari 0') + + invoices = self.env['account.move'].search([ + ('amount_residual_signed', '>', 0), + ('partner_id', '=', self.partner_id), + ('move_type', '=', 'out_invoice'), + ('state', '=', 'posted'), + ]) + count = 0 + for invoice in invoices: + self.env['dunning.run.line'].create([{ + 'dunning_id': self.id, + 'invoice_id': invoice.id, + 'date_invoice': invoice.invoice_date, + 'efaktur_id': invoice.efaktur_id, + 'reference': invoice.ref, + 'open_amt': invoice.amount_residual_signed + }]) + count += 1 + _logger.info("Dunning Line generated %s" % count) + class DunningRunLine(models.Model): _name = 'dunning.run.line' diff --git a/indoteknik_custom/views/dunning_run.xml b/indoteknik_custom/views/dunning_run.xml index b0bf8654..b18748ea 100644 --- a/indoteknik_custom/views/dunning_run.xml +++ b/indoteknik_custom/views/dunning_run.xml @@ -33,13 +33,18 @@ <field name="model">dunning.run</field> <field name="arch" type="xml"> <form> - <sheet string="Manufactures"> + <sheet string="Dunning"> <div class="oe_button_box" name="button_box"/> <group> <group> <field name="number"/> <field name="partner_id"/> <field name="dunning_level"/> + <button name="generate_dunning_line" + string="Generate" + type="object" + class="oe_highlight oe_edit_only" + /> </group> </group> <notebook> |
