From dd81e3b3f7e4dd84c42dcdf4ca496506ce4b5c6f Mon Sep 17 00:00:00 2001 From: ncoronel Date: Fri, 21 Aug 2026 08:58:18 -0300 Subject: [PATCH] feat: enhance sale detail retrieval by including trashed cart items and update related tests --- app/Domains/Sale/Services/AdminAppSaleService.php | 3 +++ tests/Feature/Sale/AdminAppSaleControllerTest.php | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/app/Domains/Sale/Services/AdminAppSaleService.php b/app/Domains/Sale/Services/AdminAppSaleService.php index e771f8b..0704412 100644 --- a/app/Domains/Sale/Services/AdminAppSaleService.php +++ b/app/Domains/Sale/Services/AdminAppSaleService.php @@ -53,6 +53,7 @@ class AdminAppSaleService ->where('tenant_codigo', $tenant->codigo) ->with([ 'items', + 'cart' => fn ($query) => $query->withTrashed(), 'cart.items.catalogItem', 'cart.items.variant.catalogItem', 'cart.items.variant.eventDates', @@ -188,6 +189,8 @@ class AdminAppSaleService 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' COALESCE( (SELECT SUM(compra_items.cantidad) diff --git a/tests/Feature/Sale/AdminAppSaleControllerTest.php b/tests/Feature/Sale/AdminAppSaleControllerTest.php index e232999..23bd234 100644 --- a/tests/Feature/Sale/AdminAppSaleControllerTest.php +++ b/tests/Feature/Sale/AdminAppSaleControllerTest.php @@ -317,6 +317,11 @@ class AdminAppSaleControllerTest extends TestCase $this->assertSame(Purchase::STATUS_CANCELLED, $purchase->fresh()->status); $this->assertSoftDeleted('carritos', ['id' => $cart->id]); $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