summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorFIN-IT_AndriFP <it@fixcomart.co.id>2025-09-25 11:06:24 +0700
committerFIN-IT_AndriFP <it@fixcomart.co.id>2025-09-25 11:06:24 +0700
commitd32684d5d69a76c97ac962e898f3bb58f708fca4 (patch)
tree4f29fc1c67ddef10dd9115facabcccc6ec15a04d /indoteknik_custom/models
parent65c0ccd8b6befa65e912e9a0126cf2ef8bdd78d7 (diff)
(andri) penambahan perihal penutupan tempo pada surat piutang
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/letter_receivable.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/indoteknik_custom/models/letter_receivable.py b/indoteknik_custom/models/letter_receivable.py
index 16034938..6f95e5e7 100644
--- a/indoteknik_custom/models/letter_receivable.py
+++ b/indoteknik_custom/models/letter_receivable.py
@@ -23,6 +23,7 @@ class SuratPiutang(models.Model):
tujuan_nama = fields.Char(string="Nama Tujuan", tracking=True)
tujuan_email = fields.Char(string="Email Tujuan", tracking=True)
perihal = fields.Selection([
+ ('tutup_tempo', 'Surat Penutupan Pembayaran Tempo'),
('penagihan', 'Surat Resmi Penagihan'),
('sp1', 'Surat Peringatan Piutang ke-1'),
('sp2', 'Surat Peringatan Piutang ke-2'),
@@ -36,6 +37,7 @@ class SuratPiutang(models.Model):
("sent", "Approved & Sent")
], default="draft", tracking=True)
send_date = fields.Datetime(string="Tanggal Kirim", tracking=True)
+ due_date = fields.Date(string="Tanggal Jatuh Tempo", tracking=True, default= fields.Date.today)
seven_days_after_sent_date = fields.Char(string="7 Hari Setelah Tanggal Kirim")
periode_invoices_terpilih = fields.Char(
string="Periode Invoices Terpilih",
@@ -228,14 +230,14 @@ class SuratPiutang(models.Model):
continue
# === Surat penagihan biasa (langsung Pimpinan approve) ===
- if rec.perihal == "penagihan":
+ if rec.perihal in ("tutup_tempo", "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 dan berhasil dikirim.")
+ rec.message_post(body=f"{rec.perihal_label} disetujui dan berhasil dikirim.")
self.env.user.notify_info(
message=f"Surat piutang {rec.name} berhasil dikirim ke {rec.partner_id.name} ({rec.tujuan_email})",
@@ -453,6 +455,18 @@ class SuratPiutang(models.Model):
body=f"Line Invoices diperbarui. Total line saat ini: {len(rec.line_ids)}"
)
+ @api.onchange('perihal', 'partner_id')
+ def _onchange_perihal_tutup_tempo(self):
+ if self.perihal == 'tutup_tempo':
+ for line in self.line_ids:
+ if line.new_invoice_day_to_due < -30:
+ line.selected = True
+ else:
+ line.selected = False
+ else:
+ for line in self.line_ids:
+ line.selected = False
+
@api.model
def create(self, vals):
# Generate nomor surat otomatis
@@ -462,7 +476,7 @@ 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}"
- if vals.get("perihal") == "penagihan":
+ if vals.get("perihal") in ("tutup_tempo", "penagihan"):
vals["state"] = "waiting_approval_pimpinan"
else:
vals["state"] = "waiting_approval_sales"