61 lines
2.1 KiB
PHP
61 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\ProductVariantResource\Pages;
|
|
|
|
use App\Filament\Resources\ProductVariantResource;
|
|
use App\Models\ProductVariant;
|
|
use Filament\Actions;
|
|
use Filament\Resources\Pages\CreateRecord;
|
|
use Filament\Notifications\Notification;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class CreateProductVariant extends CreateRecord
|
|
{
|
|
protected static string $resource = ProductVariantResource::class;
|
|
|
|
protected function handleRecordCreation(array $data): ProductVariant
|
|
{
|
|
// Debug: Log de datos recibidos
|
|
Log::info('Datos recibidos en createProductVariant:', $data);
|
|
|
|
// Extraer datos de bodega
|
|
$bodegaId = $data['bodega_id'] ?? null;
|
|
$stockInicial = $data['stock_inicial'] ?? 0;
|
|
|
|
Log::info('Bodega ID extraído:', ['bodega_id' => $bodegaId]);
|
|
Log::info('Stock inicial extraído:', ['stock_inicial' => $stockInicial]);
|
|
|
|
// Remover campos que no pertenecen al modelo ProductVariant
|
|
unset($data['bodega_id'], $data['stock_inicial']);
|
|
|
|
// Asegurar que stock esté en 0 en el modelo principal
|
|
$data['stock'] = 0;
|
|
|
|
// Crear la variante
|
|
$variante = ProductVariant::create($data);
|
|
|
|
Log::info('Variante creada:', ['id' => $variante->id]);
|
|
|
|
// Asignar a la bodega si se especificó
|
|
if ($bodegaId) {
|
|
$variante->bodegas()->attach($bodegaId, ['stock' => $stockInicial]);
|
|
|
|
Log::info('Relación bodega creada:', [
|
|
'variante_id' => $variante->id,
|
|
'bodega_id' => $bodegaId,
|
|
'stock' => $stockInicial
|
|
]);
|
|
|
|
$bodegaNombre = \App\Models\Bodega::find($bodegaId)->nombre;
|
|
|
|
Notification::make()
|
|
->title('Variante creada exitosamente')
|
|
->body("La variante se asignó a la bodega '{$bodegaNombre}' con stock de {$stockInicial} unidades.")
|
|
->success()
|
|
->send();
|
|
}
|
|
|
|
return $variante;
|
|
}
|
|
}
|