diff --git a/barker/barker/routers/product.py b/barker/barker/routers/product.py
index 901b193..9875d7a 100644
--- a/barker/barker/routers/product.py
+++ b/barker/barker/routers/product.py
@@ -4,7 +4,7 @@ from datetime import date, timedelta
from decimal import Decimal
from fastapi import APIRouter, Depends, HTTPException, Security, status
-from sqlalchemy import and_, insert, or_, select, update
+from sqlalchemy import Date, and_, insert, or_, select, update
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import Session, contains_eager
from sqlalchemy.sql.functions import count, func
@@ -250,8 +250,8 @@ def delete_route(
)
)
).scalar_one()
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
billed = db.execute(
select(count(Inventory.id))
diff --git a/barker/barker/routers/reports/beer_sale_report.py b/barker/barker/routers/reports/beer_sale_report.py
index 88f01fd..675ab38 100644
--- a/barker/barker/routers/reports/beer_sale_report.py
+++ b/barker/barker/routers/reports/beer_sale_report.py
@@ -2,7 +2,7 @@ from datetime import date, timedelta
from operator import or_
from fastapi import APIRouter, Depends, Security
-from sqlalchemy import and_
+from sqlalchemy import Date, and_
from sqlalchemy.sql.expression import func, select
from ...core.config import settings
@@ -33,19 +33,19 @@ def beer_consumption(
user: UserToken = Security(get_user, scopes=["beer-sale-report"]),
) -> BeerConsumptionReport:
check_audit_permission(start_date, user.permissions)
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
sum_ = func.sum(Inventory.quantity * ProductVersion.quantity).label("sum")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= Voucher.date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= Voucher.date,
+ ProductVersion.valid_till >= day,
),
)
query = (
diff --git a/barker/barker/routers/reports/discount_report.py b/barker/barker/routers/reports/discount_report.py
index 95c2af4..b9476f6 100644
--- a/barker/barker/routers/reports/discount_report.py
+++ b/barker/barker/routers/reports/discount_report.py
@@ -3,7 +3,7 @@ import uuid
from datetime import date, timedelta
from fastapi import APIRouter, Cookie, Depends, Security
-from sqlalchemy import and_, func, or_, select
+from sqlalchemy import Date, and_, func, or_, select
from sqlalchemy.orm import Session
from ...core.config import settings
@@ -41,19 +41,19 @@ def discount_report(
def get_discount_report(start_date: date, finish_date: date, db: Session) -> list[DiscountReportItem]:
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
amount = func.sum(Inventory.quantity * Inventory.effective_price * Inventory.discount).label("Amount")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= Voucher.date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= Voucher.date,
+ ProductVersion.valid_till >= day,
),
)
list_ = db.execute(
diff --git a/barker/barker/routers/reports/menu_engineering_report.py b/barker/barker/routers/reports/menu_engineering_report.py
index d28cc49..9377ff1 100644
--- a/barker/barker/routers/reports/menu_engineering_report.py
+++ b/barker/barker/routers/reports/menu_engineering_report.py
@@ -4,7 +4,7 @@ from datetime import date, timedelta
from decimal import Decimal
from fastapi import APIRouter, Cookie, Depends, Security
-from sqlalchemy import and_, func, nulls_last, or_, select
+from sqlalchemy import Date, and_, func, nulls_last, or_, select
from sqlalchemy.orm import Session
from ...core.config import settings
@@ -44,18 +44,18 @@ def menu_engineering_report_view(
def menu_engineering_report(start_date: date, finish_date: date, db: Session) -> list[MeItem]:
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= start_date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= finish_date,
+ ProductVersion.valid_till >= day,
),
)
list_ = db.execute(
diff --git a/barker/barker/routers/reports/product_sale_report.py b/barker/barker/routers/reports/product_sale_report.py
index 120188f..5aa6153 100644
--- a/barker/barker/routers/reports/product_sale_report.py
+++ b/barker/barker/routers/reports/product_sale_report.py
@@ -4,7 +4,7 @@ from datetime import date, timedelta
from typing import Annotated
from fastapi import APIRouter, Cookie, Depends, Query, Security
-from sqlalchemy import and_, func, or_, select
+from sqlalchemy import Date, and_, func, or_, select
from sqlalchemy.orm import Session
from ...core.config import settings
@@ -49,18 +49,18 @@ def product_sale_report_view(
def product_sale_report(
start_date: date, finish_date: date, id_: uuid.UUID | None, db: Session
) -> list[ProductSaleReportItem]:
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= Voucher.date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= Voucher.date,
+ ProductVersion.valid_till >= day,
),
)
query = (
diff --git a/barker/barker/routers/reports/sale_report.py b/barker/barker/routers/reports/sale_report.py
index 47a98f2..23ea0fe 100644
--- a/barker/barker/routers/reports/sale_report.py
+++ b/barker/barker/routers/reports/sale_report.py
@@ -5,7 +5,7 @@ from decimal import Decimal
from typing import Annotated
from fastapi import APIRouter, Cookie, Depends, Query, Security
-from sqlalchemy import and_, func, or_, select
+from sqlalchemy import Date, and_, func, or_, select
from sqlalchemy.orm import Session
from ...core.config import settings
@@ -57,18 +57,18 @@ def get_sale_report(
def get_sale(start_date: date, finish_date: date, id_: uuid.UUID | None, db: Session) -> list[SaleReportItem]:
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= Voucher.date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= Voucher.date,
+ ProductVersion.valid_till >= day,
),
)
query = (
@@ -89,6 +89,7 @@ def get_sale(start_date: date, finish_date: date, id_: uuid.UUID | None, db: Ses
if id_:
query = query.where(FoodTable.section_id == id_)
query = query.group_by(SaleCategory.name).order_by(SaleCategory.name)
+ print(query)
list_ = db.execute(query).all()
total = Decimal(0)
info = []
@@ -99,8 +100,8 @@ def get_sale(start_date: date, finish_date: date, id_: uuid.UUID | None, db: Ses
def get_settlements(start_date: date, finish_date: date, id_: uuid.UUID | None, db: Session) -> list[SaleReportItem]:
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
query = (
select(SettleOption.name, func.sum(Settlement.amount))
diff --git a/barker/barker/routers/temporal_product.py b/barker/barker/routers/temporal_product.py
index 134534e..153a610 100644
--- a/barker/barker/routers/temporal_product.py
+++ b/barker/barker/routers/temporal_product.py
@@ -3,7 +3,7 @@ import uuid
from datetime import date, timedelta
from fastapi import APIRouter, HTTPException, Security, status
-from sqlalchemy import and_, delete, distinct, or_, select, update
+from sqlalchemy import Date, and_, delete, distinct, or_, select, update
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import Session, contains_eager
from sqlalchemy.sql.functions import count, func
@@ -96,8 +96,8 @@ def check_product(old: ProductVersion, data: schemas.Product, db: Session) -> No
def check_inventories(old: ProductVersion, data: schemas.Product, db: Session) -> None:
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
if data.valid_from is not None and (old.valid_from or date.min) < data.valid_from:
@@ -125,8 +125,8 @@ def check_inventories(old: ProductVersion, data: schemas.Product, db: Session) -
def update_inventories(old: ProductVersion, data: schemas.Product, db: Session) -> None:
if old.product_id != data.id_:
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
invs = select(Inventory.id).join(Inventory.kot).join(Kot.voucher).where(Inventory.product_id == old.product_id)
if old.valid_from is not None:
@@ -153,8 +153,8 @@ def delete_route(
valid_from, valid_till = db.execute(
select(ProductVersion.valid_from, ProductVersion.valid_till).where(ProductVersion.id == version_id)
).one()
- day = func.date_trunc(
- "day", Voucher.date + timedelta(minutes=settings.NEW_DAY_OFFSET_MINUTES - settings.TIMEZONE_OFFSET_MINUTES)
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
).label("day")
query = select(count(Inventory.id)).join(Inventory.kot).join(Kot.voucher).where(Inventory.product_id == id_)
if valid_from is not None:
diff --git a/barker/barker/routers/voucher/show.py b/barker/barker/routers/voucher/show.py
index a0ea7de..8c68eed 100644
--- a/barker/barker/routers/voucher/show.py
+++ b/barker/barker/routers/voucher/show.py
@@ -1,10 +1,13 @@
import re
import uuid
+from datetime import timedelta
+
from fastapi import APIRouter, HTTPException, Security, status
-from sqlalchemy import and_, or_, select
+from sqlalchemy import Date, and_, func, or_, select
from sqlalchemy.orm import Session, contains_eager
+from ...core.config import settings
from ...core.security import get_current_active_user as get_user
from ...db.session import SessionFuture
from ...models.bill import Bill
@@ -48,15 +51,18 @@ def from_id(
user: UserToken = Security(get_user),
) -> VoucherOut:
with SessionFuture() as db:
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
+ ).label("day")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= Voucher.date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= Voucher.date,
+ ProductVersion.valid_till >= day,
),
)
item: Voucher = (
@@ -91,15 +97,18 @@ def from_bill(
user: UserToken = Security(get_user),
) -> VoucherOut:
with SessionFuture() as db:
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
+ ).label("day")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= Voucher.date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= Voucher.date,
+ ProductVersion.valid_till >= day,
),
)
match = re.compile(r"^(\w+)-(\d+)$").match(id_)
@@ -150,15 +159,18 @@ def from_table(
user: UserToken = Security(get_user),
) -> VoucherOut | VoucherBlank:
with SessionFuture() as db:
+ day = func.cast(
+ Voucher.date + timedelta(minutes=settings.TIMEZONE_OFFSET_MINUTES - settings.NEW_DAY_OFFSET_MINUTES), Date
+ ).label("day")
product_version_onclause = and_(
ProductVersion.product_id == Product.id,
or_(
ProductVersion.valid_from == None, # noqa: E711
- ProductVersion.valid_from <= Voucher.date,
+ ProductVersion.valid_from <= day,
),
or_(
ProductVersion.valid_till == None, # noqa: E711
- ProductVersion.valid_till >= Voucher.date,
+ ProductVersion.valid_till >= day,
),
)
guest = None if g is None else db.execute(select(GuestBook).where(GuestBook.id == g)).scalar_one()
diff --git a/bookie/src/app/auth/login/login.component.html b/bookie/src/app/auth/login/login.component.html
index 14a5868..1683602 100644
--- a/bookie/src/app/auth/login/login.component.html
+++ b/bookie/src/app/auth/login/login.component.html
@@ -13,8 +13,8 @@