summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
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_api/controllers/api_v1
parent4588b8df03628821dce6eb6029ac4bcd5065aba8 (diff)
<iman> update pengajuan tempo final
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py225
1 files changed, 224 insertions, 1 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index a7925a02..27ba186f 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -2,6 +2,9 @@ from .. import controller
from odoo import http
from odoo.http import request
+import json
+import base64
+import mimetypes
class Partner(controller.Controller):
_name = 'res.partner'
@@ -226,8 +229,228 @@ class Partner(controller.Controller):
'amount_due': result_tempo,
'remaining_limit': remaining_limit
}
-
+
return self.response(data)
+ @http.route(prefix + 'partner/pengajuan_tempo', auth='public', methods=['POST'], csrf=False)
+ @controller.Controller.must_authorized()
+ def write_pengajuan_tempo(self, **kw):
+ user_id = int(kw.get('user_id'))
+ user = request.env['res.users'].search([('id', '=', user_id)], limit=1)
+ company_name = kw.get('name')
+ partner_id = request.env['res.partner'].search([('name', 'like', company_name)], limit=1)
+
+ params = self.get_request_params(kw, {
+
+ # informasi perusahaan
+ # 'name': ['required', 'alias:name_tempo'],
+ 'industry_id': ['required', 'alias:industry_id_tempo'],
+ 'street': ['required', 'alias:street_tempo'],
+ 'state': ['required', 'alias:state_id_tempo'],
+ 'city': ['required', 'alias:city_id_tempo'],
+ 'zip': ['required', 'alias:zip_tempo'],
+ 'mobile': ['required', 'alias:mobile_tempo'],
+ 'bankName': ['required', 'alias:bank_name_tempo'],
+ 'accountName': ['required', 'alias:account_name_tempo'],
+ 'accountNumber': ['required', 'alias:account_number_tempo'],
+ 'website': ['alias:website_tempo'],
+ 'estimasi': ['required', 'alias:estimasi_tempo'],
+ 'tempoDuration': ['required', 'alias:tempo_duration'],
+ 'tempoLimit': ['required', 'alias:tempo_limit'],
+
+ # informasi perusahaan
+ 'direkturName': ['required', 'alias:direktur_name'],
+ 'direkturMobile': ['required', 'alias:direktur_mobile'],
+ 'direkturEmail': ['required', 'alias:direktur_email'],
+ 'purchasingName': ['required', 'alias:purchasing_name'],
+ 'purchasingMobile': ['required', 'alias:purchasing_mobile'],
+ 'purchasingEmail': ['required', 'alias:purchasing_email'],
+ 'financeName': ['required', 'alias:finance_name'],
+ 'financeMobile': ['required', 'alias:finance_mobile'],
+ 'financeEmail': ['required', 'alias:finance_email'],
+
+ # Pengiriman
+ 'PICName': ['required', 'alias:pic_name'],
+ 'streetPengiriman': ['required', 'alias:street_pengiriman'],
+ 'statePengiriman': ['required', 'alias:state_id_pengiriman'],
+ 'cityPengiriman': ['required', 'alias:city_id_pengiriman'],
+ 'zipPengiriman': ['required', 'alias:zip_pengiriman'],
+ 'invoicePic': ['required', 'alias:invoice_pic'],
+ 'streetInvoice': ['required', 'alias:street_invoice'],
+ 'stateInvoice': ['required', 'alias:state_id_invoice'],
+ 'cityInvoice': ['required', 'alias:city_id_invoice'],
+ })
+ if not params['valid']:
+ return self.response(code=400, description=params)
+ pengajuan_tempo = request.env['user.pengajuan.tempo'].create([params['value']])
+
+ if partner_id:
+ pengajuan_tempo.name_tempo = partner_id
+
+ form_supplier_data = kw.get('formSupplier')
+
+ if form_supplier_data:
+ try:
+ form_supplier_data = json.loads(form_supplier_data)
+
+ for item in form_supplier_data:
+ supplier_name = item.get("supplier")
+ pic_name = item.get("pic")
+ phone = item.get("telepon")
+ tempo_duration = item.get("durasiTempo")
+ credit_limit = item.get("creditLimit")
+
+ new_data = {
+ 'name_supplier': supplier_name,
+ 'pengajuan_tempo_id': pengajuan_tempo.id,
+ 'pengajuan_tempo_partner': False,
+ 'pic_name': pic_name,
+ 'phone': phone,
+ 'tempo_duration': tempo_duration,
+ 'credit_limit': credit_limit,
+ }
+ new_supplier_data = request.env['user.pengajuan.tempo.line'].create(new_data)
+
+ except json.JSONDecodeError:
+ return http.Response(status=400, json_body={'error': 'Invalid JSON format for formSupplier'})
+ category_produk_ids = kw.get('categoryProduk')
+ category_ids = list(map(int, category_produk_ids.split(',')))
+
+ pengajuan_tempo.category_produk_ids = [(6, 0, category_ids)]
+ every_weekday = True if kw.get('everyWeekday') == "true" else False
+ every_weekday_input = kw.get('everyWeekdayInput')
+ every_week = True if kw.get('everyWeek') == 'true' else False
+ every_week_input = kw.get('everyWeekInput')
+ tukar_invoice = True if kw.get('tukarInvoice') == 'true' else False
+ tukar_invoice_input = kw.get('tukarInvoiceInput')
+ jadwal_tukar_invoice = ""
+ if every_weekday:
+ jadwal_tukar_invoice += f"setiap hari {every_weekday_input}"
+ if every_week:
+ jadwal_tukar_invoice += f", setiap {every_week_input}"
+ if tukar_invoice or tukar_invoice_input:
+ jadwal_tukar_invoice += f", {tukar_invoice_input}"
+
+ pengajuan_tempo.tukar_invoice = jadwal_tukar_invoice
+
+ every_weekday_pembayaran = True if kw.get('everyWeekdayPembayaran') == 'true' else False
+ every_weekday_input_pembayaran = kw.get('everyWeekdayInputPembayaran')
+ every_week_pembayaran = True if kw.get('everyWeekPembayaran') == 'true' else False
+ every_week_input_pembayaran = kw.get('everyWeekInputPembayaran')
+ tukar_invoice_pembayaran = True if kw.get('tukarInvoicePembayaran') == 'true' else False
+ tukar_invoice_input_pembayaran = kw.get('tukarInvoiceInputPembayaran')
+ jadwal_tukar_invoice_pembayaran = ""
+ if every_weekday_pembayaran:
+ jadwal_tukar_invoice_pembayaran += f"setiap hari {every_weekday_input_pembayaran}"
+ if every_week_pembayaran:
+ jadwal_tukar_invoice_pembayaran += f", setiap {every_week_input_pembayaran}"
+ if tukar_invoice_pembayaran or tukar_invoice_input_pembayaran:
+ jadwal_tukar_invoice_pembayaran += f", {tukar_invoice_input_pembayaran}"
+
+ pengajuan_tempo.jadwal_bayar = jadwal_tukar_invoice_pembayaran
+
+ dokumen_kirim = [
+ 'Surat Tanda Terima Barang (STTB)',
+ 'Good Receipt (GR)',
+ 'Surat Terima Barang (STB)',
+ 'Lembar Penerimaan Barang (LPB)'
+ ]
+
+ dokumen_kirim_barang_ids = kw.get('dokumenPengiriman')
+ dokumen_kirim_barang_input = kw.get('dokumenPengirimanInput', '')
+ dokumen_kirim_barang = []
+
+ if dokumen_kirim_barang_ids:
+ dokumen_kirim_ids = list(map(int, dokumen_kirim_barang_ids.split(',')))
+ dokumen_kirim_barang = [dokumen_kirim[i] for i in dokumen_kirim_ids if 0 <= i < len(dokumen_kirim)]
+
+ if dokumen_kirim_barang_input:
+ input_items = [item.strip() for item in dokumen_kirim_barang_input.split(',')]
+ dokumen_kirim_barang.extend(item for item in input_items if item and item not in dokumen_kirim_barang)
+
+ pengajuan_tempo.dokumen_pengiriman = ', '.join(dokumen_kirim_barang)
+
+ dokumen = [
+ 'Invoice Pembelian',
+ 'Surat Jalan',
+ 'Berita Acara Serah Terima (BAST)',
+ 'Faktur Pajak',
+ 'Good Receipt (GR)'
+ ]
+
+ dokumen_invoice_ids = kw.get('dokumenPengirimanInvoice')
+ dokumen_invoice_input = kw.get('dokumenPengirimanInvoiceInput', '')
+ dokumen_invoice = ""
+
+ if dokumen_kirim_barang_ids:
+ dokumen_ids = list(map(int, dokumen_invoice_ids.split(',')))
+ dokumen_invoice = [dokumen[i] for i in dokumen_ids if 0 <= i < len(dokumen)]
+ if dokumen_invoice_input:
+ input_items = [item.strip() for item in dokumen_invoice_input.split(',')]
+ dokumen_invoice.extend(item for item in input_items if item and item not in dokumen_invoice)
+
+ pengajuan_tempo.dokumen_invoice = ', '.join(dokumen_invoice)
+
+ form_dokumen_data = kw.get('formDocs')
+ if form_dokumen_data:
+ try:
+ form_dokumen = json.loads(form_dokumen_data)
+
+ for dokumen in form_dokumen:
+ if dokumen['details']['base64'] != '':
+ mimetype, _ = mimetypes.guess_type(dokumen['details']['name'])
+ mimetype = mimetype or 'application/octet-stream'
+ data = base64.b64decode(dokumen['details']['base64'])
+ sppkp_attachment = request.env['ir.attachment'].create({
+ 'name': dokumen['details']['name'],
+ 'type': 'binary',
+ 'datas': base64.b64encode(data),
+ 'res_model': 'user.pengajuan.tempo',
+ 'res_id': pengajuan_tempo.id,
+ 'mimetype': mimetype
+ })
+
+ if dokumen['documentName'] == 'dokumenNib' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_nib = [(4, sppkp_attachment.id)]
+
+ elif dokumen['documentName'] == 'dokumenNpwp' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_npwp = [(4, sppkp_attachment.id)]
+
+ elif dokumen['documentName'] == 'dokumenSppkp' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_sppkp = [(4, sppkp_attachment.id)]
+
+ elif dokumen['documentName'] == 'dokumenAktaPerubahan' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_akta_perubahan = [(4, sppkp_attachment.id)]
+
+ elif dokumen['documentName'] == 'dokumenKtpDirut' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_ktp_dirut = [(4, sppkp_attachment.id)]
+
+ elif dokumen['documentName'] == 'dokumenAktaPendirian' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_akta_pendirian = [(4, sppkp_attachment.id)]
+
+ elif dokumen['documentName'] == 'dokumenLaporanKeuangan' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_laporan_keuangan = [(4, sppkp_attachment.id)]
+
+ elif dokumen['documentName'] == 'dokumenFotoKantor' and dokumen['details']['base64'] != '':
+ pengajuan_tempo.dokumen_foto_kantor = [(4, sppkp_attachment.id)]
+
+ else:
+ pengajuan_tempo.dokumen_tempat_bekerja = [(4, sppkp_attachment.id)]
+
+ formatted_text = ''.join([' ' + char if char.isupper() and i != 0 else char for i, char in enumerate(dokumen['documentName'])])
+ teks = formatted_text.strip().title()
+ pengajuan_tempo.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'})
+
+ tempo_request = request.env['user.pengajuan.tempo.request'].create({
+ 'user_id': user.partner_id.id,
+ 'pengajuan_tempo_id': pengajuan_tempo.id,
+ 'user_input': partner_id.name
+ })
+ return self.response({
+ 'id': user_id,
+ })