fix(purchase): enhance handling of cart items for created and pending payment purchases

This commit is contained in:
2026-08-20 17:02:50 -03:00
parent 318e6559cb
commit 98d502a8ef
5 changed files with 145 additions and 9 deletions

View File

@@ -151,7 +151,18 @@ class AdminAppSaleService
$filters['status'] ?? null,
fn (Builder $query, string $status): Builder => $query->where('status', $status)
)
->withSum('items as quantity', 'cantidad')
->select('compras.*')
->selectRaw(
'CASE WHEN compras.status IN (?, ?) '
.'THEN (SELECT COALESCE(SUM(cart_items.cantidad), 0) FROM carrito_items AS cart_items '
.'WHERE cart_items.cart_id = compras.cart_id) '
.'ELSE (SELECT COALESCE(SUM(purchase_items.cantidad), 0) FROM compra_items AS purchase_items '
.'WHERE purchase_items.compra_id = compras.id) END AS quantity',
[
Purchase::STATUS_CREATED,
Purchase::STATUS_PENDING_PAYMENT,
],
)
->withCount('tickets')
->orderBy($sortColumns[$sortBy], $sortDirection)
->when($sortBy !== 'id', fn (Builder $query): Builder => $query->orderByDesc('id'));