diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-10-31 13:49:23 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-10-31 13:49:23 +0700 |
| commit | d8c12d085edbd81d974555780b16421c7b155f7f (patch) | |
| tree | ce8993a2fe4ccda62827dceb10b7acc097babc9c /indoteknik_custom/models/user_pengajuan_tempo_request.py | |
| parent | 4588b8df03628821dce6eb6029ac4bcd5065aba8 (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.py | 184 |
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 |
