From 5f0d4ec28e415ceee14d5cc5515351dc9b380d76 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Tue, 27 Jan 2026 16:33:35 -0600 Subject: [PATCH] =?UTF-8?q?fix:=20actualizar=20l=C3=B3gica=20de=20seguimie?= =?UTF-8?q?nto=20de=20seriales=20en=20devoluciones=20y=20ventas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../App/InventorySerialController.php | 4 +++ app/Services/ReturnService.php | 26 +++++++++---------- app/Services/SaleService.php | 1 - 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/App/InventorySerialController.php b/app/Http/Controllers/App/InventorySerialController.php index b61a161..46bf35e 100644 --- a/app/Http/Controllers/App/InventorySerialController.php +++ b/app/Http/Controllers/App/InventorySerialController.php @@ -76,6 +76,10 @@ public function store(Inventory $inventario, Request $request) 'notes' => $request->notes, ]); + if(!$inventario->track_serials) { + $inventario->update(['track_serials' => true]); + } + // Sincronizar stock $inventario->syncStock(); diff --git a/app/Services/ReturnService.php b/app/Services/ReturnService.php index 56a5fb0..c1a332d 100644 --- a/app/Services/ReturnService.php +++ b/app/Services/ReturnService.php @@ -172,21 +172,21 @@ public function cancelReturn(Returns $return): Returns return DB::transaction(function () use ($return) { // Restaurar seriales a estado vendido foreach ($return->details as $detail) { - if(!$detail->inventory->track_serials) { - $serials = InventorySerial::where('return_detail_id', $detail->id)->get(); + if ($detail->inventory->track_serials) { + $serials = InventorySerial::where('return_detail_id', $detail->id)->get(); - foreach ($serials as $serial) { - $serial->update([ - 'status' => 'vendido', - 'sale_detail_id' => $detail->sale_detail_id, - 'return_detail_id' => null, - ]); - } - // Sincronizar stock - $detail->inventory->syncStock(); + foreach ($serials as $serial) { + $serial->update([ + 'status' => 'vendido', + 'sale_detail_id' => $detail->sale_detail_id, + 'return_detail_id' => null, + ]); + } + // Sincronizar stock + $detail->inventory->syncStock(); } else { - // Restaurar stock numérico - $detail->inventory->increment('stock', $detail->quantity_returned); + // Revertir stock numérico (la devolución lo había incrementado) + $detail->inventory->decrement('stock', $detail->quantity_returned); } } diff --git a/app/Services/SaleService.php b/app/Services/SaleService.php index 66402e8..934f29a 100644 --- a/app/Services/SaleService.php +++ b/app/Services/SaleService.php @@ -49,7 +49,6 @@ public function createSale(array $data) 'quantity' => $item['quantity'], 'unit_price' => $item['unit_price'], 'subtotal' => $item['subtotal'], - 'serial_numbers' => $item['serial_numbers'] ?? null, // Si vienen del frontend ]); // Obtener el inventario