diff --git a/lnbits/extensions/diagonalley/crud.py b/lnbits/extensions/diagonalley/crud.py index 402fb1f5..557b45d2 100644 --- a/lnbits/extensions/diagonalley/crud.py +++ b/lnbits/extensions/diagonalley/crud.py @@ -290,7 +290,7 @@ async def set_diagonalley_order_paid(payment_hash: str) -> Orders: async def update_diagonalley_product_stock(products): - q = "\n".join([f"""WHEN id='{p["product_id"]}' THEN {p["quantity"]}""" for p in products]) + q = "\n".join([f"""WHEN id='{p.product_id}' THEN quantity - {p.quantity}""" for p in products]) v = ",".join(["?"] * len(products)) await db.execute( @@ -301,7 +301,7 @@ async def update_diagonalley_product_stock(products): END) WHERE id IN ({v}); """, - (*[p["product_id"] for p in products],) + (*[p.product_id for p in products],) ) async def get_diagonalley_orders(wallet_ids: Union[str, List[str]]) -> List[Orders]: diff --git a/lnbits/extensions/diagonalley/tasks.py b/lnbits/extensions/diagonalley/tasks.py index 22ce0819..b913ae60 100644 --- a/lnbits/extensions/diagonalley/tasks.py +++ b/lnbits/extensions/diagonalley/tasks.py @@ -5,7 +5,12 @@ from loguru import logger from lnbits.core.models import Payment from lnbits.tasks import register_invoice_listener -from .crud import get_diagonalley_order_invoiceid, set_diagonalley_order_paid +from .crud import ( + get_diagonalley_order_details, + get_diagonalley_order_invoiceid, + set_diagonalley_order_paid, + update_diagonalley_product_stock, +) async def wait_for_paid_invoices(): @@ -30,6 +35,7 @@ async def on_invoice_paid(payment: Payment) -> None: await set_diagonalley_order_paid(payment.payment_hash) # deduct items sold from stock + details = await get_diagonalley_order_details(order.id) + await update_diagonalley_product_stock(details) - # TODO diff --git a/lnbits/extensions/diagonalley/views.py b/lnbits/extensions/diagonalley/views.py index df65c541..e2905b62 100644 --- a/lnbits/extensions/diagonalley/views.py +++ b/lnbits/extensions/diagonalley/views.py @@ -32,7 +32,7 @@ async def index(request: Request, user: User = Depends(check_user_exists)): @diagonalley_ext.get("/{stall_id}", response_class=HTMLResponse) async def display(request: Request, stall_id): - # test_qty = 99 + # test_qty = 10 # test = [ # {"product_id": "55vpVjWAuQExHsJxT28MYe", "quantity": test_qty}, # {"product_id": "f2eGNsEWgbLJbfAApd3Jw5", "quantity": test_qty},