summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2023-01-16 15:44:51 +0700
committerstephanchrst <stephanchrst@gmail.com>2023-01-16 15:44:51 +0700
commit83ead9edac739720168d615f6282e3978634e461 (patch)
treecaac14c064f645d170c7bf889e9ea8e2fd0b6bc5
parent09cfa10a6ac0335b4342665707269cc5aa7bbcf8 (diff)
fix generate dunning run
-rw-r--r--indoteknik_custom/models/dunning_run.py75
-rw-r--r--indoteknik_custom/views/dunning_run.xml31
2 files changed, 68 insertions, 38 deletions
diff --git a/indoteknik_custom/models/dunning_run.py b/indoteknik_custom/models/dunning_run.py
index ed9aa7c0..56a33578 100644
--- a/indoteknik_custom/models/dunning_run.py
+++ b/indoteknik_custom/models/dunning_run.py
@@ -17,8 +17,37 @@ class DunningRun(models.Model):
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')
+ date_kirim_tukar_faktur = fields.Date(string='Kirim Faktur')
+ resi_tukar_faktur = fields.Char(string='Resi Faktur')
+ date_terima_tukar_faktur = fields.Date(string='Terima Faktur')
+ shipper_faktur_id = fields.Many2one('delivery.carrier', string='Shipper Faktur')
+ is_validated = fields.Boolean(string='Validated')
+
+ def copy_date_faktur(self):
+ if not self.is_validated:
+ raise UserError('Harus di validate dulu')
+ for line in self.dunning_line:
+ invoice = line.invoice_id
+ if not invoice.date_kirim_tukar_faktur:
+ invoice.date_kirim_tukar_faktur = self.date_kirim_tukar_faktur
+ if not invoice.resi_tukar_faktur:
+ invoice.resi_tukar_faktur = self.resi_tukar_faktur
+ if not invoice.date_terima_tukar_faktur:
+ invoice.date_terima_tukar_faktur = self.date_terima_tukar_faktur
+ if not invoice.shipper_faktur_id:
+ invoice.shipper_faktur_id = self.shipper_faktur_id
+
+ def validate_dunning(self):
+ if not self.dunning_line:
+ raise UserError('Dunning Line masih kosong, generate dulu')
+ else:
+ self.is_validated = True
def generate_dunning_line(self):
+ if self.is_validated:
+ raise UserError('Sudah di validate, tidak bisa digenerate ulang')
+ if self.dunning_line:
+ raise UserError('Harus hapus semua line jika ingin generate ulang')
if self.partner_id.parent_id:
raise UserError('Harus pilih parent company')
@@ -29,21 +58,26 @@ class DunningRun(models.Model):
for partner in partners:
query = [
('move_type', '=', 'out_invoice'),
+ ('state', '=', 'posted'),
('partner_id', '=', partner.id),
- ('outstanding_amount', '>', 0),
+ ('amount_residual_signed', '>', 0),
]
invoices = self.env['account.move'].search(query, order='invoice_date')
+ count = 0
for invoice in invoices:
- parameter_line = {
+ self.env['dunning.run.line'].create([{
'dunning_id': self.id,
- 'partner_id': invoice.partner_id,
+ 'partner_id': invoice.partner_id.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.outstanding_amount
- }
- self.env['dunning.run.line'].create([parameter_line])
+ '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)
@api.model
def create(self, vals):
@@ -51,33 +85,6 @@ class DunningRun(models.Model):
result = super(DunningRun, self).create(vals)
return result
- def generate_dunning_line(self):
- # validation
- if not self.partner_id:
- raise UserError('Customer harus diisi')
-
- invoices = self.env['account.move'].search([
- ('amount_residual_signed', '>', 0),
- ('partner_id', '=', self.partner_id.id),
- ('move_type', '=', 'out_invoice'),
- ('state', '=', 'posted'),
- ])
- count = 0
- for invoice in invoices:
- self.env['dunning.run.line'].create([{
- 'dunning_id': self.id,
- 'partner_id': invoice.partner_id.id,
- 'invoice_id': invoice.id,
- 'date_invoice': invoice.invoice_date,
- 'efaktur_id': invoice.efaktur_id.id,
- 'reference': invoice.ref,
- '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)
-
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 ab01d476..c251b206 100644
--- a/indoteknik_custom/views/dunning_run.xml
+++ b/indoteknik_custom/views/dunning_run.xml
@@ -5,10 +5,14 @@
<field name="model">dunning.run</field>
<field name="arch" type="xml">
<tree>
- <field name="id"/>
<field name="number"/>
<field name="dunning_date"/>
<field name="partner_id"/>
+ <field name="is_validated" readonly="1"/>
+ <field name="date_kirim_tukar_faktur"/>
+ <field name="resi_tukar_faktur"/>
+ <field name="date_terima_tukar_faktur"/>
+ <field name="shipper_faktur_id"/>
</tree>
</field>
</record>
@@ -39,14 +43,33 @@
<div class="oe_button_box" name="button_box"/>
<group>
<group>
- <field name="number"/>
- <field name="partner_id"/>
- <field name="dunning_date"/>
+ <div>
<button name="generate_dunning_line"
string="Generate"
type="object"
+ class="mr-2 oe_highlight oe_edit_only"
+ />
+ <button name="validate_dunning"
+ string="Validate"
+ type="object"
+ class="mr-2 oe_highlight oe_edit_only"
+ />
+ <button name="copy_date_faktur"
+ string="Copy Date"
+ type="object"
class="oe_highlight oe_edit_only"
/>
+ </div>
+ <field name="number"/>
+ <field name="partner_id"/>
+ <field name="dunning_date"/>
+ </group>
+ <group>
+ <field name="is_validated" readonly="1"/>
+ <field name="date_kirim_tukar_faktur"/>
+ <field name="resi_tukar_faktur"/>
+ <field name="date_terima_tukar_faktur"/>
+ <field name="shipper_faktur_id"/>
</group>
</group>
<notebook>