summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-08-08 16:03:46 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-08-08 16:03:46 +0700
commitabbf20da12e9f9cdcb24b9018eecc6d52812f92e (patch)
tree2c93859d959a741152882b59b5bbaa0c2ecb4d27
parentda1903796553ca0ee5195a7962521bc09b4b98a8 (diff)
(andri) add email salesperson inv di CC
-rw-r--r--indoteknik_custom/models/account_move.py66
-rw-r--r--indoteknik_custom/views/mail_template_invoice_reminder.xml2
2 files changed, 46 insertions, 22 deletions
diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py
index 12978a2f..fd08ed60 100644
--- a/indoteknik_custom/models/account_move.py
+++ b/indoteknik_custom/models/account_move.py
@@ -144,17 +144,24 @@ class AccountMove(models.Model):
today + timedelta(days=7),
]
- partner = self.env['res.partner'].search([('name', 'ilike', 'DIRGANTARA YUDHA ARTHA')], limit=1)
- if not partner:
- _logger.info("Partner tidak ditemukan.")
- return
+ # --- TESTING ---
+ # partner = self.env['res.partner'].search([('name', 'ilike', 'DIRGANTARA YUDHA ARTHA')], limit=1)
+ # if not partner:
+ # _logger.info("Partner tidak ditemukan.")
+ # return
+ # invoices = self.env['account.move'].search([
+ # ('move_type', '=', 'out_invoice'),
+ # ('state', '=', 'posted'),
+ # ('payment_state', 'not in', ['paid', 'in_payment', 'reversed']),
+ # ('invoice_date_due', 'in', target_dates),
+ # ('partner_id', '=', partner.id),
+ # ])
invoices = self.env['account.move'].search([
('move_type', '=', 'out_invoice'),
('state', '=', 'posted'),
('payment_state', 'not in', ['paid', 'in_payment', 'reversed']),
('invoice_date_due', 'in', target_dates),
- ('partner_id', '=', partner.id),
])
_logger.info(f"Invoices tahap 1: {invoices}")
@@ -164,10 +171,9 @@ class AccountMove(models.Model):
_logger.info(f"Invoices tahap 2: {invoices}")
if not invoices:
- _logger.info(f"Tidak ada invoice yang due untuk partner: {partner.name}")
+ _logger.info("Tidak ada invoice yang due")
return
- # Kelompokkan invoice berdasarkan partner & days_to_due
invoice_group = {}
for inv in invoices:
dtd = (inv.invoice_date_due - today).days if inv.invoice_date_due else 0
@@ -176,13 +182,12 @@ class AccountMove(models.Model):
template = self.env.ref('indoteknik_custom.mail_template_invoice_due_reminder')
for (partner, dtd), invs in invoice_group.items():
- # Cari semua kontak anak yang reminder_invoices = True dan punya email
+ # Ambil child contact yang di-checklist reminder_invoices
reminder_contacts = self.env['res.partner'].search([
('parent_id', '=', partner.id),
('reminder_invoices', '=', True),
('email', '!=', False),
])
-
_logger.info(f"Email Reminder Child {reminder_contacts}")
if not reminder_contacts:
@@ -197,7 +202,6 @@ class AccountMove(models.Model):
email_to = ",".join(emails)
_logger.info(f"Email tujuan: {email_to}")
- # Generate tabel invoice
invoice_table_rows = ""
for inv in invs:
days_to_due = (inv.invoice_date_due - today).days if inv.invoice_date_due else 0
@@ -213,12 +217,14 @@ class AccountMove(models.Model):
<td>{days_to_due}</td>
</tr>
"""
- dadada = self.partner_id.name
- # Tentukan pesan berdasarkan sisa hari
+
days_to_due_message = ""
closing_message = ""
if dtd < 0:
- days_to_due_message = f"Kami ingin mengingatkan bahwa tagihan anda akan jatuh tempo dalam {abs(dtd)} hari ke depan, dengan rincian sebagai berikut:"
+ days_to_due_message = (
+ f"Kami ingin mengingatkan bahwa tagihan anda akan jatuh tempo dalam {abs(dtd)} hari ke depan, "
+ "dengan rincian sebagai berikut:"
+ )
closing_message = (
"Kami mengharapkan pembayaran dapat dilakukan tepat waktu untuk mendukung kelancaran "
"hubungan kerja sama yang baik antara kedua belah pihak.<br/>"
@@ -227,7 +233,10 @@ class AccountMove(models.Model):
)
if dtd == 0:
- days_to_due_message = "Kami ingin mengingatkan bahwa tagihan anda telah memasuki tanggal jatuh tempo pada hari ini, dengan rincian sebagai berikut:"
+ days_to_due_message = (
+ "Kami ingin mengingatkan bahwa tagihan anda telah memasuki tanggal jatuh tempo pada hari ini, "
+ "dengan rincian sebagai berikut:"
+ )
closing_message = (
"Mohon kesediaannya untuk segera melakukan pembayaran tepat waktu guna menghindari status "
"keterlambatan dan menjaga kelancaran hubungan kerja sama yang telah terjalin dengan baik.<br/>"
@@ -236,7 +245,10 @@ class AccountMove(models.Model):
)
if dtd > 0:
- days_to_due_message = f"Kami ingin mengingatkan bahwa tagihan anda telah jatuh tempo selama {dtd} hari, dengan rincian sebagai berikut:"
+ days_to_due_message = (
+ f"Kami ingin mengingatkan bahwa tagihan anda telah jatuh tempo selama {dtd} hari, "
+ "dengan rincian sebagai berikut:"
+ )
closing_message = (
"Mohon kesediaan Bapak/Ibu untuk segera melakukan pembayaran guna menghindari keterlambatan "
"dan menjaga kelancaran kerja sama yang telah terjalin dengan baik.<br/>"
@@ -244,7 +256,6 @@ class AccountMove(models.Model):
"Terima kasih atas perhatian dan kerja samanya."
)
- subject = f"Reminder Invoice Due - {partner.name}"
body_html = re.sub(
r"<tbody[^>]*>.*?</tbody>",
f"<tbody>{invoice_table_rows}</tbody>",
@@ -255,15 +266,28 @@ class AccountMove(models.Model):
.replace('${days_to_due_message}', days_to_due_message) \
.replace('${closing_message}', closing_message)
+ cc_list = [
+ 'finance@indoteknik.co.id',
+ 'akbar@indoteknik.co.id',
+ 'stephan@indoteknik.co.id',
+ 'darren@indoteknik.co.id'
+ ]
+ sales_email = invs[0].invoice_user_id.partner_id.email if invs[0].invoice_user_id else None
+ if sales_email and sales_email not in cc_list:
+ cc_list.append(sales_email)
+
+ # Siapkan email values
values = {
- 'subject': subject,
- 'email_to': 'andrifebriyadiputra@gmail.com',
+ 'subject': f"Reminder Invoice Due - {partner.name}",
+ # 'email_to': 'andrifebriyadiputra@gmail.com',
+ 'email_to': email_to,
'email_from': 'finance@indoteknik.co.id',
+ 'email_cc': ",".join(cc_list),
'body_html': body_html,
'reply_to': 'finance@indoteknik.co.id',
}
- _logger.info(f"Mengirim email ke: {email_to}")
+ _logger.info(f"Mengirim email ke: {values['email_to']} CC: {values['email_cc']}")
template.send_mail(invs[0].id, force_send=True, email_values=values)
# Post ke chatter
@@ -272,13 +296,13 @@ class AccountMove(models.Model):
for inv in invs:
inv.message_post(
- subject=subject,
+ subject=values['subject'],
body=body_html,
subtype_id=self.env.ref('mail.mt_note').id,
author_id=system_id,
)
- _logger.info(f"Reminder terkirim ke {partner.name} ({email_to}) → {len(invs)} invoice (dtd = {dtd})")
+ _logger.info(f"Reminder terkirim ke {partner.name} ({values['email_to']}) → {len(invs)} invoice (dtd = {dtd})")
@api.onchange('invoice_date')
diff --git a/indoteknik_custom/views/mail_template_invoice_reminder.xml b/indoteknik_custom/views/mail_template_invoice_reminder.xml
index 07f2122b..8450be28 100644
--- a/indoteknik_custom/views/mail_template_invoice_reminder.xml
+++ b/indoteknik_custom/views/mail_template_invoice_reminder.xml
@@ -6,7 +6,7 @@
<field name="model_id" ref="account.model_account_move"/>
<field name="subject">Reminder Invoice Due - ${object.name}</field>
<field name="email_from">finance@indoteknik.co.id</field>
- <field name="email_to">andrifebriyadiputra@gmail.com</field>
+ <field name="email_to"></field>
<field name="body_html" type="html">
<div>
<p><b>Dear ${object.name},</b></p>