From 2c64f80f9cc200cc52b632c6a9139397a9bf2902 Mon Sep 17 00:00:00 2001 From: Rodia Date: Tue, 11 Feb 2025 21:30:19 -0500 Subject: [PATCH] Feat: Confirm order --- routes.py | 25 +++++++++++++++++++++++++ tests/test_api_sale_order.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/routes.py b/routes.py index 354dc3a..e41bd8f 100644 --- a/routes.py +++ b/routes.py @@ -57,3 +57,28 @@ def get_order(request, pool, order: int): ]) return orders + + +@app.route( + '//sale_order/confirm_order/', methods=['POST']) +@allow_null_origin +@with_pool +@with_transaction() +@sale_order_application +def confirm_order(request, pool, order: int): + Order = pool.get('sale.order') + if request.method == 'POST': + order, = Order.search([ + ('id', '=', order) + ]) + + Order.confirm([order]) + + response_data = { + 'id': order.id, + 'status': 'success', + 'state': order.state, + 'message': 'Order confirm successfully', + } + + return json.dumps(response_data), 201 diff --git a/tests/test_api_sale_order.py b/tests/test_api_sale_order.py index a0068b1..f439e4e 100644 --- a/tests/test_api_sale_order.py +++ b/tests/test_api_sale_order.py @@ -103,3 +103,38 @@ class SaleOrderApiRouteTestCase(RouteTestCase): self.assertEqual(len( json.loads(response.text) ), 1) + + def test_confirm_sale_order(self): + client = self.client() + + order = json.loads( + client.post( + f'/{self.db_name}/sale_order/order', + headers={ + 'Authorization': f'bearer {self.key}', + }, data=json.dumps({ + "party": self.party.id, + "pickup_location": 'on_site', + "lines": [[ + "create", [{ + "product": self.product.id, + "unit": self.unit, + "quantity": "5", + "unitprice": "10" + }] + ]] + })).get_data().decode()) + + confirm_url = f"/{self.db_name}/sale_order/confirm_order/" + order_id = json.loads(order[0])['id'] + response = client.post( + f"{confirm_url}{order_id}", + headers={ + 'Authorization': f'bearer {self.key}', + }) + + response_data = json.loads( + json.loads(response.text)[0]) + + self.assertEqual(response.status_code, HTTPStatus.OK) + self.assertEqual(response_data['state'], 'confirmed')