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