DonConfia_Dev/modules/sale_don_confiao/routes.py
2025-03-22 18:30:35 -05:00

209 lines
5.4 KiB
Python

from trytond.wsgi import app
from trytond.transaction import Transaction
from trytond.protocols.wrappers import (
with_pool,
with_transaction,
user_application,
allow_null_origin,
)
import json
don_confiao_application = user_application("sale_don_confiao")
@app.route("/<database_name>/sale_don_confiao/parties", methods=["GET", "POST"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def parties(request, pool):
Party = pool.get("party.party")
if request.method == "GET":
parties = Party.search_read(
[], order=[("id", "ASC")], fields_names=["id", "name"]
)
return parties
if request.method == "POST":
data = json.loads(request.get_data().decode())
party = Party.create([dict(data)])
if party:
party = party[0].id
response_data = {
"id": party,
"status": "success",
"message": "Party created successfully",
}
return json.dumps(response_data), 201
response_data = {
"id": None,
"status": "success",
"message": "Party not created",
}
return json.dumps(response_data), 404
@app.route("/<database_name>/sale_don_confiao/party/<party>", methods=["GET"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def party(request, pool, party: int):
Party = pool.get("party.party")
if request.method == "GET":
parties = Party.search_read(
[("id", "=", int(party))],
order=[("id", "ASC")],
fields_names=["id", "name"],
)
return parties
@app.route("/<database_name>/sale_don_confiao/categories", methods=["GET"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def categories(request, pool):
Category = pool.get("product.category")
categories = Category.search_read(
[], order=[("id", "ASC")], fields_names=["id", "name"]
)
return categories
@app.route("/<database_name>/sale_don_confiao/products", methods=["GET"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def products(request, pool):
with Transaction().set_context({"company": 1, "locations": [3]}):
Product = pool.get("product.product")
products = Product.search_read(
[("salable", "=", True)],
order=[("id", "ASC")],
fields_names=[
"id",
"name",
"template.list_price",
"default_uom.name",
"description",
"quantity",
],
)
return products
@app.route(
"/<database_name>/sale_don_confiao/search_products/<product_name>", methods=["GET"]
)
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def search_products(request, pool, product_name: str):
Product = pool.get("product.product")
with Transaction().set_context({"company": 1, "locations": [3]}):
products = Product.search_read(
[("name", "ilike", f"%{product_name}%")],
order=[("id", "ASC")],
fields_names=[
"id",
"name",
"template.list_price",
"default_uom.name",
"description",
"quantity",
],
)
return products
@app.route("/<database_name>/sale_don_confiao/sale/<sale_id>", methods=["GET"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def sale(request, pool, sale_id: int):
Sale = pool.get("sale.sale")
if request.method == "GET":
sales = Sale.search_read(
[("id", "=", sale_id)],
order=[("id", "ASC")],
fields_names=[
"id",
"party.name",
"sale_date",
"shipment_address.street",
"untaxed_amount_cache",
"tax_amount_cache",
"total_amount_cache",
],
)
return sales
@app.route("/<database_name>/sale_don_confiao/post_sale", methods=["POST"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def post_sale(request, pool):
Sale = pool.get("sale.sale")
data = json.loads(request.get_data().decode())
sales = Sale.create([dict(data)])
if sales:
return sales[0].id
@app.route("/<database_name>/sale_don_confiao/sales", methods=["GET"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def sales(request, pool):
Sale = pool.get("sale.sale")
sales = Sale.search_read(
[],
order=[("id", "ASC")],
fields_names=[
"id",
"party.name",
"sale_date",
"shipment_address.street",
"untaxed_amount_cache",
"tax_amount_cache",
"total_amount_cache",
],
)
return sales
@app.route("/<database_name>/sale_don_confiao/payment_methods", methods=["GET"])
@allow_null_origin
@with_pool
@with_transaction()
@don_confiao_application
def payment_methods(request, pool):
if request.method == "GET":
payment_methods = [
{"text": "Efectivo", "value": "CASH"},
{"text": "Confiar", "value": "CONFIAR"},
{"text": "Bancolombia", "value": "BANCOLOMBIA"},
]
response_data = {"payment_methods": payment_methods}
return response_data, 200