up
This commit is contained in:
@@ -35,7 +35,7 @@ class TintoreriaResource extends Resource
|
|||||||
public static function form(Form $form): Form
|
public static function form(Form $form): Form
|
||||||
{
|
{
|
||||||
return $form->schema([
|
return $form->schema([
|
||||||
Section::make('Proceso de Tintorería')
|
Section::make('Datos iniciales')
|
||||||
->schema([
|
->schema([
|
||||||
Select::make('proveedor_id')
|
Select::make('proveedor_id')
|
||||||
->label('Tintorería')
|
->label('Tintorería')
|
||||||
@@ -46,7 +46,6 @@ class TintoreriaResource extends Resource
|
|||||||
)
|
)
|
||||||
->searchable()
|
->searchable()
|
||||||
->preload()
|
->preload()
|
||||||
|
|
||||||
->required(),
|
->required(),
|
||||||
|
|
||||||
Select::make('orden_produccion_id')
|
Select::make('orden_produccion_id')
|
||||||
@@ -54,28 +53,51 @@ class TintoreriaResource extends Resource
|
|||||||
->relationship('ordenProduccion', 'numero_orden')
|
->relationship('ordenProduccion', 'numero_orden')
|
||||||
->searchable()
|
->searchable()
|
||||||
->preload()
|
->preload()
|
||||||
|
->reactive()
|
||||||
->required(),
|
->required()
|
||||||
|
->afterStateUpdated(function ($state, $set) {
|
||||||
|
if ($state) {
|
||||||
|
$sum = \App\Models\Confeccion::where('orden_produccion_id', $state)->sum('cantidad_recibida');
|
||||||
|
$set('cantidad_enviada', $sum ?: 0);
|
||||||
|
$set('fecha_envio', now()->toDateString());
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
TextInput::make('tipo_proceso')
|
TextInput::make('tipo_proceso')
|
||||||
->label('Tipo de proceso')
|
->label('Tipo de proceso')
|
||||||
->required(),
|
->required(),
|
||||||
|
|
||||||
DatePicker::make('fecha_envio')
|
DatePicker::make('fecha_envio')
|
||||||
->required(),
|
->required()
|
||||||
|
->default(now()),
|
||||||
|
|
||||||
TextInput::make('cantidad_enviada')
|
TextInput::make('cantidad_enviada')
|
||||||
->numeric()
|
->numeric()
|
||||||
->required(),
|
->required()
|
||||||
|
->reactive()
|
||||||
|
->helperText(fn ($get) => 'Sugerido: ' . (\App\Models\Confeccion::where('orden_produccion_id', $get('orden_produccion_id'))->sum('cantidad_recibida') ?: 0)),
|
||||||
|
])
|
||||||
|
->columns(2),
|
||||||
|
|
||||||
|
Section::make('Recepción')
|
||||||
|
->schema([
|
||||||
DatePicker::make('fecha_recepcion'),
|
DatePicker::make('fecha_recepcion'),
|
||||||
|
|
||||||
TextInput::make('cantidad_recibida')
|
TextInput::make('cantidad_recibida')
|
||||||
->numeric(),
|
->numeric()
|
||||||
|
->reactive()
|
||||||
|
->afterStateUpdated(function ($state, $set, $get) {
|
||||||
|
$cantidad_enviada = $get('cantidad_enviada') ?? 0;
|
||||||
|
$cantidad_recibida = $state ?? 0;
|
||||||
|
$perdidas = $cantidad_enviada - $cantidad_recibida;
|
||||||
|
if ($perdidas < 0) $perdidas = 0;
|
||||||
|
$set('perdidas', $perdidas);
|
||||||
|
}),
|
||||||
|
|
||||||
TextInput::make('perdidas')
|
TextInput::make('perdidas')
|
||||||
->disabled()
|
->numeric()
|
||||||
->dehydrated(false),
|
->readOnly()
|
||||||
|
->default(0),
|
||||||
|
|
||||||
Textarea::make('observaciones')
|
Textarea::make('observaciones')
|
||||||
->columnSpanFull(),
|
->columnSpanFull(),
|
||||||
|
|||||||
@@ -33,9 +33,25 @@ class Tintoreria extends Model
|
|||||||
protected static function booted()
|
protected static function booted()
|
||||||
{
|
{
|
||||||
static::saving(function ($tintoreria) {
|
static::saving(function ($tintoreria) {
|
||||||
|
// Fecha de envío por defecto
|
||||||
|
if (! $tintoreria->fecha_envio) {
|
||||||
|
$tintoreria->fecha_envio = now();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validación: cantidad_enviada no puede exceder la suma de confecciones recibidas de la OP
|
||||||
|
if ($tintoreria->cantidad_enviada !== null && $tintoreria->orden_produccion_id) {
|
||||||
|
$sum = \App\Models\Confeccion::where('orden_produccion_id', $tintoreria->orden_produccion_id)->sum('cantidad_recibida');
|
||||||
|
if ($sum && $tintoreria->cantidad_enviada > $sum) {
|
||||||
|
throw \Illuminate\Validation\ValidationException::withMessages([
|
||||||
|
'cantidad_enviada' => 'La cantidad enviada no puede exceder la cantidad recibida en Confección (' . $sum . ').',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($tintoreria->cantidad_recibida !== null) {
|
if ($tintoreria->cantidad_recibida !== null) {
|
||||||
$tintoreria->perdidas =
|
$tintoreria->perdidas =
|
||||||
$tintoreria->cantidad_enviada - $tintoreria->cantidad_recibida;
|
$tintoreria->cantidad_enviada - $tintoreria->cantidad_recibida;
|
||||||
|
if ($tintoreria->perdidas < 0) $tintoreria->perdidas = 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user