Feat: Confirm order

This commit is contained in:
Rodia 2025-02-11 21:30:19 -05:00
parent 58a600c17d
commit 2c64f80f9c
2 changed files with 60 additions and 0 deletions

View File

@ -57,3 +57,28 @@ def get_order(request, pool, order: int):
]) ])
return orders return orders
@app.route(
'/<database_name>/sale_order/confirm_order/<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

View File

@ -103,3 +103,38 @@ class SaleOrderApiRouteTestCase(RouteTestCase):
self.assertEqual(len( self.assertEqual(len(
json.loads(response.text) json.loads(response.text)
), 1) ), 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')