add filter padre - hija - papel

This commit is contained in:
amazuecos
2025-05-31 08:35:01 +02:00
parent 6ca84232fa
commit 67c4b4bc93
6 changed files with 51 additions and 32 deletions

View File

@ -375,7 +375,11 @@ class Ordentrabajo extends BaseController
public function maquina_plana_datatable() public function maquina_plana_datatable()
{ {
// return $this->response->setStatusCode(400); // return $this->response->setStatusCode(400);
$padreId = $this->request->getGet('padre_id');
$q = $this->produccionService->maquinaPlanaDatatableQuery(); $q = $this->produccionService->maquinaPlanaDatatableQuery();
if ($padreId) {
$q->where('lg_maquinas.padre_id', $padreId);
}
return DataTable::of($q) return DataTable::of($q)
->edit("tiempoReal", fn($q) => $q->tiempoReal) ->edit("tiempoReal", fn($q) => $q->tiempoReal)
->add("action", fn($q) => ["title" => lang('Produccion.datatable.filter_by_machine'), 'data' => $q]) ->add("action", fn($q) => ["title" => lang('Produccion.datatable.filter_by_machine'), 'data' => $q])
@ -496,10 +500,7 @@ class Ordentrabajo extends BaseController
public function planning_plana_datatable() public function planning_plana_datatable()
{ {
$query = $this->produccionService->planningPlanaQueryDatatable(); $query = $this->produccionService->planningPlanaQueryDatatable();
$padreId = $this->request->getGet('padre_id');
if ($padreId) {
$query->where('lg_maquinas.padre_id', $padreId);
}
return DataTable::of($query) return DataTable::of($query)
->edit("tiempo_real_sum", fn($q) => $q->tiempo_real_sum) ->edit("tiempo_real_sum", fn($q) => $q->tiempo_real_sum)
->edit("fecha_entrega_real_at", fn($q) => $q->fecha_entrega_real_at ? Time::createFromFormat("Y-m-d", $q->fecha_entrega_real_at)->format("d/m/Y") : "") ->edit("fecha_entrega_real_at", fn($q) => $q->fecha_entrega_real_at ? Time::createFromFormat("Y-m-d", $q->fecha_entrega_real_at)->format("d/m/Y") : "")
@ -523,7 +524,7 @@ class Ordentrabajo extends BaseController
{ {
$q = $this->request->getGet('q'); $q = $this->request->getGet('q');
$padreId = $this->request->getGet('padre_id'); $padreId = $this->request->getGet('padre_id');
$result = $this->produccionService->querySelectMaquinaPlanningPlana($q,$padreId); $result = $this->produccionService->querySelectMaquinaPlanningPlana($q, $padreId);
return $this->response->setJSON($result); return $this->response->setJSON($result);
} }
public function select_maquina_padre_planning_plana() public function select_maquina_padre_planning_plana()
@ -535,7 +536,8 @@ class Ordentrabajo extends BaseController
public function select_papel_planning_plana() public function select_papel_planning_plana()
{ {
$q = $this->request->getGet('q'); $q = $this->request->getGet('q');
$result = $this->produccionService->querySelectPapelPlanningPlana($q); $maquinaId = $this->request->getGet('maquina_id');
$result = $this->produccionService->querySelectPapelPlanningPlana($q,$maquinaId);
return $this->response->setJSON($result); return $this->response->setJSON($result);
} }
public function tarea_toggle_corte($orden_trabajo_id) public function tarea_toggle_corte($orden_trabajo_id)

View File

@ -144,6 +144,7 @@ return [
], ],
"maquinas_planas" => "Máquinas planas", "maquinas_planas" => "Máquinas planas",
"select_maquina_padre" => "Seleccione una máquina",
"progress_ferro" => "Ferro", "progress_ferro" => "Ferro",
"progress_preimpresion" => "Preimpresión", "progress_preimpresion" => "Preimpresión",
"progress_logistica" => "Logística", "progress_logistica" => "Logística",

View File

@ -199,6 +199,7 @@ class ProductionService extends BaseService
public function __construct() public function __construct()
{ {
$this->otModel = model(OrdenTrabajoModel::class); $this->otModel = model(OrdenTrabajoModel::class);
$this->maquinaModel = model(MaquinaModel::class);
$this->otDate = model(OrdenTrabajoDate::class); $this->otDate = model(OrdenTrabajoDate::class);
$this->otTarea = model(OrdenTrabajoTarea::class); $this->otTarea = model(OrdenTrabajoTarea::class);
$this->otUser = model(OrdenTrabajoUser::class); $this->otUser = model(OrdenTrabajoUser::class);
@ -227,8 +228,6 @@ class ProductionService extends BaseService
public function init(int $orden_trabajo_id): self public function init(int $orden_trabajo_id): self
{ {
try { try {
$this->maquinaModel = model(MaquinaModel::class);
$this->otModel = model(OrdenTrabajoModel::class);
$ot = $this->otModel->find($orden_trabajo_id); $ot = $this->otModel->find($orden_trabajo_id);
if ($ot == null) { if ($ot == null) {
throw new Exception(lang('Produccion.errors.ot_not_found', ['ot_id' => $orden_trabajo_id])); throw new Exception(lang('Produccion.errors.ot_not_found', ['ot_id' => $orden_trabajo_id]));
@ -777,6 +776,7 @@ class ProductionService extends BaseService
->join("lg_imposiciones", "lg_imposiciones.id = orden_trabajo_tareas.imposicion_id", "left") ->join("lg_imposiciones", "lg_imposiciones.id = orden_trabajo_tareas.imposicion_id", "left")
->whereIn("presupuesto_linea.tipo", $this->TIPOS_ROTATIVA) ->whereIn("presupuesto_linea.tipo", $this->TIPOS_ROTATIVA)
->where('lg_maquinas.is_rotativa', true) ->where('lg_maquinas.is_rotativa', true)
->where('lg_maquinas.tipo', 'impresion')
->where("orden_trabajo_tareas.deleted_at", null) ->where("orden_trabajo_tareas.deleted_at", null)
->orderBy("orden_trabajo_tareas.orden", "ASC") ->orderBy("orden_trabajo_tareas.orden", "ASC")
->groupBy('ordenes_trabajo.id'); ->groupBy('ordenes_trabajo.id');
@ -819,6 +819,7 @@ class ProductionService extends BaseService
// ->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id) // ->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA) ->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA)
->where('lg_maquinas.is_rotativa', false) ->where('lg_maquinas.is_rotativa', false)
->where('lg_maquinas.tipo', 'impresion')
->where("orden_trabajo_tareas.deleted_at", null) ->where("orden_trabajo_tareas.deleted_at", null)
->orderBy("orden_trabajo_tareas.orden", "ASC") ->orderBy("orden_trabajo_tareas.orden", "ASC")
->groupBy('ordenes_trabajo.id'); ->groupBy('ordenes_trabajo.id');
@ -928,10 +929,12 @@ class ProductionService extends BaseService
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left") ->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_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("presupuestos", "presupuestos.id = presupuesto_linea.presupuesto_id", "right")
->join('lg_maquinas',"lg_maquinas.id = orden_trabajo_tareas.maquina_id","left") ->join('lg_maquinas', "lg_maquinas.id = orden_trabajo_tareas.maquina_id", "left")
->where("orden_trabajo_tareas.deleted_at", null) ->where("orden_trabajo_tareas.deleted_at", null)
->where("orden_trabajo_tareas.presupuesto_linea_id IS NOT NULL", NULL, FALSE) ->where("orden_trabajo_tareas.presupuesto_linea_id IS NOT NULL", NULL, FALSE)
->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA) ->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA)
->where('lg_maquinas.tipo', 'impresion')
// ->where('lg_maquinas.padre_id', 0)
->groupBy('lg_maquinas.id'); ->groupBy('lg_maquinas.id');
@ -1353,7 +1356,7 @@ class ProductionService extends BaseService
} }
return $query->get()->getResultArray(); return $query->get()->getResultArray();
} }
public function querySelectMaquinaPlanningPlana($q,?string $padreId) public function querySelectMaquinaPlanningPlana($q, ?string $padreId)
{ {
$query = $this->otModel->builder()->select([ $query = $this->otModel->builder()->select([
"orden_trabajo_tareas.maquina_id as id", "orden_trabajo_tareas.maquina_id as id",
@ -1370,8 +1373,8 @@ class ProductionService extends BaseService
if ($q) { if ($q) {
$query->like('lg_maquinas.nombre', $q); $query->like('lg_maquinas.nombre', $q);
} }
if($padreId){ if ($padreId) {
$query->where('lg_maquinas.padre_id',$padreId); $query->where('lg_maquinas.padre_id', $padreId);
} }
return $query->get()->getResultArray(); return $query->get()->getResultArray();
} }
@ -1385,10 +1388,8 @@ class ProductionService extends BaseService
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left") ->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
->join("lg_maquinas", "lg_maquinas.id = orden_trabajo_tareas.maquina_id", "left") ->join("lg_maquinas", "lg_maquinas.id = orden_trabajo_tareas.maquina_id", "left")
->join("lg_maquinas mp", "mp.id = lg_maquinas.padre_id", "left") ->join("lg_maquinas mp", "mp.id = lg_maquinas.padre_id", "left")
->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA)
->where('lg_maquinas.is_rotativa', false) ->where('lg_maquinas.is_rotativa', false)
->where('mp.is_padre', 0) ->where('lg_maquinas.is_padre !=', 0)
->where("orden_trabajo_tareas.deleted_at", null)
->groupBy("mp.id"); ->groupBy("mp.id");
if ($q) { if ($q) {
$query->like('lg_maquinas.nombre', $q); $query->like('lg_maquinas.nombre', $q);
@ -1415,7 +1416,7 @@ class ProductionService extends BaseService
} }
return $query->get()->getResultArray(); return $query->get()->getResultArray();
} }
public function querySelectPapelPlanningPlana($q) public function querySelectPapelPlanningPlana($q, ?string $maquinaId)
{ {
$query = $this->otModel->builder()->select([ $query = $this->otModel->builder()->select([
"lg_papel_impresion.id", "lg_papel_impresion.id",
@ -1433,6 +1434,9 @@ class ProductionService extends BaseService
if ($q) { if ($q) {
$query->like('lg_papel_impresion.nombre', $q); $query->like('lg_papel_impresion.nombre', $q);
} }
if ($maquinaId) {
$query->where('orden_trabajo_tareas.maquina_id', $maquinaId);
}
return $query->get()->getResultArray(); return $query->get()->getResultArray();
} }
public function tareaUpdateMaquinaCorte($orden_trabajo_id): bool public function tareaUpdateMaquinaCorte($orden_trabajo_id): bool

View File

@ -24,7 +24,6 @@
<th><input type="text" class="form-control planning-filter" name="presupuesto_titulo" placeholder="Titulo"></th> <th><input type="text" class="form-control planning-filter" name="presupuesto_titulo" placeholder="Titulo"></th>
<th> <th>
<div class="d-flex flex-column gap-2"> <div class="d-flex flex-column gap-2">
<select class="select2 form-select-sm planning-maquina-padre-select" name="lg_maquinas.padre_id"></select>
<select class="select2 form-select-sm planning-maquina-select" name="maquina_planning_nombre"></select> <select class="select2 form-select-sm planning-maquina-select" name="maquina_planning_nombre"></select>
</div> </div>
</th> </th>

View File

@ -29,7 +29,7 @@
</li> </li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane fade show active" id="prot-datatables-container-rot" role="tabpanel"> <div class="tab-pane fade show active" id="prot-datatables-container-rot" role="tabpanel">
<div class="accordion accordion-bordered mt-3" id="accordionPapelGramaje"> <div class="accordion accordion-bordered mt-3" id="accordionPapelGramaje">
<div class="card accordion-item active"> <div class="card accordion-item active">
<h2 class="accordion-header" id="headingOne"> <h2 class="accordion-header" id="headingOne">
@ -86,7 +86,13 @@
<div class="d-none"> <div class="d-none">
<?= view("themes/vuexy/components/tables/planning_papel_pliego_table.php", ["id" => "planning-pliego-datatable"]) ?> <?= view("themes/vuexy/components/tables/planning_papel_pliego_table.php", ["id" => "planning-pliego-datatable"]) ?>
</div> </div>
<?= view("themes/vuexy/components/tables/planning_maquina_table.php", ["id" => "planning-maquina-datatable"]) ?> <div class="row">
<div class="col-md-12 mb-2">
<label for="select-planning-maquina-padre"><?= lang('Produccion.select_maquina_padre') ?></label>
<select class="select2 form-select-sm planning-maquina-padre-select" id="select-planning-maquina-padre" name="lg_maquinas.padre_id"></select>
</div>
<?= view("themes/vuexy/components/tables/planning_maquina_table.php", ["id" => "planning-maquina-datatable"]) ?>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -104,7 +104,7 @@ class PlanningRotativa {
dropdownCssClass: "h-2" dropdownCssClass: "h-2"
}, $('body')); }, $('body'));
this.papelImpresionFilter = new ClassSelect(this.tablePlanningRot.find(".planning-papel-select"), `/produccion/ordentrabajo/planning/select/papel/rotativa`, "Seleccione un papel", true, {}, $('body')); this.papelImpresionFilter = new ClassSelect(this.tablePlanningRot.find(".planning-papel-select"), `/produccion/ordentrabajo/planning/select/papel/rotativa`, "Seleccione un papel", true, {}, $('body'));
this.maquinaPadreSelectFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-maquina-padre-select"), `/produccion/ordentrabajo/planning/select/maquina/padre/plana`, "Máquina padre", true, {}, $('body')); this.maquinaPadreSelectFilterPlana = new ClassSelect(this.item.find(".planning-maquina-padre-select"), `/produccion/ordentrabajo/planning/select/maquina/padre/plana`, "Máquina padre", true, {}, $('body'));
this.maquinaSelectFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-maquina-select"), `/produccion/ordentrabajo/planning/select/maquina/plana`, "Seleccione una maquina", true, { this.maquinaSelectFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-maquina-select"), `/produccion/ordentrabajo/planning/select/maquina/plana`, "Seleccione una maquina", true, {
}, $('body')); }, $('body'));
this.papelImpresionFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-papel-select"), `/produccion/ordentrabajo/planning/select/papel/plana`, "Seleccione un papel", true, {}, $('body')); this.papelImpresionFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-papel-select"), `/produccion/ordentrabajo/planning/select/papel/plana`, "Seleccione un papel", true, {}, $('body'));
@ -141,8 +141,12 @@ class PlanningRotativa {
this.papelImpresionFilterPlana.init() this.papelImpresionFilterPlana.init()
this.maquinaPadreSelectFilterPlana.init(); this.maquinaPadreSelectFilterPlana.init();
this.maquinaPadreSelectFilterPlana.onChange(() => { this.maquinaPadreSelectFilterPlana.onChange(() => {
const params = {padre_id : this.maquinaPadreSelectFilterPlana.getVal()} const params = { padre_id: this.maquinaPadreSelectFilterPlana.getVal() }
this.maquinaSelectFilterPlana.params = {...params} this.maquinaSelectFilterPlana.params = { ...params }
})
this.maquinaSelectFilterPlana.onChange(() => {
const params = { maquina_id: this.maquinaSelectFilterPlana.getVal() }
this.papelImpresionFilterPlana.params = { ...params }
}) })
this.checkAllMetros.on('change', () => { this.checkAllMetros.on('change', () => {
let isChecked = this.checkAllMetros.prop('checked') let isChecked = this.checkAllMetros.prop('checked')
@ -155,7 +159,6 @@ class PlanningRotativa {
this.papelGramajeTablePlanning.on('click', '.papel-gramaje-btn', this.filterPapelGramaje.bind(this)) this.papelGramajeTablePlanning.on('click', '.papel-gramaje-btn', this.filterPapelGramaje.bind(this))
this.papelPliegoTablePlanning.on('click', '.papel-pliego-btn', this.filterPapelGramajePlana.bind(this)) this.papelPliegoTablePlanning.on('click', '.papel-pliego-btn', this.filterPapelGramajePlana.bind(this))
this.maquinaTablePlanning.on('click', '.maquina-planning-btn', this.filterMaquinaPlana.bind(this)) this.maquinaTablePlanning.on('click', '.maquina-planning-btn', this.filterMaquinaPlana.bind(this))
//!AÑADIR MAQUINA
this.papelImpresionFilter.onChange(() => { this.papelImpresionFilter.onChange(() => {
this.papelImpresionHeader.text(this.papelImpresionFilter.getText()) this.papelImpresionHeader.text(this.papelImpresionFilter.getText())
}) })
@ -195,11 +198,7 @@ class PlanningRotativa {
}, },
ajax: { ajax: {
url: '/produccion/ordentrabajo/planning/plana/datatable', url: '/produccion/ordentrabajo/planning/plana/datatable',
data: d => {
if (this.maquinaPadreSelectFilterPlana.getVal()) {
d.padre_id = this.maquinaPadreSelectFilterPlana.getVal()
}
}
} }
}); });
this.papelGramajeDatatable = this.papelGramajeTablePlanning.DataTable({ this.papelGramajeDatatable = this.papelGramajeTablePlanning.DataTable({
@ -231,7 +230,7 @@ class PlanningRotativa {
this.maquinaPlanaDatatable = this.maquinaTablePlanning.DataTable({ this.maquinaPlanaDatatable = this.maquinaTablePlanning.DataTable({
processing: true, processing: true,
orderCellsTop: true, orderCellsTop: true,
dom: 'lrtip', dom: 'rtip',
serverSide: true, serverSide: true,
responsive: true, responsive: true,
pageLength: 10, pageLength: 10,
@ -239,7 +238,15 @@ class PlanningRotativa {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
}, },
columns: this.maquinaPlanaDatatableColumns, columns: this.maquinaPlanaDatatableColumns,
ajax: '/produccion/ordentrabajo/planning/maquina/plana/datatable' ajax: {
url: '/produccion/ordentrabajo/planning/maquina/plana/datatable',
data: d => {
if (this.maquinaPadreSelectFilterPlana.getVal()) {
d.padre_id = this.maquinaPadreSelectFilterPlana.getVal()
}
}
}
}); });
/** /**
* PLANNING ROTATIVA * PLANNING ROTATIVA
@ -275,8 +282,8 @@ class PlanningRotativa {
let columnIndex = this.datatablePlanaColumns.findIndex((element) => element.data == $(event.currentTarget).attr("name")) let columnIndex = this.datatablePlanaColumns.findIndex((element) => element.data == $(event.currentTarget).attr("name"))
this.datatablePlanningPlana.column(columnIndex).search(this.papelImpresionFilterPlana.getText()).draw() this.datatablePlanningPlana.column(columnIndex).search(this.papelImpresionFilterPlana.getText()).draw()
}) })
this.tablePlanningPlana.on("change", ".planning-maquina-padre-select", (event) => { this.item.on("change", ".planning-maquina-padre-select", (event) => {
this.datatablePlanningPlana.ajax.reload(); this.maquinaPlanaDatatable.ajax.reload();
}) })
this.papelPliegoDatatable.on('draw', this.addTotalFooterPliego.bind(this)) this.papelPliegoDatatable.on('draw', this.addTotalFooterPliego.bind(this))
this.maquinaPlanaDatatable.on('draw', this.addTotalFooterMaquinaPlana.bind(this)) this.maquinaPlanaDatatable.on('draw', this.addTotalFooterMaquinaPlana.bind(this))