summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-05-17 11:05:44 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-05-17 11:05:44 +0700
commitb1603152659e81ba005e580350704f54d0aaadf5 (patch)
treeece66be70bc4c7f682154c2435e5100f2896f2b4
parent4360e1fd9f3af2c18b19463773047d9939716069 (diff)
<miqdad> add user error changing payment term when state is approved
-rwxr-xr-xindoteknik_custom/models/sale_order.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index b4582f00..6d33af7c 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -7,6 +7,8 @@ import logging, random, string, requests, math, json, re, qrcode, base64
from io import BytesIO
from collections import defaultdict
+from psutil import users
+
_logger = logging.getLogger(__name__)
@@ -1146,6 +1148,15 @@ class SaleOrder(models.Model):
return helper_ids_str.split(', ')
def write(self, values):
+ if 'paymente_term_id' in values:
+ for record in self:
+ if record.payment_term_id not in ['cancel',
+ 'draft'] and record.approval_status == 'approved':
+ if self.env.user.has_group(
+ 'sales_team.group_sale_salesman') and not self.env.user.has_group(
+ 'sales_team.group_sale_manager'):
+ raise UserError('Tidak bisa mengganti payment term karena sudah approved')
+
helper_ids = self._get_helper_ids()
if str(self.env.user.id) in helper_ids:
values['helper_by_id'] = self.env.user.id
@@ -1218,10 +1229,12 @@ class SaleOrder(models.Model):
for order in self:
for line in order.order_line:
if 'bom-it' in line.name.lower() or 'bom' in line.product_id.default_code.lower() if line.product_id.default_code else False:
- search_bom = self.env['mrp.production'].search([('product_id', '=', line.product_id.id), ('sale_order', '=', order.id), ('state', '!=', 'cancel')],
- order='name desc')
+ search_bom = self.env['mrp.production'].search(
+ [('product_id', '=', line.product_id.id), ('sale_order', '=', order.id),
+ ('state', '!=', 'cancel')],
+ order='name desc')
if search_bom:
- confirmed_bom = search_bom.filtered(lambda x: x.state == 'confirmed' or x.state == 'done')
+ confirmed_bom = search_bom.filtered(lambda x: x.state == 'confirmed' or x.state == 'done')
if not confirmed_bom:
raise UserError(
"Product BOM belum dikonfirmasi di Manufacturing Orders. Silakan hubungi MD.")
@@ -1519,7 +1532,7 @@ class SaleOrder(models.Model):
if not order.real_shipping_id:
UserError('Real Delivery Address harus di isi')
-
+
if self.env.context.get('due_approve', []) == False:
if order.validate_partner_invoice_due():
return self._create_notification_action('Notification',