fix: actualizar lógica de seguimiento de seriales en devoluciones y ventas

This commit is contained in:
Juan Felipe Zapata Moreno 2026-01-27 16:33:35 -06:00
parent 91f27c4e4a
commit 5f0d4ec28e
3 changed files with 17 additions and 14 deletions

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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