diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index e9590f5c..182565aa 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -992,6 +992,7 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func $routes->post("update/user", 'Ordentrabajo::update_orden_trabajo_user'); $routes->post("update", 'Ordentrabajo::update_orden_trabajo'); $routes->post("upload/portada", 'Ordentrabajo::upload_orden_trabajo_portada'); + $routes->delete("portada/(:num)", 'Ordentrabajo::delete_orden_trabajo_portada/$1'); /**====================== * PDF @@ -999,6 +1000,10 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func $routes->get('pdf/(:num)', 'Ordentrabajo::get_pdf/$1'); $routes->get('portada/(:num)', 'Ordentrabajo::get_portada_img/$1'); $routes->group('planning', ['namespace' => 'App\Controllers\Produccion'], function ($routes) { + $routes->get('select/maquina/rotativa','Ordentrabajo::select_maquina_planning_rot'); + $routes->get('select/papel/rotativa','Ordentrabajo::select_papel_planning_rot'); + $routes->get('select/maquina/plana','Ordentrabajo::select_maquina_planning_plana'); + $routes->get('select/papel/plana','Ordentrabajo::select_papel_planning_plana'); $routes->get('rotativa', 'Ordentrabajo::index_planning_rotativa'); $routes->get('papel/datatable', 'Ordentrabajo::papel_gramaje_datatable'); $routes->get('papel/plana/datatable', 'Ordentrabajo::papel_pliego_datatable'); diff --git a/ci4/app/Controllers/Produccion/Ordentrabajo.php b/ci4/app/Controllers/Produccion/Ordentrabajo.php index cfb354c7..1fe96731 100755 --- a/ci4/app/Controllers/Produccion/Ordentrabajo.php +++ b/ci4/app/Controllers/Produccion/Ordentrabajo.php @@ -253,6 +253,22 @@ class Ordentrabajo extends BaseController return $this->response->setJSON(["message" => "Portada error", "error" => $th->getMessage()])->setStatusCode($th->getCode()); } } + public function delete_orden_trabajo_portada($orden_trabajo_id) + { + try { + helper('filesystem'); + $otEntity = $this->otModel->find($orden_trabajo_id); + $pathActualFile = $otEntity->portada_path; + $fullPath = WRITEPATH . 'uploads/' . $pathActualFile; + if(file_exists($fullPath)){ + delete_files($fullPath); + } + $r = $this->otModel->update($otEntity->id, ["portada_path" => null]); + return $this->response->setJSON(["message" => "Portada eliminada", "data" => $r]); + } catch (\Throwable $th) { + return $this->response->setStatusCode(500)->setJSON(["message" => "Portada error", "error" => $th->getMessage()]); + } + } public function get_portada_img($orden_trabajo_id) { $ot = $this->otModel->find($orden_trabajo_id); @@ -287,4 +303,25 @@ class Ordentrabajo extends BaseController ->add("action", fn($q) => $q) ->toJson(true); } + public function select_maquina_planning_rot(){ + $q = $this->request->getGet('q'); + $result = $this->produccionService->querySelectMaquinaPlanningRotativa($q); + return $this->response->setJSON($result); + } + public function select_papel_planning_rot(){ + $q = $this->request->getGet('q'); + $result = $this->produccionService->querySelectPapelPlanningRot($q); + return $this->response->setJSON($result); + } + public function select_maquina_planning_plana(){ + $q = $this->request->getGet('q'); + $result = $this->produccionService->querySelectMaquinaPlanningPlana($q); + return $this->response->setJSON($result); + } + public function select_papel_planning_plana(){ + $q = $this->request->getGet('q'); + $result = $this->produccionService->querySelectPapelPlanningPlana($q); + return $this->response->setJSON($result); + } + } diff --git a/ci4/app/Services/ProductionService.php b/ci4/app/Services/ProductionService.php index 60de7e20..07d77075 100644 --- a/ci4/app/Services/ProductionService.php +++ b/ci4/app/Services/ProductionService.php @@ -812,4 +812,80 @@ class ProductionService extends BaseService { return ["title" => lang('ot.filter_by_task'), 'id' => $id]; } + + public function querySelectMaquinaPlanningRotativa($q){ + $query = $this->otModel->builder()->select([ + "orden_trabajo_tareas.maquina_id as id", + "lg_maquinas.nombre as name", + ]) + ->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("lg_maquinas", "lg_maquinas.id = orden_trabajo_tareas.maquina_id", "left") + ->whereIn("presupuesto_linea.tipo", $this->TIPOS_ROTATIVA) + ->where('lg_maquinas.is_rotativa', true) + ->where("orden_trabajo_tareas.deleted_at", null) + ->orderBy("orden_trabajo_tareas.orden", "ASC"); + if($q){ + $query->like('lg_maquinas.nombre',$q); + } + return $query->get()->getResultArray(); + } + public function querySelectMaquinaPlanningPlana($q){ + $query = $this->otModel->builder()->select([ + "orden_trabajo_tareas.maquina_id as id", + "lg_maquinas.nombre as name", + ]) + ->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left") + ->join("orden_trabajo_dates", "orden_trabajo_dates.orden_trabajo_id = ordenes_trabajo.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") + ->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA) + ->where('lg_maquinas.is_rotativa', false) + ->where("orden_trabajo_tareas.deleted_at", null) + ->orderBy("orden_trabajo_tareas.orden", "ASC"); + if($q){ + $query->like('lg_maquinas.nombre',$q); + } + return $query->get()->getResultArray(); + } + public function querySelectPapelPlanningRot(string $q){ + $query = $this->otModel->builder()->select([ + "lg_papel_impresion.id", + "lg_papel_impresion.nombre as name", + ]) + ->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("presupuestos", "presupuestos.id = presupuesto_linea.presupuesto_id", "right") + ->join("lg_papel_impresion", "presupuesto_linea.papel_impresion_id = lg_papel_impresion.id", "left") + ->join("lg_papel_formato", "lg_papel_formato.id = presupuestos.papel_formato_id", "left") + ->where("orden_trabajo_tareas.deleted_at", null) + ->where("orden_trabajo_tareas.presupuesto_linea_id IS NOT NULL", NULL, FALSE) + ->whereIn("presupuesto_linea.tipo", $this->TIPOS_ROTATIVA) + ->groupBy('lg_papel_impresion.id'); + if($q){ + $query->like('lg_papel_impresion.nombre',$q); + } + return $query->get()->getResultArray(); + } + public function querySelectPapelPlanningPlana($q){ + $query = $this->otModel->builder()->select([ + "lg_papel_impresion.id", + "lg_papel_impresion.nombre as name", + ]) + ->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("presupuestos", "presupuestos.id = presupuesto_linea.presupuesto_id", "right") + ->join("lg_papel_impresion", "presupuesto_linea.papel_impresion_id = lg_papel_impresion.id", "left") + ->join("lg_papel_formato", "lg_papel_formato.id = presupuestos.papel_formato_id", "left") + ->where("orden_trabajo_tareas.deleted_at", null) + ->where("orden_trabajo_tareas.presupuesto_linea_id IS NOT NULL", NULL, FALSE) + ->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA) + ->groupBy('lg_papel_impresion.id'); + if($q){ + $query->like('lg_papel_impresion.nombre',$q); + } + return $query->get()->getResultArray(); + } + + } diff --git a/ci4/app/Views/themes/vuexy/form/produccion/ot/otHeader.php b/ci4/app/Views/themes/vuexy/form/produccion/ot/otHeader.php index 08c29f9a..f5d2476f 100644 --- a/ci4/app/Views/themes/vuexy/form/produccion/ot/otHeader.php +++ b/ci4/app/Views/themes/vuexy/form/produccion/ot/otHeader.php @@ -10,7 +10,7 @@
- +
diff --git a/ci4/app/Views/themes/vuexy/form/produccion/ot/otPortada.php b/ci4/app/Views/themes/vuexy/form/produccion/ot/otPortada.php index 8e13bdc7..5de34a3f 100644 --- a/ci4/app/Views/themes/vuexy/form/produccion/ot/otPortada.php +++ b/ci4/app/Views/themes/vuexy/form/produccion/ot/otPortada.php @@ -16,7 +16,11 @@
- +
+ + + +
diff --git a/ci4/app/Views/themes/vuexy/form/produccion/viewOrdenTrabajoEdit.php b/ci4/app/Views/themes/vuexy/form/produccion/viewOrdenTrabajoEdit.php index 8f2c3648..f6b947fb 100644 --- a/ci4/app/Views/themes/vuexy/form/produccion/viewOrdenTrabajoEdit.php +++ b/ci4/app/Views/themes/vuexy/form/produccion/viewOrdenTrabajoEdit.php @@ -5,6 +5,7 @@ extend('themes/vuexy/main/defaultlayout') ?> section('content'); ?>
+
diff --git a/httpdocs/assets/img/portada_not_found.png b/httpdocs/assets/img/portada_not_found.png new file mode 100644 index 00000000..356293fd Binary files /dev/null and b/httpdocs/assets/img/portada_not_found.png differ diff --git a/httpdocs/assets/js/safekat/pages/produccion/ot.js b/httpdocs/assets/js/safekat/pages/produccion/ot.js index 0139cbe8..ad34faee 100644 --- a/httpdocs/assets/js/safekat/pages/produccion/ot.js +++ b/httpdocs/assets/js/safekat/pages/produccion/ot.js @@ -95,6 +95,7 @@ class OrdenTrabajo { this.tareasTableItem.on("draw.dt", this.createSelectMaquinaTarea.bind(this)) this.tareasTableItem.on("xhr.dt", this.unbindEventTareas.bind(this)) this.otForm.on("click", "#btn-upload-portada", this.handleUploadPortada.bind(this)) + this.otForm.on("click", "#btn-delete-portada", this.handleDeletePortada.bind(this)) this.otForm.on("click", "#btn-finalizar-orden-pedido", this.handleFinalizarPedido.bind(this)) this.tareasTableItem.on("click", ".ot-tarea-btn-delete", this.handleTareaDeleteConfirmation.bind(this)) this.item.on("click", "#btn-reset-tareas", this.handleResetTareasDeleteConfirmation.bind(this)) @@ -350,6 +351,7 @@ class OrdenTrabajo { } handlePreimpresionReviewChangeSuccess(response) { + alertSuccess(response.message).fire() } handlePreimpresionReviewChangeError(error) { @@ -373,9 +375,38 @@ class OrdenTrabajo { } handleUploadPortadaSuccess(response) { this.handleGetPortada() + popSuccessAlert(response.message) this.otForm.find("#portada-file-input").val(null) } - handleUploadPortadaError(errors) { } + handleUploadPortadaError(errors) { + popSuccessAlert(errors?.message) + } + handleDeletePortada(){ + this.item.find(".portada-loader").prop("hidden", true); + this.item.find("#portada-orden-trabajo").prop("hidden", false); + let ajax = new Ajax('/produccion/ordentrabajo/portada/' + this.modelId, + null, + null, + this.handleDeletePortadaSuccess.bind(this), + this.handleGetPortadaError.bind(this), + ) + alertConfirmationDelete("¿Estás seguro de realizar esta acción?") + .then(result => { + if (result.isConfirmed) { + ajax.delete(); + } + }) + } + handleDeletePortadaSuccess(response){ + $('#portada-orden-trabajo').attr('src', '/assets/img/portada_not_found.png'); + this.item.find(".portada-loader").prop("hidden", true); + this.item.find("#portada-orden-trabajo").prop("hidden", false); + popSuccessAlert(response.message) + } + handleDeletePortadaError(response){ + popErrorAlert(response.error) + } + handleGetPortada() { this.item.find(".portada-loader").prop("hidden", false); this.item.find("#portada-orden-trabajo").prop("hidden", true); @@ -385,7 +416,7 @@ class OrdenTrabajo { xhrFields: { responseType: 'blob' // Expect binary data }, - success: this.handleGetPortadaSuccess.bind(this), + success:this.handleGetPortadaSuccess.bind(this), error: this.handleGetPortadaError.bind(this) }); } @@ -395,7 +426,11 @@ class OrdenTrabajo { this.item.find(".portada-loader").prop("hidden", true); this.item.find("#portada-orden-trabajo").prop("hidden", false); } - handleGetPortadaError(errors) { } + handleGetPortadaError() { + this.item.find(".portada-loader").prop("hidden", true); + this.item.find("#portada-orden-trabajo").prop("hidden", false); + + } handleFinalizarPedido() { const ajax = new Ajax( "/produccion/ordentrabajo/update", @@ -409,7 +444,8 @@ class OrdenTrabajo { ); ajax.post() } - handleEstadoChangeSuccess() { + handleEstadoChangeSuccess(response) { + popSuccessAlert(response.message) this.alertOrdenTrabajo.removeClass("alert-info").addClass("alert-success") this.btnFinalizarPedido.prop("disabled", true); } diff --git a/httpdocs/assets/js/safekat/pages/produccion/planning_rotativa/planning_rotativa.js b/httpdocs/assets/js/safekat/pages/produccion/planning_rotativa/planning_rotativa.js index e590a591..e7a3f38d 100644 --- a/httpdocs/assets/js/safekat/pages/produccion/planning_rotativa/planning_rotativa.js +++ b/httpdocs/assets/js/safekat/pages/produccion/planning_rotativa/planning_rotativa.js @@ -78,14 +78,14 @@ class PlanningRotativa { ] this.maquinaSelectFilter = new ClassSelect( this.tablePlanningRot.find(".planning-maquina-select"), - `/maquinas/select`, + `/produccion/ordentrabajo/planning/select/maquina/rotativa`, "Seleccione una maquina", true, { dropdownCssClass: "h-2" }, $('body')); - this.papelImpresionFilter = new ClassSelect(this.tablePlanningRot.find(".planning-papel-select"), `/papelesimpresion/select`, "Seleccione un papel", true, {}, $('body')); - this.maquinaSelectFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-maquina-select"), `/maquinas/select`, "Seleccione una maquina", true, {}, $('body')); - this.papelImpresionFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-papel-select"), `/papelesimpresion/select`, "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.maquinaSelectFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-maquina-select"), `/produccion/ordentrabajo/planning/select/maquina/plana`, "Seleccione una maquina", true, {}, $('body')); + this.papelImpresionFilterPlana = new ClassSelect(this.tablePlanningPlana.find(".planning-papel-select"), `/produccion/ordentrabajo/planning/select/papel/plana`, "Seleccione un papel", true, {}, $('body')); this.maquinaSelectFilter.config.dropdownParent = this.item } init() {