diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-12-09 15:04:12 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-12-09 15:04:12 +0700 |
| commit | 02eacd54387953f42a884a22544e2f7c94081536 (patch) | |
| tree | bd0632ce4040c3712d06c1d4459716bbb3050004 | |
| parent | af85c0d2248728fe33675dcec6e513eefd6553a4 (diff) | |
<iman> update pengajuan tempo
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 21 | ||||
| -rw-r--r-- | indoteknik_custom/models/res_partner.py | 5 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_pengajuan_tempo.py | 53 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_pengajuan_tempo_request.py | 244 | ||||
| -rw-r--r-- | indoteknik_custom/views/user_pengajuan_tempo_request.xml | 162 |
5 files changed, 383 insertions, 102 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index d8464add..fcf7e4db 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -428,6 +428,15 @@ class Partner(controller.Controller): dokumen_invoice = kw.get('dokumenPengirimanInvoice', '') if dokumen_invoice: pengajuan_tempo.dokumen_invoice = dokumen_invoice + user_tempo_request = [] + if tempo_request: + user_tempo_request = request.env['user.pengajuan.tempo.request'].create({ + 'user_id': user.id, + 'pengajuan_tempo_id': pengajuan_tempo.id, + 'user_company_id': partner_id.id, + 'tempo_duration': pengajuan_tempo.tempo_duration.id, + 'tempo_limit': pengajuan_tempo.tempo_limit, + }) form_dokumen_data = kw.get('formDocs', False) if form_dokumen_data: @@ -479,18 +488,14 @@ class Partner(controller.Controller): enumerate(dokumen['documentName'])]) teks = formatted_text.strip().title() pengajuan_tempo.message_post(body=teks, attachment_ids=[sppkp_attachment.id]) + if tempo_request: + user_tempo_request.message_post(body=teks, attachment_ids=[sppkp_attachment.id]) except json.JSONDecodeError: return http.Response(status=400, json_body={'error': 'Invalid JSON format for formDokumen'}) - if tempo_request: - tempo_request = request.env['user.pengajuan.tempo.request'].create({ - 'user_id': user.id, - 'pengajuan_tempo_id': pengajuan_tempo.id, - 'user_company_id': partner_id.id, - 'tempo_duration': pengajuan_tempo.tempo_duration.id, - 'tempo_limit': pengajuan_tempo.tempo_limit, - }) + + pengajuan_tempo.user_id = user_account.id template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_res_user_company_request_tempo_review') template.send_mail(pengajuan_tempo.id, force_send=True) diff --git a/indoteknik_custom/models/res_partner.py b/indoteknik_custom/models/res_partner.py index d2395dc5..835ac65d 100644 --- a/indoteknik_custom/models/res_partner.py +++ b/indoteknik_custom/models/res_partner.py @@ -36,7 +36,7 @@ class ResPartner(models.Model): account_number_tempo = fields.Char(string="Nomor Rekening Bank") website_tempo = fields.Char(string='Website') estimasi_tempo = fields.Char(string='Estimasi Pembelian Pertahun') - tempo_duration = fields.Char(string='Durasi Tempo') + tempo_duration = fields.Many2one('account.payment.term', string='Durasi Tempo') tempo_limit = fields.Char(string='Limit Tempo') category_produk_ids = fields.Many2many('product.public.category', string='Kategori Produk yang Digunakan', domain=lambda self: self._get_default_category_domain()) @@ -309,6 +309,9 @@ class ResPartner(models.Model): 'dokumen_laporan_keuangan': vals.get('dokumen_laporan_keuangan'), 'dokumen_foto_kantor': vals.get('dokumen_foto_kantor'), 'dokumen_tempat_bekerja': vals.get('dokumen_tempat_bekerja'), + + # internal_notes + 'comment': vals.get('comment') } # Lakukan update pada semua child secara rekursif diff --git a/indoteknik_custom/models/user_pengajuan_tempo.py b/indoteknik_custom/models/user_pengajuan_tempo.py index 046c4cc7..b347e75e 100644 --- a/indoteknik_custom/models/user_pengajuan_tempo.py +++ b/indoteknik_custom/models/user_pengajuan_tempo.py @@ -118,56 +118,3 @@ class UserPengajuanTempo(models.Model): display_name = "DETAIL FORM TEMPO" result.append((record.id, display_name)) return result - - - # - # def _compute_attachment_url(self): - # if self.id: - # return { - # 'type': 'ir.actions.act_url', - # 'url': 'http://localhost:8069/web/content/' % (self.id), - # 'target': 'user', - # } - # base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') - # for record in self: - # # Buat URL list untuk attachment yang ada di dokumen_nib - # record.attachment_urls = [(attachment.id, f"{base_url}/web/content/{attachment.id}") for attachment in - # record.dokumen_nib] - # - # @api.model - # def create(self, vals): - # # Tangani pembuatan baru - # record = super(userPengajuanTempo, self).create(vals) - # if vals.get('dokumen_nib'): - # attachment_names = ', '.join(self.env['ir.attachment'].browse(vals['dokumen_nib'][0][2]).mapped('name')) - # record.message_post(body=f"Files added to NIB: {attachment_names}") - # return record - # - # def write(self, vals): - # # Ambil attachment sebelumnya - # for record in self: - # previous_files = record.dokumen_nib - # res = super(userPengajuanTempo, record).write(vals) - # - # if 'dokumen_nib' in vals: - # new_files = record.dokumen_nib - # - # # Periksa perbedaan antara file lama dan file baru - # added_files = new_files - previous_files - # removed_files = previous_files - new_files - # - # # Buat pesan log berdasarkan perubahan - # messages = [] - # if added_files: - # added_names = ', '.join(added_files.mapped('name')) - # messages.append(f"Files added to NIB: {added_names}") - # if removed_files: - # removed_names = ', '.join(removed_files.mapped('name')) - # messages.append(f"Files removed from NIB: {removed_names}") - # - # # Post pesan ke log note jika ada perubahan - # if messages: - # record.message_post(body="<br/>".join(messages)) - # - # return res - diff --git a/indoteknik_custom/models/user_pengajuan_tempo_request.py b/indoteknik_custom/models/user_pengajuan_tempo_request.py index 74eda31f..832c21af 100644 --- a/indoteknik_custom/models/user_pengajuan_tempo_request.py +++ b/indoteknik_custom/models/user_pengajuan_tempo_request.py @@ -57,6 +57,225 @@ class UserPengajuanTempoRequest(models.Model): ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') reason_reject = fields.Char(string='Limit Tempo') + # informasi perusahaan + name_tempo = fields.Many2one('res.partner', string='Nama Perusahaan', related='pengajuan_tempo_id.name_tempo', store=True, tracking=True, readonly=False) + industry_id_tempo = fields.Many2one('res.partner.industry', 'Customer Industry', related='pengajuan_tempo_id.industry_id_tempo',store=True, tracking=True, readonly=False) + street_tempo = fields.Char(string="Alamat Perusahaan", related='pengajuan_tempo_id.street_tempo', store=True, tracking=True, readonly=False) + state_id_tempo = fields.Many2one('res.country.state', string='State', related='pengajuan_tempo_id.state_id_tempo', store=True, tracking=True, readonly=False) + city_id_tempo = fields.Many2one('vit.kota', string='City', related='pengajuan_tempo_id.city_id_tempo', store=True, tracking=True, readonly=False) + zip_tempo = fields.Char(string="Zip", related='pengajuan_tempo_id.zip_tempo', store=True, tracking=True, readonly=False) + mobile_tempo = fields.Char(string="No. Telfon Perusahaan", related='pengajuan_tempo_id.mobile_tempo', store=True, tracking=True, readonly=False) + bank_name_tempo = fields.Char(string="Nama Bank", related='pengajuan_tempo_id.bank_name_tempo', store=True, tracking=True, readonly=False) + account_name_tempo = fields.Char(string="Nama Rekening", related='pengajuan_tempo_id.account_name_tempo', store=True, tracking=True, readonly=False) + account_number_tempo = fields.Char(string="Nomor Rekening Bank", related='pengajuan_tempo_id.account_number_tempo', store=True, tracking=True, readonly=False) + website_tempo = fields.Char(string='Website', related='pengajuan_tempo_id.website_tempo', store=True, tracking=True, readonly=False) + estimasi_tempo = fields.Char(string='Estimasi Pembelian Pertahun', related='pengajuan_tempo_id.estimasi_tempo', store=True, tracking=True, readonly=False) + tempo_duration_origin = fields.Many2one('account.payment.term', string='Durasi Tempo', related='pengajuan_tempo_id.tempo_duration', store=True, tracking=True, readonly=False) + tempo_limit_origin = fields.Char(string='Limit Tempo', related='pengajuan_tempo_id.tempo_limit' , store=True, tracking=True, readonly=False) + category_produk_ids = fields.Many2many('product.public.category', string='Kategori Produk yang Digunakan', related='pengajuan_tempo_id.category_produk_ids', readonly=False) + + # Kontak Perusahaan + direktur_name = fields.Char(string='Nama Lengkap Direktur', related='pengajuan_tempo_id.direktur_name', store=True, readonly=False) + direktur_mobile = fields.Char(string='No. Telpon Direktur', related='pengajuan_tempo_id.direktur_mobile', store=True, readonly=False) + direktur_email = fields.Char(string='Email Direktur', related='pengajuan_tempo_id.direktur_email', store=True, readonly=False) + purchasing_name = fields.Char(string='Nama Purchasing', related='pengajuan_tempo_id.purchasing_name', store=True, readonly=False) + purchasing_mobile = fields.Char(string='No. Telpon Purchasing', related='pengajuan_tempo_id.purchasing_mobile', store=True, readonly=False) + purchasing_email = fields.Char(string='Email Purchasing', related='pengajuan_tempo_id.purchasing_email', store=True, readonly=False) + finance_name = fields.Char(string='Nama Finance', related='pengajuan_tempo_id.finance_name', store=True, readonly=False) + finance_mobile = fields.Char(string='No. Telpon Finance', related='pengajuan_tempo_id.finance_mobile', store=True, readonly=False) + finance_email = fields.Char(string='Email Finance', related='pengajuan_tempo_id.finance_email', store=True, readonly=False) + + # Pengiriman + pic_tittle = fields.Char(string='Tittle PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_tittle', store=True, readonly=False) + pic_name = fields.Char(string='Nama PIC Penerimaan Barang', related='pengajuan_tempo_id.pic_name', store=True, readonly=False) + street_pengiriman = fields.Char(string="Alamat Perusahaan", related='pengajuan_tempo_id.street_pengiriman', store=True, readonly=False) + state_id_pengiriman = fields.Many2one('res.country.state', string='State', related='pengajuan_tempo_id.state_id_pengiriman', store=True, readonly=False) + city_id_pengiriman = fields.Many2one('vit.kota', string='City', related='pengajuan_tempo_id.city_id_pengiriman', store=True, readonly=False) + zip_pengiriman = fields.Char(string="Zip", related='pengajuan_tempo_id.zip_pengiriman', store=True, readonly=False) + invoice_pic_tittle = fields.Char(string='Tittle PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic_tittle', store=True, readonly=False) + invoice_pic = fields.Char(string='Nama PIC Penerimaan Invoice', related='pengajuan_tempo_id.invoice_pic', store=True, readonly=False) + street_invoice = fields.Char(string="Alamat Perusahaan", related='pengajuan_tempo_id.street_invoice', store=True, readonly=False) + state_id_invoice = fields.Many2one('res.country.state', string='State', related='pengajuan_tempo_id.state_id_invoice', store=True, readonly=False) + city_id_invoice = fields.Many2one('vit.kota', string='City', related='pengajuan_tempo_id.city_id_invoice', store=True, readonly=False) + tukar_invoice = fields.Char(string='Jadwal Penukaran Invoice', related='pengajuan_tempo_id.tukar_invoice', store=True, readonly=False) + jadwal_bayar = fields.Char(string='Jadwal Pembayaran', related='pengajuan_tempo_id.jadwal_bayar', store=True, readonly=False) + dokumen_pengiriman = fields.Char(string='Dokumen saat Pengiriman Barang', related='pengajuan_tempo_id.dokumen_pengiriman', store=True, readonly=False) + dokumen_pengiriman_input = fields.Char(string='Dokumen saat Pengiriman Barang input', related='pengajuan_tempo_id.dokumen_pengiriman_input', store=True, readonly=False) + dokumen_invoice = fields.Char(string='Dokumen yang dilampirkan saat Pengiriman Invoice', related='pengajuan_tempo_id.dokumen_invoice', store=True, readonly=False) + is_same_address = fields.Boolean(string="Same Address pengiriman invoicr dan alamat pengiriman barang", related='pengajuan_tempo_id.is_same_address', store=True, readonly=False) + is_same_address_street = fields.Boolean(string="Same Address pengiriman barang dan alamat bisnis", related='pengajuan_tempo_id.is_same_address_street', store=True, readonly=False) + + #Referensi + supplier_ids = fields.Many2many('user.pengajuan.tempo.line',related='pengajuan_tempo_id.supplier_ids', string="Suppliers", readonly=False) + + # Dokumen + dokumen_nib = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_nib_rel', + string="NIB (SIUP/TDP/SKDP)", + related='pengajuan_tempo_id.dokumen_nib', + readonly=False, + tracking=3, + track_visibility="onchange" + ) + + dokumen_npwp = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_npwp_rel', + string="NPWP Perusahaan", + related='pengajuan_tempo_id.dokumen_npwp', + readonly=False, + tracking=3 + ) + + dokumen_sppkp = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_sppkp_rel', + string="SPPKP Perusahaan", + related='pengajuan_tempo_id.dokumen_sppkp', + readonly=False, + tracking=3 + ) + + dokumen_akta_perubahan = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_akta_perubahan_rel', + string="Akta Perubahan", + related='pengajuan_tempo_id.dokumen_akta_perubahan', + readonly=False, + tracking=3 + ) + + dokumen_ktp_dirut = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_ktp_dirut_rel', + string="KTP Dirut/Direktur", + related='pengajuan_tempo_id.dokumen_ktp_dirut', + readonly=False, + tracking=3 + ) + + dokumen_akta_pendirian = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_angkta_pendirian_rel', + string="Akta Pendirian", + related='pengajuan_tempo_id.dokumen_akta_pendirian', + readonly=False, + tracking=3 + ) + + dokumen_laporan_keuangan = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_laporan_keuangan_rel', + string="Laporan Keuangan", + related='pengajuan_tempo_id.dokumen_laporan_keuangan', + readonly=False, + tracking=3 + ) + + dokumen_foto_kantor = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_foto_kantor_rel', + string="Foto Kantor (Tampak Depan)", + related='pengajuan_tempo_id.dokumen_foto_kantor', + readonly=False, + tracking=3 + ) + + dokumen_tempat_bekerja = fields.Many2many( + 'ir.attachment', + 'pengajuan_dokumen_tempat_bekerja_rel', + string="Tempat Bekerja", + related='pengajuan_tempo_id.dokumen_tempat_bekerja', + readonly=False, + tracking=3 + ) + + @api.onchange('name_tempo', 'industry_id_tempo', 'street_tempo', 'state_id_tempo', 'city_id_tempo', 'zip_tempo', + 'mobile_tempo', 'bank_name_tempo', 'account_name_tempo', 'account_number_tempo', 'website_tempo', + 'estimasi_tempo', 'tempo_duration_origin', 'tempo_limit_origin', 'category_produk_ids') + def _onchange_related_fields(self): + if self.pengajuan_tempo_id: + # Perbarui nilai di pengajuan_tempo_id + self.pengajuan_tempo_id.name_tempo = self.name_tempo + self.pengajuan_tempo_id.industry_id_tempo = self.industry_id_tempo + self.pengajuan_tempo_id.street_tempo = self.street_tempo + self.pengajuan_tempo_id.state_id_tempo = self.state_id_tempo + self.pengajuan_tempo_id.city_id_tempo = self.city_id_tempo + self.pengajuan_tempo_id.zip_tempo = self.zip_tempo + self.pengajuan_tempo_id.mobile_tempo = self.mobile_tempo + self.pengajuan_tempo_id.bank_name_tempo = self.bank_name_tempo + self.pengajuan_tempo_id.account_name_tempo = self.account_name_tempo + self.pengajuan_tempo_id.account_number_tempo = self.account_number_tempo + self.pengajuan_tempo_id.website_tempo = self.website_tempo + self.pengajuan_tempo_id.estimasi_tempo = self.estimasi_tempo + self.pengajuan_tempo_id.tempo_duration = self.tempo_duration_origin + self.pengajuan_tempo_id.tempo_limit = self.tempo_limit_origin + self.pengajuan_tempo_id.category_produk_ids = self.category_produk_ids + + @api.onchange('direktur_name', 'direktur_mobile', 'direktur_email', 'purchasing_name', 'purchasing_mobile', + 'purchasing_email', 'finance_name', 'finance_mobile', 'finance_email') + def _onchange_related_fields_kontak(self): + if self.pengajuan_tempo_id: + # Perbarui nilai di pengajuan_tempo_id + self.pengajuan_tempo_id.direktur_name = self.direktur_name + self.pengajuan_tempo_id.direktur_mobile = self.direktur_mobile + self.pengajuan_tempo_id.direktur_email = self.direktur_email + self.pengajuan_tempo_id.purchasing_name = self.purchasing_name + self.pengajuan_tempo_id.purchasing_mobile = self.purchasing_mobile + self.pengajuan_tempo_id.purchasing_email = self.purchasing_email + self.pengajuan_tempo_id.finance_name = self.finance_name + self.pengajuan_tempo_id.finance_mobile = self.finance_mobile + self.pengajuan_tempo_id.finance_email = self.finance_email + + @api.onchange('pic_tittle', 'pic_name', 'street_pengiriman', 'state_id_pengiriman', 'city_id_pengiriman', + 'zip_pengiriman', + 'invoice_pic_tittle', 'invoice_pic', 'street_invoice', 'state_id_invoice', 'city_id_invoice', + 'tukar_invoice', 'jadwal_bayar', 'dokumen_pengiriman', 'dokumen_pengiriman_input', 'dokumen_invoice', + 'is_same_address', 'is_same_address_street') + def _onchange_related_fields_pengiriman(self): + if self.pengajuan_tempo_id: + # Perbarui nilai di pengajuan_tempo_id + self.pengajuan_tempo_id.pic_tittle = self.pic_tittle + self.pengajuan_tempo_id.pic_name = self.pic_name + self.pengajuan_tempo_id.street_pengiriman = self.street_pengiriman + self.pengajuan_tempo_id.state_id_pengiriman = self.state_id_pengiriman + self.pengajuan_tempo_id.city_id_pengiriman = self.city_id_pengiriman + self.pengajuan_tempo_id.zip_pengiriman = self.zip_pengiriman + self.pengajuan_tempo_id.invoice_pic_tittle = self.invoice_pic_tittle + self.pengajuan_tempo_id.invoice_pic = self.invoice_pic + self.pengajuan_tempo_id.street_invoice = self.street_invoice + self.pengajuan_tempo_id.state_id_invoice = self.state_id_invoice + self.pengajuan_tempo_id.city_id_invoice = self.city_id_invoice + self.pengajuan_tempo_id.tukar_invoice = self.tukar_invoice + self.pengajuan_tempo_id.jadwal_bayar = self.jadwal_bayar + self.pengajuan_tempo_id.dokumen_pengiriman = self.dokumen_pengiriman + self.pengajuan_tempo_id.dokumen_pengiriman_input = self.dokumen_pengiriman_input + self.pengajuan_tempo_id.dokumen_invoice = self.dokumen_invoice + self.pengajuan_tempo_id.is_same_address = self.is_same_address + self.pengajuan_tempo_id.is_same_address_street = self.is_same_address_street + + @api.onchange('supplier_ids') + def _onchange_supplier_ids(self): + if self.pengajuan_tempo_id: + self.pengajuan_tempo_id.supplier_ids = self.supplier_ids + + @api.onchange('dokumen_nib', 'dokumen_npwp', 'dokumen_sppkp', 'dokumen_akta_perubahan', + 'dokumen_ktp_dirut', 'dokumen_akta_pendirian', 'dokumen_laporan_keuangan', + 'dokumen_foto_kantor', 'dokumen_tempat_bekerja') + def _onchange_related_fields_dokumen(self): + if self.pengajuan_tempo_id: + # Perbarui nilai di pengajuan_tempo_id + self.pengajuan_tempo_id.dokumen_nib = self.dokumen_nib + self.pengajuan_tempo_id.dokumen_npwp = self.dokumen_npwp + self.pengajuan_tempo_id.dokumen_sppkp = self.dokumen_sppkp + self.pengajuan_tempo_id.dokumen_akta_perubahan = self.dokumen_akta_perubahan + self.pengajuan_tempo_id.dokumen_ktp_dirut = self.dokumen_ktp_dirut + self.pengajuan_tempo_id.dokumen_akta_pendirian = self.dokumen_akta_pendirian + self.pengajuan_tempo_id.dokumen_laporan_keuangan = self.dokumen_laporan_keuangan + self.pengajuan_tempo_id.dokumen_foto_kantor = self.dokumen_foto_kantor + self.pengajuan_tempo_id.dokumen_tempat_bekerja = self.dokumen_tempat_bekerja + @api.onchange('tempo_duration') def _tempo_duration_change(self, vals): for tempo in self: @@ -71,6 +290,8 @@ class UserPengajuanTempoRequest(models.Model): def button_approve(self): for tempo in self: + if not self.tempo_limit: + raise UserError("Limit Tempo harus di isi terlebih dahulu") if tempo.state_tempo == 'draft': if tempo.env.user.id in (688, 28, 7): raise UserError("Pengajuan tempo harus di approve oleh sales manager terlebih dahulu") @@ -169,7 +390,7 @@ class UserPengajuanTempoRequest(models.Model): self.user_company_id.account_number_tempo = self.pengajuan_tempo_id.account_number_tempo self.user_company_id.website_tempo = self.pengajuan_tempo_id.website_tempo self.user_company_id.estimasi_tempo = self.pengajuan_tempo_id.estimasi_tempo - self.user_company_id.tempo_duration = tempo_duration + self.user_company_id.tempo_duration = tempo_duration.id self.user_company_id.tempo_limit = limit_tempo self.user_company_id.category_produk_ids = self.pengajuan_tempo_id.category_produk_ids @@ -188,18 +409,21 @@ class UserPengajuanTempoRequest(models.Model): contacts_data = [ { "type": "contact", + 'title': 6 if self.pengajuan_tempo_id.direktur_tittle == 'Bpk' else 7, "name": self.pengajuan_tempo_id.direktur_name, "email": self.pengajuan_tempo_id.direktur_email, "phone": self.pengajuan_tempo_id.direktur_mobile, }, { "type": "contact", + 'title': 6 if self.pengajuan_tempo_id.purchasing_tittle == 'Bpk' else 7, "name": self.pengajuan_tempo_id.purchasing_name, "email": self.pengajuan_tempo_id.purchasing_email, "phone": self.pengajuan_tempo_id.purchasing_mobile, }, { "type": "contact", + 'title': 6 if self.pengajuan_tempo_id.finance_tittle == 'Bpk' else 7, "name": self.pengajuan_tempo_id.finance_name, "email": self.pengajuan_tempo_id.finance_email, "phone": self.pengajuan_tempo_id.finance_mobile, @@ -209,7 +433,7 @@ class UserPengajuanTempoRequest(models.Model): "name": self.pengajuan_tempo_id.pic_name, "street": self.pengajuan_tempo_id.street_pengiriman, "state_id": self.pengajuan_tempo_id.state_id_pengiriman.id, - "city_id": self.pengajuan_tempo_id.city_id_pengiriman.id, + "city": self.pengajuan_tempo_id.city_id_pengiriman.id, "zip": self.pengajuan_tempo_id.zip_pengiriman, }, { @@ -217,7 +441,7 @@ class UserPengajuanTempoRequest(models.Model): "name": self.pengajuan_tempo_id.invoice_pic, "street": self.pengajuan_tempo_id.street_invoice, "state_id": self.pengajuan_tempo_id.state_id_invoice.id, - "city_id": self.pengajuan_tempo_id.city_id_invoice.id, + "city": self.pengajuan_tempo_id.city_id_invoice.id, }, ] @@ -293,8 +517,18 @@ class UserPengajuanTempoRequest(models.Model): # user.send_company_request_approve_mail() self.user_company_id.property_payment_term_id = self.pengajuan_tempo_id.tempo_duration.id self.user_company_id.active_limit = True - self.user_company_id.warning_stage = float(self.pengajuan_tempo_id.tempo_limit) - (float(self.pengajuan_tempo_id.tempo_limit)/2) - self.user_company_id.blocking_stage = self.pengajuan_tempo_id.tempo_limit + self.user_company_id.warning_stage = float(limit_tempo) - (float(limit_tempo)/2) + self.user_company_id.blocking_stage = limit_tempo + + # Internal Notes + comment = [] + if self.pengajuan_tempo_id.tukar_invoice: + comment.append(f"Jadwal Tukar Invoice: {self.pengajuan_tempo_id.tukar_invoice}") + if self.pengajuan_tempo_id.jadwal_bayar: + comment.append(f"Jadwal Pembayaran: {self.pengajuan_tempo_id.jadwal_bayar}") + self.user_company_id.comment = "\n".join(comment) + + # template = self.env.ref('indoteknik_custom.mail_template_res_user_company_tempo_approved') # tempo = self.pengajuan_tempo_id # template.send_mail(tempo.id, force_send=True) diff --git a/indoteknik_custom/views/user_pengajuan_tempo_request.xml b/indoteknik_custom/views/user_pengajuan_tempo_request.xml index 2a3fc745..0e6b6c71 100644 --- a/indoteknik_custom/views/user_pengajuan_tempo_request.xml +++ b/indoteknik_custom/views/user_pengajuan_tempo_request.xml @@ -8,47 +8,139 @@ <field name="user_id"/> <field name="pengajuan_tempo_id"/> <field name="create_date"/> + <field name="state_tempo" decoration-success="state_tempo == 'approval_director'" decoration-danger="state_tempo == 'reject'" widget="badge" optional="show"/> </tree> </field> </record> <record id="user_pengajuan_tempo_request_form" model="ir.ui.view"> - <field name="name">user.pengajuan.tempo.request.form</field> - <field name="model">user.pengajuan.tempo.request</field> - <field name="arch" type="xml"> - <form create="0"> - <header> - <button name="button_approve" - string="Approve Tempo" - attrs="{'visible': [ ('state_tempo', 'in', ['draft', 'approval_sales', 'approval_finance'])]}" - type="object" - class="oe_highlight" - /> - - <button name="button_reject" - string="Reject" - attrs="{'visible': [ ('state_tempo', 'in', ['draft', 'approval_sales', 'approval_finance'])]}" - type="object" - groups="purchase.group_purchase_manager" - class="oe_highlight" /> - <field name="state_tempo" widget="statusbar" statusbar_visible="draft,approval_sales,approval_finance,approval_director" statusbar_colors='{"reject":"red"}'/> - </header> - <sheet> + <field name="name">user.pengajuan.tempo.request.form</field> + <field name="model">user.pengajuan.tempo.request</field> + <field name="arch" type="xml"> + <form create="0"> + <header> + <button name="button_approve" + string="Approve Tempo" + attrs="{'invisible': [('state_tempo', 'in', ['approval_director','reject'])]}" + type="object" + class="oe_highlight"/> + <button name="button_reject" + string="Reject" + attrs="{'invisible': [('state_tempo', 'in', ['approval_director','reject'])]}" + type="object" + groups="purchase.group_purchase_manager" + class="oe_highlight"/> + <field name="state_tempo" widget="statusbar" + statusbar_visible="draft,approval_sales,approval_finance,approval_director" + statusbar_colors='{"reject":"red"}'/> + </header> + <sheet> + <group> <group> + <field name="user_id" readonly="1"/> + <field name="pengajuan_tempo_id"/> + <field name="tempo_duration" attrs="{'readonly': [('state_tempo', '=', 'approval_director')]}"/> + <field name="tempo_limit" + attrs="{'readonly': [('state_tempo', '=', 'approval_director')]}" + placeholder="Contoh format, misalnya '10000000'"/> + </group> + </group> + <notebook> + <page string="Informasi Usaha"> + <!-- Informasi Usaha Section --> + <group> + <field name="name_tempo" /> + <field name="industry_id_tempo" /> + <field name="street_tempo" /> + <field name="state_id_tempo" /> + <field name="city_id_tempo" /> + <field name="zip_tempo" /> + <field name="mobile_tempo" /> + <field name="bank_name_tempo" /> + <field name="account_name_tempo" /> + <field name="account_number_tempo" /> + <field name="website_tempo" /> + <field name="estimasi_tempo" /> + <field name="tempo_duration_origin" /> + <field name="tempo_limit_origin" /> +<!-- <field name="category_produk_ids" widget="many2many_tags" />--> + </group> + </page> + <page string="Kontak Perusahaan"> + <group> + <field name="direktur_name"/> + <field name="direktur_mobile"/> + <field name="direktur_email"/> + </group> + <group> + <field name="purchasing_name"/> + <field name="purchasing_mobile"/> + <field name="purchasing_email"/> + </group> + <group> + <field name="finance_name"/> + <field name="finance_mobile"/> + <field name="finance_email"/> + </group> + </page> + <Page string="Pengiriman"> <group> - <field name="user_id" readonly="1"/> - <field name="pengajuan_tempo_id"/> - <field name="tempo_duration" attrs="{'readonly': [('state_tempo', '=', 'approval_director')]}"/> - <field name="tempo_limit" attrs="{'readonly': [('state_tempo', '=', 'approval_director')]}" placeholder="Contoh format, misalnya '10000000'"/> + <field name="pic_name"/> + <field name="street_pengiriman"/> + <field name="state_id_pengiriman"/> + <field name="city_id_pengiriman"/> + <field name="zip_pengiriman"/> </group> - </group> - </sheet> - <div class="oe_chatter"> - <field name="message_ids" widget="mail_thread"/> - </div> - </form> - </field> - </record> + <group> + <field name="invoice_pic"/> + <field name="street_invoice"/> + <field name="state_id_invoice"/> + <field name="city_id_invoice"/> + </group> + <group> + <field name="tukar_invoice"/> + <field name="jadwal_bayar"/> + <field name="dokumen_pengiriman"/> + <field name="dokumen_pengiriman_input"/> + <field name="dokumen_invoice"/> + </group> + </Page> + <Page string="Suppliers"> + <field name="supplier_ids"> + <tree> + <field name="name_supplier"/> + <field name="pic_name"/> + <field name="phone"/> + <field name="tempo_duration"/> + <field name="credit_limit"/> + </tree> + </field> + </Page> + <Page string="Dokumen"> + <group string="Dokumen"> + <field name="dokumen_nib" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_npwp" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_sppkp" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_akta_perubahan" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_ktp_dirut" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_akta_pendirian" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_laporan_keuangan" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_ktp_dirut" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_foto_kantor" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + <field name="dokumen_tempat_bekerja" widget="many2many_binary" options="{'no_create': True, 'no_open': False}"/> + </group> + </Page> + </notebook> + </sheet> + <div class="oe_chatter"> + <field name="message_ids" widget="mail_thread"/> + </div> + </form> + </field> +</record> + + + <!-- Wizard for Reject Reason --> <record id="view_reject_reason_wizard_form" model="ir.ui.view"> @@ -192,9 +284,9 @@ <tr><td style="padding-bottom: 24px;"><b>Hai. ${object.pengajuan_tempo_id.name_tempo.name},</b></td></tr> <tr><td style="padding-bottom: 16px;">Kabar baik! Kami dengan senang hati menginformasikan bahwa pengajuan tempo pembayaran kamu di Indoteknik.com telah disetujui dengan detail sebagai berikut.</td></tr> - <tr><td style="padding-bottom: 4px;"><b>Limit Pembayaran Tempo : Rp ${object.format_currency(object.pengajuan_tempo_id.tempo_limit)}</b></td></tr> + <tr><td style="padding-bottom: 4px;"><b>Limit Pembayaran Tempo : Rp ${object.format_currency(object.user_id.tempo_limit)}</b></td></tr> - <tr><td style="padding-bottom: 16px;"><b>Durasi Pembayaran Tempo : ${object.pengajuan_tempo_id.tempo_duration.name}</b></td></tr> + <tr><td style="padding-bottom: 16px;"><b>Durasi Pembayaran Tempo : ${object.user_id.tempo_duration.name}</b></td></tr> <tr> <td style="padding-bottom: 16px; ">Kamu dapat melakukan pembayaran sesuai dengan jangka waktu yang telah disepakati. Detail lengkap mengenai transaksi kamu, termasuk tanggal jatuh tempo & Pengajuan Kenaikan Limit Tempo, dapat kamu lihat di akun <a href="https://indoteknik.com/my/profile">Profile Indoteknik.com</a> .</td> </tr> |
