diff options
| -rw-r--r-- | indoteknik_custom/models/account_move.py | 35 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 5 | ||||
| -rw-r--r-- | indoteknik_custom/views/res_partner.xml | 3 |
3 files changed, 31 insertions, 12 deletions
diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py index 1a6fad1c..945a96f9 100644 --- a/indoteknik_custom/models/account_move.py +++ b/indoteknik_custom/models/account_move.py @@ -119,6 +119,7 @@ class AccountMove(models.Model): # today + timedelta(days=7), # ] + # # Contoh khusus partner tertentu # partner = self.env['res.partner'].search([('name', 'ilike', 'BANGUNAN TEKNIK GRUP')], limit=1) # if not partner: # _logger.info("Partner tidak ditemukan.") @@ -127,7 +128,7 @@ class AccountMove(models.Model): # invoices = self.env['account.move'].search([ # ('move_type', '=', 'out_invoice'), # ('state', '=', 'posted'), - # ('payment_state', 'not in', ['paid','in_payment', 'reversed']), + # ('payment_state', 'not in', ['paid', 'in_payment', 'reversed']), # ('invoice_date_due', 'in', target_dates), # ('partner_id', '=', partner.id), # ]) @@ -150,10 +151,24 @@ class AccountMove(models.Model): # template = self.env.ref('indoteknik_custom.mail_template_invoice_due_reminder') # for partner, invs in grouped.items(): - # if not partner.email: - # _logger.info(f"Partner {partner.name} tidak memiliki email") + # # Cari semua kontak anak yang reminder_invoices = True dan punya email + # reminder_contacts = self.env['res.partner'].search([ + # ('parent_id', '=', partner.id), + # ('reminder_invoices', '=', True), + # ('email', '!=', False), + # ]) + + # # Gabungkan partner.email utama + semua email dari child contact reminder + # emails = list(filter(None, [partner.email])) + reminder_contacts.mapped('email') + + # if not emails: + # _logger.info(f"Partner {partner.name} tidak memiliki email yang bisa dikirimi") # continue + # email_to = ",".join(emails) + # _logger.info(f"Email tujuan: {email_to}") + + # # Buat isi 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 @@ -175,26 +190,22 @@ class AccountMove(models.Model): # template.body_html, # flags=re.DOTALL # ).replace('${object.name}', partner.name) \ - # .replace('${object.partner_id.name}', partner.name) - # # .replace('${object.email}', partner.email or '') + # .replace('${object.partner_id.name}', partner.name) # values = { # 'subject': subject, - # 'email_to': 'andrifebriyadiputra@gmail.com', # Ubah ke partner.email untuk produksi + # 'email_to': email_to, # 'email_from': 'finance@indoteknik.co.id', # 'body_html': body_html, # 'reply_to': f'invoice+account.move_{invs[0].id}@indoteknik.co.id', # } - # _logger.info(f"VALUES: {values}") - + # _logger.info(f"Mengirim email ke: {email_to}") # template.send_mail(invs[0].id, force_send=True, email_values=values) - # # Default System User + # # Post ke chatter # user_system = self.env['res.users'].browse(25) # system_id = user_system.partner_id.id if user_system else False - # _logger.info(f"System User: {user_system.name} ({user_system.id})") - # _logger.info(f"System User ID: {system_id}") # for inv in invs: # inv.message_post( @@ -204,7 +215,7 @@ class AccountMove(models.Model): # author_id=system_id, # ) - # _logger.info(f"Reminder terkirim ke {partner.name} ({values['email_to']}) → {len(invs)} invoice") + # _logger.info(f"Reminder terkirim ke {partner.name} ({email_to}) → {len(invs)} invoice") @api.onchange('invoice_date') diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index 236df16f..f260f58e 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -27,6 +27,11 @@ class ResPartner(models.Model): # Referensi supplier_ids = fields.Many2many('user.pengajuan.tempo.line', string="Suppliers") + reminder_invoices = fields.Boolean( + string='Reminder Invoice?', + help='Centang jika kontak ini harus menerima email pengingat invoice.', default=False + ) + # informasi perusahaan name_tempo = fields.Many2one('res.partner', string='Nama Perusahaan',tracking=True) industry_id_tempo = fields.Many2one('res.partner.industry', 'Customer Industry', readonly=True) diff --git a/indoteknik_custom/views/res_partner.xml b/indoteknik_custom/views/res_partner.xml index a030a75c..08eca7ea 100644 --- a/indoteknik_custom/views/res_partner.xml +++ b/indoteknik_custom/views/res_partner.xml @@ -102,6 +102,9 @@ /> </div> </xpath> + <xpath expr="//field[@name='child_ids']/form//field[@name='mobile']" position="after"> + <field name="reminder_invoices"/> + </xpath> <xpath expr="//field[@name='property_payment_term_id']" position="attributes"> <attribute name="readonly">0</attribute> </xpath> |
