maquinista view-basic

This commit is contained in:
amazuecos
2025-04-25 07:40:20 +02:00
parent 288a3f02eb
commit 52b3b1ae4d
28 changed files with 911 additions and 132 deletions

View File

@ -20,6 +20,7 @@ use App\Entities\Tarifas\Acabados\TarifaAcabadoEntity;
use App\Models\Configuracion\ConfigVariableModel;
use App\Models\Configuracion\MaquinaModel;
use App\Models\OrdenTrabajo\OrdenTrabajoFileModel;
use App\Models\OrdenTrabajo\OrdenTrabajoTareaProgressDate;
use App\Models\Pedidos\PedidoModel;
use App\Models\Usuarios\UserModel;
use CodeIgniter\Database\BaseBuilder;
@ -55,6 +56,7 @@ class ProductionService extends BaseService
protected OrdenTrabajoUser $otUser;
protected OrdenTrabajoEntity $ot;
protected OrdenTrabajoFileModel $otFileModel;
protected OrdenTrabajoTareaProgressDate $otTareaProgressDate;
protected PedidoModel $pedidoModel;
protected UserModel $userModel;
protected ConfigVariableModel $configVariableModel;
@ -172,6 +174,7 @@ class ProductionService extends BaseService
$this->userModel = model(UserModel::class);
$this->otFileModel = model(OrdenTrabajoFileModel::class);
$this->pedidoModel = model(PedidoModel::class);
$this->otTareaProgressDate = model(OrdenTrabajoTareaProgressDate::class);
$this->ordenTrabajoConfig = config('OrdenTrabajo');
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["sin_imprimir"];
$this->configVariableModel = model(ConfigVariableModel::class);
@ -926,7 +929,38 @@ class ProductionService extends BaseService
}
return $this->otTarea->update($tarea_id, $data);
}
public function storeOrdenTrabajoTareaProgressDate($data): bool
{
$data["action_at"] = Time::now()->format('Y-m-d H:i:s');
$data["action_user_id"] = auth()->user()->id;
$lastDate = $this->otTareaProgressDate->where('ot_tarea_id', $data['ot_tarea_id'])->orderBy('action_at', 'DESC')->first();
if ($lastDate) {
if ($lastDate->estado == $data['estado']) {
throw new Exception(lang('Produccion.duplicate_estado_tarea_progress'));
}
if ($lastDate->estado == 'F') {
throw new Exception(lang('Produccion.task_already_finished'));
}
}
return $this->otTareaProgressDate->insert($data);
}
public function getTareaLastState($tarea_id)
{
$lastDate = $this->otTareaProgressDate->where('ot_tarea_id', $tarea_id)->orderBy('action_at', 'DESC')->first();
return $lastDate->estado;
}
public function deleteOrdenTrabajoTareaProgressDates($orden_trabajo_tarea_id): bool
{
$response = false;
$data = ['ot_tarea_id' => $orden_trabajo_tarea_id, 'estado' => 'P'];
$data["action_at"] = Time::now()->format('Y-m-d H:i:s');
$data["action_user_id"] = auth()->user()->id;
$status = $this->otTareaProgressDate->where('ot_tarea_id', $orden_trabajo_tarea_id)->delete();
if ($status) {
$response = $this->storeOrdenTrabajoTareaProgressDate($data);
}
return $response;
}
public function updateOrdenTrabajoDate($data)
{
$result = [];
@ -1620,4 +1654,56 @@ class ProductionService extends BaseService
{
return $this->ot->getBarCodeFile();
}
public function getMaquinaImpresionTareasList(int $maquina_id)
{
$q = $this->otModel->builder()->select([
"ordenes_trabajo.id as otId",
"orden_trabajo_tareas.id as ot_tarea_id",
"pedidos.fecha_impresion",
"orden_trabajo_tareas.nombre as tareaName",
"presupuestos.titulo as presupuesto_titulo",
"orden_trabajo_tareas.maquina_id",
"lg_papel_impresion.nombre as papel_impresion",
"presupuesto_linea.gramaje as papel_gramaje",
"tarea_progress.estado as tareaEstado"
])
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
// Obtener el ultimo estado de la tarea
->join(
'(SELECT ot_tarea_id, estado
FROM orden_trabajo_tarea_progress_dates
WHERE (ot_tarea_id, created_at) IN (
SELECT ot_tarea_id, MAX(created_at)
FROM orden_trabajo_tarea_progress_dates
GROUP BY ot_tarea_id
)
) as tarea_progress',
'tarea_progress.ot_tarea_id = orden_trabajo_tareas.id',
'left'
)
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
->join("presupuestos", "presupuestos.id = presupuesto_linea.presupuesto_id", "right")
->join("pedidos", "pedidos.id = ordenes_trabajo.pedido_id", "right")
->join("lg_papel_formato", "lg_papel_formato.id = presupuestos.papel_formato_id", "left")
->join("lg_maquinas", "lg_maquinas.id = orden_trabajo_tareas.maquina_id", "left")
->join("lg_papel_impresion", "lg_papel_impresion.id = presupuesto_linea.papel_impresion_id", "left")
->groupStart()
->orWhere('orden_trabajo_tareas.maquina_id', $maquina_id)
->orWhere('presupuesto_linea.maquina_id', $maquina_id)
->groupEnd()
->where('pedidos.fecha_impresion IS NOT NULL', null, false)
->where("orden_trabajo_tareas.deleted_at", null)
->where("tarea_progress.estado", 'P')
->orderBy("pedidos.fecha_impresion", "ASC")
->groupBy('orden_trabajo_tareas.nombre');
return $q;
}
public function buttonActionDatatableTareaList($id)
{
$url = route_to("viewProduccionMaquinistaTareaView", $id);
return "<a type='button' href='$url' class='maquina-btn btn btn-primary btn-md'><span class='ti ti-arrow-big-right'></span></a>";
}
}