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