diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-02-14 13:55:14 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-02-14 13:55:14 +0700 |
| commit | ce3e018ad61808b7e581e416525e6696ed088916 (patch) | |
| tree | 6459ae3b356ccb6a9b75e7bb11b3c998aa9d0070 | |
| parent | 237b623f8c1ceda7a4b6ce5ef28f629c84425205 (diff) | |
| parent | c68437fc15bd25e00c81001a4d1324a29c50c6bd (diff) | |
Merge branch 'feature/rest-api' into staging
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 30 | ||||
| -rw-r--r-- | indoteknik_api/models/account_move.py | 3 | ||||
| -rw-r--r-- | indoteknik_api/models/sale_order.py | 14 |
3 files changed, 42 insertions, 5 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py index 1c67d6c5..8fe4b1d5 100644 --- a/indoteknik_api/controllers/api_v1/sale_order.py +++ b/indoteknik_api/controllers/api_v1/sale_order.py @@ -106,6 +106,34 @@ class SaleOrder(controller.Controller): return self.response(data) + @http.route(PREFIX_PARTNER + 'sale_order/<id>/checkout', auth='public', method=['POST', 'OPTIONS'], csrf=False) + def partner_checkout_sale_order_by_id(self, **kw): + user_token = self.authenticate() + if not user_token: + return self.unauthorized_response() + + params = self.get_request_params(kw, { + 'partner_id': ['number'], + 'id': ['number'] + }) + if not user_token['partner_id'] == params['value']['partner_id']: + return self.unauthorized_response() + if not params['valid']: + return self.response(code=400, description=params) + + partner_child_ids = self.get_partner_child_ids(params['value']['partner_id']) + domain = [ + ('id', '=', params['value']['id']), + ('partner_id', 'in', partner_child_ids) + ] + data = {} + sale_order = request.env['sale.order'].search(domain) + if sale_order: + sale_order.approval_status = 'pengajuan1' + data = request.env['sale.order'].api_v1_single_response(sale_order, context='with_detail') + + return self.response(data) + @http.route(PREFIX_PARTNER + 'sale_order/<id>/upload_po', auth='public', method=['POST', 'OPTIONS'], csrf=False) def partner_upload_po_sale_order(self, **kw): user_token = self.authenticate() @@ -187,7 +215,7 @@ class SaleOrder(controller.Controller): if not user_token['partner_id'] == params['value']['partner_id']: return self.unauthorized_response() if not params['valid']: - return self.response(code=400, description=params) + return self.response(code=400, description=params) partner_child_ids = self.get_partner_child_ids(params['value']['partner_id']) domain = [ diff --git a/indoteknik_api/models/account_move.py b/indoteknik_api/models/account_move.py index 5c31f010..9bbe8c94 100644 --- a/indoteknik_api/models/account_move.py +++ b/indoteknik_api/models/account_move.py @@ -15,7 +15,7 @@ class AccountMove(models.Model): 'sales': account_move.invoice_user_id.name, 'amount_total': account_move.amount_total, 'amount_residual': account_move.amount_residual, - 'invoice_date': '', + 'invoice_date': account_move.invoice_date.strftime('%d/%m/%Y') or '', 'efaktur': True if account_move.efaktur_document else False, } if isinstance(object, datetime.date): @@ -31,7 +31,6 @@ class AccountMove(models.Model): 'sales': account_move.invoice_user_id.name, 'amount_total': account_move.amount_total, 'amount_residual': account_move.amount_residual, - 'invoice_date': account_move.invoice_date.strftime('%d/%m/%Y') or '', 'invoice_date_due': account_move.invoice_date_due.strftime('%d/%m/%Y') or '', 'customer': res_users.api_address_response(account_move.partner_id), 'products': [], diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py index c3f3dccb..7ce8ff61 100644 --- a/indoteknik_api/models/sale_order.py +++ b/indoteknik_api/models/sale_order.py @@ -24,9 +24,19 @@ class SaleOrder(models.Model): data['status'] = 'waiting' if sale_order.state == 'sale': data['status'] = 'sale' + picking_count = { + 'assigned': 0, + 'done': 0, + } for picking in sale_order.picking_ids: - if picking.state == 'assigned': - data['status'] = 'shipping' + if picking.state in ['confirmed', 'assigned']: + picking_count['assigned'] += 1 + if picking.state == 'done': + picking_count['done'] += 1 + if picking_count['assigned'] > 0: + data['status'] = 'shipping' + if picking_count['done'] > 0: + data['status'] = 'partial_shipping' if sale_order.state == 'done': data['status'] = 'done' |
