Update TintoreriaResource.php
This commit is contained in:
@@ -50,28 +50,49 @@ class TintoreriaResource extends Resource
|
||||
|
||||
Select::make('orden_produccion_id')
|
||||
->label('Orden de Producción')
|
||||
->options(fn () => \App\Models\OrdenProduccion::whereRaw('(
|
||||
select coalesce(sum(cantidad_recibida),0) from confeccions where confeccions.orden_produccion_id = orden_produccions.id
|
||||
) - (
|
||||
select coalesce(sum(cantidad_enviada),0) from tintorerias where tintorerias.orden_produccion_id = orden_produccions.id and tintorerias.fecha_recepcion is null
|
||||
) > 0')->pluck('numero_orden', 'id')->toArray())
|
||||
->options(fn () => \App\Models\OrdenProduccion::whereHas('ojales', function ($query) {
|
||||
$query->where('terminada', true);
|
||||
})->get()->mapWithKeys(function ($op) {
|
||||
// Calcular cantidad disponible de ojales terminados
|
||||
$cantidadOjalesTerminados = \App\Models\Ojal::where('orden_produccion_id', $op->id)
|
||||
->where('terminada', true)
|
||||
->sum('cantidad_enviada');
|
||||
|
||||
// Calcular cantidad ya enviada a tintorería
|
||||
$enviadasEnTint = \App\Models\Tintoreria::where('orden_produccion_id', $op->id)
|
||||
->whereNull('fecha_recepcion')
|
||||
->sum('cantidad_enviada');
|
||||
|
||||
// Calcular disponible
|
||||
$disponible = $cantidadOjalesTerminados - $enviadasEnTint;
|
||||
|
||||
if ($disponible > 0) {
|
||||
return [$op->id => "{$op->numero_orden} (Disponible: {$disponible})"];
|
||||
}
|
||||
return [];
|
||||
})->filter())
|
||||
->searchable()
|
||||
->preload()
|
||||
->reactive()
|
||||
->required()
|
||||
->afterStateUpdated(function ($state, $set) {
|
||||
if ($state) {
|
||||
$totalRecibido = \App\Models\Confeccion::where('orden_produccion_id', $state)->sum('cantidad_recibida');
|
||||
// Calcular cantidad disponible de ojales terminados
|
||||
$cantidadOjalesTerminados = \App\Models\Ojal::where('orden_produccion_id', $state)
|
||||
->where('terminada', true)
|
||||
->sum('cantidad_enviada');
|
||||
|
||||
$enviadasEnTint = \App\Models\Tintoreria::where('orden_produccion_id', $state)
|
||||
->whereNull('fecha_recepcion')
|
||||
->sum('cantidad_enviada');
|
||||
|
||||
$pending = max(0, (int)$totalRecibido - (int)$enviadasEnTint);
|
||||
$pending = max(0, (int)$cantidadOjalesTerminados - (int)$enviadasEnTint);
|
||||
|
||||
$set('cantidad_enviada', $pending ?: 0);
|
||||
$set('fecha_envio', now()->toDateString());
|
||||
}
|
||||
}),
|
||||
})
|
||||
->helperText('Solo se muestran órdenes con ojales/prensillas terminados'),
|
||||
|
||||
TextInput::make('tipo_proceso')
|
||||
->label('Tipo de proceso')
|
||||
|
||||
Reference in New Issue
Block a user