From 693504f9d7dcc4474f31011009cdad7c148c3165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Tue, 26 Sep 2023 15:17:49 +0200 Subject: [PATCH] haciendo la conexion con el ajax del comparador negro --- ci4/app/Controllers/Js_loader.php | 26 +++ .../Presupuestos/Cosidotapablanda.php | 168 ++++++++++++------ .../Controllers/Presupuestos/Js_loader.php | 3 +- ci4/app/Controllers/Test.php | 16 +- ci4/app/Services/PresupuestoService.php | 4 +- .../_datosPresupuestoClienteItems.php | 6 +- .../cosidotapablanda/comparador.js | 13 +- .../viewCosidotapablandaForm.php | 73 ++++++++ .../backend/vuexy/form/test_js/test_js.js | 17 ++ .../backend/vuexy/form/test_js/viewTest.php | 36 ++++ 10 files changed, 298 insertions(+), 64 deletions(-) create mode 100644 ci4/app/Controllers/Js_loader.php create mode 100644 ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js create mode 100644 ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php diff --git a/ci4/app/Controllers/Js_loader.php b/ci4/app/Controllers/Js_loader.php new file mode 100644 index 00000000..691a5842 --- /dev/null +++ b/ci4/app/Controllers/Js_loader.php @@ -0,0 +1,26 @@ +response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js'); + + } + + +} + \ No newline at end of file diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index 9f086deb..c8fbf198 100644 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -138,7 +138,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['presupuestoEntity'] = isset($sanitizedData) ? new PresupuestoEntity($sanitizedData) : new PresupuestoEntity(); $this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null); - $this->viewData['incReiList'] = array('incidencia'=>lang('Presupuestos.incidencia'), 'reimpresion'=>lang('Presupuestos.reimpresion'), 'sin_cargo'=>lang('Presupuestos.sinCargo')); + $this->viewData['incReiList'] = array('incidencia' => lang('Presupuestos.incidencia'), 'reimpresion' => lang('Presupuestos.reimpresion'), 'sin_cargo' => lang('Presupuestos.sinCargo')); $this->viewData['paisList'] = $this->getPaisListItems(); $this->viewData['papelFormatoList'] = $this->getPapelFormatoListItems($presupuestoEntity->papel_formato_id ?? null); $this->viewData['papelGenericoNegroList'] = $this->getPapelGenericoNegro(); @@ -147,9 +147,9 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['papelGenericoColorHQList'] = $this->getPapelGenericoColorHQ(); $this->viewData['papelGenericoCubiertaList'] = $this->getPapelGenericoCubierta(); $this->viewData['papelGenericoSobrecubiertaList'] = $this->getPapelGenericoSobreCubierta(); - - - + + + /* $this->viewData['formaPagoList'] = $this->getFormaPagoListItems(); @@ -375,7 +375,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $this->viewData['papelGenericoColorHQList'] = $this->getPapelGenericoColorHQ(); $this->viewData['papelGenericoCubiertaList'] = $this->getPapelGenericoCubierta(); $this->viewData['papelGenericoSobrecubiertaList'] = $this->getPapelGenericoSobreCubierta(); - + $this->viewData['formAction'] = route_to('updatePresupuesto', $id); @@ -391,46 +391,102 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - if (!isset($reqData['draw']) || !isset($reqData['columns'])) { - $errstr = 'No data available in response to this specific request.'; - $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); - return $response; + + $table_type = $reqData['table_type'] ?? null; + + if (is_null($table_type)) { + if (!isset($reqData['draw']) || !isset($reqData['columns'])) { + $errstr = 'No data available in response to this specific request.'; + $response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr); + return $response; + } + + $search = $reqData['search']['value']; } $start = $reqData['start'] ?? 0; $length = $reqData['length'] ?? 5; - $search = $reqData['search']['value']; + $requestedOrder = $reqData['order']['0']['column'] ?? 0; $order = PresupuestoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; - $table_type = $reqData['table_type'] ?? null; - - if (is_null($table_type)){ - return $this->failNotFound('Table type not found', 404); - } - - switch($table_type){ - case 'comp_int_bn': - - $datosPedido = (object)array( - 'paginas' => $reqData['paginas'] ?? 0, - 'tirada' => $reqData['tirada'] ?? 0, - 'merma' => $reqData['merma'] ?? 0, - 'ancho' => $reqData['alto'] ?? 100000, - 'alto' => $reqData['ancho'] ?? 100000, - 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto - ); - - $papel_generico_id = $reqData['papel_generico_id'] ?? 0; - $gramaje = $reqData['gramaje'] ?? 0; - - $resourceData = $this->getCompBnData($datosPedido, $papel_generico_id, $gramaje); - break; - - default: - break; - } + + if (is_null($table_type)) { + $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + foreach ($resourceData as $item) : + if (isset($item->comentarios_pdf) && strlen($item->comentarios_pdf) > 100) : + $item->comentarios_pdf = character_limiter($item->comentarios_pdf, 100); + endif; + if (isset($item->causa_cancelacion) && strlen($item->causa_cancelacion) > 100) : + $item->causa_cancelacion = character_limiter($item->causa_cancelacion, 100); + endif; + if (isset($item->comentarios) && strlen($item->comentarios) > 100) : + $item->comentarios = character_limiter($item->comentarios, 100); + endif; + if (isset($item->comentarios_safekat) && strlen($item->comentarios_safekat) > 100) : + $item->comentarios_safekat = character_limiter($item->comentarios_safekat, 100); + endif; + if (isset($item->comentarios_tarifa) && strlen($item->comentarios_tarifa) > 100) : + $item->comentarios_tarifa = character_limiter($item->comentarios_tarifa, 100); + endif; + if (isset($item->tirada_alternativa_json_data) && strlen($item->tirada_alternativa_json_data) > 100) : + $item->tirada_alternativa_json_data = character_limiter($item->tirada_alternativa_json_data, 100); + endif; + if (isset($item->titulo) && strlen($item->titulo) > 100) : + $item->titulo = character_limiter($item->titulo, 100); + endif; + if (isset($item->paginas_color_posicion) && strlen($item->paginas_color_posicion) > 100) : + $item->paginas_color_posicion = character_limiter($item->paginas_color_posicion, 100); + endif; + if (isset($item->aprobado_json_data) && strlen($item->aprobado_json_data) > 100) : + $item->aprobado_json_data = character_limiter($item->aprobado_json_data, 100); + endif; + if (isset($item->comparador_json_data) && strlen($item->comparador_json_data) > 100) : + $item->comparador_json_data = character_limiter($item->comparador_json_data, 100); + endif; + if (isset($item->ws_externo_json_data) && strlen($item->ws_externo_json_data) > 100) : + $item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100); + endif; + endforeach; + } else { + + switch ($table_type) { + case 'comp_int_bn': + + $datosPedido = (object)array( + 'paginas' => intval($reqData['paginas']) ?? 0, + 'tirada' => intval($reqData['tirada']) ?? 0, + 'merma' => intval($reqData['merma']) ?? 0, + 'ancho' => intval($reqData['alto']) ?? 100000, + 'alto' => intval($reqData['ancho']) ?? 100000, + 'isCosido' => true, // JJO esto es custom por cada tipo de presupuesto + ); + + $papel_generico = [ + 'id' => $reqData['papel_generico_id'] ?? 0, + 'nombre' => $reqData['papel_generico'] ?? "", + ]; + + $gramaje = $reqData['gramaje'] ?? 0; + + $resourceData = $this->getCompBnData($datosPedido, $papel_generico, $gramaje); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'lineas' => $resourceData, + $csrfTokenName => $newTokenHash + ]; + //return json_encode(array("data"=>$resourceData)); + return $this->respond($data); + break; + + default: + break; + } + } + return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), @@ -441,10 +497,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController } } - private function getCompBnData($datosPedido, $papel_generico_id, $gramaje){ + private function getCompBnData($datosPedido, $papel_generico, $gramaje) + { $uso = 'interior'; $tipo = 'negro'; - + $opciones_papel = array( 'bn' => 1, 'cubierta' => 0, @@ -455,15 +512,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // Se obtienen los papeles disponibles $papelimpresionmodel = new PapelImpresionModel(); $papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto( - papel_generico_id: $papel_generico_id, + papel_generico_id: $papel_generico['id'], gramaje: $gramaje, options: $opciones_papel ); - $resultado = json_encode( - array('data' => array()) - ); - + + $lineas = array(); // Para cada papel, se obtienen las maquinas disponibles foreach ($papeles as $papel) { $maquinamodel = new MaquinaModel(); @@ -476,14 +531,23 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController // Se recorren las máquinas y se calcula el coste de linea por cada una foreach ($maquinas as $maquina) { - $tarifamodel = new MaquinasTarifasImpresionModel(); + $tarifamodel = new MaquinasTarifasImpresionModel(); $tarifa = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo); - $linea = PresupuestoService::getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); + $linea['fields']['maquina'] = $maquina->maquina; + $linea['fields']['maquina_id'] = $maquina->maquina_id; + $linea['fields']['papel_impresion'] = $papel->nombre; + $linea['fields']['papel_impresion_id'] = $papel->id; + $linea['fields']['paginas'] = $datosPedido->paginas; + $linea['fields']['gramaje'] = $gramaje; + $linea['fields']['papel_generico_id'] = $papel_generico['id']; + $linea['fields']['papel_generico_id'] = $papel_generico['nombre']; + + array_push($lineas, $linea); } } - return $resultado; - + return $lineas; } public function allItemsSelect() @@ -512,7 +576,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController public function menuItems() { if ($this->request->isAJAX()) { - + $reqData = $this->request->getPost(); $tipo = $reqData['tipo'] ?? null; @@ -520,12 +584,12 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; - if ($tipo == 'gramaje'){ + if ($tipo == 'gramaje') { // En este caso contiene el nombre del papel generico $model = new PapelGenericoModel(); $menu = $model->getGramajeComparador($datos, $searchStr); } - + $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -567,7 +631,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController { $papelFormatoModel = model('App\Models\Configuracion\PapelFormatoModel'); $data = $papelFormatoModel->getElementsForMenu(); - array_unshift($data, (object)['id'=>'', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); + array_unshift($data, (object)['id' => '', 'tamanio' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Presupuestos.papelFormatoId'))])]); return $data; } diff --git a/ci4/app/Controllers/Presupuestos/Js_loader.php b/ci4/app/Controllers/Presupuestos/Js_loader.php index f753fee7..89baad3c 100644 --- a/ci4/app/Controllers/Presupuestos/Js_loader.php +++ b/ci4/app/Controllers/Presupuestos/Js_loader.php @@ -16,10 +16,9 @@ class Js_loader extends BaseController function comparadorCosidoTapablanda_js() { - $this->load->view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js', $data); + $this->load->view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js'); $this->output->set_content_type('text/javascript'); } - } \ No newline at end of file diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 5a4d5f45..c6d7621a 100644 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -2,8 +2,7 @@ namespace App\Controllers; -use App\Models\Presupuestos\PresupuestoModel; -use App\Services\PresupuestoService; +use App\Controllers\BaseController; class Test extends BaseController { @@ -16,12 +15,21 @@ class Test extends BaseController public function index() { - PresupuestoService::test(); + //PresupuestoService::test(); + return view('themes/backend/vuexy/form/test_js/viewTest'); + } + + function test_js() + { + /*$this->response->setHeader('Content-Type', 'text/javascript'); + return view('themes/backend/vuexy/form/test_js/test_js.js');*/ + + } public function pruebaJJO() { - PresupuestoService::test2(); + //PresupuestoService::test2(); } } \ No newline at end of file diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 48173d27..38a70819 100644 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -95,7 +95,7 @@ class PresupuestoService extends BaseService * * @return [type] */ - public static function getCostesLinea($uso, $tipo, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) + public static function getCostesLinea($uso, $datosPedido, $maquina, $papel_impresion, $opciones_papel, $tarifa) { $response['fields'] = []; @@ -117,7 +117,7 @@ class PresupuestoService extends BaseService if ($response['fields']['num_formas']['posicion_formas'] == 'n/a') { $response['error']['value'] = true; $response['error']['message'] = 'no_formas_disponibles'; - return response; + return $response; } // precio del pliego de impresion diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index 8bf30aaa..fc07f7f3 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -69,10 +69,10 @@

- +
- $v) : ?>
-
diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js index c91da748..9c0e2b1a 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/comparador.js @@ -58,10 +58,21 @@ $('.accordion-button').on('click', function (e) { - /******************************* * Metodos *******************************/ +function checkDatosPedidoForComp() { + + if (parseInt(document.getElementById('paginas').value) > 0 && + parseInt(document.getElementById('tirada').value) > 0 && + ($('#papelFormatoId').select2('data').length > 0 || + (parseInt(document.getElementById('papelFormatoAncho').value) > 0 && parseInt(document.getElementById('papelFormatoAlto').value) > 0))) + return true; + return false; +} + + + function init_comparador() { updatePapelesComparador(); const paginasColor = document.getElementById('compCalPaginasColor'); diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index 0b877195..db55494c 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -145,11 +145,14 @@ document.getElementById("papelFormatoAncho").style.display = "block"; document.getElementById("papelFormatoAlto").style.display = "block"; $('#papelFormatoId').next(".select2-container").hide(); + $('#papelFormatoId').val('').change(); document.getElementById("label_papelFormatoId").innerHTML = " (" + " x )*"; } else{ + document.getElementById("papelFormatoAncho").value= ""; + document.getElementById("papelFormatoAlto").value= ""; document.getElementById("papelFormatoAncho").style.display = "none"; document.getElementById("papelFormatoAlto").style.display = "none"; $('#papelFormatoId').next(".select2-container").show(); @@ -172,6 +175,29 @@ language: { url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/i18n ?>.json" }, + columns: [ + { 'data': 'tipo' }, + { 'data': 'paginas' }, + { 'data': 'papel' }, + { 'data': 'gramaje' }, + { 'data': 'marca' }, + { 'data': 'maquina' }, + { 'data': 'numeroPliegos' }, + { 'data': 'pliegosPedido' }, + { 'data': 'precioPliego' }, + { 'data': 'libro' }, + { 'data': 'totalPapelPedido' }, + { 'data': 'lomo' }, + { 'data': 'peso' }, + { 'data': 'click' }, + { 'data': 'totalClicks' }, + { 'data': 'precioPagNegro' }, + { 'data': 'precioPagColor' }, + { 'data': 'totalTinta' }, + { 'data': 'totalCorte' }, + { 'data': 'total' }, + + ] }); @@ -245,6 +271,53 @@ }); }); + $('.comp_negro_items').on('change', function (e) { + checkComparadorNegro(); + + }); + + function checkComparadorNegro() { + if (document.getElementById('compPaginasNegro').value && + $('#compPapelNegro').select2('data').length > 0 && + $('#compGramajeNegro').select2('data').length > 0) { + + if (parseInt(document.getElementById('compPaginasNegro').value) > 0 && checkDatosPedidoForComp()) { + + if($('#papelFormatoId').select2('data').length > 0){ + ancho = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[0]); + alto = parseFloat($('#papelFormatoId').select2('data')[0].text.trim().split(" x ")[1]); + } + else{ + ancho = parseFloat(document.getElementById('papelFormatoAncho').value); + alto = parseFloat(document.getElementById('papelFormatoAlto').value); + } + + let datos = { + table_type: 'comp_int_bn', + paginas: parseInt(document.getElementById('compPaginasNegro').value), + tirada: parseInt(document.getElementById('tirada').value), + merma: parseInt(document.getElementById('merma').value), + ancho: ancho, + alto: alto, + papel_generico_id: $('#compPapelNegro').select2('data')[0].id, + papel_generico: $('#compPapelNegro').select2('data')[0].text.trim(), + gramaje: $('#compGramajeNegro').select2('data')[0].text.trim() , + : v + }; + + $.ajax({ + type: "POST", + url: "/cosidotapablanda/datatable", + data: datos, + success: function (data) { + console.log(data) + yeniden(data.); + }, + }) + } + } + } + $('#compPapelNegrohq').on('select2:select', function (e){ diff --git a/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js b/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js new file mode 100644 index 00000000..282ca8ac --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/test_js/test_js.js @@ -0,0 +1,17 @@ + + + + +/* +fetch("/presupuestos/cosidotapablanda/datatable", { + + method: 'POST', + body: JSON.stringify(data), + headers: { 'X-Requested-With': 'XMLHttpRequest' }, + +}) +.then(response => console.log(response)) +//.then(json => console.log(json)) +.catch(err => console.log(err)); + +*/ diff --git a/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php b/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php new file mode 100644 index 00000000..756a2230 --- /dev/null +++ b/ci4/app/Views/themes/backend/vuexy/form/test_js/viewTest.php @@ -0,0 +1,36 @@ +extend('themes/backend/vuexy/main/defaultlayout') ?> + + +section("additionalInlineJs") ?> + + console.log("Hola") + + let datos = { + table_type: 'comp_int_bn', + paginas: 200, + tirada: 100, + merma: 10, + ancho: 98 , + alto: 148, + papel_generico_id: 4, + papel_generico: 'AHUESADO OFFSET', + gramaje: 80, + : v + } + + + $.ajax({ + type:"POST", + url:"cosidotapablanda/datatable", + data:datos, // data recive un objeto con la informacion que se enviara al servidor + success:function(data){ //success es una funcion que se utiliza si el servidor retorna informacion + console.log(data) + yeniden(data.); + }, + //dataType: dataType // El tipo de datos esperados del servidor. Valor predeterminado: Intelligent Guess (xml, json, script, text, html). + }) + + +endSection() ?> + +