summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-01-20 11:56:25 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-01-20 11:56:25 +0700
commitc7f6d959e0e7a2e8adc45cff515f2b5666f3e732 (patch)
tree47dff70b4c0d368832d6dfc195225da53af9ac61
parent932fd84a5eb71d62f2a138f3ddb9ab9c0ccb0385 (diff)
<iman> update merchant
-rw-r--r--indoteknik_api/controllers/api_v1/lead.py89
-rw-r--r--indoteknik_api/models/res_partner.py164
-rw-r--r--indoteknik_custom/models/user_form_merchant.py46
-rw-r--r--indoteknik_custom/views/user_form_merchant.xml55
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" />