feat: mejorar validación de seriales en salidas y traspasos de inventario
This commit is contained in:
parent
6ea9665b0b
commit
115a033510
@ -231,7 +231,7 @@ public function bulkExit(array $data): array
|
|||||||
$quantity = (float) $productData['quantity'];
|
$quantity = (float) $productData['quantity'];
|
||||||
$serialNumbers = $productData['serial_numbers'] ?? null;
|
$serialNumbers = $productData['serial_numbers'] ?? null;
|
||||||
|
|
||||||
// **NUEVO**: Solo exigir seriales si track_serials Y unidad NO permite decimales
|
// Solo exigir seriales si track_serials Y unidad NO permite decimales
|
||||||
$requiresSerials = $inventory->track_serials && !$inventory->unitOfMeasure?->allows_decimals;
|
$requiresSerials = $inventory->track_serials && !$inventory->unitOfMeasure?->allows_decimals;
|
||||||
|
|
||||||
// Validar y procesar seriales si el producto los requiere
|
// Validar y procesar seriales si el producto los requiere
|
||||||
@ -247,7 +247,7 @@ public function bulkExit(array $data): array
|
|||||||
$serialNumbers = array_values($serialNumbers);
|
$serialNumbers = array_values($serialNumbers);
|
||||||
|
|
||||||
$serialCount = count($serialNumbers);
|
$serialCount = count($serialNumbers);
|
||||||
if ($serialCount !== $quantity) {
|
if ($serialCount != $quantity) {
|
||||||
throw new \Exception("El producto '{$inventory->name}': cantidad de seriales ({$serialCount}) no coincide con cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
throw new \Exception("El producto '{$inventory->name}': cantidad de seriales ({$serialCount}) no coincide con cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,11 +261,11 @@ public function bulkExit(array $data): array
|
|||||||
throw new \Exception("Producto '{$inventory->name}': El serial '{$serialNumber}' no pertenece a este producto.");
|
throw new \Exception("Producto '{$inventory->name}': El serial '{$serialNumber}' no pertenece a este producto.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($serial->status !== 'disponible') {
|
if ($serial->status != 'disponible') {
|
||||||
throw new \Exception("Producto '{$inventory->name}': El serial '{$serialNumber}' no está disponible (estado: {$serial->status}).");
|
throw new \Exception("Producto '{$inventory->name}': El serial '{$serialNumber}' no está disponible (estado: {$serial->status}).");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($serial->warehouse_id !== $warehouse->id) {
|
if ($serial->warehouse_id != $warehouse->id) {
|
||||||
throw new \Exception("Producto '{$inventory->name}': El serial '{$serialNumber}' no está en el almacén seleccionado.");
|
throw new \Exception("Producto '{$inventory->name}': El serial '{$serialNumber}' no está en el almacén seleccionado.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -334,7 +334,7 @@ public function bulkTransfer(array $data): array
|
|||||||
$serialNumbers = array_values($serialNumbers);
|
$serialNumbers = array_values($serialNumbers);
|
||||||
|
|
||||||
$serialCount = count($serialNumbers);
|
$serialCount = count($serialNumbers);
|
||||||
if ($serialCount !== $quantity) {
|
if ($serialCount != $quantity) {
|
||||||
throw new \Exception("El producto '{$inventory->name}': cantidad de seriales ({$serialCount}) no coincide con cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
throw new \Exception("El producto '{$inventory->name}': cantidad de seriales ({$serialCount}) no coincide con cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -425,10 +425,10 @@ public function exit(array $data): InventoryMovement
|
|||||||
$quantity = (float) $data['quantity'];
|
$quantity = (float) $data['quantity'];
|
||||||
$serialNumbers = $data['serial_numbers'] ?? null;
|
$serialNumbers = $data['serial_numbers'] ?? null;
|
||||||
|
|
||||||
// **NUEVO**: Cargar la unidad de medida
|
// Cargar la unidad de medida
|
||||||
$inventory->load('unitOfMeasure');
|
$inventory->load('unitOfMeasure');
|
||||||
|
|
||||||
// **CAMBIO**: Solo validar seriales si track_serials Y la unidad NO permite decimales
|
// Solo validar seriales si track_serials Y la unidad NO permite decimales
|
||||||
$requiresSerials = $inventory->track_serials && !$inventory->unitOfMeasure?->allows_decimals;
|
$requiresSerials = $inventory->track_serials && !$inventory->unitOfMeasure?->allows_decimals;
|
||||||
|
|
||||||
// Validar y procesar seriales si el producto los requiere
|
// Validar y procesar seriales si el producto los requiere
|
||||||
@ -444,7 +444,7 @@ public function exit(array $data): InventoryMovement
|
|||||||
$serialNumbers = array_values($serialNumbers);
|
$serialNumbers = array_values($serialNumbers);
|
||||||
|
|
||||||
$serialCount = count($serialNumbers);
|
$serialCount = count($serialNumbers);
|
||||||
if ($serialCount !== $quantity) {
|
if ($serialCount != $quantity) {
|
||||||
throw new \Exception("La cantidad de seriales ({$serialCount}) no coincide con la cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
throw new \Exception("La cantidad de seriales ({$serialCount}) no coincide con la cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -468,7 +468,7 @@ public function exit(array $data): InventoryMovement
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Eliminar los seriales (salida definitiva)
|
// Eliminar los seriales (salida definitiva)
|
||||||
InventorySerial::whereIn('serial_numbers', $serialNumbers)
|
InventorySerial::whereIn('serial_number', $serialNumbers)
|
||||||
->where('inventory_id', $inventory->id)
|
->where('inventory_id', $inventory->id)
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
@ -510,7 +510,7 @@ public function transfer(array $data): InventoryMovement
|
|||||||
throw new \Exception('No se puede traspasar al mismo almacén.');
|
throw new \Exception('No se puede traspasar al mismo almacén.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// **NUEVO**: Solo exigir seriales si track_serials Y unidad NO permite decimales
|
// Solo exigir seriales si track_serials Y unidad NO permite decimales
|
||||||
$requiresSerials = $inventory->track_serials && !$inventory->unitOfMeasure?->allows_decimals;
|
$requiresSerials = $inventory->track_serials && !$inventory->unitOfMeasure?->allows_decimals;
|
||||||
|
|
||||||
// Validar y procesar seriales si el producto los requiere
|
// Validar y procesar seriales si el producto los requiere
|
||||||
@ -526,7 +526,7 @@ public function transfer(array $data): InventoryMovement
|
|||||||
$serialNumbers = array_values($serialNumbers);
|
$serialNumbers = array_values($serialNumbers);
|
||||||
|
|
||||||
$serialCount = count($serialNumbers);
|
$serialCount = count($serialNumbers);
|
||||||
if ($serialCount !== $quantity) {
|
if ($serialCount != $quantity) {
|
||||||
throw new \Exception("La cantidad de seriales ({$serialCount}) no coincide con la cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
throw new \Exception("La cantidad de seriales ({$serialCount}) no coincide con la cantidad ({$quantity}). Ajuste la cantidad o agregue/elimine seriales.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user