summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-11-01 22:25:41 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-11-01 22:25:41 +0700
commitbac2e79164b6c0712cc489e8f4d7aee830997afd (patch)
tree9496f840d4ae8808a64738a332594e2dc833f7c1 /indoteknik_custom/models
parent6fdaee1c7b6557dc2e61ac7b5c1172d285ea7421 (diff)
parentd5e783d3a91b9ba782f4aebb21e558779a83f8b6 (diff)
Merge commit 'd5e783d3a91b9ba782f4aebb21e558779a83f8b6'
Diffstat (limited to 'indoteknik_custom/models')
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rw-r--r--indoteknik_custom/models/account_move.py28
-rw-r--r--indoteknik_custom/models/dunning_run.py60
3 files changed, 89 insertions, 0 deletions
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index 37a8d31f..94fe56fe 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -28,3 +28,4 @@ from . import product_pricelist
from . import users
from . import ir_attachment
from . import delivery_carrier
+from . import dunning_run
diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py
index 224e22ec..aa4b0b1e 100644
--- a/indoteknik_custom/models/account_move.py
+++ b/indoteknik_custom/models/account_move.py
@@ -1,7 +1,35 @@
from odoo import models, api, fields
+from datetime import timedelta
class AccountMove(models.Model):
_inherit = 'account.move'
date_send_fp = fields.Datetime(string="Tanggal Kirim Faktur Pajak")
last_log_fp = fields.Char(string="Log Terakhir Faktur Pajak")
+ # use for industry business
+ 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')
+
+ @api.onchange('date_kirim_tukar_faktur')
+ def change_date_kirim_tukar_faktur(self):
+ for invoice in self:
+ tukar_date = invoice.date_kirim_tukar_faktur
+ term = invoice.invoice_payment_term_id
+ add_days = 0
+ for line in term.line_ids:
+ add_days += line.days
+ due_date = tukar_date + timedelta(days=add_days)
+ invoice.invoice_date_due = due_date
+
+ @api.onchange('date_terima_tukar_faktur')
+ def change_date_terima_tukar_faktur(self):
+ for invoice in self:
+ tukar_date = invoice.date_terima_tukar_faktur
+ term = invoice.invoice_payment_term_id
+ add_days = 0
+ for line in term.line_ids:
+ add_days += line.days
+ due_date = tukar_date + timedelta(days=add_days)
+ invoice.invoice_date_due = due_date
diff --git a/indoteknik_custom/models/dunning_run.py b/indoteknik_custom/models/dunning_run.py
new file mode 100644
index 00000000..5d98bb98
--- /dev/null
+++ b/indoteknik_custom/models/dunning_run.py
@@ -0,0 +1,60 @@
+from odoo import models, api, fields
+from odoo.exceptions import AccessError, UserError, ValidationError
+import logging
+
+_logger = logging.getLogger(__name__)
+
+
+class DunningRun(models.Model):
+ _name = 'dunning.run'
+ _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')
+ 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')
+
+ 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'
+ _description = 'Dunning Run Line'
+ _order = 'dunning_id, id'
+
+ dunning_id = fields.Many2one('dunning.run', string='Dunning Ref', required=True, ondelete='cascade', index=True, copy=False)
+ 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')
+ open_amt = fields.Float(string='Open Amount')
+