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 --- indoteknik_custom/models/sale_order.py | 51 ++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 21 deletions(-) (limited to 'indoteknik_custom/models/sale_order.py') diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 5a3cada9..7c60d20c 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -8,6 +8,7 @@ import string import requests import math import json +from datetime import timedelta, date _logger = logging.getLogger(__name__) @@ -389,27 +390,35 @@ class SaleOrder(models.Model): if self.due_id and self.due_id.is_approve == False: raise UserError('Document Over Due Yang Anda Buat Belum Di Approve') - if not self.env.user.is_leader and not self.env.user.is_sales_manager: - query = [ - ('partner_id', '=', parent_id), - ('state', '=', 'posted'), - ('move_type', '=', 'out_invoice'), - ('amount_residual_signed', '>', 0) - ] - invoices = self.env['account.move'].search(query, order='invoice_date') - due_extension = self.env['due.extension'].create([{ - 'partner_id': parent_id, - 'day_extension': '3', - 'order_id': self.id, - }]) - due_extension.generate_due_line() - self.due_id = due_extension.id - if len(self.due_id.due_line) > 0: - return True - else: - due_extension.unlink() - return False - + query = [ + ('partner_id', '=', parent_id), + ('state', '=', 'posted'), + ('move_type', '=', 'out_invoice'), + ('amount_residual_signed', '>', 0) + ] + invoices = self.env['account.move'].search(query, order='invoice_date') + + for invoice in invoices: + invoice_due_extension = invoice.due_extension + new_due = invoice.invoice_date_due + timedelta(days=invoice_due_extension) + + current_time = date.today() + if invoices: + if current_time > new_due: + if not self.env.user.is_leader and not self.env.user.is_sales_manager: + due_extension = self.env['due.extension'].create([{ + 'partner_id': parent_id, + 'day_extension': '3', + 'order_id': self.id, + }]) + due_extension.generate_due_line() + self.due_id = due_extension.id + if len(self.due_id.due_line) > 0: + return True + else: + due_extension.unlink() + return False + def _notification_margin_leader(self): if self.total_percent_margin <= 15 and not self.env.user.is_leader: return True -- 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 --- indoteknik_custom/models/sale_order.py | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) (limited to 'indoteknik_custom/models/sale_order.py') diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 7c60d20c..01d72ee2 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -398,27 +398,21 @@ class SaleOrder(models.Model): ] invoices = self.env['account.move'].search(query, order='invoice_date') - for invoice in invoices: - invoice_due_extension = invoice.due_extension - new_due = invoice.invoice_date_due + timedelta(days=invoice_due_extension) - - current_time = date.today() if invoices: - if current_time > new_due: - if not self.env.user.is_leader and not self.env.user.is_sales_manager: - due_extension = self.env['due.extension'].create([{ - 'partner_id': parent_id, - 'day_extension': '3', - 'order_id': self.id, - }]) - due_extension.generate_due_line() - self.due_id = due_extension.id - if len(self.due_id.due_line) > 0: - return True - else: - due_extension.unlink() - return False - + if not self.env.user.is_leader and not self.env.user.is_sales_manager: + due_extension = self.env['due.extension'].create([{ + 'partner_id': parent_id, + 'day_extension': '3', + 'order_id': self.id, + }]) + due_extension.generate_due_line() + self.due_id = due_extension.id + if len(self.due_id.due_line) > 0: + return True + else: + due_extension.unlink() + return False + def _notification_margin_leader(self): if self.total_percent_margin <= 15 and not self.env.user.is_leader: return True -- cgit v1.2.3