summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorunknown <it@fixcomart.co.id>2025-09-17 09:23:12 +0700
committerunknown <it@fixcomart.co.id>2025-09-17 09:23:12 +0700
commit9dc31bc66d3d5fd3464e6b731cabe15c3c52b558 (patch)
tree69a784f3a96bbf52e0118ed1955652a89f28ad3a /indoteknik_custom/models
parent6695da56e3f9fe575f7c855b60da31ceb4dd5129 (diff)
(andri) add validasi sales manager
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/letter_receivable.py41
1 files changed, 33 insertions, 8 deletions
diff --git a/indoteknik_custom/models/letter_receivable.py b/indoteknik_custom/models/letter_receivable.py
index 1deeda11..84a3fc35 100644
--- a/indoteknik_custom/models/letter_receivable.py
+++ b/indoteknik_custom/models/letter_receivable.py
@@ -136,18 +136,41 @@ class SuratPiutang(models.Model):
wib = pytz.timezone('Asia/Jakarta')
now_wib = datetime.now(wib)
- pimpinan_user_ids = [7] # Pak Akbar
- # if self.env.user.id not in pimpinan_user_ids:
- # raise UserError("Hanya Pimpinan yang berhak menyetujui tahap ini.")
+ sales_manager_ids = [10] # ganti dengan ID user Sales Manager
+ pimpinan_user_ids = [7] # ganti dengan ID user Pimpinan
+
for rec in self:
- if rec.state == "waiting_approval":
- if rec.perihal in ("sp1", "sp2", "sp3"):
+ # === SP1 s/d SP3 butuh dua tahap approval ===
+ if rec.perihal in ("sp1", "sp2", "sp3"):
+
+ # Tahap 1: Sales Manager approval
+ if rec.state == "waiting_approval_sales":
+ if self.env.user.id not in sales_manager_ids:
+ raise UserError("Hanya Sales Manager yang boleh menyetujui tahap ini.")
+ rec.state = "waiting_approval_pimpinan"
+ rec.message_post(body="Disetujui oleh Sales Manager. Menunggu Approval Pimpinan.")
+ continue
+
+ # Tahap 2: Pimpinan approval
+ if rec.state == "waiting_approval_pimpinan":
if self.env.user.id not in pimpinan_user_ids:
- raise UserError("Hanya Pimpinan yang berhak menyetujui surat peringatan piutang (SP1, SP2, SP3).")
+ raise UserError("Hanya Pimpinan yang berhak menyetujui surat ini.")
+ rec.state = "sent"
+ now_utc = now_wib.astimezone(pytz.UTC).replace(tzinfo=None)
+ rec.send_date = now_utc
+ rec.action_send_letter()
+ rec.message_post(body="Surat Piutang disetujui oleh Pimpinan dan berhasil dikirim.")
+ continue
+
+ # === Surat penagihan biasa (langsung Pimpinan approve) ===
+ if rec.perihal == "penagihan":
+ # if self.env.user.id not in pimpinan_user_ids:
+ # raise UserError("Hanya Pimpinan yang boleh menyetujui surat penagihan.")
rec.state = "sent"
now_utc = now_wib.astimezone(pytz.UTC).replace(tzinfo=None)
rec.send_date = now_utc
rec.action_send_letter()
+ rec.message_post(body="Surat Penagihan disetujui Pimpinan dan berhasil dikirim.")
self.env.user.notify_info(
message=f"Surat piutang {rec.name} berhasil dikirim ke {rec.partner_id.name} ({rec.tujuan_email})",
@@ -358,8 +381,10 @@ class SuratPiutang(models.Model):
bulan_romawi = ["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"][today.month-1]
tahun = today.strftime("%y")
vals["name"] = f"{seq}/LO/FAT/IDG/{bulan_romawi}/{tahun}"
-
- vals["state"] = "waiting_approval"
+ if vals.get("perihal") == "penagihan":
+ vals["state"] = "waiting_approval_pimpinan"
+ else:
+ vals["state"] = "waiting_approval_sales"
return super().create(vals)
class SuratPiutangLine(models.Model):