summaryrefslogtreecommitdiff
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
parent6695da56e3f9fe575f7c855b60da31ceb4dd5129 (diff)
(andri) add validasi sales manager
-rw-r--r--indoteknik_custom/models/letter_receivable.py41
-rw-r--r--indoteknik_custom/views/letter_receivable.xml4
2 files changed, 35 insertions, 10 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):
diff --git a/indoteknik_custom/views/letter_receivable.xml b/indoteknik_custom/views/letter_receivable.xml
index 81fc1e5f..02b5cbb8 100644
--- a/indoteknik_custom/views/letter_receivable.xml
+++ b/indoteknik_custom/views/letter_receivable.xml
@@ -26,7 +26,7 @@
<form string="Surat Piutang">
<header>
<field name="state" widget="statusbar" statusbar_visible="draft,waiting_approval_sales,waiting_approval_pimpinan,sent"/>
- <button name="action_approve" type="object" string="Approve &amp; Send" class="btn-primary"/>
+ <button name="action_approve" type="object" string="Approve" class="btn-primary"/>
<!-- <button name="action_send_letter" type="object" string="Email Send" class="btn-primary"/> -->
</header>
<div class="alert alert-info"
@@ -113,7 +113,7 @@
</field>
</page>
</notebook>
- <div style="margin-top:4px; font-size:13px; color:#444; line-height:1.5;">
+ <div style="font-size:13px; color:#444; line-height:1.5;">
Surat piutang akan diterbitkan berdasarkan lama keterlambatan pembayaran.<br/>
Pilih invoice yang sesuai dengan kriteria berikut:
<ul style="margin:4px 0 0 18px;">