From f9874dc8419c35737fb96b8aa8480f0d60e47e1d Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Wed, 12 Jul 2023 09:03:33 +0700 Subject: revisi due extension --- .../models/account_move_due_extension.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'indoteknik_custom/models/account_move_due_extension.py') diff --git a/indoteknik_custom/models/account_move_due_extension.py b/indoteknik_custom/models/account_move_due_extension.py index 1e3bdad1..d767917b 100644 --- a/indoteknik_custom/models/account_move_due_extension.py +++ b/indoteknik_custom/models/account_move_due_extension.py @@ -74,8 +74,15 @@ class DueExtension(models.Model): day_extension = int(self.day_extension) new_due = date.today() + timedelta(days=day_extension) - for line in self.due_line: - line.invoice_id.invoice_date_due = new_due + for line in self.due_line: + line.invoice_id.new_due_date = new_due + + if self.day_extension == '3': + line.invoice_id.due_extension = 3 + elif self.day_extension == '7': + line.invoice_id.due_extension = 7 + elif self.day_extension == '14': + line.invoice_id.due_extension = 14 if self.order_id._notification_margin_leader(): self.order_id.approval_status = 'pengajuan2' @@ -123,8 +130,7 @@ class DueExtension(models.Model): '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 + 'open_amt': invoice.amount_residual_signed }]) count += 1 _logger.info("Due Extension Line generated %s" % count) @@ -157,5 +163,8 @@ class DueExtensionLine(models.Model): def _compute_due_date(self): for line in self: - line.due_date = line.invoice_id.invoice_date_due + if line.invoice_id.new_due_date: + line.due_date = line.invoice_id.new_due_date + else: + line.due_date = line.invoice_id.invoice_date_due -- cgit v1.2.3 From 1cb23337a20a27977da5e9a72e6face949d5642c Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 12 Jul 2023 14:53:05 +0700 Subject: Refactor due extension --- .../models/account_move_due_extension.py | 120 ++++++++++----------- 1 file changed, 54 insertions(+), 66 deletions(-) (limited to 'indoteknik_custom/models/account_move_due_extension.py') diff --git a/indoteknik_custom/models/account_move_due_extension.py b/indoteknik_custom/models/account_move_due_extension.py index d767917b..27c8577d 100644 --- a/indoteknik_custom/models/account_move_due_extension.py +++ b/indoteknik_custom/models/account_move_due_extension.py @@ -62,78 +62,66 @@ class DueExtension(models.Model): raise UserError('Hanya Finance yang bisa cancel') def approve_new_due(self): - if self.env.user.is_accounting: - if not self.approval_status == 'approved': - self.is_approve = True - self.approval_status = 'approved' - - self.partner_id.counter+=1 + if not self.env.user.is_accounting: + raise UserError('Hanya Finance Yang Bisa Approve') + + if self.approval_status == 'approved': + raise UserError('Document ini sudah di approve') + + self.is_approve = True + self.approval_status = 'approved' - if self.partner_id: - if self.day_extension: - day_extension = int(self.day_extension) - new_due = date.today() + timedelta(days=day_extension) - - for line in self.due_line: - line.invoice_id.new_due_date = new_due + self.partner_id.counter+=1 - if self.day_extension == '3': - line.invoice_id.due_extension = 3 - elif self.day_extension == '7': - line.invoice_id.due_extension = 7 - elif self.day_extension == '14': - line.invoice_id.due_extension = 14 - - if self.order_id._notification_margin_leader(): - self.order_id.approval_status = 'pengajuan2' - return self.order_id._notification_has_margin_leader() + day_extension = int(self.day_extension) + if self.partner_id: + new_due = date.today() + timedelta(days=day_extension) + + for line in self.due_line: + line.invoice_id.new_due_date = new_due + line.invoice_id.due_extension = day_extension + + if self.order_id._notification_margin_leader(): + self.order_id.approval_status = 'pengajuan2' + return self.order_id._notification_has_margin_leader() - if self.order_id._notification_margin_manager(): - self.order_id.approval_status = 'pengajuan1' - return self.order_id._notification_has_margin_manager() - - sales = self.env['sale.order'].search([ - ('id', '=', self.order_id.id) - ]) - - # sales.state = 'sale' - sales.action_confirm() - self.order_id.due_id = self.id - else: - raise UserError('Document ini sudah di approve') - else: - raise UserError('Hanya Finance Yang Bisa Approve') + if self.order_id._notification_margin_manager(): + self.order_id.approval_status = 'pengajuan1' + return self.order_id._notification_has_margin_manager() + + sales = self.env['sale.order'].browse(self.order_id.id) + + sales.action_confirm() + self.order_id.due_id = self.id def generate_due_line(self): - partners = [] - partners += self.partner_id.child_ids - partners.append(self.partner_id) - + partners = self.partner_id.get_child_ids() - for partner in partners: - query = [ - ('partner_id', '=', partner.id), - ('state', '=', 'posted'), - ('move_type', '=', 'out_invoice'), - ('amount_residual_signed', '>', 0) - ] - invoices = self.env['account.move'].search(query, order='invoice_date') - count = 0 - - for invoice in invoices: - if invoice.invoice_day_to_due < 0: - self.env['due.extension.line'].create([{ - 'due_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 - }]) - count += 1 - _logger.info("Due Extension Line generated %s" % count) + query = [ + ('partner_id', 'in', partners), + ('state', '=', 'posted'), + ('move_type', '=', 'out_invoice'), + ('amount_residual_signed', '>', 0) + ] + invoices = self.env['account.move'].search(query, order='invoice_date') + count = 0 + + for invoice in invoices: + day_to_due = invoice.invoice_day_to_due + invoice.due_extension + if day_to_due < 0: + self.env['due.extension.line'].create([{ + 'due_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 + }]) + count += 1 + _logger.info("Due Extension Line generated %s" % count) + def unlink(self): res = super(DueExtension, self).unlink() if not self._name == 'due.extension': -- cgit v1.2.3