summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/user_pengajuan_tempo_request.py
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-10-31 13:49:23 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-10-31 13:49:23 +0700
commitd8c12d085edbd81d974555780b16421c7b155f7f (patch)
treece8993a2fe4ccda62827dceb10b7acc097babc9c /indoteknik_custom/models/user_pengajuan_tempo_request.py
parent4588b8df03628821dce6eb6029ac4bcd5065aba8 (diff)
<iman> update pengajuan tempo final
Diffstat (limited to 'indoteknik_custom/models/user_pengajuan_tempo_request.py')
-rw-r--r--indoteknik_custom/models/user_pengajuan_tempo_request.py184
1 files changed, 184 insertions, 0 deletions
diff --git a/indoteknik_custom/models/user_pengajuan_tempo_request.py b/indoteknik_custom/models/user_pengajuan_tempo_request.py
new file mode 100644
index 00000000..6c04ab7c
--- /dev/null
+++ b/indoteknik_custom/models/user_pengajuan_tempo_request.py
@@ -0,0 +1,184 @@
+from odoo import models, fields, api
+from odoo.exceptions import UserError
+from odoo.http import request
+
+class UserPengajuanTempoRequest(models.Model):
+ _name = 'user.pengajuan.tempo.request'
+ _rec_name = 'user_id'
+
+ user_id = fields.Many2one('res.partner', string='User')
+ user_company_id = fields.Many2one('res.partner', string='Company')
+ user_input = fields.Char(string='User Input')
+ is_approve = fields.Selection([
+ ('approved', 'Approve'),
+ ('rejected', 'Reject'),
+ ], string='Approval')
+ similar_company_ids = fields.Many2many('res.partner', compute="_compute_similar_companies", string="Similar Companies")
+ pengajuan_tempo_id = fields.Many2one('user.pengajuan.tempo', string='Form Tempo')
+
+ @api.depends('user_input')
+ def _compute_similar_companies(self):
+ for record in self:
+ if record.user_input:
+ record.similar_company_ids = [(6, 0, self.get_similar_companies(record.user_input))]
+ else:
+ record.similar_company_ids = [(6, 0, [])]
+
+ # def get_similar_companies(self, user_input):
+ # query = """
+ # SELECT id
+ # FROM res_partner
+ # WHERE levenshtein(name::text, %s) < 3
+ # ORDER BY levenshtein(name::text, %s) ASC
+ # """
+ # self.env.cr.execute(query, (user_input, user_input))
+ # return [row[0] for row in self.env.cr.fetchall()]
+
+ def get_similar_companies(self, user_input):
+ query = """
+ SELECT id
+ FROM res_partner
+ WHERE (name ILIKE %s OR levenshtein(name::text, %s) < 3)
+ AND active = TRUE AND is_company = TRUE
+ ORDER BY levenshtein(name::text, %s) ASC
+ """
+ # Menggunakan '%' untuk mencocokkan nama perusahaan sebagian
+ self.env.cr.execute(query, ('%' + user_input + '%', user_input, user_input))
+ company_ids = [row[0] for row in self.env.cr.fetchall()]
+ return company_ids
+
+ internal_input = fields.Char(string='Internal Input')
+ company_type = fields.Char(string='Company Type', compute='_compute_company_type')
+
+ @api.depends('user_company_id.customer_type')
+ def _compute_company_type(self):
+ for record in self:
+ if record.user_company_id.customer_type == 'nonpkp':
+ record.company_type = 'Non PKP'
+ elif record.user_company_id.customer_type == 'pkp':
+ record.company_type = 'PKP'
+ else:
+ record.company_type = 'company type belum di set'
+
+ def write(self, vals):
+ user = self.get_user_by_email(self.user_id.email)
+ user.parent_name = self.user_input
+ is_approve = vals.get('is_approve')
+ is_internal_input = vals.get('internal_input')
+ company_id = ''
+ if not self.user_company_id:
+ company_id = request.env['res.partner'].search([('id', '=', vals.get('user_company_id'))], limit=1)
+ if self.is_approve and is_approve:
+ raise UserError('Tidak dapat mengubah approval yang sudah diisi')
+
+ if is_internal_input:
+ if self.user_company_id.nama_wajib_pajak == self.user_company_id.name:
+ self.user_company_id.nama_wajib_pajak = is_internal_input
+ self.user_company_id.name = is_internal_input
+
+ if not self.is_approve and is_approve:
+ if is_approve == 'approved':
+ self.pengajuan_tempo_id.partner_id = self.user_id.id
+ # informasi perusahaan
+ company_id.name_tempo = self.pengajuan_tempo_id.name_tempo
+ company_id.industry_id_tempo = self.pengajuan_tempo_id.industry_id_tempo
+ company_id.street_tempo = self.pengajuan_tempo_id.street_tempo
+ company_id.state_id_tempo = self.pengajuan_tempo_id.state_id_tempo
+ company_id.city_id_tempo = self.pengajuan_tempo_id.city_id_tempo
+ company_id.zip_tempo = self.pengajuan_tempo_id.zip_tempo
+ company_id.mobile_tempo = self.pengajuan_tempo_id.mobile_tempo
+ company_id.bank_name_tempo = self.pengajuan_tempo_id.bank_name_tempo
+ company_id.account_name_tempo = self.pengajuan_tempo_id.account_name_tempo
+ company_id.account_number_tempo = self.pengajuan_tempo_id.account_number_tempo
+ company_id.website_tempo = self.pengajuan_tempo_id.website_tempo
+ company_id.estimasi_tempo = self.pengajuan_tempo_id.estimasi_tempo
+ company_id.tempo_duration = self.pengajuan_tempo_id.tempo_duration
+ company_id.tempo_limit = self.pengajuan_tempo_id.tempo_limit
+ company_id.category_produk_ids = self.pengajuan_tempo_id.category_produk_ids
+
+ # Kontak Perusahaan
+ company_id.direktur_name = self.pengajuan_tempo_id.direktur_name
+ company_id.direktur_mobile = self.pengajuan_tempo_id.direktur_mobile
+ company_id.direktur_email = self.pengajuan_tempo_id.direktur_email
+ company_id.purchasing_name = self.pengajuan_tempo_id.purchasing_name
+ company_id.purchasing_mobile = self.pengajuan_tempo_id.purchasing_mobile
+ company_id.purchasing_email = self.pengajuan_tempo_id.purchasing_email
+ company_id.finance_name = self.pengajuan_tempo_id.finance_name
+ company_id.finance_mobile = self.pengajuan_tempo_id.finance_mobile
+ company_id.finance_email = self.pengajuan_tempo_id.finance_email
+
+ # Pengiriman
+ company_id.pic_name = self.pengajuan_tempo_id.pic_name
+ company_id.street_pengiriman = self.pengajuan_tempo_id.street_pengiriman
+ company_id.state_id_pengiriman = self.pengajuan_tempo_id.state_id_pengiriman
+ company_id.city_id_pengiriman = self.pengajuan_tempo_id.city_id_pengiriman
+ company_id.zip_pengiriman = self.pengajuan_tempo_id.zip_pengiriman
+ company_id.invoice_pic = self.pengajuan_tempo_id.invoice_pic
+ company_id.street_invoice = self.pengajuan_tempo_id.street_invoice
+ company_id.state_id_invoice = self.pengajuan_tempo_id.state_id_invoice
+ company_id.city_id_invoice = self.pengajuan_tempo_id.city_id_invoice
+ company_id.tukar_invoice = self.pengajuan_tempo_id.tukar_invoice
+ company_id.jadwal_bayar = self.pengajuan_tempo_id.jadwal_bayar
+ company_id.dokumen_pengiriman = self.pengajuan_tempo_id.dokumen_pengiriman
+ company_id.dokumen_invoice = self.pengajuan_tempo_id.dokumen_invoice
+
+ # Referensi
+ company_id.supplier_ids = self.pengajuan_tempo_id.supplier_ids
+
+ # Dokumen
+ company_id.dokumen_nib = self.pengajuan_tempo_id.dokumen_nib
+ if company_id.dokumen_nib:
+ company_id.message_post(body='Dokumen NIB', attachment_ids=[company_id.dokumen_nib.id])
+
+ company_id.dokumen_npwp = self.pengajuan_tempo_id.dokumen_npwp
+ if company_id.dokumen_npwp:
+ company_id.message_post(body='Dokumen NPWP', attachment_ids=[company_id.dokumen_npwp.id])
+
+ company_id.dokumen_sppkp = self.pengajuan_tempo_id.dokumen_sppkp
+ if company_id.dokumen_sppkp:
+ company_id.message_post(body='Dokumen SPPKP', attachment_ids=[company_id.dokumen_sppkp.id])
+
+ company_id.dokumen_akta_perubahan = self.pengajuan_tempo_id.dokumen_akta_perubahan
+ if company_id.dokumen_akta_perubahan:
+ company_id.message_post(body='Dokumen Akta Perubahan',
+ attachment_ids=[company_id.dokumen_akta_perubahan.id])
+
+ company_id.dokumen_ktp_dirut = self.pengajuan_tempo_id.dokumen_ktp_dirut
+ if company_id.dokumen_ktp_dirut:
+ company_id.message_post(body='Dokumen Ktp Dirut',
+ attachment_ids=[company_id.dokumen_ktp_dirut.id])
+
+ company_id.dokumen_akta_pendirian = self.pengajuan_tempo_id.dokumen_akta_pendirian
+ if company_id.dokumen_akta_pendirian:
+ company_id.message_post(body='Dokumen Akta Pendirian',
+ attachment_ids=[company_id.dokumen_akta_pendirian.id])
+
+ company_id.dokumen_laporan_keuangan = self.pengajuan_tempo_id.dokumen_laporan_keuangan
+ if company_id.dokumen_laporan_keuangan:
+ company_id.message_post(body='Dokumen Laporan Keuangan',
+ attachment_ids=[company_id.dokumen_laporan_keuangan.id])
+
+ company_id.dokumen_foto_kantor = self.pengajuan_tempo_id.dokumen_foto_kantor
+ if company_id.dokumen_foto_kantor:
+ company_id.message_post(body='Dokumen Foto Kantor',
+ attachment_ids=[company_id.dokumen_foto_kantor.id])
+
+ company_id.dokumen_tempat_bekerja = self.pengajuan_tempo_id.dokumen_tempat_bekerja
+ if company_id.dokumen_tempat_bekerja:
+ company_id.message_post(body='Dokumen Tempat Bekerja',
+ attachment_ids=[company_id.dokumen_tempat_bekerja.id])
+ # self.user_company_id.active = True
+ # user.send_company_request_approve_mail()
+ else:
+ new_company = self.env['res.partner'].create({
+ 'name': self.user_input
+ })
+ # self.user_id.parent_id = new_company.id
+ # user.send_company_request_reject_mail()
+ return super(UserPengajuanTempoRequest, self).write(vals)
+
+ def get_user_by_email(self, email):
+ return request.env['res.users'].search([
+ ('login', '=', email),
+ ('active', 'in', [True, False])
+ ]) \ No newline at end of file