summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-01-13 09:45:49 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-01-13 09:45:49 +0700
commita560384285965c54d1a6db17e935ebdd829893aa (patch)
tree6a4052d96c0d5e29fd171c09645dead33ffe7ec7
parentfcff03f98816bc0c8501206de3e4dfac979622b1 (diff)
add multiple partner if not parent company in dunning run
-rw-r--r--indoteknik_custom/models/dunning_run.py52
-rw-r--r--indoteknik_custom/views/dunning_run.xml5
-rw-r--r--indoteknik_custom/views/ir_sequence.xml10
3 files changed, 57 insertions, 10 deletions
diff --git a/indoteknik_custom/models/dunning_run.py b/indoteknik_custom/models/dunning_run.py
index 5d98bb98..ef6407e8 100644
--- a/indoteknik_custom/models/dunning_run.py
+++ b/indoteknik_custom/models/dunning_run.py
@@ -10,24 +10,55 @@ class DunningRun(models.Model):
_description = 'Dunning Run'
_order = 'dunning_date desc, id desc'
- number = fields.Char(string='Document No', index=True, required=True, copy=False, readonly=True)
- dunning_date = fields.Date(string='Dunning Date')
+ number = fields.Char(string='Document No', index=True, copy=False, readonly=True)
+ dunning_date = fields.Date(string='Dunning Date', required=True)
partner_id = fields.Many2one(
'res.partner', string='Customer',
required=True, change_default=True, index=True, tracking=1)
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')
+ # dunning_level = fields.Integer(string='Dunning Level', default=30, help='30 hari sebelum jatuh tempo invoice')
+
+ def generate_dunning_line(self):
+ if self.partner_id.parent_id:
+ raise UserError('Harus pilih parent company')
+
+ partners = []
+ partners += self.partner_id.child_ids
+ partners.append(self.partner_id)
+
+ for partner in partners:
+ query = [
+ ('move_type', '=', 'out_invoice'),
+ ('partner_id', '=', partner.id),
+ ('outstanding_amount', '>', 0),
+ ]
+ invoices = self.env['account.move'].search(query, order='invoice_date')
+ for invoice in invoices:
+ parameter_line = {
+ 'dunning_id': self.id,
+ 'partner_id': invoice.partner_id,
+ 'invoice_id': invoice.id,
+ 'date_invoice': invoice.invoice_date,
+ 'efaktur_id': invoice.efaktur_id,
+ 'reference': invoice.ref,
+ 'open_amt': invoice.outstanding_amount
+ }
+ self.env['dunning.run.line'].create([parameter_line])
+
+ @api.model
+ def create(self, vals):
+ vals['number'] = self.env['ir.sequence'].next_by_code('dunning.run') or '0'
+ result = super(DunningRun, self).create(vals)
+ return result
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),
+ ('partner_id', '=', self.partner_id.id),
('move_type', '=', 'out_invoice'),
('state', '=', 'posted'),
])
@@ -37,9 +68,11 @@ class DunningRun(models.Model):
'dunning_id': self.id,
'invoice_id': invoice.id,
'date_invoice': invoice.invoice_date,
- 'efaktur_id': invoice.efaktur_id,
+ 'efaktur_id': invoice.efaktur_id.id,
'reference': invoice.ref,
- 'open_amt': invoice.amount_residual_signed
+ 'total_amt': invoice.amount_total,
+ 'open_amt': invoice.amount_residual_signed,
+ 'due_date': invoice.invoice_date_due
}])
count += 1
_logger.info("Dunning Line generated %s" % count)
@@ -51,10 +84,13 @@ class DunningRunLine(models.Model):
_order = 'dunning_id, id'
dunning_id = fields.Many2one('dunning.run', string='Dunning Ref', required=True, ondelete='cascade', index=True, copy=False)
+ partner_id = fields.Many2one('res.partner', string='Customer')
invoice_id = fields.Many2one('account.move', string='Invoice')
date_invoice = fields.Date(string='Invoice Date')
# due_date = fields.Date(string='Due Date')
efaktur_id = fields.Many2one('vit.efaktur', string='Faktur Pajak')
reference = fields.Char(string='Reference')
+ total_amt = fields.Float(string='Total Amount')
open_amt = fields.Float(string='Open Amount')
+ due_date = fields.Date(string='Due Date')
diff --git a/indoteknik_custom/views/dunning_run.xml b/indoteknik_custom/views/dunning_run.xml
index b18748ea..427653fe 100644
--- a/indoteknik_custom/views/dunning_run.xml
+++ b/indoteknik_custom/views/dunning_run.xml
@@ -9,7 +9,6 @@
<field name="number"/>
<field name="dunning_date"/>
<field name="partner_id"/>
- <field name="dunning_level"/>
</tree>
</field>
</record>
@@ -23,7 +22,9 @@
<field name="date_invoice"/>
<field name="efaktur_id"/>
<field name="reference"/>
+ <field name="total_amt"/>
<field name="open_amt"/>
+ <field name="due_date"/>
</tree>
</field>
</record>
@@ -39,7 +40,7 @@
<group>
<field name="number"/>
<field name="partner_id"/>
- <field name="dunning_level"/>
+ <field name="dunning_date"/>
<button name="generate_dunning_line"
string="Generate"
type="object"
diff --git a/indoteknik_custom/views/ir_sequence.xml b/indoteknik_custom/views/ir_sequence.xml
index df4a5a22..6a6f474d 100644
--- a/indoteknik_custom/views/ir_sequence.xml
+++ b/indoteknik_custom/views/ir_sequence.xml
@@ -20,5 +20,15 @@
<field name="number_next">1</field>
<field name="number_increment">1</field>
</record>
+
+ <record id="sequence_dunning_run" model="ir.sequence">
+ <field name="name">Dunning Run</field>
+ <field name="code">dunning.run</field>
+ <field name="active">TRUE</field>
+ <field name="prefix">TF/%(year)s/</field>
+ <field name="padding">5</field>
+ <field name="number_next">1</field>
+ <field name="number_increment">1</field>
+ </record>
</data>
</odoo> \ No newline at end of file