diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2025-01-20 11:56:25 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2025-01-20 11:56:25 +0700 |
| commit | c7f6d959e0e7a2e8adc45cff515f2b5666f3e732 (patch) | |
| tree | 47dff70b4c0d368832d6dfc195225da53af9ac61 | |
| parent | 932fd84a5eb71d62f2a138f3ddb9ab9c0ccb0385 (diff) | |
<iman> update merchant
| -rw-r--r-- | indoteknik_api/controllers/api_v1/lead.py | 89 | ||||
| -rw-r--r-- | indoteknik_api/models/res_partner.py | 164 | ||||
| -rw-r--r-- | indoteknik_custom/models/user_form_merchant.py | 46 | ||||
| -rw-r--r-- | indoteknik_custom/views/user_form_merchant.xml | 55 |
4 files changed, 176 insertions, 178 deletions
diff --git a/indoteknik_api/controllers/api_v1/lead.py b/indoteknik_api/controllers/api_v1/lead.py index e8153fbf..67856dad 100644 --- a/indoteknik_api/controllers/api_v1/lead.py +++ b/indoteknik_api/controllers/api_v1/lead.py @@ -1,6 +1,9 @@ from .. import controller from odoo import http from odoo.http import request +import base64 +import mimetypes +import json class Lead(controller.Controller): @http.route('/api/v1/lead', auth='public', methods=['POST', 'OPTIONS'], csrf=False) @@ -70,20 +73,20 @@ class Lead(controller.Controller): "is_kembali_barang": [], "sertifikat_produk": [], "custom_sertifikat_produk": [], + "tempo_garansi": [], "is_order_quantity": [], "explain_garansi": [], - - - - "file_dokumenKtpDirut ": [], - "file_kartuNama": [], - "file_npwp": [], - "file_sppkp": [], - "file_suratPernyataan": [], - "file_fotoKantor": [], - "file_dataProduk": [], - "file_pricelist": [], + # # dokumen + # + # "file_npwp": [], + # "file_sppkp": [], + # "file_dokumenKtpDirut ": [], + # "file_kartuNama": [], + # "file_suratPernyataan": [], + # "file_fotoKantor": [], + # "file_dataProduk": [], + # "file_pricelist": [], }) partner_id = int(kw.get('id')) partner = request.env['res.partner'].search([('id', '=', partner_id)], limit=1) @@ -105,22 +108,21 @@ class Lead(controller.Controller): if kw.get('tenggat_waktu') != 'custom': params['value']['tenggat_waktu'] = kw.get('tenggat_waktu') + ' hari sejak data dikirimkan' else: - params['value']['tenggat_waktu'] = kw.get('customTenggatWaktu') - - if kw.get('tempo_garansi'): - if kw.get('tempo_garansi') == '1': - params['value']['tempo_garansi'] = '6 Bulan Garansi' - elif kw.get('tempoTaransi') == '2': - params['value']['tempo_garansi'] = '1 Tahun Garansi' - else: - params['value']['tempo_garansi'] = '2 Tahun Garansi' + params['value']['tenggat_waktu'] = kw.get('custom_tenggat_waktu') if params['value']['is_order_quantity']: if params['value']['is_order_quantity'] == 'ya': - params['value']['is_order_quantity'] = kw.get('minimumPembelian') + params['value']['is_order_quantity'] = kw.get('minimum_pembelian') else: params['value']['is_order_quantity'] = 'Tidak ada minimum order quantity' + dokumen_kirim = [ + 'TKDN', + 'SNI', + 'Surat Terima Barang (STB)', + 'Lembar Penerimaan Barang (LPB)' + ] + filtered_params = {key: value for key, value in params['value'].items() if value} form_merchant = request.env['user.form.merchant'].search([('partner_id', '=', main_partner.id)], limit=1) if form_merchant: @@ -132,7 +134,50 @@ class Lead(controller.Controller): category_produk_ids = kw.get('categoryProduk', False) if category_produk_ids: category_ids = list(map(int, category_produk_ids.split(','))) - form_merchant.category_produk_ids = [(6, 0, category_ids)] + valid_category_ids = request.env['product.public.category'].search([('id', 'in', category_ids)]).ids + form_merchant.category_produk_ids = [(6, 0, valid_category_ids)] + + file_dokumen = kw.get('file_dokumen', False) + if file_dokumen: + form_dokumen = json.loads(file_dokumen) + + for dokumen in form_dokumen: + if form_dokumen[dokumen]['details']: + mimetype, _ = mimetypes.guess_type(form_dokumen[dokumen]['details']['name']) + mimetype = mimetype or 'application/octet-stream' + data = base64.b64decode(form_dokumen[dokumen]['details']['format']) + sppkp_attachment = request.env['ir.attachment'].create({ + 'name': form_dokumen[dokumen]['details']['name'], + 'type': 'binary', + 'datas': base64.b64encode(data), + 'res_model': 'user.form.merchant', + 'res_id': form_merchant.id, + 'mimetype': mimetype + }) + + if dokumen == 'file_npwp': + form_merchant.file_npwp = sppkp_attachment.id + + elif dokumen == 'file_sppkp': + form_merchant.file_sppkp = sppkp_attachment.id + + elif dokumen == 'file_dokumenKtpDirut': + form_merchant.file_dokumenKtpDirut = sppkp_attachment.id + + elif dokumen == 'file_kartuNama': + form_merchant.file_kartuNama = sppkp_attachment.id + + elif dokumen == 'file_suratPernyataan': + form_merchant.file_suratPernyataan = sppkp_attachment.id + + elif dokumen == 'file_fotoKantor': + form_merchant.file_fotoKantor = sppkp_attachment.id + + elif dokumen == 'file_dataProduk': + form_merchant.file_dataProduk = sppkp_attachment.id + + elif dokumen == 'file_pricelist': + form_merchant.file_pricelist = sppkp_attachment.id if not params['valid']: return self.response(code=400, description=params) if merchant_request: diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index 5da79884..a8ba785d 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -6,22 +6,6 @@ class ResPartner(models.Model): _inherit = 'res.partner' def api_single_response(self, form_merchant, with_detail=''): - config = self.env['ir.config_parameter'] - - partner = form_merchant.partner_id - - dokumen_kirim = [ - ['Surat Tanda Terima Barang (STTB)', '0'], - ['Good Receipt (GR)', '1'], - ['Surat Terima Barang (STB)', '2'], - ['Lembar Penerimaan Barang (LPB)', '3'] - ] - dokumen_pengiriman = [] - # if form_merchant.dokumen_pengiriman : - # form_merchant_dokumen_pengiriman = form_merchant.dokumen_pengiriman - # mapping_dokumen = {item[0]: item[1] for item in dokumen_kirim} - # dokumen_pengiriman_list = [dokumen.strip() for dokumen in form_merchant_dokumen_pengiriman.split(',')] - # dokumen_pengiriman = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_pengiriman_list] data = { 'name_merchant' : form_merchant.name_merchant, 'pejabat_name' : form_merchant.pejabat_name, @@ -62,119 +46,45 @@ class ResPartner(models.Model): 'tenggat_waktu': form_merchant.tenggat_waktu, 'sertifikat_produk': form_merchant.sertifikat_produk, 'custom_sertifikat_produk': '' if form_merchant.custom_sertifikat_produk == 'false' else form_merchant.custom_sertifikat_produk, - 'tempo_garansi': 1 if form_merchant.tempo_garansi == '6 Bulan Garansi' else 2 if form_merchant.tempo_garansi == '1 Tahun Garansi' else 3 , + 'tempo_garansi': form_merchant.tempo_garansi, 'explain_garansi': form_merchant.explain_garansi, - 'is_order_quantity': 'ya' if form_merchant.is_order_quantity else 'tidak', + 'is_order_quantity': 'ya' if form_merchant.is_order_quantity != 'Tidak ada minimum order quantity' else 'tidak', 'minimum_pembelian': form_merchant.is_order_quantity, - # - # # Pengiriman - # 'PIC_tittle' : form_merchant.pic_tittle if form_merchant.pic_tittle else '', - # 'PIC_name' : form_merchant.pic_name if form_merchant.pic_name else '', - # 'street_pengiriman' : form_merchant.street_pengiriman if form_merchant.street_pengiriman else '', - # 'state_pengiriman' : form_merchant.state_id_pengiriman.id if form_merchant.state_id_pengiriman else '', - # 'city_pengiriman' : form_merchant.city_id_pengiriman.id if form_merchant.city_id_pengiriman else '', - # 'district_pengiriman': form_merchant.district_id_pengiriman.id if form_merchant.district_id_pengiriman else '', - # 'subDistrict_pengiriman': form_merchant.subDistrict_id_pengiriman.id if form_merchant.subDistrict_id_pengiriman else '', - # 'zip_pengiriman' : form_merchant.zip_pengiriman if form_merchant.zip_pengiriman else '', - # 'invoice_pic_tittle' : form_merchant.invoice_pic_tittle if form_merchant.invoice_pic_tittle else '', - # 'invoice_pic' : form_merchant.invoice_pic if form_merchant.invoice_pic else '', - # 'street_invoice' : form_merchant.street_invoice if form_merchant.street_invoice else '', - # 'state_invoice' : form_merchant.state_id_invoice.id if form_merchant.state_id_invoice else '', - # 'city_invoice' : form_merchant.city_id_invoice.id if form_merchant.city_id_invoice else '', - # 'district_invoice': form_merchant.district_id_invoice.id if form_merchant.district_id_invoice else '', - # 'subDistrict_invoice': form_merchant.subDistrict_id_invoice.id if form_merchant.subDistrict_id_invoice else '', - # 'zip_invoice': form_merchant.zip_invoice if form_merchant.zip_invoice else '', - # 'tukar_invoice_input' : form_merchant.tukar_invoice if form_merchant.tukar_invoice else '', - # 'tukar_invoice_input_pembayaran' : form_merchant.jadwal_bayar if form_merchant.jadwal_bayar else '', - # 'dokumen_pengiriman' : ','.join(dokumen_pengiriman) if dokumen_pengiriman else '', - # 'dokumen_pengiriman_input' : form_merchant.dokumen_pengiriman_input if form_merchant.dokumen_pengiriman_input else '', - # 'dokumen_kirim_input' : form_merchant.dokumen_kirim_input if form_merchant.dokumen_kirim_input else '', - # 'dokumen_pengiriman_invoice' : form_merchant.dokumen_invoice if form_merchant.dokumen_invoice else '', - # 'is_same_addrees': form_merchant.is_same_address if form_merchant.is_same_address else False, - # 'is_same_addrees_street': form_merchant.is_same_address_street if form_merchant.is_same_address_street else False, - # 'supplier_ids': [ - # { - # 'id': supplier.id, - # 'supplier': supplier.name_supplier, - # 'telepon': supplier.phone, - # 'pic': supplier.pic_name, - # 'credit_limit': supplier.credit_limit, - # 'durasi_tempo': supplier.tempo_duration - # } - # for supplier in form_merchant.supplier_ids - # ] if form_merchant.supplier_ids else '', - # # Dokumen - # 'dokumen_npwp': - # { - # 'name': form_merchant.dokumen_npwp.name, - # 'base64': form_merchant.dokumen_npwp.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_npwp.mimetype, - # } if form_merchant.dokumen_npwp else '', - # 'dokumen_sppkp': { - # 'name': form_merchant.dokumen_sppkp.name, - # 'base64': form_merchant.dokumen_sppkp.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_sppkp.mimetype, - # } if form_merchant.dokumen_sppkp else '', - # 'dokumen_nib': - # { - # 'name': form_merchant.dokumen_nib.name, - # 'base64': form_merchant.dokumen_nib.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_nib.mimetype, - # }if form_merchant.dokumen_nib else '', - # 'dokumen_siup': - # { - # 'name': form_merchant.dokumen_siup.name, - # 'base64': form_merchant.dokumen_siup.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_siup.mimetype, - # }if form_merchant.dokumen_siup else '', - # 'dokumen_tdp': - # { - # 'name': form_merchant.dokumen_tdp.name, - # 'base64': form_merchant.dokumen_tdp.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_tdp.mimetype, - # }if form_merchant.dokumen_tdp else '', - # 'dokumen_skdp': - # { - # 'name': form_merchant.dokumen_skdp.name, - # 'base64': form_merchant.dokumen_skdp.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_skdp.mimetype, - # }if form_merchant.dokumen_skdp else '', - # 'dokumen_skt': - # { - # 'name': form_merchant.dokumen_skt.name, - # 'base64': form_merchant.dokumen_skt.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_skt.mimetype, - # }if form_merchant.dokumen_skt else '', - # 'dokumen_akta_perubahan': { - # 'name': form_merchant.dokumen_akta_perubahan.name, - # 'base64': form_merchant.dokumen_akta_perubahan.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_akta_perubahan.mimetype, - # } if form_merchant.dokumen_akta_perubahan else '', - # 'dokumen_ktp_dirut': { - # 'name': form_merchant.dokumen_ktp_dirut.name, - # 'base64': form_merchant.dokumen_ktp_dirut.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_ktp_dirut.mimetype, - # } if form_merchant.dokumen_ktp_dirut else '', - # 'dokumen_akta_pendirian': { - # 'name': form_merchant.dokumen_akta_pendirian.name, - # 'base64': form_merchant.dokumen_akta_pendirian.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_akta_pendirian.mimetype, - # } if form_merchant.dokumen_akta_pendirian else '', - # 'dokumen_laporan_keuangan': { - # 'name': form_merchant.dokumen_laporan_keuangan.name, - # 'base64': form_merchant.dokumen_laporan_keuangan.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_laporan_keuangan.mimetype, - # } if form_merchant.dokumen_laporan_keuangan else '', - # 'dokumen_foto_kantor': { - # 'name': form_merchant.dokumen_foto_kantor.name, - # 'base64': form_merchant.dokumen_foto_kantor.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_foto_kantor.mimetype, - # } if form_merchant.dokumen_foto_kantor else '', - # 'dokumen_tempat_bekerja': { - # 'name': form_merchant.dokumen_tempat_bekerja.name, - # 'base64': form_merchant.dokumen_tempat_bekerja.datas.decode('utf-8'), - # 'format': form_merchant.dokumen_tempat_bekerja.mimetype, - # } if form_merchant.dokumen_tempat_bekerja else '', + + #dokumen + 'file_npwp': + { + 'name': form_merchant.file_npwp.name, + } if form_merchant.file_npwp else '', + 'file_sppkp': { + 'name': form_merchant.file_sppkp.name, + } if form_merchant.file_sppkp else '', + 'file_dokumenKtpDirut': + { + 'name': form_merchant.file_dokumenKtpDirut.name, + }if form_merchant.file_dokumenKtpDirut else '', + 'file_kartuNama': + { + 'name': form_merchant.file_kartuNama.name, + }if form_merchant.file_kartuNama else '', + 'file_suratPernyataan': + { + 'name': form_merchant.file_suratPernyataan.name, + }if form_merchant.file_suratPernyataan else '', + 'file_fotoKantor': + { + 'name': form_merchant.file_fotoKantor.name + }if form_merchant.file_fotoKantor else '', + 'file_dataProduk': + { + 'name': form_merchant.file_dataProduk.name, + }if form_merchant.file_dataProduk else '', + 'file_pricelist': { + 'name': form_merchant.file_pricelist.name, + } if form_merchant.file_pricelist else '', + + + } return data
\ No newline at end of file diff --git a/indoteknik_custom/models/user_form_merchant.py b/indoteknik_custom/models/user_form_merchant.py index 83ed2eeb..dd143381 100644 --- a/indoteknik_custom/models/user_form_merchant.py +++ b/indoteknik_custom/models/user_form_merchant.py @@ -28,9 +28,19 @@ class UserFormMerchant(models.Model): email_finance = fields.Char(string='Email Finance') phone = fields.Char(string='No. Telepon Perusahaan') mobile = fields.Char(string='No. Handphone') - bisnis_type = fields.Char(string='Bisnis Type') + bisnis_type = fields.Selection([ + ('1', 'PT'), + ('2', 'CV'), + ('3', 'Perorangan'), + ]) website = fields.Char(string='Website') - category_perusahaan = fields.Char(string='Kategori Perusahaan') + category_perusahaan = fields.Selection([ + ('1', 'Principal (Pemegang merk/Produsen)'), + ('2', 'Sole Distributor (Distributor Tunggal)'), + ('3', 'Authorized Distributor (Distributor Resmi)'), + ('4', 'Importer (Pengimpor Barang)'), + ('5', 'Wholesaler (Pedagang Besar)'), + ]) description = fields.Text(string='Deskripsi') # imformasi Vendor @@ -48,7 +58,11 @@ class UserFormMerchant(models.Model): tempo_duration = fields.Many2one('account.payment.term', string='Durasi Tempo') kredit_limit = fields.Char(string='Kredit Limit') waktu_pengiriman = fields.Char(string='Waktu Pengiriman') - terhitung_sejak = fields.Char(string='Terhitung Sejak') + terhitung_sejak = fields.Selection([ + ('1', 'Terima PO'), + ('2', 'Barang Dikirimkan'), + ('3', 'Tukar Faktur'), + ]) @@ -57,22 +71,24 @@ class UserFormMerchant(models.Model): tenggat_waktu = fields.Char(string='Tenggat Waktu Perubahan Harga') sertifikat_produk = fields.Char(string='Dokumen/Sertifikat yang Dimiliki Oleh Brand') custom_sertifikat_produk = fields.Char(string='Dokumen/Sertifikat Lainnya') - tempo_garansi = fields.Char(string='Garansi') + tempo_garansi = fields.Selection([ + ('1', '6 Bulan Garansi'), + ('2', '1 Tahun Garansi'), + ('3', '2 Tahun Garansi'), + ]) explain_garansi = fields.Char(string='Garansi Yang Dimaksudkan') is_order_quantity = fields.Char(string='Apakah Memiliki Minimum Order Quantity (MOQ)') - - - - file_dokumenKtpDirut = fields.Binary(string="KTP Dirut/Direktur", tracking=True, track_visibility="onchange") - file_kartuNama = fields.Binary(string="Kartu Nama", tracking=True, track_visibility="onchange") - file_npwp = fields.Binary(string="NPWP", tracking=True, track_visibility="onchange") - file_sppkp = fields.Binary(string="SPPKP", tracking=True, track_visibility="onchange") - file_suratPernyataan = fields.Binary(string="Surat Pernyataan Nomor Rekening", tracking=True, track_visibility="onchange") - file_fotoKantor = fields.Binary(string="Foto Gudang / Kantor Bagian Depan", tracking=True, track_visibility="onchange") - file_dataProduk = fields.Binary(string="Data Produk (Item Name, Gambar, Deskripsi)", tracking=True, track_visibility="onchange") - file_pricelist = fields.Binary(string="Pricelist", tracking=True, track_visibility="onchange") + # dokumen + file_npwp = fields.Many2one('ir.attachment', string="NPWP Perusahaan", tracking=3) + file_sppkp = fields.Many2one('ir.attachment', string="SPPKP Perusahaan", tracking=3) + file_dokumenKtpDirut = fields.Many2one('ir.attachment', string="KTP Dirut/Direktur", tracking=3) + file_kartuNama = fields.Many2one('ir.attachment', string="Kartu Nama", tracking=3) + file_suratPernyataan = fields.Many2one('ir.attachment', string="Surat Pernyataan Nomor Rekening", tracking=3) + file_fotoKantor = fields.Many2one('ir.attachment', string="Foto Gudang / Kantor Bagian Depan", tracking=3) + file_dataProduk = fields.Many2one('ir.attachment', string="Data Produk (Item Name, Gambar, Deskripsi)", tracking=3) + file_pricelist = fields.Many2one('ir.attachment', string="Pricelist", tracking=3) @api.depends('name', 'name_merchant') def name_get(self): diff --git a/indoteknik_custom/views/user_form_merchant.xml b/indoteknik_custom/views/user_form_merchant.xml index 230b6425..cbb7c756 100644 --- a/indoteknik_custom/views/user_form_merchant.xml +++ b/indoteknik_custom/views/user_form_merchant.xml @@ -21,38 +21,65 @@ <form create="0"> <sheet> <group> - <group> + <group string="Informasi Perusahaan" > <field name="name_merchant" /> + <field name="pejabat_name" /> <field name="pic_merchant" /> + <field name="pic_position" /> <field name="address" /> <field name="state" /> <field name="city" /> <field name="district" /> <field name="subDistrict" /> <field name="zip" /> - </group> - <group> <field name="bank_name" /> <field name="rekening_name" /> <field name="account_number" /> + <field name="email_company" widget="email"/> + <field name="email_sales" widget="email"/> + <field name="email_finance" widget="email"/> + <field name="phone" widget="phone"/> + <field name="mobile" widget="phone"/> + <field name="bisnis_type" /> + <field name="website" /> + <field name="category_perusahaan" /> </group> + </group> + <group string="Informasi Vendor"> + <group> + <field name="harga_tayang" /> + <field name="category_produk_ids" widget="many2many_tags"/> + <field name="merk_dagang" /> + <field name="is_pengajuan_tempo" /> + <field name="tempo_duration" /> + <field name="kredit_limit" /> + <field name="waktu_pengiriman" /> + <field name="terhitung_sejak" /> + </group> + + </group> + <group string="Syarat Perdagangan"> + <group> + <field name="is_kembali_barang" /> + <field name="tenggat_waktu" /> + <field name="sertifikat_produk" /> + <field name="custom_sertifikat_produk" /> + <field name="tempo_garansi" /> + <field name="explain_garansi" /> + <field name="is_order_quantity" /> + + </group> + </group> + <group string="Dokumen"> <group> - <field name="file_dokumenKtpDirut" /> - <field name="file_kartuNama" /> <field name="file_npwp" /> <field name="file_sppkp" /> + <field name="file_dokumenKtpDirut" /> + <field name="file_kartuNama" /> <field name="file_suratPernyataan" /> <field name="file_fotoKantor" /> <field name="file_dataProduk" /> - <field name="file_pricelist" /> - </group> - <group> - <field name="email_company" widget="email"/> - <field name="email_sales" widget="email"/> - <field name="email_finance" widget="email"/> - <field name="phone" widget="phone"/> - <field name="mobile" widget="phone"/> - <field name="harga_tayang" /> + <field name="file_pricelist" /> </group> <group> <field name="description" /> |
