Files
pos_heidiver/app/Filament/Resources/OrdenProduccionResource/Pages/VerFlujoOjalesPresillas.php
T
2026-02-04 16:35:34 -05:00

87 lines
3.2 KiB
PHP

<?php
namespace App\Filament\Resources\OrdenProduccionResource\Pages;
use App\Filament\Resources\OrdenProduccionResource;
use App\Models\OrdenProduccion;
use Filament\Resources\Pages\Page;
use Filament\Infolists\Infolist;
use Filament\Infolists\Components\{Section, TextEntry, Grid};
class VerFlujoOjalesPresillas extends Page
{
protected static string $resource = OrdenProduccionResource::class;
protected static string $view = 'filament.resources.orden-produccion-resource.pages.ver-flujo-ojales-presillas';
protected static ?string $title = 'Flujo de Ojales y Prensillas';
public OrdenProduccion $record;
public function mount(int | string $record): void
{
$this->record = OrdenProduccion::findOrFail($record);
}
public function getFlujoData(): array
{
$op = $this->record;
// Datos de Confección
$cantidadRecibidaConfeccion = $op->confecciones()
->whereNotNull('fecha_recepcion')
->sum('cantidad_recibida');
// Datos de Ojales
$ojales = $op->ojales;
$ojalesData = $ojales->map(function ($ojal) {
return [
'cantidad' => $ojal->cantidad_enviada,
'proveedor' => $ojal->proveedor?->nombre ?? 'Sin proveedor',
'operario' => $ojal->usuarioAsignado?->name ?? '-',
'terminado' => $ojal->terminada,
'fecha' => $ojal->fecha_envio?->format('d/m/Y') ?? '-',
];
});
$ojalesTerminados = $ojales->where('terminada', true)->sum('cantidad_enviada');
$ojalesPendientes = $ojales->where('terminada', false)->sum('cantidad_enviada');
// Datos de Prensillas
$prensillas = $op->prensillas;
$prensillasData = $prensillas->map(function ($prensilla) {
return [
'cantidad' => $prensilla->cantidad_enviada,
'proveedor' => $prensilla->proveedor?->nombre ?? 'Sin proveedor',
'operario' => $prensilla->usuarioAsignado?->name ?? '-',
'terminado' => $prensilla->terminada,
'fecha' => $prensilla->fecha_envio?->format('d/m/Y') ?? '-',
];
});
$prensillasTerminadas = $prensillas->where('terminada', true)->sum('cantidad_enviada');
$prensillasPendientes = $prensillas->where('terminada', false)->sum('cantidad_enviada');
// Verificación de ambos procesos
$verificacion = $op->verificarProcesosCompletos();
return [
'confeccion_recibida' => $cantidadRecibidaConfeccion,
'ojales' => [
'total' => $ojales->sum('cantidad_enviada'),
'terminados' => $ojalesTerminados,
'pendientes' => $ojalesPendientes,
'registros' => $ojalesData,
],
'prensillas' => [
'total' => $prensillas->sum('cantidad_enviada'),
'terminadas' => $prensillasTerminadas,
'pendientes' => $prensillasPendientes,
'registros' => $prensillasData,
],
'verificacion' => $verificacion,
'disponible_tintoreria' => $op->getCantidadDisponibleParaTintoreria(),
];
}
}