summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/dunning_run.py30
-rw-r--r--indoteknik_custom/views/dunning_run.xml7
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>