summaryrefslogtreecommitdiff
path: root/indoteknik_api
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-06-12 14:52:46 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-06-12 14:52:46 +0700
commit762444b0e678b160108c4f12d63c7896ce0a132b (patch)
tree432b05ff0bf5d55dacd7dff9ecc597cd2abe4996 /indoteknik_api
parent9c31b4af2a2611fe9338e879eee48957273dbe10 (diff)
(hafid) fix tidak bisa edit alamat pada website
Diffstat (limited to 'indoteknik_api')
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py182
1 files changed, 99 insertions, 83 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index 126fded4..c0f8f630 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -61,46 +61,48 @@ class Partner(controller.Controller):
partner = request.env['res.users'].api_address_response(partner)
return self.response(partner)
- @http.route(prefix + 'partner/<id>/address', auth='public', methods=['PUT', 'OPTIONS'], csrf=False)
+ @http.route(prefix + 'partner/<id>/address', type="json", auth='public', methods=['PUT', 'OPTIONS'], csrf=False, cors='*')
@controller.Controller.must_authorized()
- def write_partner_address_by_id(self, **kw):
+ def write_partner_address_by_id(self, id, **kw):
+ headers = {
+ 'Access-Control-Allow-Origin': '*',
+ 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
+ 'Access-Control-Allow-Headers': '*'
+ }
+ if request.httprequest.method == 'OPTIONS':
+ return Response(status=200, headers=headers)
try:
- params = self.get_request_params(kw, {
- 'id': ['required', 'number'],
- 'type': ['default:other'],
- 'name': ['required'],
- 'email': ['required'],
- 'mobile': ['required'],
- 'phone': [''],
- 'street': ['required'],
- 'state_id': ['required', 'number', 'alias:state_id'],
- 'city_id': ['required', 'number', 'alias:kota_id'],
- 'district_id': ['number', 'alias:kecamatan_id'],
- 'sub_district_id': ['number', 'alias:kelurahan_id', 'exclude_if_null'],
- 'zip': ['required'],
- 'longtitude': '',
- 'latitude': '',
- 'address_map': [],
- 'alamat_lengkap_text': []
- })
+ params = self.get_request_params(request.jsonrequest, {
+ 'id': ['required', 'number'],
+ 'type': ['default:other'],
+ 'name': ['required'],
+ 'email': ['required'],
+ 'mobile': ['required'],
+ 'phone': [''],
+ 'street': ['required'],
+ 'state_id': ['required', 'alias:state_id'],
+ 'city_id': ['required', 'alias:kota_id'],
+ 'district_id': ['alias:kecamatan_id'],
+ 'sub_district_id': ['alias:kelurahan_id', 'exclude_if_null'],
+ 'zip': ['required'],
+ 'longtitude': '',
+ 'latitude': '',
+ 'address_map': [],
+ 'alamat_lengkap_text': []
+ })
if not params['valid']:
- return self.response(code=400, description=params)
-
- partner = request.env[self._name].sudo().search([('id', '=', params['value']['id'])], limit=1)
+ return {'headers' : headers,'code': 400, 'description': params}
+ partner = request.env['res.partner'].sudo().search([('id', '=', id)], limit=1)
if not partner:
- return self.response(code=404, description='User not found')
-
- try:
- partner.write(params['value'])
- except Exception as e:
- return self.response(code=500, description=f'Error writing partner data: {str(e)}')
+ return {'headers' : headers,'code': 404, 'description': 'User not found'}
- return self.response({'id': partner.id})
+ partner.write(params['value'])
+ return {'id': partner.id, 'headers' : headers}
except Exception as e:
- return self.response(code=500, description=f'Unexpected error: {str(e)}')
+ return {'headers' : headers,'code': 500, 'description': f'Internal Error: {str(e)}'}
@http.route(prefix + 'partner/address', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized()
@@ -132,69 +134,83 @@ class Partner(controller.Controller):
'id': partner.id,
})
- @http.route(prefix + 'partner/<id>', auth='public', methods=['PUT', 'OPTIONS'], csrf=False)
+ @http.route(prefix + 'partner/<int:id>', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized()
- def write_partner_by_id(self, **kw):
- params = self.get_request_params(kw, {
- 'id': ['', 'number'],
- 'name': [],
- 'company_type_id': ['number'],
- 'industry_id': ['number'],
- 'tax_name': ['alias:nama_wajib_pajak'],
- 'npwp': [],
- 'alamat_lengkap_text': [],
- 'street': [],
- 'email': [],
- 'mobile': []
- })
- id_user = self.get_request_params(kw, {
- 'id_user': ['number']
- })
- params_user = self.get_request_params(kw, {
- 'company_type_id': ['number'],
- 'industry_id': ['number'],
- 'tax_name': ['alias:nama_wajib_pajak'],
- 'npwp': [],
- 'alamat_lengkap_text': [],
- })
+ def write_partner_by_id(self, id, **kw):
+ try:
+ # Ambil data JSON langsung
+ request_data = kw
+
+ partner = request.env['res.partner'].sudo().browse(id)
+ if not partner.exists():
+ return self.response({
+ 'code': 400,
+ 'description': 'Partner not found'
+ })
- if not params['valid']:
- return self.response(code=400, description=params)
+ partner_params = self.get_request_params(request_data, {
+ 'tax_name': ['alias:nama_wajib_pajak'],
+ 'company_type_id': ['number'],
+ 'industry_id': ['number'],
+ 'npwp': [],
+ 'alamat_lengkap_text': [],
+ 'street': [],
+ 'email': [],
+ 'mobile': []
+ })
- partner = request.env[self._name].search([('id', '=', params['value']['id'])], limit=1)
- user = request.env[self._name].search([('id', '=', id_user['value']['id_user'])], limit=1)
- if not partner:
- return self.response(code=404, description='Partner not found')
+ if not partner_params['valid']:
+ return self.response({
+ 'code': 400,
+ 'description': partner_params
+ })
- if not params['value'].get('tax_name'):
- params['value']['nama_wajib_pajak'] = params['value'].get('name')
- params_user['value']['nama_wajib_pajak'] = params_user['value'].get('name')
+ partner_values = partner_params['value']
- if not params['value'].get('alamat_lengkap_text'):
- params['value']['alamat_lengkap_text'] = params['value'].get('street')
- params_user['value']['alamat_lengkap_text'] = params_user['value'].get('street')
+ if 'id_user' in request_data:
+ user_params = self.get_request_params(request_data, {
+ 'id_user': ['required', 'number'],
+ 'company_type_id': ['number'],
+ 'industry_id': ['number'],
+ 'tax_name': ['alias:nama_wajib_pajak'],
+ 'npwp': [],
+ 'alamat_lengkap_text': [],
+ })
- if not params['value'].get('npwp'):
- params['value']['npwp'] = "00.000.000.0-000.000"
- params_user['value']['npwp'] = "00.000.000.0-000.000"
+ if not user_params['valid']:
+ return self.response({
+ 'code': 400,
+ 'description': user_params
+ })
- # Filter parameter yang memiliki nilai saja untuk partner
- params_filtered = {k: v for k, v in params['value'].items() if v}
+ user = request.env['res.partner'].sudo().browse(int(user_params['value']['id_user']))
+ if user.exists():
+ user_values = user_params['value']
- # Filter parameter yang memiliki nilai saja untuk user
- params_user_filtered = {k: v for k, v in params_user['value'].items() if v}
+ if not user_values.get('tax_name'):
+ user_values['nama_wajib_pajak'] = user_values.get('name', user.name)
- # Update partner dan user hanya dengan parameter yang memiliki nilai
- if params_filtered:
- partner.write(params_filtered)
+ if not user_values.get('alamat_lengkap_text'):
+ user_values['alamat_lengkap_text'] = user_values.get('street', user.street)
- if params_user_filtered:
- user.write(params_user_filtered)
+ if not user_values.get('npwp'):
+ user_values['npwp'] = "00.000.000.0-000.000"
- # Return response dengan ID partner yang di-update
- return self.response({
- 'id': partner.id
- })
+ user_values_filtered = {k: v for k, v in user_values.items() if k != 'id_user' and v is not None}
+ if user_values_filtered:
+ user.write(user_values_filtered)
+
+ partner.write(partner_values)
+
+ return self.response({
+ 'partner_id': partner.id
+ })
+
+ except Exception as e:
+ return self.response({
+ 'code': 500,
+ 'description': f'Internal Error: {str(e)}'
+ })
@http.route(prefix + 'partner/industry', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()