diff --git a/routes.py b/routes.py index e41bd8f..7e04783 100644 --- a/routes.py +++ b/routes.py @@ -10,30 +10,6 @@ import json sale_order_application = user_application('sale_order') -@app.route( - '//sale_order/order', methods=['POST']) -@allow_null_origin -@with_pool -@with_transaction() -@sale_order_application -def post_order(request, pool): - Order = pool.get('sale.order') - with Transaction().set_context( - {'company': 1, 'locations': [3]}): - if request.method == 'POST': - data = json.loads( - request.get_data().decode() - ) - order, = Order.create([dict(data)]) - - response_data = { - 'id': order.id, - 'status': 'success', - 'message': 'Order created successfully', - } - return json.dumps(response_data), 201 - - @app.route( '//sale_order/order/', methods=['GET']) @allow_null_origin @@ -59,6 +35,56 @@ def get_order(request, pool, order: int): return orders +@app.route( + '//sale_order/order', methods=['POST']) +@allow_null_origin +@with_pool +@with_transaction() +@sale_order_application +def post_order(request, pool): + Order = pool.get('sale.order') + with Transaction().set_context( + {'company': 1, 'locations': [3]}): + if request.method == 'POST': + data = json.loads( + request.get_data().decode() + ) + order, = Order.create([dict(data)]) + + response_data = { + 'id': order.id, + 'status': 'success', + 'message': 'Order created successfully', + } + return json.dumps(response_data), 201 + + +@app.route( + '//sale_order//order_line', methods=['POST']) +@allow_null_origin +@with_pool +@with_transaction() +@sale_order_application +def order_line(request, pool, order: int): + OrderLine = pool.get('order.line') + with Transaction().set_context( + {'company': 1, + 'locations': [3]}): + if request.method == 'POST': + data = json.loads( + request.get_data().decode() + ) + + order_lines = OrderLine.create([dict(data)]) + + response_data = { + 'order_lines': [line.id for line in order_lines], + 'status': 'success', + 'message': 'Order lines created successfully', + } + return json.dumps(response_data), 201 + + @app.route( '//sale_order/confirm_order/', methods=['POST']) @allow_null_origin diff --git a/setup.py b/setup.py index 05e62c8..bedb2ca 100755 --- a/setup.py +++ b/setup.py @@ -107,7 +107,7 @@ setup(name=name, ], license='GPL-3', python_requires='>=3.8', - install_requires=requires, + # install_requires=requires, extras_require={ 'test': tests_require, }, diff --git a/tests/SaleOrderApiTest.py b/tests/SaleOrderApiTest.py index d17d8e8..fcdb2f2 100644 --- a/tests/SaleOrderApiTest.py +++ b/tests/SaleOrderApiTest.py @@ -27,10 +27,25 @@ post_sale_order = requests.post( }) ) +order = json.loads(json.loads(post_sale_order.text)[0]).get("id") + get_sale_order = requests.get( base_url + '/order/1', headers={ 'Authorization': f'bearer {key}', }) +post_line_order = requests.post( + base_url.replace( + 'sale_don_confiao', 'sale_order') + f'/{order}/order_line', + headers={ + 'Authorization': f'bearer {key}', + }, data=json.dumps({ + "order": order, + "product": "1", + "unit": "1", + "quantity": "5", + "unitprice": "10" + })) + pudb.set_trace() diff --git a/tests/test_api_sale_order.py b/tests/test_api_sale_order.py index f439e4e..041cc5a 100644 --- a/tests/test_api_sale_order.py +++ b/tests/test_api_sale_order.py @@ -138,3 +138,31 @@ class SaleOrderApiRouteTestCase(RouteTestCase): self.assertEqual(response.status_code, HTTPStatus.OK) self.assertEqual(response_data['state'], 'confirmed') + + def test_post_line_order(self): + client = self.client() + + response = 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'}) + ) + + order = json.loads(json.loads(response.text)[0]).get("id") + + response = client.post( + f'/{self.db_name}/sale_order/{order}/order_line', + headers={ + 'Authorization': f'bearer {self.key}', + }, data=json.dumps({ + "order": order, + "product": self.product.id, + "unit": self.unit, + "quantity": "5", + "unitprice": "10" + })) + + self.assertEqual(response.status_code, HTTPStatus.OK)