From d8c12d085edbd81d974555780b16421c7b155f7f Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 31 Oct 2024 13:49:23 +0700 Subject: update pengajuan tempo final --- indoteknik_api/controllers/api_v1/partner.py | 225 ++++++++++++++++++++++++++- 1 file changed, 224 insertions(+), 1 deletion(-) (limited to 'indoteknik_api') 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, + }) -- cgit v1.2.3 From 414ced359c181c612b302376cb740c7f5c02075f Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 31 Oct 2024 16:06:40 +0700 Subject: update pengajuan tempo fix suplier ids --- indoteknik_api/controllers/api_v1/partner.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 1d7c682d..2ddd4437 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -301,6 +301,7 @@ class Partner(controller.Controller): try: form_supplier_data = json.loads(form_supplier_data) + supplier_ids_to_add = [] for item in form_supplier_data: supplier_name = item.get("supplier") pic_name = item.get("pic") @@ -310,8 +311,6 @@ class Partner(controller.Controller): 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, @@ -319,6 +318,10 @@ class Partner(controller.Controller): } new_supplier_data = request.env['user.pengajuan.tempo.line'].create(new_data) + supplier_ids_to_add.append(new_supplier_data.id) + + pengajuan_tempo.write({'supplier_ids': [(4, supplier_id, 0) for supplier_id in supplier_ids_to_add]}) + except json.JSONDecodeError: return http.Response(status=400, json_body={'error': 'Invalid JSON format for formSupplier'}) category_produk_ids = kw.get('categoryProduk') -- cgit v1.2.3 From be2bc04768f9f423c66a612f4f183d20e70a3145 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 1 Nov 2024 13:50:41 +0700 Subject: update pengajuan tempo api --- indoteknik_api/controllers/api_v1/partner.py | 103 +++++++++++++++------------ 1 file changed, 59 insertions(+), 44 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 2ddd4437..921afac9 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -242,60 +242,72 @@ class Partner(controller.Controller): @controller.Controller.must_authorized() def write_pengajuan_tempo(self, **kw): user_id = int(kw.get('user_id')) + id = int(kw.get('id')) + tempo_request = kw.get('tempo_request',False) + pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('id', '=', id)], limit=1) user = request.env['res.users'].search([('id', '=', user_id)], limit=1) - company_name = kw.get('name') + company_name = kw.get('name', pengajuan_tempo.name_tempo.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'], + 'industry_id': ['alias:industry_id_tempo'], + 'street': ['alias:street_tempo'], + 'state': ['alias:state_id_tempo'], + 'city': ['alias:city_id_tempo'], + 'zip': ['alias:zip_tempo'], + 'mobile': ['alias:mobile_tempo'], + 'bankName': ['alias:bank_name_tempo'], + 'accountName': ['alias:account_name_tempo'], + 'accountNumber': ['alias:account_number_tempo'], 'website': ['alias:website_tempo'], - 'estimasi': ['required', 'alias:estimasi_tempo'], - 'tempoDuration': ['required', 'alias:tempo_duration'], - 'tempoLimit': ['required', 'alias:tempo_limit'], + 'estimasi': ['alias:estimasi_tempo'], + 'tempoDuration': ['alias:tempo_duration'], + 'tempoLimit': ['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'], + 'direkturName': ['alias:direktur_name'], + 'direkturMobile': ['alias:direktur_mobile'], + 'direkturEmail': ['alias:direktur_email'], + 'purchasingName': ['alias:purchasing_name'], + 'purchasingMobile': ['alias:purchasing_mobile'], + 'purchasingEmail': ['alias:purchasing_email'], + 'financeName': ['alias:finance_name'], + 'financeMobile': ['alias:finance_mobile'], + 'financeEmail': ['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'], + 'PICName': ['alias:pic_name'], + 'streetPengiriman': ['alias:street_pengiriman'], + 'statePengiriman': ['alias:state_id_pengiriman'], + 'cityPengiriman': ['alias:city_id_pengiriman'], + 'zipPengiriman': ['alias:zip_pengiriman'], + 'invoicePic': ['alias:invoice_pic'], + 'streetInvoice': ['alias:street_invoice'], + 'stateInvoice': ['alias:state_id_invoice'], + 'cityInvoice': ['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']]) + # Filter data baru yang dikirim (non-kosong) + new_data = {key: value for key, value in params['value'].items() if value} + + if pengajuan_tempo: + # Jika pengajuan_tempo sudah ada, hanya write data baru yang non-kosong + pengajuan_tempo.write(new_data) + else: + # Jika belum ada, buat record baru + pengajuan_tempo = request.env['user.pengajuan.tempo'].create(new_data) + pengajuan_tempo.partner_id = user_id if partner_id: pengajuan_tempo.name_tempo = partner_id - form_supplier_data = kw.get('formSupplier') + form_supplier_data = kw.get('formSupplier', False) if form_supplier_data: try: @@ -324,10 +336,12 @@ class Partner(controller.Controller): 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(','))) + category_produk_ids = kw.get('categoryProduk', False) + category_ids = '' + if category_produk_ids: + category_ids = list(map(int, category_produk_ids.split(','))) + pengajuan_tempo.category_produk_ids = [(6, 0, category_ids)] - 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 @@ -402,7 +416,7 @@ class Partner(controller.Controller): pengajuan_tempo.dokumen_invoice = ', '.join(dokumen_invoice) - form_dokumen_data = kw.get('formDocs') + form_dokumen_data = kw.get('formDocs', False) if form_dokumen_data: try: form_dokumen = json.loads(form_dokumen_data) @@ -454,12 +468,13 @@ class Partner(controller.Controller): 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 - }) + if tempo_request: + 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, + 'id': pengajuan_tempo.id, + 'user_id': user_id, }) -- cgit v1.2.3 From 28227477f85b590b642f2d516d094f1f1c59f37f Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 14 Nov 2024 10:01:38 +0700 Subject: add data --- indoteknik_api/controllers/api_v1/partner.py | 1 + 1 file changed, 1 insertion(+) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 921afac9..e5f8d71c 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -232,6 +232,7 @@ class Partner(controller.Controller): data = { 'name': partner.name, + 'payment_term': partner.property_payment_term_id.name, 'amount_due': result_tempo, 'remaining_limit': remaining_limit } -- cgit v1.2.3 From dbbca494e13edce7ec6947b7bca6559b93c289f4 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 15 Nov 2024 14:20:46 +0700 Subject: pengajuan tempo api change --- indoteknik_api/models/account_move.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/models/account_move.py b/indoteknik_api/models/account_move.py index 23a7076c..0855da2f 100644 --- a/indoteknik_api/models/account_move.py +++ b/indoteknik_api/models/account_move.py @@ -21,6 +21,8 @@ class AccountMove(models.Model): 'amount_residual': amount_residual, 'invoice_date': account_move.invoice_date.strftime('%d/%m/%Y') or '', 'efaktur': True if account_move.efaktur_document else False, + 'invoice_date_due': account_move.invoice_date_due.strftime('%d/%m/%Y') or '-', + 'sales_order': account_move.invoice_origin, } if isinstance(object, datetime.date): data['invoice_date'] = account_move.invoice_date.strftime('%d/%m/%Y') @@ -35,7 +37,6 @@ class AccountMove(models.Model): 'sales': account_move.invoice_user_id.name, 'amount_total': account_move.amount_total, 'amount_residual': amount_residual, - 'invoice_date_due': account_move.invoice_date_due.strftime('%d/%m/%Y') or '', 'customer': res_users.api_address_response(account_move.partner_id), 'products': [], } -- cgit v1.2.3 From 755e36e6fed87f787c2a0d31f4318a6eae97e55c Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 18 Nov 2024 13:42:09 +0700 Subject: add pengajuan tempo sales order id --- indoteknik_api/models/account_move.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indoteknik_api') diff --git a/indoteknik_api/models/account_move.py b/indoteknik_api/models/account_move.py index 0855da2f..645c157a 100644 --- a/indoteknik_api/models/account_move.py +++ b/indoteknik_api/models/account_move.py @@ -7,6 +7,7 @@ class AccountMove(models.Model): def api_v1_single_response(self, account_move, context=False): sale_order = self.env['sale.order'].search([('name', '=', account_move.invoice_origin), ('state', '=', 'done')], limit=1) + sale_order_v2 = self.env['sale.order'].search([('name', '=', account_move.invoice_origin)],limit=1) amount_residual = account_move.amount_residual if sale_order.payment_status == 'settlement' or sale_order.payment_status == 'capture': amount_residual = 0 @@ -23,6 +24,7 @@ class AccountMove(models.Model): 'efaktur': True if account_move.efaktur_document else False, 'invoice_date_due': account_move.invoice_date_due.strftime('%d/%m/%Y') or '-', 'sales_order': account_move.invoice_origin, + 'sales_order_id': sale_order_v2.id, } if isinstance(object, datetime.date): data['invoice_date'] = account_move.invoice_date.strftime('%d/%m/%Y') -- cgit v1.2.3 From 5667449f58ecdf5803a28944e503ae1611cc8416 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Sat, 23 Nov 2024 11:56:24 +0700 Subject: update tempo --- indoteknik_api/controllers/api_v1/partner.py | 33 ++++++++++++-- indoteknik_api/models/__init__.py | 1 + indoteknik_api/models/res_partner.py | 68 ++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 indoteknik_api/models/res_partner.py (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index e5f8d71c..9325d9aa 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -211,6 +211,32 @@ class Partner(controller.Controller): }) return self.response(data) + + @http.route(prefix + 'partner/payment_term', auth='public', methods=['GET', 'OPTIONS']) + @controller.Controller.must_authorized() + def get_partner_payment_term(self): + partner_industry = request.env['account.payment.term'].search([]) + data = [] + for industry in partner_industry: + if 'tempo' in industry.name.lower(): + data.append({ + 'id': industry.id, + 'name': industry.name + }) + + return self.response(data) + + @http.route(prefix + 'partner/detail-tempo/', auth='public', methods=['GET', 'OPTIONS']) + @controller.Controller.must_authorized() + def get_partner_detail_tempo(self, **kw): + params = self.get_request_params(kw, { + 'id': ['required', 'number'] + }) + pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', params['value']['id'])], limit=1) + if not pengajuan_tempo: + return self.response(code=404, description='pengajuan tempo not found') + pengajuan_tempo = request.env['res.partner'].api_single_response(pengajuan_tempo) + return self.response(pengajuan_tempo) @http.route(prefix + 'check//tempo', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() @@ -244,8 +270,9 @@ class Partner(controller.Controller): def write_pengajuan_tempo(self, **kw): user_id = int(kw.get('user_id')) id = int(kw.get('id')) + section = kw.get('section') tempo_request = kw.get('tempo_request',False) - pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('id', '=', id)], limit=1) + pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', user_id)], limit=1) user = request.env['res.users'].search([('id', '=', user_id)], limit=1) company_name = kw.get('name', pengajuan_tempo.name_tempo.name) partner_id = request.env['res.partner'].search([('name', 'like', company_name)], limit=1) @@ -254,7 +281,7 @@ class Partner(controller.Controller): # informasi perusahaan # 'name': ['required', 'alias:name_tempo'], - 'industry_id': ['alias:industry_id_tempo'], + 'industryId': ['alias:industry_id_tempo'], 'street': ['alias:street_tempo'], 'state': ['alias:state_id_tempo'], 'city': ['alias:city_id_tempo'], @@ -469,7 +496,7 @@ class Partner(controller.Controller): except json.JSONDecodeError: return http.Response(status=400, json_body={'error': 'Invalid JSON format for formDokumen'}) - if tempo_request: + if 'konfirmasi' in section.lower(): tempo_request = request.env['user.pengajuan.tempo.request'].create({ 'user_id': user.partner_id.id, 'pengajuan_tempo_id': pengajuan_tempo.id, diff --git a/indoteknik_api/models/__init__.py b/indoteknik_api/models/__init__.py index 892d2657..8c85938c 100644 --- a/indoteknik_api/models/__init__.py +++ b/indoteknik_api/models/__init__.py @@ -9,3 +9,4 @@ from . import sale_order from . import x_manufactures from . import website_content from . import coupon_program +from . import res_partner diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py new file mode 100644 index 00000000..8ea8d301 --- /dev/null +++ b/indoteknik_api/models/res_partner.py @@ -0,0 +1,68 @@ +from odoo import models + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + def api_single_response(self, res_partner, with_detail=''): + config = self.env['ir.config_parameter'] + + partner = res_partner.partner_id + data = { + 'name' : res_partner.name_tempo.name, + 'industry_id' : res_partner.industry_id_tempo.id, + 'street' : res_partner.street_tempo, + 'state' : res_partner.state_id_tempo.id, + 'city' : res_partner.city_id_tempo.id, + 'zip' : res_partner.zip_tempo, + 'mobile' : res_partner.mobile_tempo, + 'bank_name' : res_partner.bank_name_tempo, + 'account_name' : res_partner.account_name_tempo, + 'account_number' : res_partner.account_number_tempo, + 'website' : res_partner.website_tempo if res_partner.website_tempo else '', + 'estimasi' : res_partner.estimasi_tempo, + 'tempo_duration' : res_partner.tempo_duration.id, + 'tempo_limit' : res_partner.tempo_limit, + 'category_produk': ','.join([str(cat.id) for cat in res_partner.category_produk_ids]) if res_partner.category_produk_ids else '', + + # Kontak Perusahaan + 'direktur_name' : res_partner.direktur_name if res_partner.direktur_name else '', + 'direktur_mobile' : res_partner.direktur_mobile if res_partner.direktur_mobile else '', + 'direktur_email' : res_partner.direktur_email if res_partner.direktur_email else '', + 'purchasing_name' : res_partner.purchasing_name if res_partner.purchasing_name else '', + 'purchasing_mobile' : res_partner.purchasing_mobile if res_partner.purchasing_mobile else '', + 'purchasing_email' : res_partner.purchasing_email if res_partner.purchasing_email else '', + 'finance_name' : res_partner.finance_name if res_partner.finance_name else '', + 'finance_mobile' : res_partner.finance_mobile if res_partner.finance_mobile else '', + 'finance_email' : res_partner.finance_email if res_partner.finance_email else '', + + # Pengiriman + 'PIC_name' : res_partner.pic_name if res_partner.pic_name else '', + 'street_pengiriman' : res_partner.street_pengiriman if res_partner.street_pengiriman else '', + 'state_id_pengiriman' : res_partner.state_id_pengiriman.id if res_partner.state_id_pengiriman else '', + 'city_id_pengiriman' : res_partner.city_id_pengiriman.id if res_partner.city_id_pengiriman else '', + 'zip_pengiriman' : res_partner.zip_pengiriman if res_partner.zip_pengiriman else '', + 'invoice_pic' : res_partner.invoice_pic if res_partner.invoice_pic else '', + 'street_invoice' : res_partner.street_invoice if res_partner.street_invoice else '', + 'state_id_invoice' : res_partner.state_id_invoice.id if res_partner.state_id_invoice else '', + 'city_id_invoice' : res_partner.city_id_invoice.id if res_partner.city_id_invoice else '', + 'tukar_invoice' : res_partner.tukar_invoice if res_partner.tukar_invoice else '', + 'jadwal_bayar' : res_partner.jadwal_bayar if res_partner.jadwal_bayar else '', + 'dokumen_pengiriman' : res_partner.dokumen_pengiriman if res_partner.dokumen_pengiriman else '', + 'dokumen_invoice' : res_partner.dokumen_invoice if res_partner.dokumen_invoice else '', + + 'supplier_ids': res_partner.supplier_ids if res_partner.supplier_ids else '', + + # Dokumen + 'dokumen_nib': res_partner.dokumen_nib if res_partner.dokumen_nib else '', + 'dokumen_npwp': res_partner.dokumen_npwp if res_partner.dokumen_npwp else '', + 'dokumen_sppkp': res_partner.dokumen_sppkp if res_partner.dokumen_sppkp else '', + 'dokumen_akta_perubahan': res_partner.dokumen_akta_perubahan if res_partner.dokumen_akta_perubahan else '', + 'dokumen_ktp_dirut': res_partner.dokumen_ktp_dirut if res_partner.dokumen_ktp_dirut else '', + 'dokumen_akta_pendirian': res_partner.dokumen_akta_pendirian if res_partner.dokumen_akta_pendirian else '', + 'dokumen_laporan_keuangan': res_partner.dokumen_laporan_keuangan if res_partner.dokumen_laporan_keuangan else '', + 'dokumen_foto_kantor': res_partner.dokumen_foto_kantor if res_partner.dokumen_foto_kantor else '', + 'dokumen_tempat_bekerja': res_partner.dokumen_tempat_bekerja if res_partner.dokumen_tempat_bekerja else '', + } + + return data \ No newline at end of file -- cgit v1.2.3 From c78bd0f71238b85752b9f97e8e687a197f544b53 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 25 Nov 2024 10:04:44 +0700 Subject: update pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 18 +++++++++--------- indoteknik_api/models/res_partner.py | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 9325d9aa..5534eb9b 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -383,8 +383,8 @@ class Partner(controller.Controller): 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 + if jadwal_tukar_invoice: + 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') @@ -399,8 +399,8 @@ class Partner(controller.Controller): 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 + if jadwal_tukar_invoice_pembayaran: + pengajuan_tempo.jadwal_bayar = jadwal_tukar_invoice_pembayaran dokumen_kirim = [ 'Surat Tanda Terima Barang (STTB)', @@ -420,8 +420,8 @@ class Partner(controller.Controller): 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) + if dokumen_kirim_barang: + pengajuan_tempo.dokumen_pengiriman = ', '.join(dokumen_kirim_barang) dokumen = [ 'Invoice Pembelian', @@ -435,14 +435,14 @@ class Partner(controller.Controller): dokumen_invoice_input = kw.get('dokumenPengirimanInvoiceInput', '') dokumen_invoice = "" - if dokumen_kirim_barang_ids: + if dokumen_invoice_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) + if dokumen_invoice: + pengajuan_tempo.dokumen_invoice = ', '.join(dokumen_invoice) form_dokumen_data = kw.get('formDocs', False) if form_dokumen_data: diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index 8ea8d301..32d66d69 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -49,7 +49,7 @@ class ResPartner(models.Model): 'tukar_invoice' : res_partner.tukar_invoice if res_partner.tukar_invoice else '', 'jadwal_bayar' : res_partner.jadwal_bayar if res_partner.jadwal_bayar else '', 'dokumen_pengiriman' : res_partner.dokumen_pengiriman if res_partner.dokumen_pengiriman else '', - 'dokumen_invoice' : res_partner.dokumen_invoice if res_partner.dokumen_invoice else '', + 'dokumen_pengiriman_invoice' : res_partner.dokumen_invoice if res_partner.dokumen_invoice else '', 'supplier_ids': res_partner.supplier_ids if res_partner.supplier_ids else '', -- cgit v1.2.3 From ad01e57b8f321f1c9f2830a98fa91d25e2c848d7 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 25 Nov 2024 17:04:20 +0700 Subject: update api pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 3 +- indoteknik_api/models/res_partner.py | 65 ++++++++++++++++++++++------ 2 files changed, 53 insertions(+), 15 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 5534eb9b..dccda601 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -270,7 +270,6 @@ class Partner(controller.Controller): def write_pengajuan_tempo(self, **kw): user_id = int(kw.get('user_id')) id = int(kw.get('id')) - section = kw.get('section') tempo_request = kw.get('tempo_request',False) pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', user_id)], limit=1) user = request.env['res.users'].search([('id', '=', user_id)], limit=1) @@ -496,7 +495,7 @@ class Partner(controller.Controller): except json.JSONDecodeError: return http.Response(status=400, json_body={'error': 'Invalid JSON format for formDokumen'}) - if 'konfirmasi' in section.lower(): + if tempo_request: tempo_request = request.env['user.pengajuan.tempo.request'].create({ 'user_id': user.partner_id.id, 'pengajuan_tempo_id': pengajuan_tempo.id, diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index 32d66d69..4099a094 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -1,5 +1,5 @@ from odoo import models - +import json class ResPartner(models.Model): _inherit = 'res.partner' @@ -8,6 +8,35 @@ class ResPartner(models.Model): config = self.env['ir.config_parameter'] partner = res_partner.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 res_partner.dokumen_pengiriman : + res_partner_dokumen_pengiriman = res_partner.dokumen_pengiriman + mapping_dokumen = {item[0]: item[1] for item in dokumen_kirim} + dokumen_pengiriman_list = [dokumen.strip() for dokumen in res_partner_dokumen_pengiriman.split(',')] + dokumen_pengiriman = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_pengiriman_list] + + dokumen = [ + ['Invoice Pembelian','0'], + ['Surat Jalan','1'], + ['Berita Acara Serah Terima (BAST)','2'], + ['Faktur Pajak','3'], + ['Good Receipt (GR)','4'] + ] + dokumen_invoice = [] + if res_partner.dokumen_invoice: + res_partner_dokumen_invoice = res_partner.dokumen_invoice + mapping_dokumen = {item[0]: item[1] for item in dokumen} + dokumen_invoice_list = [dokumen.strip() for dokumen in res_partner_dokumen_invoice.split(',')] + dokumen_invoice = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_invoice_list] + + data = { 'name' : res_partner.name_tempo.name, 'industry_id' : res_partner.industry_id_tempo.id, @@ -48,21 +77,31 @@ class ResPartner(models.Model): 'city_id_invoice' : res_partner.city_id_invoice.id if res_partner.city_id_invoice else '', 'tukar_invoice' : res_partner.tukar_invoice if res_partner.tukar_invoice else '', 'jadwal_bayar' : res_partner.jadwal_bayar if res_partner.jadwal_bayar else '', - 'dokumen_pengiriman' : res_partner.dokumen_pengiriman if res_partner.dokumen_pengiriman else '', - 'dokumen_pengiriman_invoice' : res_partner.dokumen_invoice if res_partner.dokumen_invoice else '', + 'dokumen_pengiriman' : ','.join(dokumen_pengiriman) if dokumen_pengiriman else '', + 'dokumen_pengiriman_invoice' : ','.join(dokumen_invoice) if dokumen_invoice else '', - 'supplier_ids': res_partner.supplier_ids if res_partner.supplier_ids else '', + '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 res_partner.supplier_ids + ] if res_partner.supplier_ids else '' # Dokumen - 'dokumen_nib': res_partner.dokumen_nib if res_partner.dokumen_nib else '', - 'dokumen_npwp': res_partner.dokumen_npwp if res_partner.dokumen_npwp else '', - 'dokumen_sppkp': res_partner.dokumen_sppkp if res_partner.dokumen_sppkp else '', - 'dokumen_akta_perubahan': res_partner.dokumen_akta_perubahan if res_partner.dokumen_akta_perubahan else '', - 'dokumen_ktp_dirut': res_partner.dokumen_ktp_dirut if res_partner.dokumen_ktp_dirut else '', - 'dokumen_akta_pendirian': res_partner.dokumen_akta_pendirian if res_partner.dokumen_akta_pendirian else '', - 'dokumen_laporan_keuangan': res_partner.dokumen_laporan_keuangan if res_partner.dokumen_laporan_keuangan else '', - 'dokumen_foto_kantor': res_partner.dokumen_foto_kantor if res_partner.dokumen_foto_kantor else '', - 'dokumen_tempat_bekerja': res_partner.dokumen_tempat_bekerja if res_partner.dokumen_tempat_bekerja else '', + # 'dokumen_nib': res_partner.dokumen_nib if res_partner.dokumen_nib else '', + # 'dokumen_npwp': res_partner.dokumen_npwp if res_partner.dokumen_npwp else '', + # 'dokumen_sppkp': res_partner.dokumen_sppkp if res_partner.dokumen_sppkp else '', + # 'dokumen_akta_perubahan': res_partner.dokumen_akta_perubahan if res_partner.dokumen_akta_perubahan else '', + # 'dokumen_ktp_dirut': res_partner.dokumen_ktp_dirut if res_partner.dokumen_ktp_dirut else '', + # 'dokumen_akta_pendirian': res_partner.dokumen_akta_pendirian if res_partner.dokumen_akta_pendirian else '', + # 'dokumen_laporan_keuangan': res_partner.dokumen_laporan_keuangan if res_partner.dokumen_laporan_keuangan else '', + # 'dokumen_foto_kantor': res_partner.dokumen_foto_kantor if res_partner.dokumen_foto_kantor else '', + # 'dokumen_tempat_bekerja': res_partner.dokumen_tempat_bekerja if res_partner.dokumen_tempat_bekerja else '', } return data \ No newline at end of file -- cgit v1.2.3 From c5d2edf1a1e905d270e5cd1e5b6ed0cb5fa0bba1 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Tue, 26 Nov 2024 08:59:14 +0700 Subject: uptade pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 2 ++ indoteknik_api/models/res_partner.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index dccda601..2ff17ffe 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -315,6 +315,8 @@ class Partner(controller.Controller): 'streetInvoice': ['alias:street_invoice'], 'stateInvoice': ['alias:state_id_invoice'], 'cityInvoice': ['alias:city_id_invoice'], + 'isSameAddrees':['alias:is_same_address'], + 'isSameAddreesStreet': ['alias:is_same_address_street'], }) if not params['valid']: diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index 4099a094..9b9f87d4 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -79,7 +79,8 @@ class ResPartner(models.Model): 'jadwal_bayar' : res_partner.jadwal_bayar if res_partner.jadwal_bayar else '', 'dokumen_pengiriman' : ','.join(dokumen_pengiriman) if dokumen_pengiriman else '', 'dokumen_pengiriman_invoice' : ','.join(dokumen_invoice) if dokumen_invoice else '', - + 'is_same_address': res_partner.is_same_address if res_partner.is_same_address else False, + 'res_partner.is_same_address': res_partner.is_same_address_street if res_partner.is_same_address_street else False, 'supplier_ids': [ { 'id': supplier.id, -- cgit v1.2.3 From 07c14fedc459106189d040e7724e6d7f81051658 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 29 Nov 2024 13:00:05 +0700 Subject: update pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 1 - 1 file changed, 1 deletion(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 2ff17ffe..088f6f5b 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -501,7 +501,6 @@ class Partner(controller.Controller): 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': pengajuan_tempo.id, -- cgit v1.2.3 From 6fbfe31167e6eb66d4995374dadb14774026e8c7 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 2 Dec 2024 09:31:13 +0700 Subject: pengajuan tempo update --- indoteknik_api/controllers/api_v1/partner.py | 34 ++++++++++++++++++++++++---- indoteknik_api/controllers/api_v1/user.py | 16 ++++++++++++- indoteknik_api/models/res_users.py | 15 ++++++++---- 3 files changed, 55 insertions(+), 10 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 088f6f5b..19c73aec 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -265,16 +265,29 @@ class Partner(controller.Controller): return self.response(data) + @http.route(prefix + 'check//tempo_progress', auth='public', methods=['GET', 'OPTIONS']) + @controller.Controller.must_authorized() + def get_check_tempo_partner_progres(self, **kw): + partner_id = int(kw.get('partner_id')) + partner = request.env['res.partner'].search([('id', '=', partner_id)], limit=1) + pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', partner.id)], limit=1) + if not pengajuan_tempo: + return self.response(code=404, description='Partner not found') + + data = True if pengajuan_tempo.id else False + 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): + id = int(kw.get('partner_id')) user_id = int(kw.get('user_id')) - id = int(kw.get('id')) - tempo_request = kw.get('tempo_request',False) + tempo_request = True if kw.get('tempo_request') == 'true' else False pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', user_id)], limit=1) - user = request.env['res.users'].search([('id', '=', user_id)], limit=1) + user = request.env['res.partner'].search([('id', '=', id)], limit=1) company_name = kw.get('name', pengajuan_tempo.name_tempo.name) partner_id = request.env['res.partner'].search([('name', 'like', company_name)], limit=1) + user_account = self.get_user_by_email(user.user_id.email) params = self.get_request_params(kw, { @@ -499,10 +512,23 @@ class Partner(controller.Controller): return http.Response(status=400, json_body={'error': 'Invalid JSON format for formDokumen'}) if tempo_request: tempo_request = request.env['user.pengajuan.tempo.request'].create({ - 'user_id': user.partner_id.id, + 'user_id': user.id, 'pengajuan_tempo_id': pengajuan_tempo.id, + 'user_company_id': partner_id.id, + 'tempo_duration': pengajuan_tempo.tempo_duration.id, + 'tempo_limit': pengajuan_tempo.tempo_limit, }) + pengajuan_tempo.user_id = user_account.id + template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_user_cart_reminder_to_checkout') + template.send_mail(pengajuan_tempo.id, force_send=True) + # user_account.send_activation_mail() return self.response({ 'id': pengajuan_tempo.id, 'user_id': user_id, }) + + 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 diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 3be874fa..f83937ea 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -179,7 +179,7 @@ class User(controller.Controller): if result: match_company_name = result[0] - match_company_id = result[2] + match_company_id = result[1] # Create a user company request request.env['user.company.request'].create({ @@ -403,6 +403,20 @@ class User(controller.Controller): 'user': self.response_with_token(user) }) + @http.route(prefix + 'user//after_request_tempo', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) + @controller.Controller.must_authorized() + def update_user_tempo(self, **kw): + id = kw.get('id') + + user = request.env['res.users'].search([('id', '=', id)], limit=1) + if not user: + return self.response(code=404, description='User not found') + + + return self.response({ + 'user': self.response_with_token(user, payment_tempo='Review') + }) + @http.route(prefix + 'user//address', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_user_address_by_id(self, **kw): diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index 52a044dc..40933957 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -1,10 +1,10 @@ from odoo import models - +from odoo.http import request class ResUsers(models.Model): _inherit = 'res.users' - def api_single_response(self, res_user, with_detail=''): + def api_single_response(self, res_user, with_detail='', payment_tempo= ''): config = self.env['ir.config_parameter'] partner = res_user.partner_id @@ -14,9 +14,13 @@ class ResUsers(models.Model): 'manager': 2, 'director': 3 } - partner_tempo = False + partner_tempo = '' + is_tempo_request = request.env['user.pengajuan.tempo.request'].search([('name_tempo', '=', partner.id)], limit=1) + tempo_progres = 'review' if is_tempo_request else '' if main_partner: - partner_tempo = main_partner.get_check_tempo_partner() + partner_tempo = main_partner.get_check_payment_term() + if payment_tempo: + tempo_progres = payment_tempo data = { 'id': res_user.id, @@ -36,7 +40,8 @@ class ResUsers(models.Model): 'so_approval': main_partner.use_so_approval, 'only_ready_stock': main_partner.use_only_ready_stock }, - 'partner_tempo': partner_tempo + 'partner_tempo': partner_tempo, + 'tempo_progres': tempo_progres } return data -- cgit v1.2.3 From cf6581d8a9ddfd5a7e3c1c2d7aa5aab8b96f4813 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Tue, 3 Dec 2024 13:22:55 +0700 Subject: pengajuan tempo --- indoteknik_api/controllers/api_v1/user.py | 2 +- indoteknik_api/models/res_users.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index f83937ea..51dae0a2 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -179,7 +179,7 @@ class User(controller.Controller): if result: match_company_name = result[0] - match_company_id = result[1] + match_company_id = result[2] # Create a user company request request.env['user.company.request'].create({ diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index 40933957..15aaa5a7 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -15,8 +15,8 @@ class ResUsers(models.Model): 'director': 3 } partner_tempo = '' - is_tempo_request = request.env['user.pengajuan.tempo.request'].search([('name_tempo', '=', partner.id)], limit=1) - tempo_progres = 'review' if is_tempo_request else '' + is_tempo_request = request.env['user.pengajuan.tempo.request'].search([('user_company_id', '=', main_partner.id)], limit=1) + tempo_progres = 'review' if is_tempo_request.state_tempo in ('draft','approval_sales','approval_finance') else '' if main_partner: partner_tempo = main_partner.get_check_payment_term() if payment_tempo: -- cgit v1.2.3 From 0aad5455df5d36ef87ab1cbd52030a3cf0bef1d8 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Wed, 4 Dec 2024 10:58:46 +0700 Subject: update code pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 29 +++--- indoteknik_api/controllers/api_v1/user.py | 4 +- indoteknik_api/models/res_partner.py | 142 ++++++++++++++++----------- indoteknik_api/models/res_users.py | 4 +- 4 files changed, 104 insertions(+), 75 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 19c73aec..0522e8e1 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -284,10 +284,10 @@ class Partner(controller.Controller): user_id = int(kw.get('user_id')) tempo_request = True if kw.get('tempo_request') == 'true' else False pengajuan_tempo = request.env['user.pengajuan.tempo'].search([('name_tempo', '=', user_id)], limit=1) - user = request.env['res.partner'].search([('id', '=', id)], limit=1) + user = request.env['res.partner'].search([('id', '=', user_id)], limit=1) company_name = kw.get('name', pengajuan_tempo.name_tempo.name) partner_id = request.env['res.partner'].search([('name', 'like', company_name)], limit=1) - user_account = self.get_user_by_email(user.user_id.email) + user_account = self.get_user_by_email(user.email) params = self.get_request_params(kw, { @@ -374,7 +374,7 @@ class Partner(controller.Controller): supplier_ids_to_add.append(new_supplier_data.id) - pengajuan_tempo.write({'supplier_ids': [(4, supplier_id, 0) for supplier_id in supplier_ids_to_add]}) + pengajuan_tempo.write({'supplier_ids': [(6, 0, supplier_ids_to_add)]}) except json.JSONDecodeError: return http.Response(status=400, json_body={'error': 'Invalid JSON format for formSupplier'}) @@ -477,31 +477,31 @@ class Partner(controller.Controller): 'mimetype': mimetype }) - if dokumen['documentName'] == 'dokumenNib' and dokumen['details']['base64'] != '': + if dokumen['documentName'] == 'dokumenNib' and dokumen['details']['base64'] != '' : pengajuan_tempo.dokumen_nib = [(4, sppkp_attachment.id)] - elif dokumen['documentName'] == 'dokumenNpwp' and dokumen['details']['base64'] != '': + elif dokumen['documentName'] == 'dokumenNpwp' and dokumen['details']['base64'] != '' : pengajuan_tempo.dokumen_npwp = [(4, sppkp_attachment.id)] - elif dokumen['documentName'] == 'dokumenSppkp' and dokumen['details']['base64'] != '': + elif dokumen['documentName'] == 'dokumenSppkp' and dokumen['details']['base64'] != '' : pengajuan_tempo.dokumen_sppkp = [(4, sppkp_attachment.id)] - elif dokumen['documentName'] == 'dokumenAktaPerubahan' and dokumen['details']['base64'] != '': + 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'] != '': + 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'] != '': + 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'] != '': + 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'] != '': + elif dokumen['documentName'] == 'dokumenFotoKantor' and dokumen['details']['base64'] != '' : pengajuan_tempo.dokumen_foto_kantor = [(4, sppkp_attachment.id)] - else: + elif dokumen['documentName'] == 'dokumen_tempat_bekerja' and dokumen['details']['base64'] != '' : 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'])]) @@ -519,9 +519,10 @@ class Partner(controller.Controller): 'tempo_limit': pengajuan_tempo.tempo_limit, }) pengajuan_tempo.user_id = user_account.id - template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_user_cart_reminder_to_checkout') + template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_res_user_company_request_tempo_review') template.send_mail(pengajuan_tempo.id, force_send=True) - # user_account.send_activation_mail() + template2 = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_res_user_company_new_tempo_to_sales') + template2.send_mail(pengajuan_tempo.id, force_send=True) return self.response({ 'id': pengajuan_tempo.id, 'user_id': user_id, diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 51dae0a2..addf2c9f 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -405,7 +405,7 @@ class User(controller.Controller): @http.route(prefix + 'user//after_request_tempo', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) @controller.Controller.must_authorized() - def update_user_tempo(self, **kw): + def update_user_tempo_after_request(self, **kw): id = kw.get('id') user = request.env['res.users'].search([('id', '=', id)], limit=1) @@ -414,7 +414,7 @@ class User(controller.Controller): return self.response({ - 'user': self.response_with_token(user, payment_tempo='Review') + 'user': self.response_with_token(user) }) @http.route(prefix + 'user//address', auth='public', methods=['GET', 'OPTIONS']) diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index 9b9f87d4..7b3c8d47 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -4,10 +4,10 @@ import json class ResPartner(models.Model): _inherit = 'res.partner' - def api_single_response(self, res_partner, with_detail=''): + def api_single_response(self, pengajuan_tempo, with_detail=''): config = self.env['ir.config_parameter'] - partner = res_partner.partner_id + partner = pengajuan_tempo.partner_id dokumen_kirim = [ ['Surat Tanda Terima Barang (STTB)', '0'], @@ -16,10 +16,10 @@ class ResPartner(models.Model): ['Lembar Penerimaan Barang (LPB)', '3'] ] dokumen_pengiriman = [] - if res_partner.dokumen_pengiriman : - res_partner_dokumen_pengiriman = res_partner.dokumen_pengiriman + if pengajuan_tempo.dokumen_pengiriman : + pengajuan_tempo_dokumen_pengiriman = pengajuan_tempo.dokumen_pengiriman mapping_dokumen = {item[0]: item[1] for item in dokumen_kirim} - dokumen_pengiriman_list = [dokumen.strip() for dokumen in res_partner_dokumen_pengiriman.split(',')] + dokumen_pengiriman_list = [dokumen.strip() for dokumen in pengajuan_tempo_dokumen_pengiriman.split(',')] dokumen_pengiriman = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_pengiriman_list] dokumen = [ @@ -30,57 +30,57 @@ class ResPartner(models.Model): ['Good Receipt (GR)','4'] ] dokumen_invoice = [] - if res_partner.dokumen_invoice: - res_partner_dokumen_invoice = res_partner.dokumen_invoice + if pengajuan_tempo.dokumen_invoice: + pengajuan_tempo_dokumen_invoice = pengajuan_tempo.dokumen_invoice mapping_dokumen = {item[0]: item[1] for item in dokumen} - dokumen_invoice_list = [dokumen.strip() for dokumen in res_partner_dokumen_invoice.split(',')] + dokumen_invoice_list = [dokumen.strip() for dokumen in pengajuan_tempo_dokumen_invoice.split(',')] dokumen_invoice = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_invoice_list] data = { - 'name' : res_partner.name_tempo.name, - 'industry_id' : res_partner.industry_id_tempo.id, - 'street' : res_partner.street_tempo, - 'state' : res_partner.state_id_tempo.id, - 'city' : res_partner.city_id_tempo.id, - 'zip' : res_partner.zip_tempo, - 'mobile' : res_partner.mobile_tempo, - 'bank_name' : res_partner.bank_name_tempo, - 'account_name' : res_partner.account_name_tempo, - 'account_number' : res_partner.account_number_tempo, - 'website' : res_partner.website_tempo if res_partner.website_tempo else '', - 'estimasi' : res_partner.estimasi_tempo, - 'tempo_duration' : res_partner.tempo_duration.id, - 'tempo_limit' : res_partner.tempo_limit, - 'category_produk': ','.join([str(cat.id) for cat in res_partner.category_produk_ids]) if res_partner.category_produk_ids else '', + 'name' : pengajuan_tempo.name_tempo.name, + 'industry_id' : pengajuan_tempo.industry_id_tempo.id, + 'street' : pengajuan_tempo.street_tempo, + 'state' : pengajuan_tempo.state_id_tempo.id, + 'city' : pengajuan_tempo.city_id_tempo.id, + 'zip' : pengajuan_tempo.zip_tempo, + 'mobile' : pengajuan_tempo.mobile_tempo, + 'bank_name' : pengajuan_tempo.bank_name_tempo, + 'account_name' : pengajuan_tempo.account_name_tempo, + 'account_number' : pengajuan_tempo.account_number_tempo, + 'website' : pengajuan_tempo.website_tempo if pengajuan_tempo.website_tempo else '', + 'estimasi' : pengajuan_tempo.estimasi_tempo, + 'tempo_duration' : pengajuan_tempo.tempo_duration.id, + 'tempo_limit' : pengajuan_tempo.tempo_limit, + 'category_produk': ','.join([str(cat.id) for cat in pengajuan_tempo.category_produk_ids]) if pengajuan_tempo.category_produk_ids else '', # Kontak Perusahaan - 'direktur_name' : res_partner.direktur_name if res_partner.direktur_name else '', - 'direktur_mobile' : res_partner.direktur_mobile if res_partner.direktur_mobile else '', - 'direktur_email' : res_partner.direktur_email if res_partner.direktur_email else '', - 'purchasing_name' : res_partner.purchasing_name if res_partner.purchasing_name else '', - 'purchasing_mobile' : res_partner.purchasing_mobile if res_partner.purchasing_mobile else '', - 'purchasing_email' : res_partner.purchasing_email if res_partner.purchasing_email else '', - 'finance_name' : res_partner.finance_name if res_partner.finance_name else '', - 'finance_mobile' : res_partner.finance_mobile if res_partner.finance_mobile else '', - 'finance_email' : res_partner.finance_email if res_partner.finance_email else '', + 'direktur_name' : pengajuan_tempo.direktur_name if pengajuan_tempo.direktur_name else '', + 'direktur_mobile' : pengajuan_tempo.direktur_mobile if pengajuan_tempo.direktur_mobile else '', + 'direktur_email' : pengajuan_tempo.direktur_email if pengajuan_tempo.direktur_email else '', + 'purchasing_name' : pengajuan_tempo.purchasing_name if pengajuan_tempo.purchasing_name else '', + 'purchasing_mobile' : pengajuan_tempo.purchasing_mobile if pengajuan_tempo.purchasing_mobile else '', + 'purchasing_email' : pengajuan_tempo.purchasing_email if pengajuan_tempo.purchasing_email else '', + 'finance_name' : pengajuan_tempo.finance_name if pengajuan_tempo.finance_name else '', + 'finance_mobile' : pengajuan_tempo.finance_mobile if pengajuan_tempo.finance_mobile else '', + 'finance_email' : pengajuan_tempo.finance_email if pengajuan_tempo.finance_email else '', # Pengiriman - 'PIC_name' : res_partner.pic_name if res_partner.pic_name else '', - 'street_pengiriman' : res_partner.street_pengiriman if res_partner.street_pengiriman else '', - 'state_id_pengiriman' : res_partner.state_id_pengiriman.id if res_partner.state_id_pengiriman else '', - 'city_id_pengiriman' : res_partner.city_id_pengiriman.id if res_partner.city_id_pengiriman else '', - 'zip_pengiriman' : res_partner.zip_pengiriman if res_partner.zip_pengiriman else '', - 'invoice_pic' : res_partner.invoice_pic if res_partner.invoice_pic else '', - 'street_invoice' : res_partner.street_invoice if res_partner.street_invoice else '', - 'state_id_invoice' : res_partner.state_id_invoice.id if res_partner.state_id_invoice else '', - 'city_id_invoice' : res_partner.city_id_invoice.id if res_partner.city_id_invoice else '', - 'tukar_invoice' : res_partner.tukar_invoice if res_partner.tukar_invoice else '', - 'jadwal_bayar' : res_partner.jadwal_bayar if res_partner.jadwal_bayar else '', + 'PIC_name' : pengajuan_tempo.pic_name if pengajuan_tempo.pic_name else '', + 'street_pengiriman' : pengajuan_tempo.street_pengiriman if pengajuan_tempo.street_pengiriman else '', + 'state_pengiriman' : pengajuan_tempo.state_id_pengiriman.id if pengajuan_tempo.state_id_pengiriman else '', + 'city_pengiriman' : pengajuan_tempo.city_id_pengiriman.id if pengajuan_tempo.city_id_pengiriman else '', + 'zip_pengiriman' : pengajuan_tempo.zip_pengiriman if pengajuan_tempo.zip_pengiriman else '', + 'invoice_pic' : pengajuan_tempo.invoice_pic if pengajuan_tempo.invoice_pic else '', + 'street_invoice' : pengajuan_tempo.street_invoice if pengajuan_tempo.street_invoice else '', + 'state_invoice' : pengajuan_tempo.state_id_invoice.id if pengajuan_tempo.state_id_invoice else '', + 'city_invoice' : pengajuan_tempo.city_id_invoice.id if pengajuan_tempo.city_id_invoice else '', + 'tukar_invoice_input' : pengajuan_tempo.tukar_invoice if pengajuan_tempo.tukar_invoice else '', + 'tukar_invoice_input_pembayaran' : pengajuan_tempo.jadwal_bayar if pengajuan_tempo.jadwal_bayar else '', 'dokumen_pengiriman' : ','.join(dokumen_pengiriman) if dokumen_pengiriman else '', 'dokumen_pengiriman_invoice' : ','.join(dokumen_invoice) if dokumen_invoice else '', - 'is_same_address': res_partner.is_same_address if res_partner.is_same_address else False, - 'res_partner.is_same_address': res_partner.is_same_address_street if res_partner.is_same_address_street else False, + 'is_same_addrees': pengajuan_tempo.is_same_address if pengajuan_tempo.is_same_address else False, + 'is_same_addrees_street': pengajuan_tempo.is_same_address_street if pengajuan_tempo.is_same_address_street else False, 'supplier_ids': [ { 'id': supplier.id, @@ -90,19 +90,49 @@ class ResPartner(models.Model): 'credit_limit': supplier.credit_limit, 'durasi_tempo': supplier.tempo_duration } - for supplier in res_partner.supplier_ids - ] if res_partner.supplier_ids else '' + for supplier in pengajuan_tempo.supplier_ids + ] if pengajuan_tempo.supplier_ids else '', # Dokumen - # 'dokumen_nib': res_partner.dokumen_nib if res_partner.dokumen_nib else '', - # 'dokumen_npwp': res_partner.dokumen_npwp if res_partner.dokumen_npwp else '', - # 'dokumen_sppkp': res_partner.dokumen_sppkp if res_partner.dokumen_sppkp else '', - # 'dokumen_akta_perubahan': res_partner.dokumen_akta_perubahan if res_partner.dokumen_akta_perubahan else '', - # 'dokumen_ktp_dirut': res_partner.dokumen_ktp_dirut if res_partner.dokumen_ktp_dirut else '', - # 'dokumen_akta_pendirian': res_partner.dokumen_akta_pendirian if res_partner.dokumen_akta_pendirian else '', - # 'dokumen_laporan_keuangan': res_partner.dokumen_laporan_keuangan if res_partner.dokumen_laporan_keuangan else '', - # 'dokumen_foto_kantor': res_partner.dokumen_foto_kantor if res_partner.dokumen_foto_kantor else '', - # 'dokumen_tempat_bekerja': res_partner.dokumen_tempat_bekerja if res_partner.dokumen_tempat_bekerja else '', + 'dokumen_nib': + { + 'name': pengajuan_tempo.dokumen_nib.name, + 'base64': pengajuan_tempo.dokumen_nib.local_url, + } + if pengajuan_tempo.dokumen_nib else '', + 'dokumen_npwp': + { + 'name': pengajuan_tempo.dokumen_npwp.name, + 'base64': pengajuan_tempo.dokumen_npwp.local_url, + } if pengajuan_tempo.dokumen_npwp else '', + 'dokumen_sppkp': { + 'name': pengajuan_tempo.dokumen_sppkp.name, + 'base64': pengajuan_tempo.dokumen_sppkp.local_url, + } if pengajuan_tempo.dokumen_sppkp else '', + 'dokumen_akta_perubahan': { + 'name': pengajuan_tempo.dokumen_akta_perubahan.name, + 'base64': pengajuan_tempo.dokumen_akta_perubahan.local_url, + } if pengajuan_tempo.dokumen_akta_perubahan else '', + 'dokumen_ktp_dirut': { + 'name': pengajuan_tempo.dokumen_ktp_dirut.name, + 'base64': pengajuan_tempo.dokumen_ktp_dirut.local_url, + } if pengajuan_tempo.dokumen_ktp_dirut else '', + 'dokumen_akta_pendirian': { + 'name': pengajuan_tempo.dokumen_akta_pendirian.name, + 'base64': pengajuan_tempo.dokumen_akta_pendirian.local_url, + } if pengajuan_tempo.dokumen_akta_pendirian else '', + 'dokumen_laporan_keuangan': { + 'name': pengajuan_tempo.dokumen_laporan_keuangan.name, + 'base64': pengajuan_tempo.dokumen_laporan_keuangan.local_url, + } if pengajuan_tempo.dokumen_laporan_keuangan else '', + 'dokumen_foto_kantor': { + 'name': pengajuan_tempo.dokumen_foto_kantor.name, + 'base64': pengajuan_tempo.dokumen_foto_kantor.local_url, + } if pengajuan_tempo.dokumen_foto_kantor else '', + 'dokumen_tempat_bekerja': { + 'name': pengajuan_tempo.dokumen_tempat_bekerja.name, + 'base64': pengajuan_tempo.dokumen_tempat_bekerja.local_url, + } if pengajuan_tempo.dokumen_tempat_bekerja else '', } return data \ No newline at end of file diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index 15aaa5a7..0c7dd96f 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -4,7 +4,7 @@ from odoo.http import request class ResUsers(models.Model): _inherit = 'res.users' - def api_single_response(self, res_user, with_detail='', payment_tempo= ''): + def api_single_response(self, res_user, with_detail=''): config = self.env['ir.config_parameter'] partner = res_user.partner_id @@ -19,8 +19,6 @@ class ResUsers(models.Model): tempo_progres = 'review' if is_tempo_request.state_tempo in ('draft','approval_sales','approval_finance') else '' if main_partner: partner_tempo = main_partner.get_check_payment_term() - if payment_tempo: - tempo_progres = payment_tempo data = { 'id': res_user.id, -- cgit v1.2.3 From af85c0d2248728fe33675dcec6e513eefd6553a4 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 6 Dec 2024 17:08:46 +0700 Subject: update pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 97 ++++++++++------------------ indoteknik_api/models/res_partner.py | 23 ++----- indoteknik_api/models/res_users.py | 6 +- 3 files changed, 47 insertions(+), 79 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 0522e8e1..d8464add 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -308,22 +308,27 @@ class Partner(controller.Controller): 'tempoLimit': ['alias:tempo_limit'], # informasi perusahaan + 'direkturTittle': ['alias:direktur_tittle'], 'direkturName': ['alias:direktur_name'], 'direkturMobile': ['alias:direktur_mobile'], 'direkturEmail': ['alias:direktur_email'], + 'purchasingTittle': ['alias:purchasing_tittle'], 'purchasingName': ['alias:purchasing_name'], 'purchasingMobile': ['alias:purchasing_mobile'], 'purchasingEmail': ['alias:purchasing_email'], + 'financeTittle': ['alias:finance_tittle'], 'financeName': ['alias:finance_name'], 'financeMobile': ['alias:finance_mobile'], 'financeEmail': ['alias:finance_email'], # Pengiriman + 'PICTittle': ['alias:pic_tittle'], 'PICName': ['alias:pic_name'], 'streetPengiriman': ['alias:street_pengiriman'], 'statePengiriman': ['alias:state_id_pengiriman'], 'cityPengiriman': ['alias:city_id_pengiriman'], 'zipPengiriman': ['alias:zip_pengiriman'], + 'invoicePicTittle': ['alias:invoice_pic_tittle'], 'invoicePic': ['alias:invoice_pic'], 'streetInvoice': ['alias:street_invoice'], 'stateInvoice': ['alias:state_id_invoice'], @@ -384,37 +389,13 @@ class Partner(controller.Controller): 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}" - if jadwal_tukar_invoice: - 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 + if tukar_invoice_input: + pengajuan_tempo.tukar_invoice = tukar_invoice_input + 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}" - if jadwal_tukar_invoice_pembayaran: - pengajuan_tempo.jadwal_bayar = jadwal_tukar_invoice_pembayaran + if tukar_invoice_input_pembayaran: + pengajuan_tempo.jadwal_bayar = tukar_invoice_input_pembayaran dokumen_kirim = [ 'Surat Tanda Terima Barang (STTB)', @@ -431,11 +412,10 @@ class Partner(controller.Controller): 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) if dokumen_kirim_barang: pengajuan_tempo.dokumen_pengiriman = ', '.join(dokumen_kirim_barang) + if dokumen_kirim_barang_input: + pengajuan_tempo.dokumen_pengiriman_input = dokumen_kirim_barang_input dokumen = [ 'Invoice Pembelian', @@ -445,18 +425,9 @@ class Partner(controller.Controller): 'Good Receipt (GR)' ] - dokumen_invoice_ids = kw.get('dokumenPengirimanInvoice') - dokumen_invoice_input = kw.get('dokumenPengirimanInvoiceInput', '') - dokumen_invoice = "" - - if dokumen_invoice_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) + dokumen_invoice = kw.get('dokumenPengirimanInvoice', '') if dokumen_invoice: - pengajuan_tempo.dokumen_invoice = ', '.join(dokumen_invoice) + pengajuan_tempo.dokumen_invoice = dokumen_invoice form_dokumen_data = kw.get('formDocs', False) if form_dokumen_data: @@ -477,37 +448,39 @@ class Partner(controller.Controller): 'mimetype': mimetype }) - if dokumen['documentName'] == 'dokumenNib' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_nib = [(4, sppkp_attachment.id)] + if dokumen['documentName'] == 'dokumenNib': + pengajuan_tempo.dokumen_nib = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumenNpwp' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_npwp = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenNpwp': + pengajuan_tempo.dokumen_npwp = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumenSppkp' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_sppkp = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenSppkp': + pengajuan_tempo.dokumen_sppkp = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumenAktaPerubahan' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_akta_perubahan = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenAktaPerubahan': + pengajuan_tempo.dokumen_akta_perubahan = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumenKtpDirut' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_ktp_dirut = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenKtpDirut': + pengajuan_tempo.dokumen_ktp_dirut = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumenAktaPendirian' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_akta_pendirian = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenAktaPendirian': + pengajuan_tempo.dokumen_akta_pendirian = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumenLaporanKeuangan' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_laporan_keuangan = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenLaporanKeuangan': + pengajuan_tempo.dokumen_laporan_keuangan = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumenFotoKantor' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_foto_kantor = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenFotoKantor': + pengajuan_tempo.dokumen_foto_kantor = [(6, 0, [sppkp_attachment.id])] - elif dokumen['documentName'] == 'dokumen_tempat_bekerja' and dokumen['details']['base64'] != '' : - pengajuan_tempo.dokumen_tempat_bekerja = [(4, sppkp_attachment.id)] + elif dokumen['documentName'] == 'dokumenTempatBekerja': + pengajuan_tempo.dokumen_tempat_bekerja = [(6, 0, [sppkp_attachment.id])] - formatted_text = ''.join([' ' + char if char.isupper() and i != 0 else char for i, char in enumerate(dokumen['documentName'])]) + 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'}) if tempo_request: diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index 7b3c8d47..f73101db 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -22,21 +22,6 @@ class ResPartner(models.Model): dokumen_pengiriman_list = [dokumen.strip() for dokumen in pengajuan_tempo_dokumen_pengiriman.split(',')] dokumen_pengiriman = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_pengiriman_list] - dokumen = [ - ['Invoice Pembelian','0'], - ['Surat Jalan','1'], - ['Berita Acara Serah Terima (BAST)','2'], - ['Faktur Pajak','3'], - ['Good Receipt (GR)','4'] - ] - dokumen_invoice = [] - if pengajuan_tempo.dokumen_invoice: - pengajuan_tempo_dokumen_invoice = pengajuan_tempo.dokumen_invoice - mapping_dokumen = {item[0]: item[1] for item in dokumen} - dokumen_invoice_list = [dokumen.strip() for dokumen in pengajuan_tempo_dokumen_invoice.split(',')] - dokumen_invoice = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_invoice_list] - - data = { 'name' : pengajuan_tempo.name_tempo.name, 'industry_id' : pengajuan_tempo.industry_id_tempo.id, @@ -55,22 +40,27 @@ class ResPartner(models.Model): 'category_produk': ','.join([str(cat.id) for cat in pengajuan_tempo.category_produk_ids]) if pengajuan_tempo.category_produk_ids else '', # Kontak Perusahaan + 'direktur_tittle': pengajuan_tempo.direktur_tittle if pengajuan_tempo.direktur_tittle else '', 'direktur_name' : pengajuan_tempo.direktur_name if pengajuan_tempo.direktur_name else '', 'direktur_mobile' : pengajuan_tempo.direktur_mobile if pengajuan_tempo.direktur_mobile else '', 'direktur_email' : pengajuan_tempo.direktur_email if pengajuan_tempo.direktur_email else '', + 'purchasing_tittle': pengajuan_tempo.purchasing_tittle if pengajuan_tempo.purchasing_tittle else '', 'purchasing_name' : pengajuan_tempo.purchasing_name if pengajuan_tempo.purchasing_name else '', 'purchasing_mobile' : pengajuan_tempo.purchasing_mobile if pengajuan_tempo.purchasing_mobile else '', 'purchasing_email' : pengajuan_tempo.purchasing_email if pengajuan_tempo.purchasing_email else '', + 'finance_tittle': pengajuan_tempo.finance_tittle if pengajuan_tempo.finance_tittle else '', 'finance_name' : pengajuan_tempo.finance_name if pengajuan_tempo.finance_name else '', 'finance_mobile' : pengajuan_tempo.finance_mobile if pengajuan_tempo.finance_mobile else '', 'finance_email' : pengajuan_tempo.finance_email if pengajuan_tempo.finance_email else '', # Pengiriman + 'PIC_tittle' : pengajuan_tempo.pic_tittle if pengajuan_tempo.pic_tittle else '', 'PIC_name' : pengajuan_tempo.pic_name if pengajuan_tempo.pic_name else '', 'street_pengiriman' : pengajuan_tempo.street_pengiriman if pengajuan_tempo.street_pengiriman else '', 'state_pengiriman' : pengajuan_tempo.state_id_pengiriman.id if pengajuan_tempo.state_id_pengiriman else '', 'city_pengiriman' : pengajuan_tempo.city_id_pengiriman.id if pengajuan_tempo.city_id_pengiriman else '', 'zip_pengiriman' : pengajuan_tempo.zip_pengiriman if pengajuan_tempo.zip_pengiriman else '', + 'invoice_pic_tittle' : pengajuan_tempo.invoice_pic_tittle if pengajuan_tempo.invoice_pic_tittle else '', 'invoice_pic' : pengajuan_tempo.invoice_pic if pengajuan_tempo.invoice_pic else '', 'street_invoice' : pengajuan_tempo.street_invoice if pengajuan_tempo.street_invoice else '', 'state_invoice' : pengajuan_tempo.state_id_invoice.id if pengajuan_tempo.state_id_invoice else '', @@ -78,7 +68,8 @@ class ResPartner(models.Model): 'tukar_invoice_input' : pengajuan_tempo.tukar_invoice if pengajuan_tempo.tukar_invoice else '', 'tukar_invoice_input_pembayaran' : pengajuan_tempo.jadwal_bayar if pengajuan_tempo.jadwal_bayar else '', 'dokumen_pengiriman' : ','.join(dokumen_pengiriman) if dokumen_pengiriman else '', - 'dokumen_pengiriman_invoice' : ','.join(dokumen_invoice) if dokumen_invoice else '', + 'dokumen_pengiriman_input' : pengajuan_tempo.dokumen_pengiriman_input if pengajuan_tempo.dokumen_pengiriman_input else '', + 'dokumen_pengiriman_invoice' : pengajuan_tempo.dokumen_invoice if pengajuan_tempo.dokumen_invoice else '', 'is_same_addrees': pengajuan_tempo.is_same_address if pengajuan_tempo.is_same_address else False, 'is_same_addrees_street': pengajuan_tempo.is_same_address_street if pengajuan_tempo.is_same_address_street else False, 'supplier_ids': [ diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index 0c7dd96f..93204a96 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -16,7 +16,11 @@ class ResUsers(models.Model): } partner_tempo = '' is_tempo_request = request.env['user.pengajuan.tempo.request'].search([('user_company_id', '=', main_partner.id)], limit=1) - tempo_progres = 'review' if is_tempo_request.state_tempo in ('draft','approval_sales','approval_finance') else '' + tempo_progres = ( + 'review' if is_tempo_request.state_tempo in ('draft', 'approval_sales', 'approval_finance') else + 'rejected' if is_tempo_request.state_tempo == 'reject' else + 'approve' if is_tempo_request.state_tempo == 'approval_director' else '' + ) if main_partner: partner_tempo = main_partner.get_check_payment_term() -- cgit v1.2.3 From 02eacd54387953f42a884a22544e2f7c94081536 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 9 Dec 2024 15:04:12 +0700 Subject: update pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index d8464add..fcf7e4db 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -428,6 +428,15 @@ class Partner(controller.Controller): dokumen_invoice = kw.get('dokumenPengirimanInvoice', '') if dokumen_invoice: pengajuan_tempo.dokumen_invoice = dokumen_invoice + user_tempo_request = [] + if tempo_request: + user_tempo_request = request.env['user.pengajuan.tempo.request'].create({ + 'user_id': user.id, + 'pengajuan_tempo_id': pengajuan_tempo.id, + 'user_company_id': partner_id.id, + 'tempo_duration': pengajuan_tempo.tempo_duration.id, + 'tempo_limit': pengajuan_tempo.tempo_limit, + }) form_dokumen_data = kw.get('formDocs', False) if form_dokumen_data: @@ -479,18 +488,14 @@ class Partner(controller.Controller): enumerate(dokumen['documentName'])]) teks = formatted_text.strip().title() pengajuan_tempo.message_post(body=teks, attachment_ids=[sppkp_attachment.id]) + if tempo_request: + user_tempo_request.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'}) - if tempo_request: - tempo_request = request.env['user.pengajuan.tempo.request'].create({ - 'user_id': user.id, - 'pengajuan_tempo_id': pengajuan_tempo.id, - 'user_company_id': partner_id.id, - 'tempo_duration': pengajuan_tempo.tempo_duration.id, - 'tempo_limit': pengajuan_tempo.tempo_limit, - }) + + pengajuan_tempo.user_id = user_account.id template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_res_user_company_request_tempo_review') template.send_mail(pengajuan_tempo.id, force_send=True) -- cgit v1.2.3 From 0391f0df5d30cd81b4281c3d5082bf96671bd97b Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Wed, 11 Dec 2024 11:51:06 +0700 Subject: update code --- indoteknik_api/controllers/api_v1/partner.py | 20 ++++++++++++++------ indoteknik_api/controllers/api_v1/state.py | 6 +++++- 2 files changed, 19 insertions(+), 7 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index fcf7e4db..ebf5de08 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -333,15 +333,23 @@ class Partner(controller.Controller): 'streetInvoice': ['alias:street_invoice'], 'stateInvoice': ['alias:state_id_invoice'], 'cityInvoice': ['alias:city_id_invoice'], - 'isSameAddrees':['alias:is_same_address'], - 'isSameAddreesStreet': ['alias:is_same_address_street'], }) + # Konversi nilai 'true' ke boolean True + is_same_address = kw.get('isSameAddrees', 'false').lower() == 'true' + is_same_address_street = kw.get('isSameAddreesStreet', 'false').lower() == 'true' + + # Tambahkan nilai yang dikonversi ke params + if kw.get('isSameAddrees') != '': + params['value']['is_same_address'] = is_same_address + if kw.get('isSameAddreesStreet') != '': + params['value']['is_same_address_street'] = is_same_address_street + if not params['valid']: return self.response(code=400, description=params) - # Filter data baru yang dikirim (non-kosong) - new_data = {key: value for key, value in params['value'].items() if value} + # Filter data baru yang dikirim (non-kosong, boolean False tetap masuk) + new_data = {key: value for key, value in params['value'].items() if value != ''} if pengajuan_tempo: # Jika pengajuan_tempo sudah ada, hanya write data baru yang non-kosong @@ -431,7 +439,7 @@ class Partner(controller.Controller): user_tempo_request = [] if tempo_request: user_tempo_request = request.env['user.pengajuan.tempo.request'].create({ - 'user_id': user.id, + 'user_id': id, 'pengajuan_tempo_id': pengajuan_tempo.id, 'user_company_id': partner_id.id, 'tempo_duration': pengajuan_tempo.tempo_duration.id, @@ -496,7 +504,7 @@ class Partner(controller.Controller): return http.Response(status=400, json_body={'error': 'Invalid JSON format for formDokumen'}) - pengajuan_tempo.user_id = user_account.id + # pengajuan_tempo.user_id = id template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_res_user_company_request_tempo_review') template.send_mail(pengajuan_tempo.id, force_send=True) template2 = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_res_user_company_new_tempo_to_sales') diff --git a/indoteknik_api/controllers/api_v1/state.py b/indoteknik_api/controllers/api_v1/state.py index 598ef70b..958359a7 100644 --- a/indoteknik_api/controllers/api_v1/state.py +++ b/indoteknik_api/controllers/api_v1/state.py @@ -8,7 +8,11 @@ class District(controller.Controller): @http.route(prefix + 'state', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_state(self, **kw): + tempo = kw.get('tempo') parameters = [] + if tempo == 'true': + parameters.append(('country_id', '=', 100)) + name = kw.get('name') if name: @@ -18,7 +22,7 @@ class District(controller.Controller): states = request.env['res.country.state'].search(parameters) data = [] for state in states: - data.append({ 'id': state.id, 'name': state.name }) + data.append({ 'id': state.id, 'name': state.name}) return self.response(data) -- cgit v1.2.3 From 61427e249985af385de6619e8b362d249a68c688 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 13 Dec 2024 14:14:49 +0700 Subject: update pengajuan tempo --- indoteknik_api/controllers/api_v1/partner.py | 57 ++++++++++++++++++++++------ indoteknik_api/models/res_partner.py | 41 +++++++++++++++++--- 2 files changed, 80 insertions(+), 18 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index ebf5de08..c0088d38 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -138,6 +138,8 @@ class Partner(controller.Controller): 'npwp': [], 'alamat_lengkap_text': [], 'street': [], + 'email': [], + 'mobile': [] }) # Mengambil id_user dari request @@ -297,6 +299,8 @@ class Partner(controller.Controller): 'street': ['alias:street_tempo'], 'state': ['alias:state_id_tempo'], 'city': ['alias:city_id_tempo'], + 'district': ['alias:district_id_tempo'], + 'subDistrict': ['alias:subDistrict_id_tempo'], 'zip': ['alias:zip_tempo'], 'mobile': ['alias:mobile_tempo'], 'bankName': ['alias:bank_name_tempo'], @@ -304,6 +308,8 @@ class Partner(controller.Controller): 'accountNumber': ['alias:account_number_tempo'], 'website': ['alias:website_tempo'], 'estimasi': ['alias:estimasi_tempo'], + 'portal': ['alias:portal'], + 'bersedia': ['alias:bersedia'], 'tempoDuration': ['alias:tempo_duration'], 'tempoLimit': ['alias:tempo_limit'], @@ -327,27 +333,38 @@ class Partner(controller.Controller): 'streetPengiriman': ['alias:street_pengiriman'], 'statePengiriman': ['alias:state_id_pengiriman'], 'cityPengiriman': ['alias:city_id_pengiriman'], + 'districtPengiriman': ['alias:district_id_pengiriman'], + 'subDistrictPengiriman': ['alias:subDistrict_id_pengiriman'], 'zipPengiriman': ['alias:zip_pengiriman'], 'invoicePicTittle': ['alias:invoice_pic_tittle'], 'invoicePic': ['alias:invoice_pic'], 'streetInvoice': ['alias:street_invoice'], 'stateInvoice': ['alias:state_id_invoice'], 'cityInvoice': ['alias:city_id_invoice'], + 'districtInvoice': ['alias:district_id_invoice'], + 'subDistrictInvoice': ['alias:subDistrict_id_invoice'], + 'zipInvoice': ['alias:zip_invoice'], + 'isSameAddrees':['alias:is_same_address'], + 'isSameAddreesStreet':['alias:is_same_address_street'], }) - # Konversi nilai 'true' ke boolean True - is_same_address = kw.get('isSameAddrees', 'false').lower() == 'true' - is_same_address_street = kw.get('isSameAddreesStreet', 'false').lower() == 'true' - - # Tambahkan nilai yang dikonversi ke params - if kw.get('isSameAddrees') != '': - params['value']['is_same_address'] = is_same_address - if kw.get('isSameAddreesStreet') != '': - params['value']['is_same_address_street'] = is_same_address_street + # # Konversi nilai 'true' ke boolean True + # is_same_address = kw.get('isSameAddrees', 'false').lower() == 'true' + # is_same_address_street = kw.get('isSameAddreesStreet', 'false').lower() == 'true' + # + # # Tambahkan nilai yang dikonversi ke params + # if 'isSameAddress' in kw: + # params['value']['is_same_address'] = is_same_address + # if 'is_same_address_street' in kw: + # params['value']['is_same_address_street'] = is_same_address_street if not params['valid']: return self.response(code=400, description=params) - + if params['value']['portal']: + if params['value']['portal'] == 'ada': + params['value']['portal'] = True + else: + params['value']['portal'] = False # Filter data baru yang dikirim (non-kosong, boolean False tetap masuk) new_data = {key: value for key, value in params['value'].items() if value != ''} @@ -413,13 +430,17 @@ class Partner(controller.Controller): ] dokumen_kirim_barang_ids = kw.get('dokumenPengiriman') + dokumen_kirim_input = kw.get('dokumenKirimInput', '') 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_input: + input_items = [item.strip() for item in dokumen_kirim_input.split(',')] + dokumen_kirim_barang.extend(item for item in input_items if item and item not in dokumen_kirim_barang) + pengajuan_tempo.dokumen_kirim_input = dokumen_kirim_input if dokumen_kirim_barang: pengajuan_tempo.dokumen_pengiriman = ', '.join(dokumen_kirim_barang) if dokumen_kirim_barang_input: @@ -468,6 +489,18 @@ class Partner(controller.Controller): if dokumen['documentName'] == 'dokumenNib': pengajuan_tempo.dokumen_nib = [(6, 0, [sppkp_attachment.id])] + elif dokumen['documentName'] == 'dokumenSiup': + pengajuan_tempo.dokumen_siup = [(6, 0, [sppkp_attachment.id])] + + elif dokumen['documentName'] == 'dokumenTdp': + pengajuan_tempo.dokumen_tdp = [(6, 0, [sppkp_attachment.id])] + + elif dokumen['documentName'] == 'dokumenSkdp': + pengajuan_tempo.dokumen_skdp = [(6, 0, [sppkp_attachment.id])] + + elif dokumen['documentName'] == 'dokumenSkt': + pengajuan_tempo.dokumen_skt = [(6, 0, [sppkp_attachment.id])] + elif dokumen['documentName'] == 'dokumenNpwp': pengajuan_tempo.dokumen_npwp = [(6, 0, [sppkp_attachment.id])] @@ -503,7 +536,7 @@ class Partner(controller.Controller): except json.JSONDecodeError: return http.Response(status=400, json_body={'error': 'Invalid JSON format for formDokumen'}) - + if tempo_request: # pengajuan_tempo.user_id = id template = pengajuan_tempo.env.ref('indoteknik_custom.mail_template_res_user_company_request_tempo_review') template.send_mail(pengajuan_tempo.id, force_send=True) diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index f73101db..258d8143 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -28,6 +28,8 @@ class ResPartner(models.Model): 'street' : pengajuan_tempo.street_tempo, 'state' : pengajuan_tempo.state_id_tempo.id, 'city' : pengajuan_tempo.city_id_tempo.id, + 'district' : pengajuan_tempo.district_id_tempo.id, + 'subDistrict' : pengajuan_tempo.subDistrict_id_tempo.id, 'zip' : pengajuan_tempo.zip_tempo, 'mobile' : pengajuan_tempo.mobile_tempo, 'bank_name' : pengajuan_tempo.bank_name_tempo, @@ -35,6 +37,8 @@ class ResPartner(models.Model): 'account_number' : pengajuan_tempo.account_number_tempo, 'website' : pengajuan_tempo.website_tempo if pengajuan_tempo.website_tempo else '', 'estimasi' : pengajuan_tempo.estimasi_tempo, + 'bersedia' : pengajuan_tempo.bersedia, + 'portal' : 'ada' if pengajuan_tempo.portal else 'tidak', 'tempo_duration' : pengajuan_tempo.tempo_duration.id, 'tempo_limit' : pengajuan_tempo.tempo_limit, 'category_produk': ','.join([str(cat.id) for cat in pengajuan_tempo.category_produk_ids]) if pengajuan_tempo.category_produk_ids else '', @@ -59,16 +63,22 @@ class ResPartner(models.Model): 'street_pengiriman' : pengajuan_tempo.street_pengiriman if pengajuan_tempo.street_pengiriman else '', 'state_pengiriman' : pengajuan_tempo.state_id_pengiriman.id if pengajuan_tempo.state_id_pengiriman else '', 'city_pengiriman' : pengajuan_tempo.city_id_pengiriman.id if pengajuan_tempo.city_id_pengiriman else '', + 'district_pengiriman': pengajuan_tempo.district_id_pengiriman.id if pengajuan_tempo.district_id_pengiriman else '', + 'subDistrict_pengiriman': pengajuan_tempo.subDistrict_id_pengiriman.id if pengajuan_tempo.subDistrict_id_pengiriman else '', 'zip_pengiriman' : pengajuan_tempo.zip_pengiriman if pengajuan_tempo.zip_pengiriman else '', 'invoice_pic_tittle' : pengajuan_tempo.invoice_pic_tittle if pengajuan_tempo.invoice_pic_tittle else '', 'invoice_pic' : pengajuan_tempo.invoice_pic if pengajuan_tempo.invoice_pic else '', 'street_invoice' : pengajuan_tempo.street_invoice if pengajuan_tempo.street_invoice else '', 'state_invoice' : pengajuan_tempo.state_id_invoice.id if pengajuan_tempo.state_id_invoice else '', 'city_invoice' : pengajuan_tempo.city_id_invoice.id if pengajuan_tempo.city_id_invoice else '', + 'district_invoice': pengajuan_tempo.district_id_invoice.id if pengajuan_tempo.district_id_invoice else '', + 'subDistrict_invoice': pengajuan_tempo.subDistrict_id_invoice.id if pengajuan_tempo.subDistrict_id_invoice else '', + 'zip_invoice': pengajuan_tempo.zip_invoice if pengajuan_tempo.zip_invoice else '', 'tukar_invoice_input' : pengajuan_tempo.tukar_invoice if pengajuan_tempo.tukar_invoice else '', 'tukar_invoice_input_pembayaran' : pengajuan_tempo.jadwal_bayar if pengajuan_tempo.jadwal_bayar else '', 'dokumen_pengiriman' : ','.join(dokumen_pengiriman) if dokumen_pengiriman else '', 'dokumen_pengiriman_input' : pengajuan_tempo.dokumen_pengiriman_input if pengajuan_tempo.dokumen_pengiriman_input else '', + 'dokumen_kirim_input' : pengajuan_tempo.dokumen_kirim_input if pengajuan_tempo.dokumen_kirim_input else '', 'dokumen_pengiriman_invoice' : pengajuan_tempo.dokumen_invoice if pengajuan_tempo.dokumen_invoice else '', 'is_same_addrees': pengajuan_tempo.is_same_address if pengajuan_tempo.is_same_address else False, 'is_same_addrees_street': pengajuan_tempo.is_same_address_street if pengajuan_tempo.is_same_address_street else False, @@ -85,12 +95,6 @@ class ResPartner(models.Model): ] if pengajuan_tempo.supplier_ids else '', # Dokumen - 'dokumen_nib': - { - 'name': pengajuan_tempo.dokumen_nib.name, - 'base64': pengajuan_tempo.dokumen_nib.local_url, - } - if pengajuan_tempo.dokumen_nib else '', 'dokumen_npwp': { 'name': pengajuan_tempo.dokumen_npwp.name, @@ -100,6 +104,31 @@ class ResPartner(models.Model): 'name': pengajuan_tempo.dokumen_sppkp.name, 'base64': pengajuan_tempo.dokumen_sppkp.local_url, } if pengajuan_tempo.dokumen_sppkp else '', + 'dokumen_nib': + { + 'name': pengajuan_tempo.dokumen_nib.name, + 'base64': pengajuan_tempo.dokumen_nib.local_url, + }if pengajuan_tempo.dokumen_nib else '', + 'dokumen_siup': + { + 'name': pengajuan_tempo.dokumen_siup.name, + 'base64': pengajuan_tempo.dokumen_siup.local_url, + }if pengajuan_tempo.dokumen_siup else '', + 'dokumen_tdp': + { + 'name': pengajuan_tempo.dokumen_tdp.name, + 'base64': pengajuan_tempo.dokumen_tdp.local_url, + }if pengajuan_tempo.dokumen_tdp else '', + 'dokumen_skdp': + { + 'name': pengajuan_tempo.dokumen_skdp.name, + 'base64': pengajuan_tempo.dokumen_skdp.local_url, + }if pengajuan_tempo.dokumen_skdp else '', + 'dokumen_skt': + { + 'name': pengajuan_tempo.dokumen_skt.name, + 'base64': pengajuan_tempo.dokumen_skt.local_url, + }if pengajuan_tempo.dokumen_skt else '', 'dokumen_akta_perubahan': { 'name': pengajuan_tempo.dokumen_akta_perubahan.name, 'base64': pengajuan_tempo.dokumen_akta_perubahan.local_url, -- cgit v1.2.3 From 7cbb05cfb2de23562c153156448d0beadbeaf742 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 16 Dec 2024 08:27:17 +0700 Subject: perbaiki code flash sale --- indoteknik_api/controllers/api_v1/flash_sale.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/flash_sale.py b/indoteknik_api/controllers/api_v1/flash_sale.py index 00b1f2e0..6c4ad8c0 100644 --- a/indoteknik_api/controllers/api_v1/flash_sale.py +++ b/indoteknik_api/controllers/api_v1/flash_sale.py @@ -20,6 +20,7 @@ class FlashSale(controller.Controller): query = [ ('pricelist_id', '=', pricelist.id) ] + formatted_end_date = pricelist.end_date.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' if pricelist.end_date else None data.append({ 'pricelist_id': pricelist.id, 'option': pricelist.flashsale_option, @@ -29,6 +30,7 @@ class FlashSale(controller.Controller): 'banner_mobile': request.env['ir.attachment'].api_image('product.pricelist', 'banner_mobile', pricelist.id), 'banner_top': request.env['ir.attachment'].api_image('product.pricelist', 'banner_top', pricelist.id), 'duration': pricelist._remaining_time_in_second(), + 'end_date': formatted_end_date, 'product_total': request.env['product.pricelist.item'].search_count(query), }) return self.response(data) -- cgit v1.2.3 From 7a6542e7aab868a40eb83298b95d971e19acf15a Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Tue, 17 Dec 2024 13:16:20 +0700 Subject: update pengajuan tempo dokumen --- indoteknik_api/models/res_partner.py | 42 +++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/models/res_partner.py b/indoteknik_api/models/res_partner.py index 258d8143..0e09fbc6 100644 --- a/indoteknik_api/models/res_partner.py +++ b/indoteknik_api/models/res_partner.py @@ -1,5 +1,6 @@ from odoo import models import json +import base64 class ResPartner(models.Model): _inherit = 'res.partner' @@ -21,7 +22,6 @@ class ResPartner(models.Model): mapping_dokumen = {item[0]: item[1] for item in dokumen_kirim} dokumen_pengiriman_list = [dokumen.strip() for dokumen in pengajuan_tempo_dokumen_pengiriman.split(',')] dokumen_pengiriman = [mapping_dokumen.get(dokumen, '4') for dokumen in dokumen_pengiriman_list] - data = { 'name' : pengajuan_tempo.name_tempo.name, 'industry_id' : pengajuan_tempo.industry_id_tempo.id, @@ -93,65 +93,77 @@ class ResPartner(models.Model): } for supplier in pengajuan_tempo.supplier_ids ] if pengajuan_tempo.supplier_ids else '', - # Dokumen 'dokumen_npwp': { 'name': pengajuan_tempo.dokumen_npwp.name, - 'base64': pengajuan_tempo.dokumen_npwp.local_url, + 'base64': pengajuan_tempo.dokumen_npwp.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_npwp.mimetype, } if pengajuan_tempo.dokumen_npwp else '', 'dokumen_sppkp': { 'name': pengajuan_tempo.dokumen_sppkp.name, - 'base64': pengajuan_tempo.dokumen_sppkp.local_url, + 'base64': pengajuan_tempo.dokumen_sppkp.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_sppkp.mimetype, } if pengajuan_tempo.dokumen_sppkp else '', 'dokumen_nib': { 'name': pengajuan_tempo.dokumen_nib.name, - 'base64': pengajuan_tempo.dokumen_nib.local_url, + 'base64': pengajuan_tempo.dokumen_nib.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_nib.mimetype, }if pengajuan_tempo.dokumen_nib else '', 'dokumen_siup': { 'name': pengajuan_tempo.dokumen_siup.name, - 'base64': pengajuan_tempo.dokumen_siup.local_url, + 'base64': pengajuan_tempo.dokumen_siup.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_siup.mimetype, }if pengajuan_tempo.dokumen_siup else '', 'dokumen_tdp': { 'name': pengajuan_tempo.dokumen_tdp.name, - 'base64': pengajuan_tempo.dokumen_tdp.local_url, + 'base64': pengajuan_tempo.dokumen_tdp.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_tdp.mimetype, }if pengajuan_tempo.dokumen_tdp else '', 'dokumen_skdp': { 'name': pengajuan_tempo.dokumen_skdp.name, - 'base64': pengajuan_tempo.dokumen_skdp.local_url, + 'base64': pengajuan_tempo.dokumen_skdp.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_skdp.mimetype, }if pengajuan_tempo.dokumen_skdp else '', 'dokumen_skt': { 'name': pengajuan_tempo.dokumen_skt.name, - 'base64': pengajuan_tempo.dokumen_skt.local_url, + 'base64': pengajuan_tempo.dokumen_skt.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_skt.mimetype, }if pengajuan_tempo.dokumen_skt else '', 'dokumen_akta_perubahan': { 'name': pengajuan_tempo.dokumen_akta_perubahan.name, - 'base64': pengajuan_tempo.dokumen_akta_perubahan.local_url, + 'base64': pengajuan_tempo.dokumen_akta_perubahan.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_akta_perubahan.mimetype, } if pengajuan_tempo.dokumen_akta_perubahan else '', 'dokumen_ktp_dirut': { 'name': pengajuan_tempo.dokumen_ktp_dirut.name, - 'base64': pengajuan_tempo.dokumen_ktp_dirut.local_url, + 'base64': pengajuan_tempo.dokumen_ktp_dirut.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_ktp_dirut.mimetype, } if pengajuan_tempo.dokumen_ktp_dirut else '', 'dokumen_akta_pendirian': { 'name': pengajuan_tempo.dokumen_akta_pendirian.name, - 'base64': pengajuan_tempo.dokumen_akta_pendirian.local_url, + 'base64': pengajuan_tempo.dokumen_akta_pendirian.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_akta_pendirian.mimetype, } if pengajuan_tempo.dokumen_akta_pendirian else '', 'dokumen_laporan_keuangan': { 'name': pengajuan_tempo.dokumen_laporan_keuangan.name, - 'base64': pengajuan_tempo.dokumen_laporan_keuangan.local_url, + 'base64': pengajuan_tempo.dokumen_laporan_keuangan.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_laporan_keuangan.mimetype, } if pengajuan_tempo.dokumen_laporan_keuangan else '', 'dokumen_foto_kantor': { 'name': pengajuan_tempo.dokumen_foto_kantor.name, - 'base64': pengajuan_tempo.dokumen_foto_kantor.local_url, + 'base64': pengajuan_tempo.dokumen_foto_kantor.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_foto_kantor.mimetype, } if pengajuan_tempo.dokumen_foto_kantor else '', 'dokumen_tempat_bekerja': { 'name': pengajuan_tempo.dokumen_tempat_bekerja.name, - 'base64': pengajuan_tempo.dokumen_tempat_bekerja.local_url, + 'base64': pengajuan_tempo.dokumen_tempat_bekerja.datas.decode('utf-8'), + 'format': pengajuan_tempo.dokumen_tempat_bekerja.mimetype, } if pengajuan_tempo.dokumen_tempat_bekerja else '', } -- cgit v1.2.3 From 63a4c4aca3c3c1594ab72679b3cb44c873f5da5e Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 30 Dec 2024 11:47:39 +0700 Subject: ppn 12% --- indoteknik_api/models/product_product.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index 386ddb6a..d7c0c66b 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -138,39 +138,39 @@ class ProductProduct(models.Model): return retValue def _get_website_price_exclude_tax(self): - default_divide_tax = float(1.11) + default_divide_tax = float(1.12) price_incl = self._get_website_price_include_tax() res = price_incl / default_divide_tax return math.floor(res) def _v2_get_website_price_exclude_tax(self): - default_divide_tax = float(1.11) + default_divide_tax = float(1.12) price_incl = self._v2_get_website_price_include_tax() res = price_incl / default_divide_tax return math.floor(res) def _get_website_price_after_disc_and_tax(self): - default_divide_tax = float(1.11) + default_divide_tax = float(1.12) price_after_disc = self._get_website_price_after_disc() res = price_after_disc / default_divide_tax res = math.ceil(res) return res def _v2_get_website_price_after_disc_and_tax(self): - default_divide_tax = float(1.11) + default_divide_tax = float(1.12) price_after_disc = self._v2_get_website_price_after_disc() res = price_after_disc / default_divide_tax res = math.ceil(res) return res def _get_website_tax(self): - default_percent_tax = float(11) + default_percent_tax = float(12) price_after_disc = self._get_website_price_after_disc_and_tax() res = price_after_disc * default_percent_tax / 100 return math.floor(res) def _v2_get_website_tax(self): - default_percent_tax = float(11) + default_percent_tax = float(12) price_after_disc = self._v2_get_website_price_after_disc_and_tax() res = price_after_disc * default_percent_tax / 100 return math.floor(res) @@ -228,7 +228,7 @@ class ProductProduct(models.Model): def _get_pricelist_tier(self, tier_number): config_param_name = f'product.pricelist.tier{tier_number}' product_pricelist_tier = int(self.env['ir.config_parameter'].get_param(config_param_name)) - default_divide_tax = float(1.11) + default_divide_tax = float(1.12) base_price = discount = price = 0 pricelist_item = self.env['product.pricelist.item'].search([ ('pricelist_id', '=', int(product_pricelist_tier)), @@ -272,12 +272,12 @@ class ProductProduct(models.Model): base_price = 0 if base_pricelist: base_price = base_pricelist.computed_price - # base_price = base_pricelist.computed_price / 1.11 + # base_price = base_pricelist.computed_price / 1.12 discount = 0 price_flashsale = 0 - default_divide_tax = float(1.11) - default_tax = float(11) + default_divide_tax = float(1.12) + default_tax = float(12) if item.price_discount > 0: discount = item.price_discount price_flashsale = base_price - (base_price * discount // 100) -- cgit v1.2.3 From e90f1b5a714bc1a18073df18f7798d28cafab7c4 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Tue, 31 Dec 2024 09:13:28 +0700 Subject: ppn 12% --- indoteknik_api/controllers/api_v1/sale_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index 3e182a2e..f8535199 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -394,7 +394,7 @@ class SaleOrder(controller.Controller): parameters = { 'warehouse_id': 8, 'carrier_id': 1, - 'sales_tax_id': 23, + 'sales_tax_id': 218, 'pricelist_id': user_pricelist or product_pricelist_default_discount_id, 'payment_term_id': 26, 'team_id': 2, -- cgit v1.2.3 From 4e926be36ae06a1cf6f0d74151cf97ea4f542017 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Thu, 9 Jan 2025 08:54:09 +0700 Subject: update tempo --- indoteknik_api/controllers/api_v1/invoice.py | 25 +++++++++++++++++++++++-- indoteknik_api/controllers/api_v1/partner.py | 24 ++++++++++++++++++++---- 2 files changed, 43 insertions(+), 6 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/invoice.py b/indoteknik_api/controllers/api_v1/invoice.py index 4937e8dd..4bd3746c 100644 --- a/indoteknik_api/controllers/api_v1/invoice.py +++ b/indoteknik_api/controllers/api_v1/invoice.py @@ -1,7 +1,7 @@ from .. import controller from odoo import http from odoo.http import request - +from odoo import fields class Invoice(controller.Controller): PREFIX = '/api/v1/' @@ -15,6 +15,7 @@ class Invoice(controller.Controller): 'name': [], 'limit': ['default:0', 'number'], 'offset': ['default:0', 'number'], + 'status': [], }) limit = params['value']['limit'] offset = params['value']['offset'] @@ -27,6 +28,11 @@ class Invoice(controller.Controller): ('state', '=', 'posted'), ('partner_id', 'in', partner_child_ids) ] + domain_orders = [ + ('invoice_status', '!=', 'invoiced'), + ('state', '=', 'sale'), + ('partner_id', 'in', partner_child_ids) + ] if params['value']['name']: name = params['value']['name'].replace(' ', '%') domain += [ @@ -34,10 +40,25 @@ class Invoice(controller.Controller): ('name', 'ilike', '%'+ name +'%'), ('ref', 'ilike', '%'+ name +'%') ] + if params['value']['status']: + if params['value']['status'] == '1': + domain += [('payment_state', '=', 'not_paid'), ('invoice_date_due', '<', fields.Date.today())] + elif params['value']['status'] == '2': + domain += [('payment_state', '=', 'not_paid'), ('invoice_date_due', '>', fields.Date.today())] + elif params['value']['status'] == '3': + domain += [('payment_state', '=', 'paid')] + elif params['value']['status'] == '0': + domain = domain + elif params['value']['status'] == '4': + domain += [('payment_state', '=', 'not_paid')] + invoices = request.env['account.move'].search(domain, offset=offset, limit=limit) + sale_orders = request.env['sale.order'].search(domain_orders, offset=offset, limit=limit) data = { 'invoice_total': request.env['account.move'].search_count(domain), - 'invoices': [request.env['account.move'].api_v1_single_response(x) for x in invoices] + 'invoices': [request.env['account.move'].api_v1_single_response(x) for x in invoices], + 'sale_order_total': request.env['sale.order'].search_count(domain_orders), + 'sale_orders': [request.env['sale.order'].api_v1_single_response(x) for x in sale_orders] } return self.response(data) diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index c0088d38..885cf3ec 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -1,7 +1,7 @@ from .. import controller from odoo import http from odoo.http import request - +from odoo import fields import json import base64 import mimetypes @@ -253,15 +253,31 @@ class Partner(controller.Controller): if any(line.days == 0 for line in partner.property_payment_term_id.line_ids): return self.response(code=402, description='Partner not tempo') - - result_tempo = sum(m.amount_total_signed for m in request.env['account.move'].search([('partner_id', '=', partner.id), ('payment_state', '=', 'not_paid'), ('state', '=', 'posted')])) - + + domain_result_tempo = [('partner_id', '=', partner.id), ('payment_state', '=', 'not_paid'), ('state', '=', 'posted')] + domain_result_jatuh_tempo = [('partner_id', '=', partner.id), ('payment_state', '=', 'not_paid'), ('state', '=', 'posted'), ('invoice_date_due', '<', fields.Date.today())] + domain_orders = [('partner_id', '=', partner.id), ('invoice_status', '!=', 'invoiced'), ('state', '=', 'sale')] + + result_tempo = sum(m.amount_total_signed for m in request.env['account.move'].search(domain_result_tempo)) + result_tempo_total = request.env['account.move'].search_count(domain_result_tempo) + result_jatuh_tempo = sum(m.amount_total_signed for m in request.env['account.move'].search(domain_result_jatuh_tempo)) + result_jatuh_tempo_total = request.env['account.move'].search_count(domain_result_jatuh_tempo) + orders = request.env['sale.order'].search(domain_orders) + orders_total = request.env['sale.order'].search_count(domain_orders) + + total_amount = sum(order.amount_total for order in orders) + remaining_limit = partner.blocking_stage - result_tempo if partner.active_limit else None data = { 'name': partner.name, 'payment_term': partner.property_payment_term_id.name, 'amount_due': result_tempo, + 'amount_due_total': result_tempo_total, + 'amount_jatuh_tempo_total': result_jatuh_tempo_total, + 'amount_jatuh_tempo': result_jatuh_tempo, + 'amount_due_sale': total_amount, + 'amount_due_sale_total': orders_total, 'remaining_limit': remaining_limit } -- cgit v1.2.3 From 9f994de3f13f6be24d17233bf6890e6e88dd959b Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 10 Jan 2025 15:25:51 +0700 Subject: pengajuan tempo update --- indoteknik_api/models/res_users.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/models/res_users.py b/indoteknik_api/models/res_users.py index d9329f67..2021b0bb 100644 --- a/indoteknik_api/models/res_users.py +++ b/indoteknik_api/models/res_users.py @@ -14,7 +14,7 @@ class ResUsers(models.Model): 'manager': 2, 'director': 3 } - partner_tempo = '' + partner_tempo = False is_tempo_request = request.env['user.pengajuan.tempo.request'].search([('user_company_id', '=', main_partner.id)], limit=1) tempo_progres = ( 'review' if is_tempo_request.state_tempo in ('draft', 'approval_sales', 'approval_finance') else @@ -22,7 +22,7 @@ class ResUsers(models.Model): 'approve' if is_tempo_request.state_tempo == 'approval_director' else '' ) if main_partner: - partner_tempo = main_partner.get_check_payment_term() + partner_tempo = True if 'tempo' in main_partner.get_check_payment_term().lower() else False data = { 'id': res_user.id, -- cgit v1.2.3 From 262013945e9729f9cea9a17f2060ec607bc42b64 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Tue, 14 Jan 2025 08:30:38 +0700 Subject: hapus ppn 12% dari branch --- indoteknik_api/controllers/api_v1/sale_order.py | 2 +- indoteknik_api/models/product_product.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'indoteknik_api') diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index f972fd46..8b95ade8 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -398,7 +398,7 @@ class SaleOrder(controller.Controller): parameters = { 'warehouse_id': 8, 'carrier_id': 1, - 'sales_tax_id': 218, + 'sales_tax_id': 23, 'pricelist_id': user_pricelist or product_pricelist_default_discount_id, 'payment_term_id': 26, 'team_id': 2, diff --git a/indoteknik_api/models/product_product.py b/indoteknik_api/models/product_product.py index d7e20ac3..10922186 100644 --- a/indoteknik_api/models/product_product.py +++ b/indoteknik_api/models/product_product.py @@ -229,7 +229,7 @@ class ProductProduct(models.Model): def _get_pricelist_tier(self, tier_number): config_param_name = f'product.pricelist.tier{tier_number}' product_pricelist_tier = int(self.env['ir.config_parameter'].get_param(config_param_name)) - default_divide_tax = float(1.12) + default_divide_tax = float(1.11) base_price = discount = price = 0 pricelist_item = self.env['product.pricelist.item'].search([ ('pricelist_id', '=', int(product_pricelist_tier)), @@ -273,12 +273,12 @@ class ProductProduct(models.Model): base_price = 0 if base_pricelist: base_price = base_pricelist.computed_price - # base_price = base_pricelist.computed_price / 1.12 + # base_price = base_pricelist.computed_price / 1.11 discount = 0 price_flashsale = 0 - default_divide_tax = float(1.12) - default_tax = float(12) + default_divide_tax = float(1.11) + default_tax = float(11) if item.price_discount > 0: discount = item.price_discount price_flashsale = base_price - (base_price * discount // 100) -- cgit v1.2.3