Fix: Create POST Order Line

This commit is contained in:
Rodia 2025-02-15 12:17:37 -05:00
parent 2c64f80f9c
commit becf5f929a
4 changed files with 94 additions and 25 deletions

View File

@ -10,30 +10,6 @@ import json
sale_order_application = user_application('sale_order')
@app.route(
'/<database_name>/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(
'/<database_name>/sale_order/order/<order>', methods=['GET'])
@allow_null_origin
@ -59,6 +35,56 @@ def get_order(request, pool, order: int):
return orders
@app.route(
'/<database_name>/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(
'/<database_name>/sale_order/<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(
'/<database_name>/sale_order/confirm_order/<order>', methods=['POST'])
@allow_null_origin

View File

@ -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,
},

View File

@ -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()

View File

@ -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)