Feat(WIP): Sale Order API

This commit is contained in:
Rodia 2025-02-09 22:01:39 -05:00
parent 674f6c9f7b
commit d7f746db0a
4 changed files with 94 additions and 1 deletions

View File

@ -1,11 +1,12 @@
from trytond.pool import Pool
from . import sale_order
from . import sale_order, user
__all__ = ['register']
def register():
Pool.register(
user.UserApplication,
sale_order.SaleOrder,
sale_order.OrderLine,
module='sale_order', type_='model')

25
routes.py Normal file
View File

@ -0,0 +1,25 @@
from trytond.wsgi import app
from trytond.protocols.wrappers import (
with_pool,
with_transaction,
user_application,
allow_null_origin)
import json
sale_order = user_application('sale_order')
@app.route('/<database_name>/sale_order/order', methods=['POST'])
@allow_null_origin
@with_pool
@with_transaction()
@sale_order
def order(request, pool):
raise Exception(request)
Order = pool.get('sale.order')
if request.method == 'POST':
data = json.loads(
request.get_data().decode()
)
Order.create([dict(data)])

View File

@ -0,0 +1,53 @@
from trytond.tests.test_tryton import RouteTestCase
from trytond.pool import Pool
from http import HTTPStatus
import uuid
import json
from trytond.tests.test_tryton import DB_NAME
from trytond.transaction import Transaction
from trytond.modules.company.tests.tools import create_company
from trytond.tests.tools import activate_modules
class SaleOrderApiRouteTestCase(RouteTestCase):
"""Sale Order API Routes"""
module = 'sale_order'
key = uuid.uuid4().hex
@classmethod
def setUpClass(cls):
activate_modules('sale_order', create_company)
def setUp(self):
pool = Pool(DB_NAME)
transaction = Transaction().start(DB_NAME, 0, _lock_tables=[
'product_product'])
with transaction:
Party = pool.get('party.party')
ProductTemplate = pool.get('product.template')
Product = pool.get('product.product')
Uom = pool.get('product.uom')
self.productTemplate, = ProductTemplate.create([{
'name': 'Product',
'default_uom': Uom.search([('name', '=', 'Unit')])[0].id,
}])
self.product, = Product.create([
{'template': self.productTemplate.id}
])
self.party, = Party.create([{
'name': "Dunkan"
}])
def test_post_sale_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,
}))
self.assertEqual(response.status_code, HTTPStatus.OK)

14
user.py Normal file
View File

@ -0,0 +1,14 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import PoolMeta
class UserApplication(metaclass=PoolMeta):
__name__ = 'res.user.application'
@classmethod
def __setup__(cls):
super(UserApplication, cls).__setup__()
cls.application.selection.append(
('sale_order', 'SaleOrder')
)