64 lines
2.3 KiB
PHP
64 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\OjalPresillaResource\Pages;
|
|
|
|
use App\Filament\Resources\OjalPresillaResource;
|
|
use Filament\Resources\Pages\CreateRecord;
|
|
|
|
class CreateOjalPresilla extends CreateRecord
|
|
{
|
|
protected static string $resource = OjalPresillaResource::class;
|
|
|
|
protected static ?string $title = 'Crear';
|
|
|
|
protected function handleRecordCreation(array $data): \Illuminate\Database\Eloquent\Model
|
|
{
|
|
$distribuciones = $data['distribuciones'] ?? [];
|
|
$tipo = $data['tipo'] ?? 'accesorio';
|
|
$ordenProduccionId = $data['orden_produccion_id'];
|
|
$cantidadTotal = $data['cantidad_enviada'];
|
|
$terminada = $data['terminada'] ?? false;
|
|
|
|
// Validar que las distribuciones sumen la cantidad total
|
|
$sumaDistribucion = array_sum(array_column($distribuciones, 'cantidad'));
|
|
if ($sumaDistribucion != $cantidadTotal) {
|
|
throw \Illuminate\Validation\ValidationException::withMessages([
|
|
'distribuciones' => "La suma de las distribuciones ({$sumaDistribucion}) debe ser igual a la cantidad total ({$cantidadTotal})."
|
|
]);
|
|
}
|
|
|
|
// Crear un registro por cada proveedor
|
|
$primerRegistro = null;
|
|
$cantidadRegistros = count($distribuciones);
|
|
foreach ($distribuciones as $distribucion) {
|
|
$registro = \App\Models\Ojal::create([
|
|
'proveedor_id' => $distribucion['proveedor_id'],
|
|
'orden_produccion_id' => $ordenProduccionId,
|
|
'tipo' => $tipo,
|
|
'fecha_envio' => now(),
|
|
'cantidad_enviada' => $distribucion['cantidad'],
|
|
'terminada' => $terminada,
|
|
]);
|
|
|
|
if (!$primerRegistro) {
|
|
$primerRegistro = $registro;
|
|
}
|
|
}
|
|
|
|
// Notificación de éxito
|
|
\Filament\Notifications\Notification::make()
|
|
->title('Registros creados exitosamente')
|
|
->body("Se crearon {$cantidadRegistros} registro(s) para los proveedores.")
|
|
->success()
|
|
->send();
|
|
|
|
// Retornar el primer registro para que Filament no falle
|
|
return $primerRegistro;
|
|
}
|
|
|
|
protected function getRedirectUrl(): string
|
|
{
|
|
return static::getResource()::getUrl('index');
|
|
}
|
|
}
|