diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-11-01 13:50:41 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-11-01 13:50:41 +0700 |
| commit | be2bc04768f9f423c66a612f4f183d20e70a3145 (patch) | |
| tree | 8ac24efd85ed2578c37ce03ee5d6247a3279f74a /indoteknik_api/controllers/api_v1/partner.py | |
| parent | 414ced359c181c612b302376cb740c7f5c02075f (diff) | |
<iman> update pengajuan tempo api
Diffstat (limited to 'indoteknik_api/controllers/api_v1/partner.py')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 103 |
1 files changed, 59 insertions, 44 deletions
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, }) |
