summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-12-09 15:04:12 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-12-09 15:04:12 +0700
commit02eacd54387953f42a884a22544e2f7c94081536 (patch)
treebd0632ce4040c3712d06c1d4459716bbb3050004
parentaf85c0d2248728fe33675dcec6e513eefd6553a4 (diff)
<iman> update pengajuan tempo
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py21
-rw-r--r--indoteknik_custom/models/res_partner.py5
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo.py53
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo_request.py244
-rw-r--r--indoteknik_custom/views/user_pengajuan_tempo_request.xml162
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 &amp; Pengajuan Kenaikan Limit Tempo, dapat kamu lihat di akun <a href="https://indoteknik.com/my/profile">Profile Indoteknik.com</a> .</td>
</tr>