summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-02-14 13:55:14 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-02-14 13:55:14 +0700
commitce3e018ad61808b7e581e416525e6696ed088916 (patch)
tree6459ae3b356ccb6a9b75e7bb11b3c998aa9d0070
parent237b623f8c1ceda7a4b6ce5ef28f629c84425205 (diff)
parentc68437fc15bd25e00c81001a4d1324a29c50c6bd (diff)
Merge branch 'feature/rest-api' into staging
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py30
-rw-r--r--indoteknik_api/models/account_move.py3
-rw-r--r--indoteknik_api/models/sale_order.py14
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'