feat: enhance sale detail retrieval by including trashed cart items and update related tests
This commit is contained in:
@@ -53,6 +53,7 @@ class AdminAppSaleService
|
|||||||
->where('tenant_codigo', $tenant->codigo)
|
->where('tenant_codigo', $tenant->codigo)
|
||||||
->with([
|
->with([
|
||||||
'items',
|
'items',
|
||||||
|
'cart' => fn ($query) => $query->withTrashed(),
|
||||||
'cart.items.catalogItem',
|
'cart.items.catalogItem',
|
||||||
'cart.items.variant.catalogItem',
|
'cart.items.variant.catalogItem',
|
||||||
'cart.items.variant.eventDates',
|
'cart.items.variant.eventDates',
|
||||||
@@ -188,6 +189,8 @@ class AdminAppSaleService
|
|||||||
|
|
||||||
protected function quantityExpression(): string
|
protected function quantityExpression(): string
|
||||||
{
|
{
|
||||||
|
// El fallback se resuelve en SQL para poder ordenar por cantidad antes de paginar;
|
||||||
|
// los ítems consolidados de la compra tienen prioridad sobre los del carrito de origen.
|
||||||
return <<<'SQL'
|
return <<<'SQL'
|
||||||
COALESCE(
|
COALESCE(
|
||||||
(SELECT SUM(compra_items.cantidad)
|
(SELECT SUM(compra_items.cantidad)
|
||||||
|
|||||||
@@ -317,6 +317,11 @@ class AdminAppSaleControllerTest extends TestCase
|
|||||||
$this->assertSame(Purchase::STATUS_CANCELLED, $purchase->fresh()->status);
|
$this->assertSame(Purchase::STATUS_CANCELLED, $purchase->fresh()->status);
|
||||||
$this->assertSoftDeleted('carritos', ['id' => $cart->id]);
|
$this->assertSoftDeleted('carritos', ['id' => $cart->id]);
|
||||||
$this->assertSame('converted', Cart::withTrashed()->findOrFail($cart->id)->status);
|
$this->assertSame('converted', Cart::withTrashed()->findOrFail($cart->id)->status);
|
||||||
|
|
||||||
|
$this->getJson("/api/v1/adminapp/tenant/sales/{$purchase->id}")
|
||||||
|
->assertOk()
|
||||||
|
->assertJsonPath('data.items.0.product', 'Entrada general')
|
||||||
|
->assertJsonPath('data.items.0.quantity', 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_an_adminapp_user_cannot_change_a_sale_from_another_tenant(): void
|
public function test_an_adminapp_user_cannot_change_a_sale_from_another_tenant(): void
|
||||||
|
|||||||
Reference in New Issue
Block a user