summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-08-04 14:41:27 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-08-04 14:41:27 +0700
commit747075fb85372666b89d5ffd07a43664ecf169e1 (patch)
tree9b5e1e4a4c0cb03102f77abe763cf6b811ae2f0a /indoteknik_custom/models
parentc4e1c36e28e4e9585f58e28326d1b0889eb1fa1f (diff)
<hafid> Fix problem
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/refund_sale_order.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/indoteknik_custom/models/refund_sale_order.py b/indoteknik_custom/models/refund_sale_order.py
index 65e93ba4..077809e9 100644
--- a/indoteknik_custom/models/refund_sale_order.py
+++ b/indoteknik_custom/models/refund_sale_order.py
@@ -181,14 +181,17 @@ class RefundSaleOrder(models.Model):
raise ValidationError(f"SO {', '.join(so.mapped('name'))} belum memiliki invoice untuk Retur Sebagian.")
total_invoice = sum(self.env['account.move'].browse(invoice_ids).mapped('amount_total_signed')) if invoice_ids else 0.0
- uang_masuk = vals.get('uang_masuk', 0.0)
ongkir = vals.get('ongkir', 0.0)
+ vals['total_invoice'] = total_invoice
pengurangan = total_invoice + ongkir
if refund_type == 'barang_kosong_sebagian' and so_ids:
sale_orders = self.env['sale.order'].browse(so_ids)
vals['uang_masuk'] = sum(sale_orders.mapped('amount_total'))
+
+ uang_masuk = vals.get('uang_masuk', 0.0)
+
if uang_masuk > pengurangan:
vals['amount_refund'] = uang_masuk - pengurangan
else:
@@ -284,6 +287,7 @@ class RefundSaleOrder(models.Model):
if any(field in vals for field in ['uang_masuk', 'invoice_ids', 'ongkir', 'sale_order_ids']):
total_invoice = sum(self.env['account.move'].browse(invoice_ids).mapped('amount_total_signed'))
+ vals['total_invoice'] = total_invoice
uang_masuk = vals.get('uang_masuk', rec.uang_masuk)
ongkir = vals.get('ongkir', rec.ongkir)
@@ -296,10 +300,10 @@ class RefundSaleOrder(models.Model):
return super().write(vals)
- @api.depends('status_payment')
+ @api.depends('status_payment', 'status')
def _compute_is_locked(self):
for rec in self:
- rec.is_locked = rec.status_payment in ['done', 'reject']
+ rec.is_locked = rec.status_payment in ['done', 'reject'] or rec.status in ['pengajuan3', 'refund', 'reject']
@api.depends('sale_order_ids.name', 'invoice_ids.name')
def _compute_order_invoice_names(self):
@@ -506,19 +510,19 @@ class RefundSaleOrder(models.Model):
if not rec.status or rec.status == 'draft':
rec.status = 'pengajuan1'
- elif rec.status == 'pengajuan1' and self.env.user.id == 19:
+ elif rec.status == 'pengajuan1':
rec.status = 'pengajuan2'
rec.approved_by = f"{rec.approved_by}, {user_name}" if rec.approved_by else user_name
rec.date_approved_sales = now
rec.position_sales = 'Sales Manager'
- elif rec.status == 'pengajuan2' and self.env.user.id == 688:
+ elif rec.status == 'pengajuan2':
rec.status = 'pengajuan3'
rec.approved_by = f"{rec.approved_by}, {user_name}" if rec.approved_by else user_name
rec.date_approved_ar = now
rec.position_ar = 'AR'
- elif rec.status == 'pengajuan3' and self.env.user.id == 7:
+ elif rec.status == 'pengajuan3':
rec.status = 'refund'
rec.approved_by = f"{rec.approved_by}, {user_name}" if rec.approved_by else user_name
rec.date_approved_pimpinan = now
@@ -532,7 +536,7 @@ class RefundSaleOrder(models.Model):
is_fat = self.env.user.has_group('indoteknik_custom.group_role_fat')
allowed_user_ids = [19, 688, 7]
for rec in self:
- if self.user.id not in allowed_user_ids and not is_fat:
+ if self.env.uid not in allowed_user_ids and not is_fat:
raise UserError("❌ Hanya user yang bersangkutan atau Finance (FAT) yang bisa melakukan penolakan.")
if rec.status not in ['refund', 'reject']:
rec.status = 'reject'
@@ -548,7 +552,7 @@ class RefundSaleOrder(models.Model):
is_fat = self.env.user.has_group('indoteknik_custom.group_role_fat')
for rec in self:
if not is_fat:
- raise UserError("Hanya Finance yang dapat mengkonfirmasi refund.")
+ raise UserError("Hanya Finance yang dapat mengkonfirmasi pembayaran refund.")
if rec.status_payment == 'pending':
rec.status_payment = 'done'
rec.refund_date = fields.Date.context_today(self)