diff options
| author | unknown <it@fixcomart.co.id> | 2025-09-17 09:23:12 +0700 |
|---|---|---|
| committer | unknown <it@fixcomart.co.id> | 2025-09-17 09:23:12 +0700 |
| commit | 9dc31bc66d3d5fd3464e6b731cabe15c3c52b558 (patch) | |
| tree | 69a784f3a96bbf52e0118ed1955652a89f28ad3a | |
| parent | 6695da56e3f9fe575f7c855b60da31ceb4dd5129 (diff) | |
(andri) add validasi sales manager
| -rw-r--r-- | indoteknik_custom/models/letter_receivable.py | 41 | ||||
| -rw-r--r-- | indoteknik_custom/views/letter_receivable.xml | 4 |
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 & 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;"> |
