Product List and Query working
This commit is contained in:
parent
0c9ebd29d7
commit
94b63e4385
|
@ -35,7 +35,7 @@ def upgrade():
|
|||
"menu_categories",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("name", sa.Unicode(length=255), nullable=False),
|
||||
sa.Column("discount_limit", sa.Numeric(), nullable=False),
|
||||
sa.Column("discount_limit", sa.Numeric(precision=15, scale=5), nullable=False),
|
||||
sa.Column("is_active", sa.Boolean(), nullable=False),
|
||||
sa.Column("is_fixture", sa.Boolean(), nullable=False),
|
||||
sa.Column("sort_order", sa.Integer(), nullable=False),
|
||||
|
@ -107,7 +107,7 @@ def upgrade():
|
|||
"taxes",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("name", sa.Unicode(length=255), nullable=False),
|
||||
sa.Column("rate", sa.Numeric(), nullable=False),
|
||||
sa.Column("rate", sa.Numeric(precision=15, scale=5), nullable=False),
|
||||
sa.Column("is_fixture", sa.Boolean(), nullable=False),
|
||||
sa.PrimaryKeyConstraint("id", name=op.f("pk_taxes")),
|
||||
sa.UniqueConstraint("name", name=op.f("uq_taxes_name")),
|
||||
|
@ -163,7 +163,7 @@ def upgrade():
|
|||
"guest_book",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("customer_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("pax", sa.Numeric(), nullable=False),
|
||||
sa.Column("pax", sa.Integer, nullable=False),
|
||||
sa.Column("creation_date", sa.DateTime(timezone=True), nullable=False),
|
||||
sa.ForeignKeyConstraint(
|
||||
["customer_id"],
|
||||
|
@ -177,7 +177,7 @@ def upgrade():
|
|||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("name", sa.Unicode(length=255), nullable=False),
|
||||
sa.Column("show_in_bill", sa.Boolean(), nullable=False),
|
||||
sa.Column("price", sa.Numeric(), nullable=False),
|
||||
sa.Column("price", sa.Numeric(precision=15, scale=2), nullable=False),
|
||||
sa.Column("is_active", sa.Boolean(), nullable=False),
|
||||
sa.Column("modifier_category_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.ForeignKeyConstraint(
|
||||
|
@ -260,10 +260,10 @@ def upgrade():
|
|||
sa.Column("menu_category_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("sale_category_id", postgresql.UUID(as_uuid=True), nullable=True),
|
||||
sa.Column("sale_category_name", sa.Unicode(length=255), nullable=True),
|
||||
sa.Column("price", sa.Numeric(), nullable=False),
|
||||
sa.Column("price", sa.Numeric(precision=15, scale=2), nullable=False),
|
||||
sa.Column("has_happy_hour", sa.Boolean(), nullable=False),
|
||||
sa.Column("is_not_available", sa.Boolean(), nullable=False),
|
||||
sa.Column("quantity", sa.Numeric(), nullable=False),
|
||||
sa.Column("quantity", sa.Numeric(precision=15, scale=2), nullable=False),
|
||||
sa.Column("is_active", sa.Boolean(), nullable=False),
|
||||
sa.Column("sort_order", sa.Integer(), nullable=False),
|
||||
sa.ForeignKeyConstraint(
|
||||
|
@ -283,9 +283,9 @@ def upgrade():
|
|||
"vouchers",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("date", sa.DateTime(), nullable=False),
|
||||
sa.Column("pax", sa.Numeric(), nullable=False),
|
||||
sa.Column("bill_id", sa.Numeric(), nullable=True),
|
||||
sa.Column("kot_id", sa.Numeric(), nullable=False),
|
||||
sa.Column("pax", sa.Integer(), nullable=False),
|
||||
sa.Column("bill_id", sa.Integer(), nullable=True),
|
||||
sa.Column("kot_id", sa.Integer(), nullable=False),
|
||||
sa.Column("creation_date", sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column("last_edit_date", sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column("food_table_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
|
@ -314,7 +314,7 @@ def upgrade():
|
|||
"kots",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("voucher_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("code", sa.Numeric(), nullable=False),
|
||||
sa.Column("code", sa.Integer(), nullable=False),
|
||||
sa.Column("food_table_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("date", sa.DateTime(), nullable=False),
|
||||
sa.Column("user_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
|
@ -400,7 +400,7 @@ def upgrade():
|
|||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("voucher_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("settled", sa.Integer(), nullable=False),
|
||||
sa.Column("amount", sa.Numeric(), nullable=False),
|
||||
sa.Column("amount", sa.Numeric(precision=15, scale=2), nullable=False),
|
||||
sa.ForeignKeyConstraint(
|
||||
["settled"],
|
||||
["settle_options.id"],
|
||||
|
@ -420,13 +420,13 @@ def upgrade():
|
|||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("kot_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("product_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("quantity", sa.Numeric(), nullable=True),
|
||||
sa.Column("price", sa.Numeric(), nullable=True),
|
||||
sa.Column("quantity", sa.Numeric(precision=15, scale=2), nullable=True),
|
||||
sa.Column("price", sa.Numeric(precision=15, scale=2), nullable=True),
|
||||
sa.Column("is_happy_hour", sa.Boolean(), nullable=False),
|
||||
sa.Column("tax_rate", sa.Numeric(), nullable=True),
|
||||
sa.Column("tax_rate", sa.Numeric(precision=15, scale=5), nullable=True),
|
||||
sa.Column("tax_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("discount", sa.Numeric(), nullable=True),
|
||||
sa.Column("sort_order", sa.Numeric(), nullable=False),
|
||||
sa.Column("discount", sa.Numeric(precision=15, scale=5), nullable=True),
|
||||
sa.Column("sort_order", sa.Integer(), nullable=False),
|
||||
sa.ForeignKeyConstraint(["kot_id"], ["kots.id"], name=op.f("fk_inventories_kot_id_kots")),
|
||||
sa.ForeignKeyConstraint(
|
||||
["product_id"],
|
||||
|
@ -449,7 +449,7 @@ def upgrade():
|
|||
sa.Column("id", postgresql.UUID(as_uuid=True), server_default=sa.text("gen_random_uuid()"), nullable=False),
|
||||
sa.Column("inventory_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("modifier_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("price", sa.Numeric(), nullable=False),
|
||||
sa.Column("price", sa.Numeric(precision=15, scale=2), nullable=False),
|
||||
sa.ForeignKeyConstraint(
|
||||
["inventory_id"],
|
||||
["inventories.id"],
|
||||
|
|
|
@ -90,7 +90,7 @@ class Tax(Base):
|
|||
"id", UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"), default=uuid.uuid4
|
||||
)
|
||||
name = Column("name", Unicode(255), nullable=False, unique=True)
|
||||
rate = Column("rate", Numeric, nullable=False)
|
||||
rate = Column("rate", Numeric(precision=15, scale=5), nullable=False)
|
||||
is_fixture = Column("is_fixture", Boolean, nullable=False)
|
||||
|
||||
def __init__(self, name=None, rate=None, is_fixture=False, id_=None):
|
||||
|
@ -107,7 +107,7 @@ class MenuCategory(Base):
|
|||
"id", UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"), default=uuid.uuid4
|
||||
)
|
||||
name = Column("name", Unicode(255), nullable=False, unique=True)
|
||||
discount_limit = Column("discount_limit", Numeric, nullable=False)
|
||||
discount_limit = Column("discount_limit", Numeric(precision=15, scale=5), nullable=False)
|
||||
|
||||
is_active = Column("is_active", Boolean, nullable=False)
|
||||
is_fixture = Column("is_fixture", Boolean, nullable=False)
|
||||
|
@ -145,6 +145,7 @@ class ProductVersions(Base):
|
|||
"id", UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"), default=uuid.uuid4
|
||||
)
|
||||
version_id = Column("version_id", UUID(as_uuid=True), ForeignKey("product_histories.id"), nullable=False)
|
||||
histories = relationship("ProductHistory")
|
||||
|
||||
|
||||
modifier_categories_products = Table(
|
||||
|
@ -181,10 +182,10 @@ class ProductHistory(Base):
|
|||
ForeignKey("sale_categories.id"),
|
||||
nullable=False,
|
||||
)
|
||||
price = Column("price", Numeric, nullable=False)
|
||||
price = Column("price", Numeric(precision=15, scale=2), nullable=False)
|
||||
has_happy_hour = Column("has_happy_hour", Boolean, nullable=False)
|
||||
is_not_available = Column("is_not_available", Boolean, nullable=False)
|
||||
quantity = Column("quantity", Numeric, nullable=False)
|
||||
quantity = Column("quantity", Numeric(precision=15, scale=2), nullable=False)
|
||||
sort_order = Column("sort_order", Integer, nullable=False)
|
||||
|
||||
valid_from = Column("valid_from", Date(), nullable=True)
|
||||
|
@ -291,7 +292,7 @@ class Modifier(Base):
|
|||
)
|
||||
name = Column("name", Unicode(255), nullable=False, unique=True)
|
||||
show_in_bill = Column("show_in_bill", Boolean, nullable=False)
|
||||
price = Column("price", Numeric, nullable=False)
|
||||
price = Column("price", Numeric(precision=15, scale=2), nullable=False)
|
||||
is_active = Column("is_active", Boolean, nullable=False)
|
||||
modifier_category_id = Column(
|
||||
"modifier_category_id",
|
||||
|
|
|
@ -39,7 +39,7 @@ class GuestBook(Base):
|
|||
"id", UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"), default=uuid.uuid4
|
||||
)
|
||||
customer_id = Column("customer_id", UUID(as_uuid=True), ForeignKey("customers.id"), nullable=False)
|
||||
pax = Column("pax", Numeric, nullable=False)
|
||||
pax = Column("pax", Integer, nullable=False)
|
||||
date = Column("creation_date", DateTime(timezone=True), nullable=False)
|
||||
|
||||
customer = relationship("Customer")
|
||||
|
@ -98,7 +98,7 @@ class InventoryModifier(Base):
|
|||
)
|
||||
inventory_id = Column("inventory_id", UUID(as_uuid=True), ForeignKey("inventories.id"), nullable=False)
|
||||
modifier_id = Column("modifier_id", UUID(as_uuid=True), ForeignKey("modifiers.id"), nullable=False)
|
||||
price = Column("price", Numeric, nullable=False)
|
||||
price = Column("price", Numeric(precision=15, scale=2), nullable=False)
|
||||
|
||||
inventory = relationship("Inventory", backref="modifiers")
|
||||
modifier = relationship("Modifier")
|
||||
|
@ -117,9 +117,9 @@ class Voucher(Base):
|
|||
"id", UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"), default=uuid.uuid4
|
||||
)
|
||||
date = Column("date", DateTime, nullable=False, index=True)
|
||||
pax = Column("pax", Numeric, nullable=False)
|
||||
bill_id = Column("bill_id", Numeric)
|
||||
kot_id = Column("kot_id", Numeric, nullable=False, unique=True)
|
||||
pax = Column("pax", Integer, nullable=False)
|
||||
bill_id = Column("bill_id", Integer)
|
||||
kot_id = Column("kot_id", Integer, nullable=False, unique=True)
|
||||
creation_date = Column("creation_date", DateTime(timezone=True), nullable=False)
|
||||
last_edit_date = Column("last_edit_date", DateTime(timezone=True), nullable=False)
|
||||
food_table_id = Column(
|
||||
|
@ -222,7 +222,7 @@ class Kot(Base):
|
|||
nullable=False,
|
||||
index=True,
|
||||
)
|
||||
code = Column("code", Numeric, nullable=False, unique=True)
|
||||
code = Column("code", Integer, nullable=False, unique=True)
|
||||
food_table_id = Column(
|
||||
"food_table_id",
|
||||
UUID(as_uuid=True),
|
||||
|
@ -267,7 +267,7 @@ class Settlement(Base):
|
|||
index=True,
|
||||
)
|
||||
settled = Column("settled", Integer, ForeignKey("settle_options.id"), nullable=False)
|
||||
amount = Column("amount", Numeric, nullable=False)
|
||||
amount = Column("amount", Numeric(precision=15, scale=2), nullable=False)
|
||||
|
||||
settle_option = relationship("SettleOption")
|
||||
|
||||
|
@ -312,13 +312,13 @@ class Inventory(Base):
|
|||
)
|
||||
kot_id = Column("kot_id", UUID(as_uuid=True), ForeignKey("kots.id"), nullable=False, index=True)
|
||||
product_id = Column("product_id", UUID(as_uuid=True), ForeignKey("product_versions.id"), nullable=False)
|
||||
quantity = Column("quantity", Numeric)
|
||||
price = Column("price", Numeric)
|
||||
quantity = Column("quantity", Numeric(precision=15, scale=2))
|
||||
price = Column("price", Numeric(precision=15, scale=2))
|
||||
is_happy_hour = Column("is_happy_hour", Boolean, nullable=False)
|
||||
tax_rate = Column("tax_rate", Numeric)
|
||||
tax_rate = Column("tax_rate", Numeric(precision=15, scale=5))
|
||||
tax_id = Column("tax_id", UUID(as_uuid=True), ForeignKey("taxes.id"), nullable=False)
|
||||
discount = Column("discount", Numeric)
|
||||
sort_order = Column("sort_order", Numeric, nullable=False)
|
||||
discount = Column("discount", Numeric(precision=15, scale=5))
|
||||
sort_order = Column("sort_order", Integer, nullable=False)
|
||||
|
||||
kot = relationship("Kot", backref="inventories")
|
||||
tax = relationship("Tax", foreign_keys=tax_id)
|
||||
|
|
|
@ -10,7 +10,7 @@ from sqlalchemy.orm import Session
|
|||
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import MenuCategory, Product
|
||||
from ..models.master import MenuCategory, ProductVersions
|
||||
from ..schemas.auth import UserToken
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ from sqlalchemy.orm import Session
|
|||
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import MenuCategory, ModifierCategory, Product
|
||||
from ..models.master import MenuCategory, ModifierCategory, ProductVersions
|
||||
from ..schemas.auth import UserToken
|
||||
|
||||
|
||||
|
|
|
@ -1,16 +1,19 @@
|
|||
import uuid
|
||||
|
||||
from datetime import date, datetime, timedelta
|
||||
from typing import List, Optional
|
||||
|
||||
import barker.schemas.master as schemas
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Security, status
|
||||
from sqlalchemy import and_, or_
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy.orm import Session, joinedload
|
||||
from sqlalchemy.orm import Session, contains_eager, joinedload
|
||||
|
||||
from ..core.config import settings
|
||||
from ..core.security import get_current_active_user as get_user
|
||||
from ..db.session import SessionLocal
|
||||
from ..models.master import Product
|
||||
from ..models.master import MenuCategory, ProductHistory, ProductVersions, SaleCategory
|
||||
from ..schemas.auth import UserToken
|
||||
|
||||
|
||||
|
@ -70,7 +73,7 @@ def save(
|
|||
user: UserToken = Security(get_user, scopes=["products"]),
|
||||
):
|
||||
try:
|
||||
item = Product(
|
||||
item = ProductHistory(
|
||||
name=data.name,
|
||||
units=data.units,
|
||||
menu_category_id=data.menu_category.id_,
|
||||
|
@ -158,14 +161,35 @@ def show_blank(
|
|||
|
||||
|
||||
@router.get("/list")
|
||||
def show_list(db: Session = Depends(get_db), user: UserToken = Depends(get_user)):
|
||||
def show_list(d: str = None, db: Session = Depends(get_db), user: UserToken = Depends(get_user)):
|
||||
date_ = (
|
||||
(datetime.now() - timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES)).date()
|
||||
if d is None
|
||||
else datetime.strptime(d, "%d-%b-%Y").date()
|
||||
)
|
||||
return [
|
||||
product_info(item)
|
||||
for item in db.query(Product)
|
||||
.order_by(Product.menu_category_id)
|
||||
.order_by(Product.sort_order)
|
||||
.order_by(Product.name)
|
||||
.options(joinedload(Product.menu_category), joinedload(Product.sale_category))
|
||||
product_info(item.histories)
|
||||
for item in db.query(ProductVersions)
|
||||
.join(ProductVersions.histories)
|
||||
.join(ProductHistory.menu_category)
|
||||
.filter(
|
||||
and_(
|
||||
or_(ProductHistory.valid_from == None, ProductHistory.valid_from <= date_),
|
||||
or_(ProductHistory.valid_till == None, ProductHistory.valid_till >= date_),
|
||||
)
|
||||
)
|
||||
.order_by(MenuCategory.sort_order)
|
||||
.order_by(MenuCategory.name)
|
||||
.order_by(ProductHistory.sort_order)
|
||||
.order_by(ProductHistory.name)
|
||||
.options(
|
||||
joinedload(ProductVersions.histories, innerjoin=True),
|
||||
joinedload(ProductVersions.histories, ProductHistory.menu_category, innerjoin=True),
|
||||
joinedload(ProductVersions.histories, ProductHistory.sale_category, innerjoin=True),
|
||||
contains_eager(ProductVersions.histories),
|
||||
contains_eager(ProductVersions.histories, ProductHistory.menu_category),
|
||||
contains_eager(ProductVersions.histories, ProductHistory.sale_category),
|
||||
)
|
||||
.all()
|
||||
]
|
||||
|
||||
|
@ -173,58 +197,42 @@ def show_list(db: Session = Depends(get_db), user: UserToken = Depends(get_user)
|
|||
@router.get("/query")
|
||||
async def show_term(
|
||||
mc: uuid.UUID = None,
|
||||
a: bool = None,
|
||||
d: str = None,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: UserToken = Depends(get_user),
|
||||
):
|
||||
date_ = (
|
||||
(datetime.now() - timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES)).date()
|
||||
if d is None
|
||||
else datetime.strptime(d, "%d-%b-%Y").date()
|
||||
)
|
||||
list_ = []
|
||||
for item in (
|
||||
db.query(Product)
|
||||
.filter(Product.is_active == a, Product.menu_category_id == mc)
|
||||
.order_by(Product.sort_order, Product.name)
|
||||
db.query(ProductVersions)
|
||||
.join(ProductVersions.histories)
|
||||
.join(ProductVersions.histories, ProductHistory.sale_category)
|
||||
.join(ProductVersions.histories, ProductHistory.sale_category, SaleCategory.tax)
|
||||
.filter(
|
||||
and_(
|
||||
ProductHistory.menu_category_id == mc,
|
||||
or_(ProductHistory.valid_from == None, ProductHistory.valid_from <= date_),
|
||||
or_(ProductHistory.valid_till == None, ProductHistory.valid_till >= date_),
|
||||
)
|
||||
)
|
||||
.order_by(ProductHistory.sort_order, ProductHistory.name)
|
||||
.options(
|
||||
joinedload(ProductVersions.histories, innerjoin=True),
|
||||
joinedload(ProductVersions.histories, ProductHistory.sale_category, innerjoin=True),
|
||||
joinedload(ProductVersions.histories, ProductHistory.sale_category, SaleCategory.tax, innerjoin=True),
|
||||
contains_eager(ProductVersions.histories),
|
||||
contains_eager(ProductVersions.histories, ProductHistory.sale_category),
|
||||
contains_eager(ProductVersions.histories, ProductHistory.sale_category, SaleCategory.tax),
|
||||
)
|
||||
.all()
|
||||
):
|
||||
list_.append(
|
||||
{
|
||||
"id": item.id,
|
||||
"name": item.full_name,
|
||||
"saleCategory": {
|
||||
"id": item.sale_category_id,
|
||||
"name": item.sale_category.name,
|
||||
},
|
||||
"tax": {
|
||||
"id": item.sale_category.tax_id,
|
||||
"name": item.sale_category.tax.name,
|
||||
"rate": item.sale_category.tax.rate,
|
||||
},
|
||||
"price": item.price,
|
||||
"hasHappyHour": False,
|
||||
"isNotAvailable": item.is_not_available,
|
||||
"isActive": item.is_active,
|
||||
"sortOrder": item.sort_order,
|
||||
}
|
||||
)
|
||||
if item.has_happy_hour:
|
||||
list_.append(
|
||||
{
|
||||
"id": item.id,
|
||||
"name": "H H " + item.full_name,
|
||||
"saleCategory": {
|
||||
"id": item.sale_category_id,
|
||||
"name": item.sale_category.name,
|
||||
},
|
||||
"tax": {
|
||||
"id": item.sale_category.tax_id,
|
||||
"name": item.sale_category.tax.name,
|
||||
"rate": item.sale_category.tax.rate,
|
||||
},
|
||||
"price": item.price,
|
||||
"hasHappyHour": True,
|
||||
"isNotAvailable": item.is_not_available,
|
||||
"isActive": item.is_active,
|
||||
"sortOrder": item.sort_order,
|
||||
}
|
||||
)
|
||||
list_.append(query_product_info(item.histories, False))
|
||||
if item.histories.has_happy_hour:
|
||||
list_.append(query_product_info(item.histories, True))
|
||||
return list_
|
||||
|
||||
|
||||
|
@ -238,7 +246,27 @@ def show_id(
|
|||
return product_info(item)
|
||||
|
||||
|
||||
def product_info(item: Optional[Product]):
|
||||
def query_product_info(item: ProductHistory, happy_hour: bool):
|
||||
return {
|
||||
"id": item.id,
|
||||
"name": ("H H " if happy_hour else "") + item.full_name,
|
||||
"saleCategory": {
|
||||
"id": item.sale_category_id,
|
||||
"name": item.sale_category.name,
|
||||
},
|
||||
"tax": {
|
||||
"id": item.sale_category.tax_id,
|
||||
"name": item.sale_category.tax.name,
|
||||
"rate": item.sale_category.tax.rate,
|
||||
},
|
||||
"price": item.price,
|
||||
"hasHappyHour": happy_hour,
|
||||
"isNotAvailable": item.is_not_available,
|
||||
"sortOrder": item.sort_order,
|
||||
}
|
||||
|
||||
|
||||
def product_info(item: Optional[ProductHistory]):
|
||||
if item is None:
|
||||
return {
|
||||
"name": "",
|
||||
|
@ -263,6 +291,6 @@ def product_info(item: Optional[Product]):
|
|||
"price": item.price,
|
||||
"hasHappyHour": item.has_happy_hour,
|
||||
"isNotAvailable": item.is_not_available,
|
||||
"isActive": item.is_active,
|
||||
"isActive": True,
|
||||
"sortOrder": item.sort_order,
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ from sqlalchemy.sql.expression import func
|
|||
from ...core.config import settings
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models import Inventory, Kot, Product, Voucher, VoucherType
|
||||
from ...models import Inventory, Kot, ProductVersions, Voucher, VoucherType
|
||||
from ...schemas.auth import UserToken
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,14 @@ from sqlalchemy.orm import Session
|
|||
from ...core.config import settings
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models import Inventory, Kot, Product, SaleCategory, Voucher, VoucherType
|
||||
from ...models import (
|
||||
Inventory,
|
||||
Kot,
|
||||
ProductVersions,
|
||||
SaleCategory,
|
||||
Voucher,
|
||||
VoucherType,
|
||||
)
|
||||
from ...printing.discount_report import print_discount_report
|
||||
from ...schemas.auth import UserToken
|
||||
from ...schemas.discount_report import DiscountReport, DiscountReportItem
|
||||
|
|
|
@ -11,7 +11,7 @@ from ...models import (
|
|||
Inventory,
|
||||
Kot,
|
||||
MenuCategory,
|
||||
Product,
|
||||
ProductVersions,
|
||||
SaleCategory,
|
||||
Voucher,
|
||||
VoucherType,
|
||||
|
|
|
@ -13,7 +13,7 @@ from ...db.session import SessionLocal
|
|||
from ...models import (
|
||||
Inventory,
|
||||
Kot,
|
||||
Product,
|
||||
ProductVersions,
|
||||
SaleCategory,
|
||||
Settlement,
|
||||
SettleOption,
|
||||
|
|
|
@ -17,7 +17,7 @@ from ...models import (
|
|||
Inventory,
|
||||
InventoryModifier,
|
||||
Kot,
|
||||
Product,
|
||||
ProductVersions,
|
||||
Voucher,
|
||||
VoucherType,
|
||||
)
|
||||
|
|
|
@ -12,7 +12,14 @@ from sqlalchemy.orm import Session
|
|||
|
||||
from ...core.security import get_current_active_user as get_user
|
||||
from ...db.session import SessionLocal
|
||||
from ...models import Inventory, InventoryModifier, Kot, Product, Voucher, VoucherType
|
||||
from ...models import (
|
||||
Inventory,
|
||||
InventoryModifier,
|
||||
Kot,
|
||||
ProductVersions,
|
||||
Voucher,
|
||||
VoucherType,
|
||||
)
|
||||
from ...printing import print_bill, print_kot
|
||||
from ...routers.voucher import (
|
||||
check_permissions,
|
||||
|
|
Loading…
Reference in New Issue