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 786cf2db52
commit eafb02ffd5
5 changed files with 144 additions and 9 deletions

View File

@@ -153,7 +153,17 @@ class AdminAppSaleService
fn (Builder $query, string $status): Builder => $query->where('status', $status)
)
->select('compras.*')
->selectRaw($this->quantityExpression())
->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'));