From ceaaf7b2dcdd75d2bd1bf78eabbf500ddf29ab4d Mon Sep 17 00:00:00 2001 From: imnavajas Date: Fri, 17 Jan 2025 14:23:00 +0100 Subject: [PATCH 1/7] Iniciada --- ci4/app/Config/Routes.php | 2 + ci4/app/Controllers/API/ImprimelibrosApi.php | 172 +++++++++++++++++++ 2 files changed, 174 insertions(+) create mode 100644 ci4/app/Controllers/API/ImprimelibrosApi.php diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 25fd341d..60462f24 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -934,6 +934,8 @@ $routes->group( $routes->options('items', static function () { }); $routes->options('items/(:any)', static function () { }); + $routes->post("calcular", 'ImprimelibrosApi::calcular'); + // ... diff --git a/ci4/app/Controllers/API/ImprimelibrosApi.php b/ci4/app/Controllers/API/ImprimelibrosApi.php new file mode 100644 index 00000000..8b836c29 --- /dev/null +++ b/ci4/app/Controllers/API/ImprimelibrosApi.php @@ -0,0 +1,172 @@ +findAll(); + return $this->respond($data); + } + + public function show($id = null) + { + $model = new ItemModel(); + $data = $model->find(['id' => $id]); + if (!$data) + return $this->failNotFound('No Data Found'); + return $this->respond($data[0]); + } + + public function create() + { + helper(['form']); + $rules = [ + 'title' => 'required', + 'price' => 'required' + ]; + $data = [ + 'title' => $this->request->getVar('title'), + 'price' => $this->request->getVar('price') + ]; + + if (!$this->validate($rules)) + return $this->fail($this->validator->getErrors()); + $model = new ItemModel(); + $model->save($data); + $response = [ + 'status' => 201, + 'error' => null, + 'messages' => [ + 'success' => 'Data Inserted' + ] + ]; + return $this->respondCreated($response); + } + + public function calcular() + { + helper(['form']); + + $data_tmp = array + ( + 'clienteId' => 1870, + 'tamanio' => array + ( + 'ancho' => 170, + 'alto' => 240 + ), + 'tirada' => array + ( + '0' => 50 + ), + 'paginas' => 320, + 'paginasColor' => 0, + 'pagColorConsecutivas' => 0, + 'papelInteriorDiferente' => 0, + 'paginasCuadernillo' => 32, + 'tipo' => 'cosido', + 'isColor' => 0, + 'isHq' => 0, + 'interior' => array + ( + 'papelInterior' => 3, + 'gramajeInterior' => 80 + ), + 'guardas' => array + ( + 'papel' => 'OFF1', + 'gramaje' => 170, + 'caras' => 8 + ), + 'posPaginasColor' => null, + 'prototipo' => 0, + 'ferro' => 0, + 'ferroDigital' => 0, + 'marcapaginas' => 0, + 'retractilado' => 0, + 'retractilado5' => 0, + 'eb' => 10.5, + 'cubierta' => array + ( + 'tipoCubierta' => 'tapaDura', + 'papelCubierta' => 2, + 'gramajeCubierta' => 170, + 'cabezada' => 'WHI', + 'acabado' => 1, + 'carasImpresion' => 2, + 'lomoRedondo' => 0, + 'solapas' => 0, + ), + 'sobrecubierta' => false, + 'faja' => false, + 'excluirRotativa' => 0, + 'ivaReducido' => 1, + 'servicios' => array + ( + 'prototipo' => 0, + 'ferro' => 0, + 'ferroDigital' => 0, + 'marcapaginas' => 0, + 'retractilado' => 0, + 'retractilado5' => 0 + ), + 'entrega_taller' => 1, + 'id' => 334 + ); + + + // Crear el cliente HTTP + $client = \Config\Services::curlrequest(); + + // Realizar la solicitud POST + $response = $client->post('https://sk-imn.imnavajas.es/presupuestocliente/calcular', [ + 'headers' => [ + 'X-Requested-With' => 'XMLHttpRequest', // Esto simula una solicitud AJAX + 'Content-Type' => 'application/x-www-form-urlencoded', + ], + 'form_params' => $data_tmp, // Enviar datos como si fueran enviados por un formulario + ]); + + // Procesar la respuesta + $responseData = json_decode($response->getBody(), true); + + + /*$response = [ + 'status' => 200, + 'error' => null, + 'messages' => [ + 'success' => 'Data updated' + ] + ];*/ + return $this->respond(json_encode($responseData)); + } + + public function delete($id = null) + { + $model = new ItemModel(); + $find = $model->find(['id' => $id]); + if (!$find) + return $this->failNotFound('No Data Found'); + $model->delete($id); + + $response = [ + 'status' => 200, + 'error' => null, + 'messages' => [ + 'success' => 'Data deleted' + ] + ]; + return $this->respond($response); + } +} From 88e503067adeec9324c7fc3961f179a7705f4b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Fri, 17 Jan 2025 14:53:14 +0100 Subject: [PATCH 2/7] pruebas presupuestocliente --- ci4/app/Controllers/API/ImprimelibrosApi.php | 21 +- .../Presupuestos/Presupuestocliente.php | 203 ++++++++++++++++++ 2 files changed, 209 insertions(+), 15 deletions(-) diff --git a/ci4/app/Controllers/API/ImprimelibrosApi.php b/ci4/app/Controllers/API/ImprimelibrosApi.php index 8b836c29..ff3aa61f 100644 --- a/ci4/app/Controllers/API/ImprimelibrosApi.php +++ b/ci4/app/Controllers/API/ImprimelibrosApi.php @@ -68,7 +68,9 @@ class ImprimelibrosApi extends ResourceController ), 'tirada' => array ( - '0' => 50 + '0' => 50, + '1' => 100, + ), 'paginas' => 320, 'paginasColor' => 0, @@ -125,22 +127,11 @@ class ImprimelibrosApi extends ResourceController 'id' => 334 ); - // Crear el cliente HTTP $client = \Config\Services::curlrequest(); - // Realizar la solicitud POST - $response = $client->post('https://sk-imn.imnavajas.es/presupuestocliente/calcular', [ - 'headers' => [ - 'X-Requested-With' => 'XMLHttpRequest', // Esto simula una solicitud AJAX - 'Content-Type' => 'application/x-www-form-urlencoded', - ], - 'form_params' => $data_tmp, // Enviar datos como si fueran enviados por un formulario - ]); - - // Procesar la respuesta - $responseData = json_decode($response->getBody(), true); - + $presupuestocliente = new Presupuestocliente(); + $response = $presupuestocliente->calcular2($data_tmp); /*$response = [ 'status' => 200, @@ -149,7 +140,7 @@ class ImprimelibrosApi extends ResourceController 'success' => 'Data updated' ] ];*/ - return $this->respond(json_encode($responseData)); + return $this->respond($response['precio_u']); } public function delete($id = null) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 3effc193..e3479409 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -585,6 +585,209 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } + public function calcularLibrosApi($data) + { + try { + + $reqData = $data; + $modelPapelGenerico = new PapelGenericoModel(); + + + $id = $reqData['id'] ?? 0; + + $cliente_id = $reqData['clienteId'] ?? -1; + + $tirada = $reqData['tirada'] ?? 0; + $tamanio = $reqData['tamanio']; + $paginas = $reqData['paginas'] ?? 0; + $paginas_color = $reqData['paginasColor'] ?? 0; + $tipo = $reqData['tipo']; + + $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; + $papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; + + $isColor = intval($reqData['isColor']) ?? 0; + $isHq = intval($reqData['isHq']) ?? 0; + + $interior = $reqData['interior'] ?? []; + $cubierta = $reqData['cubierta'] ?? []; + $sobrecubierta = $reqData['sobrecubierta'] ?? []; + $guardas = $reqData['guardas'] ?? []; + $faja = $reqData['faja'] ?? []; + $excluirRotativa = $reqData['excluirRotativa'] ?? 0; + $excluirRotativa = intval($excluirRotativa); + + $direcciones = $reqData['direcciones'] ?? []; + + $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); + $lomoRedondo = $cubierta['lomoRedondo'] ?? 0; + + if ($papelInteriorDiferente) { + $papel['negro'] = $modelPapelGenerico->where('id', $interior['papelInterior']['negro'])->first()->toArray(); + $papel['color'] = $modelPapelGenerico->where('id', $interior['papelInterior']['color'])->first()->toArray(); + $gramaje['negro'] = intval($interior['gramajeInterior']['negro']); + $gramaje['color'] = intval($interior['gramajeInterior']['color']); + } else { + $papel = $modelPapelGenerico->where('id', $interior['papelInterior'])->first()->toArray(); + $gramaje = intval($interior['gramajeInterior']); + } + // Interior + $interior = [ + 'papel_generico' => $papel, + 'gramaje' => $gramaje, + 'excluirRotativa' => $excluirRotativa, + 'paginas' => $paginas, + 'paginas_color' => $paginas_color, + 'papelInteriorDiferente' => $papelInteriorDiferente + ]; + + + // Cubierta + $cubierta = [ + 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(), + 'gramajeCubierta' => intval($cubierta['gramajeCubierta']), + 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0), + 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0, + 'acabado' => $cubierta['acabado'] ?? 0, + 'lomoRedondo' => $lomoRedondo, + ]; + + // Sobrecubierta + if ($sobrecubierta != "false" && $sobrecubierta != null) { + $sobrecubierta = [ + 'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']), + 'gramaje' => intval($sobrecubierta['gramaje']), + 'solapas' => intval($sobrecubierta['solapas'] ?? 0), + 'acabado' => $sobrecubierta['acabado'] ?? 0, + ]; + } else + $sobrecubierta = false; + + // Guardas + if ($guardas != "false" && $guardas != null) { + $datos_guardas = [ + 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), + 'gramaje' => intval($guardas['gramaje']), + 'caras' => intval($guardas['caras']), + ]; + } else + $datos_guardas = false; + + $datos_presupuesto = array( + 'id' => $id, + 'tirada' => $tirada, + 'tamanio' => $tamanio, + 'tipo_impresion_id' => $tipo_impresion_id, + 'clienteId' => $cliente_id, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'paginasCuadernillo' => $paginasCuadernillo, + + 'interior' => $interior, + 'cubierta' => $cubierta, + 'sobrecubierta' => $sobrecubierta, + 'datos_guardas' => $datos_guardas, + + 'servicios' => $reqData['servicios'] ?? [], + ); + + $return_data = $this->calcular_presupuesto($datos_presupuesto, 0, false); //TRUE FOR DEBUG + if (array_key_exists('errors', $return_data)) { + if ($return_data['errors']->status == 1) { + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } + } + + if (array_key_exists('exception', $return_data)) { + return $this->failServerError( + $return_data['exception'] . ' - ' . + $return_data['file'] . ' - ' . $return_data['line'] + ); + } + + if (count($direcciones) > 1) { + + for ($i = 0; $i < count($tirada); $i++) { + + $coste_envio = 0.0; + $primer_envio = false; + foreach ($direcciones as $direccion) { + $coste_direccion = $this->getCosteEnvio( + $direccion['id'], + $return_data['peso'][$i], + !$primer_envio ? intval($tirada[$i]) : $direccion['unidades'], + $direccion['entregaPalets'] == 'true' ? 1 : 0 + )[0]; + + $primer_envio = true; + + if (!property_exists($coste_direccion, 'coste')) { + + $errorModel = new ErrorPresupuesto(); + $data['direccion'] = $direccion; + $data['peso'] = $return_data['peso'][$i]; + $data['palets'] = $direccion['entregaPalets'] == 'true' ? 1 : 0; + $errorModel->insertError( + $id, + auth()->user()->id, + 'No se ha podido calcular el coste de envío', + $data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } else { + $coste_envio += $coste_direccion->coste; + } + } + $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); + } + } else { + + for ($i = 0; $i < count($tirada); $i++) { + + $coste_envio = 0.0; + $coste_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0]; + + if (!property_exists($coste_direccion, 'coste')) { + $errorModel = new ErrorPresupuesto(); + $data['direccion'] = 'Sin direccion'; + $data['peso'] = $return_data['peso'][$i]; + $data['palets'] = 'Sin direccion'; + $errorModel->insertError( + $id, + auth()->user()->id, + 'No se ha podido calcular el coste de envío', + $data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } else { + $coste_envio += $coste_direccion->coste; + } + + $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); + } + } + + return $return_data; + } catch (Exception $e) { + return "Error:" + $e; + } + + } public function calcularMaxSolapas() { From c47865912407c9bac3774fc37710122a7b35553a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Fri, 17 Jan 2025 15:01:41 +0100 Subject: [PATCH 3/7] modificacion de la api y de la funcion calcular en el presupuesto cliente --- ci4/app/Controllers/API/ImprimelibrosApi.php | 4 +- .../Presupuestos/Presupuestocliente.php | 561 ++++++------------ 2 files changed, 189 insertions(+), 376 deletions(-) diff --git a/ci4/app/Controllers/API/ImprimelibrosApi.php b/ci4/app/Controllers/API/ImprimelibrosApi.php index ff3aa61f..2c46d771 100644 --- a/ci4/app/Controllers/API/ImprimelibrosApi.php +++ b/ci4/app/Controllers/API/ImprimelibrosApi.php @@ -70,7 +70,7 @@ class ImprimelibrosApi extends ResourceController ( '0' => 50, '1' => 100, - + ), 'paginas' => 320, 'paginasColor' => 0, @@ -131,7 +131,7 @@ class ImprimelibrosApi extends ResourceController $client = \Config\Services::curlrequest(); $presupuestocliente = new Presupuestocliente(); - $response = $presupuestocliente->calcular2($data_tmp); + $response = $presupuestocliente->calcular($data_tmp); /*$response = [ 'status' => 200, diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index e3479409..b5708890 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -356,20 +356,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($tipo == 'cosido' || $tipo == 'fresado') { if ($lomo < $lomo_minimo_fresado_cosido) { $errors['status'] = 1; - $errors['value'] = 'No se pueden encuadernar libros cosidos o fresados con lomo inferior a ' - . $lomo_minimo_fresado_cosido . ' mm. El lomo actual es de ' . $lomo . ' mm. ' . - "Por favor, aumente el número de páginas o el gramaje del papel para que sea encuadernable."; + $errors['value'] = 'No se pueden encuadernar libros cosidos o fresados con lomo inferior a ' + . $lomo_minimo_fresado_cosido . ' mm. El lomo actual es de ' . $lomo . ' mm. ' . + "Por favor, aumente el número de páginas o el gramaje del papel para que sea encuadernable."; } if ($lomo > $lomo_maximo) { $errors['status'] = 1; - $errors['value'] = 'No se pueden encuadernar con un lomo superior a ' - . $lomo_maximo . ' mm. El lomo actual es de ' . $lomo . ' mm. ' . - "Por favor, disminuya el número de páginas o el gramaje del papel para que sea encuadernable."; + $errors['value'] = 'No se pueden encuadernar con un lomo superior a ' + . $lomo_maximo . ' mm. El lomo actual es de ' . $lomo . ' mm. ' . + "Por favor, disminuya el número de páginas o el gramaje del papel para que sea encuadernable."; } } - $data = (object) array('lomo' => $lomo, - 'errors' => $errors); + $data = (object) array( + 'lomo' => $lomo, + 'errors' => $errors + ); return $this->respond($data); } else { @@ -377,185 +379,159 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } - public function calcular() + public function calcular($data = -1) { - if ($this->request->isAJAX()) { - - try { - + if ($this->request) { + if ($this->request->isAJAX()) $reqData = $this->request->getPost(); - $modelPapelGenerico = new PapelGenericoModel(); + } else { + if($data == -1){ + return "Error: sin datos"; + } + $reqData = $data; + } + try { + $modelPapelGenerico = new PapelGenericoModel(); + + $id = $reqData['id'] ?? 0; + + $cliente_id = $reqData['clienteId'] ?? -1; + + $tirada = $reqData['tirada'] ?? 0; + $tamanio = $reqData['tamanio']; + $paginas = $reqData['paginas'] ?? 0; + $paginas_color = $reqData['paginasColor'] ?? 0; + $tipo = $reqData['tipo']; + + $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; + $papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; + + $isColor = intval($reqData['isColor']) ?? 0; + $isHq = intval($reqData['isHq']) ?? 0; + + $interior = $reqData['interior'] ?? []; + $cubierta = $reqData['cubierta'] ?? []; + $sobrecubierta = $reqData['sobrecubierta'] ?? []; + $guardas = $reqData['guardas'] ?? []; + $faja = $reqData['faja'] ?? []; + $excluirRotativa = $reqData['excluirRotativa'] ?? 0; + $excluirRotativa = intval($excluirRotativa); + + $direcciones = $reqData['direcciones'] ?? []; + + $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); + $lomoRedondo = $cubierta['lomoRedondo'] ?? 0; + + if ($papelInteriorDiferente) { + $papel['negro'] = $modelPapelGenerico->where('id', $interior['papelInterior']['negro'])->first()->toArray(); + $papel['color'] = $modelPapelGenerico->where('id', $interior['papelInterior']['color'])->first()->toArray(); + $gramaje['negro'] = intval($interior['gramajeInterior']['negro']); + $gramaje['color'] = intval($interior['gramajeInterior']['color']); + } else { + $papel = $modelPapelGenerico->where('id', $interior['papelInterior'])->first()->toArray(); + $gramaje = intval($interior['gramajeInterior']); + } + // Interior + $interior = [ + 'papel_generico' => $papel, + 'gramaje' => $gramaje, + 'excluirRotativa' => $excluirRotativa, + 'paginas' => $paginas, + 'paginas_color' => $paginas_color, + 'papelInteriorDiferente' => $papelInteriorDiferente + ]; - $id = $reqData['id'] ?? 0; + // Cubierta + $cubierta = [ + 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(), + 'gramajeCubierta' => intval($cubierta['gramajeCubierta']), + 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0), + 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0, + 'acabado' => $cubierta['acabado'] ?? 0, + 'lomoRedondo' => $lomoRedondo, + ]; - $cliente_id = $reqData['clienteId'] ?? -1; + // Sobrecubierta + if ($sobrecubierta != "false" && $sobrecubierta != null) { + $sobrecubierta = [ + 'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']), + 'gramaje' => intval($sobrecubierta['gramaje']), + 'solapas' => intval($sobrecubierta['solapas'] ?? 0), + 'acabado' => $sobrecubierta['acabado'] ?? 0, + ]; + } else + $sobrecubierta = false; - $tirada = $reqData['tirada'] ?? 0; - $tamanio = $reqData['tamanio']; - $paginas = $reqData['paginas'] ?? 0; - $paginas_color = $reqData['paginasColor'] ?? 0; - $tipo = $reqData['tipo']; + // Guardas + if ($guardas != "false" && $guardas != null) { + $datos_guardas = [ + 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), + 'gramaje' => intval($guardas['gramaje']), + 'caras' => intval($guardas['caras']), + ]; + } else + $datos_guardas = false; - $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; - $papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; + $datos_presupuesto = array( + 'id' => $id, + 'tirada' => $tirada, + 'tamanio' => $tamanio, + 'tipo_impresion_id' => $tipo_impresion_id, + 'clienteId' => $cliente_id, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'paginasCuadernillo' => $paginasCuadernillo, - $isColor = intval($reqData['isColor']) ?? 0; - $isHq = intval($reqData['isHq']) ?? 0; + 'interior' => $interior, + 'cubierta' => $cubierta, + 'sobrecubierta' => $sobrecubierta, + 'datos_guardas' => $datos_guardas, - $interior = $reqData['interior'] ?? []; - $cubierta = $reqData['cubierta'] ?? []; - $sobrecubierta = $reqData['sobrecubierta'] ?? []; - $guardas = $reqData['guardas'] ?? []; - $faja = $reqData['faja'] ?? []; - $excluirRotativa = $reqData['excluirRotativa'] ?? 0; - $excluirRotativa = intval($excluirRotativa); + 'servicios' => $reqData['servicios'] ?? [], + ); - $direcciones = $reqData['direcciones'] ?? []; - - $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); - $lomoRedondo = $cubierta['lomoRedondo'] ?? 0; - - if ($papelInteriorDiferente) { - $papel['negro'] = $modelPapelGenerico->where('id', $interior['papelInterior']['negro'])->first()->toArray(); - $papel['color'] = $modelPapelGenerico->where('id', $interior['papelInterior']['color'])->first()->toArray(); - $gramaje['negro'] = intval($interior['gramajeInterior']['negro']); - $gramaje['color'] = intval($interior['gramajeInterior']['color']); - } else { - $papel = $modelPapelGenerico->where('id', $interior['papelInterior'])->first()->toArray(); - $gramaje = intval($interior['gramajeInterior']); + $return_data = $this->calcular_presupuesto($datos_presupuesto, 0, false); //TRUE FOR DEBUG + if (array_key_exists('errors', $return_data)) { + if ($return_data['errors']->status == 1) { + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; } - // Interior - $interior = [ - 'papel_generico' => $papel, - 'gramaje' => $gramaje, - 'excluirRotativa' => $excluirRotativa, - 'paginas' => $paginas, - 'paginas_color' => $paginas_color, - 'papelInteriorDiferente' => $papelInteriorDiferente - ]; + } - - // Cubierta - $cubierta = [ - 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(), - 'gramajeCubierta' => intval($cubierta['gramajeCubierta']), - 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0), - 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0, - 'acabado' => $cubierta['acabado'] ?? 0, - 'lomoRedondo' => $lomoRedondo, - ]; - - // Sobrecubierta - if ($sobrecubierta != "false" && $sobrecubierta != null) { - $sobrecubierta = [ - 'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']), - 'gramaje' => intval($sobrecubierta['gramaje']), - 'solapas' => intval($sobrecubierta['solapas'] ?? 0), - 'acabado' => $sobrecubierta['acabado'] ?? 0, - ]; - } else - $sobrecubierta = false; - - // Guardas - if ($guardas != "false" && $guardas != null) { - $datos_guardas = [ - 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), - 'gramaje' => intval($guardas['gramaje']), - 'caras' => intval($guardas['caras']), - ]; - } else - $datos_guardas = false; - - $datos_presupuesto = array( - 'id' => $id, - 'tirada' => $tirada, - 'tamanio' => $tamanio, - 'tipo_impresion_id' => $tipo_impresion_id, - 'clienteId' => $cliente_id, - 'isColor' => $isColor, - 'isHq' => $isHq, - 'paginasCuadernillo' => $paginasCuadernillo, - - 'interior' => $interior, - 'cubierta' => $cubierta, - 'sobrecubierta' => $sobrecubierta, - 'datos_guardas' => $datos_guardas, - - 'servicios' => $reqData['servicios'] ?? [], + if (array_key_exists('exception', $return_data)) { + return $this->failServerError( + $return_data['exception'] . ' - ' . + $return_data['file'] . ' - ' . $return_data['line'] ); + } - $return_data = $this->calcular_presupuesto($datos_presupuesto, 0, false); //TRUE FOR DEBUG - if (array_key_exists('errors', $return_data)) { - if ($return_data['errors']->status == 1) { - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } - } + if (count($direcciones) > 1) { - if (array_key_exists('exception', $return_data)) { - return $this->failServerError( - $return_data['exception'] . ' - ' . - $return_data['file'] . ' - ' . $return_data['line'] - ); - } + for ($i = 0; $i < count($tirada); $i++) { - if (count($direcciones) > 1) { + $coste_envio = 0.0; + $primer_envio = false; + foreach ($direcciones as $direccion) { + $coste_direccion = $this->getCosteEnvio( + $direccion['id'], + $return_data['peso'][$i], + !$primer_envio ? intval($tirada[$i]) : $direccion['unidades'], + $direccion['entregaPalets'] == 'true' ? 1 : 0 + )[0]; - for ($i = 0; $i < count($tirada); $i++) { - - $coste_envio = 0.0; - $primer_envio = false; - foreach ($direcciones as $direccion) { - $coste_direccion = $this->getCosteEnvio( - $direccion['id'], - $return_data['peso'][$i], - !$primer_envio ? intval($tirada[$i]) : $direccion['unidades'], - $direccion['entregaPalets'] == 'true' ? 1 : 0 - )[0]; - - $primer_envio = true; - - if (!property_exists($coste_direccion, 'coste')) { - - $errorModel = new ErrorPresupuesto(); - $data['direccion'] = $direccion; - $data['peso'] = $return_data['peso'][$i]; - $data['palets'] = $direccion['entregaPalets'] == 'true' ? 1 : 0; - $errorModel->insertError( - $id, - auth()->user()->id, - 'No se ha podido calcular el coste de envío', - $data - ); - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } else { - $coste_envio += $coste_direccion->coste; - } - } - $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); - } - } else { - - for ($i = 0; $i < count($tirada); $i++) { - - $coste_envio = 0.0; - $coste_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0]; + $primer_envio = true; if (!property_exists($coste_direccion, 'coste')) { + $errorModel = new ErrorPresupuesto(); - $data['direccion'] = 'Sin direccion'; + $data['direccion'] = $direccion; $data['peso'] = $return_data['peso'][$i]; - $data['palets'] = 'Sin direccion'; + $data['palets'] = $direccion['entregaPalets'] == 'true' ? 1 : 0; $errorModel->insertError( $id, auth()->user()->id, @@ -571,223 +547,60 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } else { $coste_envio += $coste_direccion->coste; } - - $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); } + $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); } + } else { - return $this->respond($return_data); - } catch (Exception $e) { + for ($i = 0; $i < count($tirada); $i++) { + + $coste_envio = 0.0; + $coste_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0]; + + if (!property_exists($coste_direccion, 'coste')) { + $errorModel = new ErrorPresupuesto(); + $data['direccion'] = 'Sin direccion'; + $data['peso'] = $return_data['peso'][$i]; + $data['palets'] = 'Sin direccion'; + $errorModel->insertError( + $id, + auth()->user()->id, + 'No se ha podido calcular el coste de envío', + $data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } else { + $coste_envio += $coste_direccion->coste; + } + + $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); + } + } + if($this->request){ + if($this->request->isAJAX()) + return $this->respond($return_data); + } + else{ + return $return_data; + } + + } catch (Exception $e) { + if($this->request){ + if($this->request->isAJAX()) return $this->failServerError($e->getMessage() . ' - ' . $e->getFile() . ' - ' . $e->getLine()); } - } else { - return $this->failUnauthorized('Invalid request', 403); + else{ + return "Error: " . $e->getMessage(); + } } } - public function calcularLibrosApi($data) - { - try { - $reqData = $data; - $modelPapelGenerico = new PapelGenericoModel(); - - - $id = $reqData['id'] ?? 0; - - $cliente_id = $reqData['clienteId'] ?? -1; - - $tirada = $reqData['tirada'] ?? 0; - $tamanio = $reqData['tamanio']; - $paginas = $reqData['paginas'] ?? 0; - $paginas_color = $reqData['paginasColor'] ?? 0; - $tipo = $reqData['tipo']; - - $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; - $papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; - - $isColor = intval($reqData['isColor']) ?? 0; - $isHq = intval($reqData['isHq']) ?? 0; - - $interior = $reqData['interior'] ?? []; - $cubierta = $reqData['cubierta'] ?? []; - $sobrecubierta = $reqData['sobrecubierta'] ?? []; - $guardas = $reqData['guardas'] ?? []; - $faja = $reqData['faja'] ?? []; - $excluirRotativa = $reqData['excluirRotativa'] ?? 0; - $excluirRotativa = intval($excluirRotativa); - - $direcciones = $reqData['direcciones'] ?? []; - - $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); - $lomoRedondo = $cubierta['lomoRedondo'] ?? 0; - - if ($papelInteriorDiferente) { - $papel['negro'] = $modelPapelGenerico->where('id', $interior['papelInterior']['negro'])->first()->toArray(); - $papel['color'] = $modelPapelGenerico->where('id', $interior['papelInterior']['color'])->first()->toArray(); - $gramaje['negro'] = intval($interior['gramajeInterior']['negro']); - $gramaje['color'] = intval($interior['gramajeInterior']['color']); - } else { - $papel = $modelPapelGenerico->where('id', $interior['papelInterior'])->first()->toArray(); - $gramaje = intval($interior['gramajeInterior']); - } - // Interior - $interior = [ - 'papel_generico' => $papel, - 'gramaje' => $gramaje, - 'excluirRotativa' => $excluirRotativa, - 'paginas' => $paginas, - 'paginas_color' => $paginas_color, - 'papelInteriorDiferente' => $papelInteriorDiferente - ]; - - - // Cubierta - $cubierta = [ - 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(), - 'gramajeCubierta' => intval($cubierta['gramajeCubierta']), - 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0), - 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0, - 'acabado' => $cubierta['acabado'] ?? 0, - 'lomoRedondo' => $lomoRedondo, - ]; - - // Sobrecubierta - if ($sobrecubierta != "false" && $sobrecubierta != null) { - $sobrecubierta = [ - 'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']), - 'gramaje' => intval($sobrecubierta['gramaje']), - 'solapas' => intval($sobrecubierta['solapas'] ?? 0), - 'acabado' => $sobrecubierta['acabado'] ?? 0, - ]; - } else - $sobrecubierta = false; - - // Guardas - if ($guardas != "false" && $guardas != null) { - $datos_guardas = [ - 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), - 'gramaje' => intval($guardas['gramaje']), - 'caras' => intval($guardas['caras']), - ]; - } else - $datos_guardas = false; - - $datos_presupuesto = array( - 'id' => $id, - 'tirada' => $tirada, - 'tamanio' => $tamanio, - 'tipo_impresion_id' => $tipo_impresion_id, - 'clienteId' => $cliente_id, - 'isColor' => $isColor, - 'isHq' => $isHq, - 'paginasCuadernillo' => $paginasCuadernillo, - - 'interior' => $interior, - 'cubierta' => $cubierta, - 'sobrecubierta' => $sobrecubierta, - 'datos_guardas' => $datos_guardas, - - 'servicios' => $reqData['servicios'] ?? [], - ); - - $return_data = $this->calcular_presupuesto($datos_presupuesto, 0, false); //TRUE FOR DEBUG - if (array_key_exists('errors', $return_data)) { - if ($return_data['errors']->status == 1) { - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } - } - - if (array_key_exists('exception', $return_data)) { - return $this->failServerError( - $return_data['exception'] . ' - ' . - $return_data['file'] . ' - ' . $return_data['line'] - ); - } - - if (count($direcciones) > 1) { - - for ($i = 0; $i < count($tirada); $i++) { - - $coste_envio = 0.0; - $primer_envio = false; - foreach ($direcciones as $direccion) { - $coste_direccion = $this->getCosteEnvio( - $direccion['id'], - $return_data['peso'][$i], - !$primer_envio ? intval($tirada[$i]) : $direccion['unidades'], - $direccion['entregaPalets'] == 'true' ? 1 : 0 - )[0]; - - $primer_envio = true; - - if (!property_exists($coste_direccion, 'coste')) { - - $errorModel = new ErrorPresupuesto(); - $data['direccion'] = $direccion; - $data['peso'] = $return_data['peso'][$i]; - $data['palets'] = $direccion['entregaPalets'] == 'true' ? 1 : 0; - $errorModel->insertError( - $id, - auth()->user()->id, - 'No se ha podido calcular el coste de envío', - $data - ); - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } else { - $coste_envio += $coste_direccion->coste; - } - } - $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); - } - } else { - - for ($i = 0; $i < count($tirada); $i++) { - - $coste_envio = 0.0; - $coste_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0]; - - if (!property_exists($coste_direccion, 'coste')) { - $errorModel = new ErrorPresupuesto(); - $data['direccion'] = 'Sin direccion'; - $data['peso'] = $return_data['peso'][$i]; - $data['palets'] = 'Sin direccion'; - $errorModel->insertError( - $id, - auth()->user()->id, - 'No se ha podido calcular el coste de envío', - $data - ); - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } else { - $coste_envio += $coste_direccion->coste; - } - - $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); - } - } - - return $return_data; - } catch (Exception $e) { - return "Error:" + $e; - } - - } public function calcularMaxSolapas() { From 5ffb52d6e864e00cad538e2d378a2d8988063e06 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Mon, 20 Jan 2025 14:58:59 +0100 Subject: [PATCH 4/7] Cambios en la API con imprimelibros --- ci4/app/Controllers/API/ImprimelibrosApi.php | 48 ++++--------------- .../Presupuestos/Presupuestocliente.php | 12 ++--- 2 files changed, 16 insertions(+), 44 deletions(-) diff --git a/ci4/app/Controllers/API/ImprimelibrosApi.php b/ci4/app/Controllers/API/ImprimelibrosApi.php index 2c46d771..d95bbdf0 100644 --- a/ci4/app/Controllers/API/ImprimelibrosApi.php +++ b/ci4/app/Controllers/API/ImprimelibrosApi.php @@ -19,45 +19,17 @@ class ImprimelibrosApi extends ResourceController return $this->respond($data); } - public function show($id = null) - { - $model = new ItemModel(); - $data = $model->find(['id' => $id]); - if (!$data) - return $this->failNotFound('No Data Found'); - return $this->respond($data[0]); - } - public function create() - { - helper(['form']); - $rules = [ - 'title' => 'required', - 'price' => 'required' - ]; - $data = [ - 'title' => $this->request->getVar('title'), - 'price' => $this->request->getVar('price') - ]; - - if (!$this->validate($rules)) - return $this->fail($this->validator->getErrors()); - $model = new ItemModel(); - $model->save($data); - $response = [ - 'status' => 201, - 'error' => null, - 'messages' => [ - 'success' => 'Data Inserted' - ] - ]; - return $this->respondCreated($response); - } public function calcular() { helper(['form']); + // Access the entire POST data + $post_data = $this->request->getJSON(true); + + //return $this->respond(var_dump($post_data)); + $data_tmp = array ( 'clienteId' => 1870, @@ -131,16 +103,16 @@ class ImprimelibrosApi extends ResourceController $client = \Config\Services::curlrequest(); $presupuestocliente = new Presupuestocliente(); - $response = $presupuestocliente->calcular($data_tmp); + $response = $presupuestocliente->calcular($post_data); - /*$response = [ + $response = [ 'status' => 200, 'error' => null, 'messages' => [ - 'success' => 'Data updated' + 'precio' => $response['precio_u'] ] - ];*/ - return $this->respond($response['precio_u']); + ]; + return $this->respond($response); } public function delete($id = null) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index b5708890..a93bb9bd 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -588,7 +588,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController else{ return $return_data; } - + } catch (Exception $e) { if($this->request){ if($this->request->isAJAX()) @@ -1376,9 +1376,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController /*********************** - * + * * Funciones auxiliares - * + * **********************/ protected function borrarRelacionesPresupuesto($id) { @@ -2116,7 +2116,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController */ $serviciosAutomaticos = []; $servicios = []; - // se comprueba si $datos guardas es un array + // se comprueba si $datos guardas es un array if (is_array($datos_guardas)) { if (count($datos_guardas) > 0) { array_push($servicios, 62); // Plegado de guardas @@ -2488,10 +2488,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ; foreach ($data as $linea) { - if (strpos($linea->tipo, "hq") !== false) { // $linea->tipo contains the substring "hq" + if (strpos($linea->tipo, "hq") !== false) { // $linea->tipo contains the substring "hq" $calidad = 'premium'; } - if (strpos($linea->tipo, "color") !== false) { // $linea->tipo contains the substring "color" + if (strpos($linea->tipo, "color") !== false) { // $linea->tipo contains the substring "color" $color = 'color'; } } From 9ed6e7b230772e023f82e391ee2c04712e5fc40d Mon Sep 17 00:00:00 2001 From: imnavajas Date: Sun, 2 Feb 2025 10:02:34 +0100 Subject: [PATCH 5/7] Arreglo para merge --- .../Presupuestos/Presupuestocliente.php | 741 +++++++++++++----- 1 file changed, 543 insertions(+), 198 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index a93bb9bd..4a92cd16 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -126,6 +126,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $this->viewData['POD'] = $POD; $this->viewData['lomo_maximo'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo')->value; $this->viewData['lomo_minimo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_minimo_fresado_cosido')->value; + $this->viewData['eb'] = 0; $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . $this->viewData['pageTitle'] . ' ' . lang('Basic.global.addNewSuffix'); @@ -166,6 +167,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $this->viewData['POD'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $this->viewData['lomo_maximo'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo')->value; $this->viewData['lomo_minimo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_minimo_fresado_cosido')->value; + $this->viewData['eb'] = $presupuestoEntity->envio_base; + // Si se ha llamado a esta funcion porque se ha duplicado el presupuesto // se actualiza la bbdd para que sólo ejecute algunas funciones una vez if ($presupuestoEntity->is_duplicado) { @@ -308,7 +311,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datosPedido = (object) array( 'paginas' => $paginas, 'tirada' => $tirada[0], - 'merma' => $tirada[0] > $POD ? $this->calcular_merma($tirada[0], $POD) : 0, + 'merma' => $this->calcular_merma($tirada[0], $POD), 'ancho' => intval($tamanio['ancho']) ?? 100000, 'alto' => intval($tamanio['alto']) ?? 100000, 'isCosido' => $is_cosido, @@ -345,6 +348,51 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $lomo += floatval($linea['mano']); } } + + //Guardas + $guardas = $reqData['guardas'] ?? []; + if ($guardas != "false" && $guardas != null) { + $datos_guardas = [ + 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), + 'gramaje' => intval($guardas['gramaje']), + 'caras' => intval($guardas['caras']), + ]; + } else + $datos_guardas = false; + $guardas = []; + $peso_guardas = 0.0; + $coste_guardas = 0.0; + if ($datos_guardas != 0) { + if (count($datos_guardas) != 0 && $datos_guardas) { + + $guardas = $datos_guardas; + $input_data['papel_generico'] = $datos_guardas['papel'] ?? 0; + $input_data['gramaje'] = $datos_guardas['gramaje'] ?? 0; + $input_data['datosPedido']->paginas = 8; + $input_data['paginas_color'] = 8; + $input_data['datosPedido']->paginas_impresion = $datos_guardas['caras'] ?? 0; + $input_data['datosPedido']->solapas_ancho = 0; + $input_data['datosPedido']->solapas = 0; + $input_data['isColor'] = 1; + $input_data['isHq'] = 1; + $input_data['uso'] = 'guardas'; + + // Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico + // y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral + // o wire-o tapa dura, las guardas se imprimen como hojas sueltas + if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) { + $input_data['datosPedido']->isCosido = true; + } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { + $input_data['datosPedido']->isCosido = false; + } + + $guardas = PresupuestoClienteService::obtenerGuardas($input_data); + + if ($guardas != null && count($guardas) > 0) { + $lomo += floatval($guardas['mano']); + } + } + } $lomo = round($lomo, 2); $errors = [ 'status' => 0, @@ -385,19 +433,24 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($this->request->isAJAX()) $reqData = $this->request->getPost(); } else { - if($data == -1){ + if ($data == -1) { return "Error: sin datos"; } $reqData = $data; } + try { + + $reqData = $this->request->getPost(); $modelPapelGenerico = new PapelGenericoModel(); + $id = $reqData['id'] ?? 0; $cliente_id = $reqData['clienteId'] ?? -1; $tirada = $reqData['tirada'] ?? 0; + $selectedTirada = $reqData['selectedTirada'] ?? -1; $tamanio = $reqData['tamanio']; $paginas = $reqData['paginas'] ?? 0; $paginas_color = $reqData['paginasColor'] ?? 0; @@ -510,21 +563,66 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ); } - if (count($direcciones) > 1) { + // calculo del envio base (tirada_maxima) + $return_data['eb'] = []; + for ($i = 0; $i < count($tirada); $i++) { + $direccion = []; + $coste_direccion = $this->getCosteEnvio( + $direccion, + $return_data['peso'][$i], + $tirada[$i], + false, + true + ); + + if (!property_exists($coste_direccion, 'coste')) { + $errorModel = new ErrorPresupuesto(); + $data['direccion'] = 'Sin direccion'; + $data['peso'] = $return_data['peso'][$i]; + $data['palets'] = 'Sin direccion'; + $errorModel->insertError( + $id, + auth()->user()->id, + 'No se ha podido calcular el coste de envío', + $data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } else { + $return_data['eb'][$i] = round($coste_direccion->coste, 2); + } + } + + + $envio_base = true; + if (count($direcciones) > 0) { for ($i = 0; $i < count($tirada); $i++) { - $coste_envio = 0.0; - $primer_envio = false; foreach ($direcciones as $direccion) { + // El primer envio no se calcula ya que se añade el base + if ($envio_base) { + //aporte del envio al precio unidad + $coste_envio += ($return_data['eb'][$i] / $tirada[$i]); + $envio_base = false; + continue; + } + if ($selectedTirada > 0) { + $unidades = floor($direccion['unidades'] * $tirada[$i] / $selectedTirada); + } else { + $unidades = $direccion['unidades']; + } $coste_direccion = $this->getCosteEnvio( - $direccion['id'], + $direccion['direccion'], $return_data['peso'][$i], - !$primer_envio ? intval($tirada[$i]) : $direccion['unidades'], - $direccion['entregaPalets'] == 'true' ? 1 : 0 - )[0]; - - $primer_envio = true; + $unidades, + $direccion['entregaPalets'] == 'true' ? 1 : 0, + false, + ); if (!property_exists($coste_direccion, 'coste')) { @@ -545,61 +643,36 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ]; return $return_data; } else { - $coste_envio += $coste_direccion->coste; + //aporte del envio al precio unidad + $coste_envio += ($coste_direccion->coste / $tirada[$i]); } } - $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); + $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4); } } else { - for ($i = 0; $i < count($tirada); $i++) { - $coste_envio = 0.0; - $coste_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0]; - - if (!property_exists($coste_direccion, 'coste')) { - $errorModel = new ErrorPresupuesto(); - $data['direccion'] = 'Sin direccion'; - $data['peso'] = $return_data['peso'][$i]; - $data['palets'] = 'Sin direccion'; - $errorModel->insertError( - $id, - auth()->user()->id, - 'No se ha podido calcular el coste de envío', - $data - ); - $return_data = [ - 'errors' => (object) ([ - 'status' => 1 - ]), - ]; - return $return_data; - } else { - $coste_envio += $coste_direccion->coste; - } - - $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); + $coste_envio += ($return_data['eb'][$i] / $tirada[$i]); + $return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4); } } - if($this->request){ - if($this->request->isAJAX()) + if ($this->request) { + if ($this->request->isAJAX()) return $this->respond($return_data); - } - else{ + } else { return $return_data; } } catch (Exception $e) { - if($this->request){ - if($this->request->isAJAX()) - return $this->failServerError($e->getMessage() . ' - ' . $e->getFile() . ' - ' . $e->getLine()); - } - else{ + if ($this->request) { + if ($this->request->isAJAX()) + return $this->failServerError($e->getMessage() . ' - ' . $e->getFile() . ' - ' . $e->getLine()); + } else { return "Error: " . $e->getMessage(); } } - } + } public function calcularMaxSolapas() @@ -621,7 +694,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $excluirRotativa = $reqData['excluirRotativa'] ?? 0; $excluirRotativa = intval($excluirRotativa); - $tipo = $reqData['tipo']; + $tipo = $reqData['tipo'] ??'cosido'; $tipoCubierta = 'blanda'; // solapas sólo tapa blanda y sobre cubierta $isColor = intval($reqData['isColor']) ?? 0; @@ -675,7 +748,20 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($interior == null) { return $this->failServerError('Error al calcular el interior'); } - $anchoTotal = $interior[0]['mano']; + + $anchoTotal = 0; + if (count($interior) == 2) { + + if (count($interior[0]) > 0) + $anchoTotal += $interior[0]['mano']; + if (count($interior[1]) > 0) + $anchoTotal += $interior[1]['mano']; + } else { + if (count($interior) > 0) + $anchoTotal += $interior[0]['mano']; + } + + // le añadimos 2*ancho libro $anchoTotal += 2 * $datosPedido->ancho; // le añadimos los dobleces de las solapas @@ -855,17 +941,20 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datosCabecera = $reqData['datosCabecera'] ?? []; + $confirmar = $reqData['confirmar'] ?? 0; $confirmar = intval($confirmar); $cliente_id = $reqData['clienteId'] ?? -1; - $tirada = $reqData['tirada'] ?? 0; + $tirada = $reqData['tirada'] ?? []; $selected_tirada = $reqData['selectedTirada'] ?? 0; $tamanio = $reqData['tamanio']; $paginas = $reqData['paginas'] ?? 0; $paginas_color = $reqData['paginasColor'] ?? 0; + $envio_base = $reqData['eb'] ?? 0; + $posPaginasColor = $reqData['posPaginasColor'] ?? ""; $paginasColorConsecutivas = $reqData['pagColorConsecutivas'] ?? 0; $papelInteriorDiferente = $reqData['papelInteriorDiferente'] ?? 0; @@ -993,43 +1082,119 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController // seleccionamos el peso de la tirada seleccionada $peso_libro = $resultado_presupuesto['peso'][array_search($selected_tirada, $tirada)]; + // calculo del envio base (tirada_maxima) + $resultado_presupuesto['eb'] = []; + $datos_presupuesto['envio_base'] = 0; + for ($i = 0; $i < count($tirada); $i++) { + $direccion = []; + $coste_direccion = $this->getCosteEnvio( + $direccion, + $resultado_presupuesto['peso'][$i], + $tirada[$i], + false, + true + ); - if (count($direcciones) > 1) { - - for ($i = 0; $i < count($tirada); $i++) { - - $resultado_presupuesto['info']['totales'][$i]['coste_envio'] = 0.0; - $resultado_presupuesto['info']['totales'][$i]['margen_envio'] = 0.0; - - $coste_envio = 0.0; - foreach ($direcciones as $direccion) { - $precio_envio = $this->getCosteEnvio( - $direccion['id'], - $resultado_presupuesto['peso'][$i], - $direccion['unidades'], - $direccion['entregaPalets'] == 'true' ? 1 : 0 - )[0]; - $coste_envio += $precio_envio->coste; - $margen_envio = $precio_envio->margen; - $resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $coste_envio - $margen_envio; - $resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $margen_envio; - } - $resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); + if (intval($selected_tirada) == intval($tirada[$i])) { + $datos_presupuesto['envio_base'] = round($coste_direccion->coste * (1 + $coste_direccion->margen / 100.0), 2); } - } else { - for ($i = 0; $i < count($tirada); $i++) { - $coste_envio = 0.0; - $precio_envio = $this->getCosteEnvio(null, $resultado_presupuesto['peso'][$i], $tirada[$i], false)[0]; - $coste_envio += $precio_envio->coste; - $margen_envio = $precio_envio->margen; - $resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio / $tirada[$i], 4); - - $resultado_presupuesto['info']['totales'][$i]['coste_envio'] = $coste_envio - $margen_envio; - $resultado_presupuesto['info']['totales'][$i]['margen_envio'] = $margen_envio; + if (!property_exists($coste_direccion, 'coste')) { + $errorModel = new ErrorPresupuesto(); + $data['direccion'] = 'Sin direccion'; + $data['peso'] = $resultado_presupuesto['peso'][$i]; + $data['palets'] = 'Sin direccion'; + $errorModel->insertError( + $id, + auth()->user()->id, + 'No se ha podido calcular el coste de envío', + $data + ); + $resultado_presupuesto = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $resultado_presupuesto; + } else { + $resultado_presupuesto['eb'][$i] = round($coste_direccion->coste, 2); + $resultado_presupuesto['eb_margen'][$i] = round($coste_direccion->margen, 2); } } + + for ($i = 0; $i < count($tirada); $i++) { + + $resultado_presupuesto['info']['totales'][$i]['coste_envio'] = 0.0; + $resultado_presupuesto['info']['totales'][$i]['margen_envio'] = 0.0; + } + if (count($direcciones) > 0) { + + for ($i = 0; $i < count($tirada); $i++) { + + $envio_base = true; + $coste_envio = 0.0; + $margen_envio = 0.0; + foreach ($direcciones as $direccion) { + // El primer envio no se calcula ya que se añade el base + if ($envio_base) { + //aporte del envio al precio unidad + $coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]); + $margen_envio += ($resultado_presupuesto['eb_margen'][$i] / $tirada[$i]); + $resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i]; + $resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $resultado_presupuesto['eb_margen'][$i]; + $envio_base = false; + continue; + } + + $unidades = floor($direccion['unidades'] * $tirada[$i] / $selected_tirada); + $coste_direccion = $this->getCosteEnvio( + $direccion['direccion'], + $resultado_presupuesto['peso'][$i], + $unidades, + $direccion['entregaPalets'] == 'true' ? 1 : 0, + false, + ); + + if (!property_exists($coste_direccion, 'coste')) { + + $errorModel = new ErrorPresupuesto(); + $data['direccion'] = $direccion; + $data['peso'] = $resultado_presupuesto['peso'][$i]; + $data['palets'] = $direccion['entregaPalets'] == 'true' ? 1 : 0; + $errorModel->insertError( + $id, + auth()->user()->id, + 'No se ha podido calcular el coste de envío', + $data + ); + $resultado_presupuesto = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $resultado_presupuesto; + } else { + //aporte del envio al precio unidad + $coste_envio += ($coste_direccion->coste / $tirada[$i]); + $resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $coste_direccion->coste - $coste_direccion->margen; + $resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $coste_direccion->margen; + + } + } + $resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4); + } + } else { + for ($i = 0; $i < count($tirada); $i++) { + $coste_envio = 0.0; + $coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]); + $resultado_presupuesto['info']['totales'][$i]['coste_envio'] = $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i]; + $resultado_presupuesto['info']['totales'][$i]['margen_envio'] = $resultado_presupuesto['eb_margen'][$i]; + $resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4); + } + } + + $model_presupuesto = new PresupuestoModel(); $tiradas_alternativas = []; $resumen_totales = []; @@ -1073,6 +1238,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datos_presupuesto['retractilado5'] = $retractilado5; $datos_presupuesto['entrega_taller'] = $reqData['entrega_taller'] ?? 0; + + $resultado_presupuesto['info']['merma'] = $this->calcular_merma($selected_tirada, $POD); + $id = $model_presupuesto->insertarPresupuestoCliente( $id, $selected_tirada, @@ -1090,17 +1258,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $this->borrarRelacionesPresupuesto($id); } - foreach ($resultado_presupuesto['info']['interior'] as $linea) { + foreach ($resultado_presupuesto['values']['interior'] as $linea) { if (count($linea) > 0) $this->guardarLineaPresupuesto($id, $linea); } - if (count($resultado_presupuesto['info']['cubierta']) > 0) - $this->guardarLineaPresupuesto($id, $resultado_presupuesto['info']['cubierta']); - if (count($resultado_presupuesto['info']['sobrecubierta']) > 0) - $this->guardarLineaPresupuesto($id, $resultado_presupuesto['info']['sobrecubierta']); - if (count($resultado_presupuesto['info']['guardas']) > 0) - $this->guardarLineaPresupuesto($id, $resultado_presupuesto['info']['guardas']); + if (count($resultado_presupuesto['values']['cubierta']) > 0) + $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['cubierta']); + if (count($resultado_presupuesto['values']['sobrecubierta']) > 0) + $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['sobrecubierta']); + if (count($resultado_presupuesto['values']['guardas']) > 0) + $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['guardas']); // Servicios if ($sobrecubierta) { @@ -1126,26 +1294,75 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } - foreach ($resultado_presupuesto['info']['serviciosDefecto']['encuadernacion'] as $servicio) { + foreach ($resultado_presupuesto['values']['serviciosDefecto']['encuadernacion'] as $servicio) { $this->guardarServicio($id, $servicio, 'encuadernacion'); } - foreach ($resultado_presupuesto['info']['serviciosDefecto']['manipulado'] as $servicio) { + foreach ($resultado_presupuesto['values']['serviciosDefecto']['manipulado'] as $servicio) { $this->guardarServicio($id, $servicio, 'manipulado'); } - foreach ($resultado_presupuesto['info']['servicios_automaticos'] as $servicio) { - if ($servicio->tarifa_id == 3 || $servicio->tarifa_id == 5 || $servicio->tarifa_id == 16) { + $servicio_ferro = (object) [ + 'nombre' => 'ferro', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_ferro')->value + ]; + $servicio_prototipo = (object) [ + 'nombre' => 'prototipo', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_prototipo')->value + ]; + $servicio_retractilado = (object) [ + 'nombre' => 'retractilado', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_retractilado')->value + ]; + $servicio_retractilado5 = (object) [ + 'nombre' => 'retractilado5', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_retractilado5')->value + ]; + $servicio_plegado_guardas = (object) [ + 'nombre' => 'plegado_guardas', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_guardas')->value + ]; + $servicio_solapas_cubierta = (object) [ + 'nombre' => 'solapas_cubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_cubierta')->value + ]; + $servicio_solapas_sobrecubierta = (object) [ + 'nombre' => 'solapas_sobrecubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_sobrecubierta')->value + ]; + $servicio_solapas_faja = (object) [ + 'nombre' => 'solapas_faja', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_faja')->value + ]; + $servicio_solapas_grandes_cubierta = (object) [ + 'nombre' => 'solapas_grandes_cubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_cubierta')->value + ]; + $servicio_solapas_grandes_sobrecubierta = (object) [ + 'nombre' => 'solapas_grandes_sobrecubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_sobrecubierta')->value + ]; + $servicio_solapas_grandes_faja = (object) [ + 'nombre' => 'solapas_grandes_faja', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_faja')->value + ]; + + foreach ($resultado_presupuesto['values']['servicios_automaticos'] as $servicio) { + if ($servicio->tarifa_id == $servicio_retractilado->id || $servicio->tarifa_id == $servicio_retractilado5->id) { // Servicios acabado $this->guardarServicio($id, $servicio, 'acabado'); - } else if ($servicio->tarifa_id == 24) { - // Servicios preimpresion - $this->guardarServicio($id, $servicio, 'preimpresion'); - } else if ($servicio->tarifa_id == 9) { + } else if ($servicio->tarifa_id == $servicio_ferro->id || $servicio->tarifa_id == $servicio_prototipo->id) { // Servicios extra $this->guardarServicio($id, $servicio, 'extra'); - } else if ($servicio->tarifa_id == 62) { + } else if ($servicio->tarifa_id == $servicio_plegado_guardas->id) { // Servicios manipulado $this->guardarServicio($id, $servicio, 'manipulado'); - } else if ($servicio->tarifa_id == 73) { + } else if ( + $servicio->tarifa_id == $servicio_solapas_cubierta->id || + $servicio->tarifa_id == $servicio_solapas_sobrecubierta->id || + $servicio->tarifa_id == $servicio_solapas_faja->id || + $servicio->tarifa_id == $servicio_solapas_grandes_cubierta->id || + $servicio->tarifa_id == $servicio_solapas_grandes_sobrecubierta->id || + $servicio->tarifa_id == $servicio_solapas_grandes_faja->id + ) { // Servicios manipulado $this->guardarServicio($id, $servicio, 'manipulado'); } @@ -1187,6 +1404,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($presupuesto) { $data['lc'] = $presupuesto->lomo_cubierta; $data['lsc'] = $presupuesto->lomo_sobrecubierta; + $data['eb'] = $presupuesto->envio_base; $data['state'] = intval($presupuesto->estado_id); $data['datosGenerales']['titulo'] = $presupuesto->titulo; $data['datosGenerales']['autor'] = $presupuesto->autor; @@ -1196,6 +1414,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data['datosGenerales']['paginas'] = $presupuesto->paginas; $data['datosGenerales']['paginasCuadernillo'] = $presupuesto->paginasCuadernillo; $data['datosGenerales']['tirada'] = $presupuesto->tirada; + $data['datosGenerales']['selectedTirada'] = $presupuesto->tirada; $data['datosGenerales']['ivaReducido'] = $presupuesto->iva_reducido; $data['datosGenerales']['excluirRotativa'] = $presupuesto->excluir_rotativa; $data['datosGenerales']['clienteId'] = $presupuesto->cliente_id; @@ -1221,9 +1440,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data['datosGenerales']['retractilado5'] = $presupuesto->retractilado5; $datos_papel = $this->obtenerDatosPapel($presupuesto->id); - $data['interior'] = $datos_papel['interior'] ? $datos_papel['interior'] : []; + if (array_key_exists('interior', $datos_papel)) { + $data['interior'] = $datos_papel['interior']; + } else { + $data['interior'] = []; + } - $data['cubierta'] = $datos_papel['cubierta'] ? $datos_papel['cubierta'] : []; + if (array_key_exists('cubierta', $datos_papel)) { + $data['cubierta'] = $datos_papel['cubierta']; + } else { + $data['cubierta'] = []; + } $data['cubierta']['tapa'] = $this->obtenerTipoTapa($presupuesto->tipo_impresion_id ?? null); $data['cubierta']['lomoRedondo'] = $presupuesto->lomo_redondo ? 1 : 0; $data['cubierta']['solapas'] = $presupuesto->solapas ? 1 : 0; @@ -1259,7 +1486,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if (intval($presupuesto->recoger_en_taller) == 1) { $data['direcciones']['entrega_taller'] = 1; } else { - $data['direcciones']['entrega_taller'] = 0; $data['direcciones'] = $this->obtenerDireccionesEnvio($id, $presupuesto->cliente_id); } @@ -1329,12 +1555,14 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $presupuesto_id = $_POST['presupuesto_id']; $old_files = json_decode($_POST['oldFiles']); + $ftp = new SafekatFtpClient(); // Comprobar si se han subido archivos if (!empty($_FILES['file']) || !empty($old_files)) { // Borrar los archivos existentes del presupuesto + $ftp->removeFiles($presupuesto_id); $model->deleteFiles($presupuesto_id, $old_files); if (!empty($_FILES['file'])) { @@ -1358,13 +1586,14 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if (!is_null($new_name)) { $path = WRITEPATH . 'uploads/presupuestos/' . $new_name; move_uploaded_file($tmp_name, $path); - $ftp = new SafekatFtpClient(); - $ftp->uploadFilePresupuesto($presupuesto_id); + } } + $ftp->uploadFilePresupuesto($presupuesto_id); } } else { // Borrar los archivos existentes del presupuesto + $ftp->removeFiles($presupuesto_id); $model->deleteFiles($presupuesto_id); } } @@ -1426,26 +1655,27 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $peso_envio = $peso_libro * $unidades / 1000.0; $data = $this->getCosteEnvio( - $direccion['id'], + $direccion['direccion'], $peso_libro, $direccion['unidades'], - $direccion['entregaPalets'] == 'false' ? 0 : 1 + $direccion['entregaPalets'] == 'false' ? 0 : 1, + false ); - if (count($data) > 0) { + if (isset($data->coste)) { - $data[0]->presupuesto_id = $presupuestoId; - $data[0]->tarifa_id = $data[0]->id; - unset($data[0]->id); - $data[0]->precio = $data[0]->coste; - unset($data[0]->coste); - $data[0]->entregaPieCalle = $direccion['entregaPalets'] == 'false' ? 0 : 1; - unset($data[0]->tipo); - $data[0]->peso = $peso_envio; - $data[0]->cantidad = $unidades; + $data->presupuesto_id = $presupuestoId; + $data->tarifa_id = $data->id; + unset($data->id); + $data->precio = $data->coste; + unset($data->coste); + $data->entregaPieCalle = $direccion['entregaPalets'] == 'false' ? 0 : 1; + unset($data->tipo); + $data->peso = $peso_envio; + $data->cantidad = $unidades; $model = new PresupuestoDireccionesModel(); - $model->insert($data[0]); + $model->insert($data); } } @@ -1511,18 +1741,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } - protected function getCosteEnvio($direccionId = null, $peso, $unidades, $entregaPieCalle) + protected function getCosteEnvio($direccion, $peso, $unidades, $entregaPieCalle, $calcular_envio_base) { + $return_data = $direccion; - if ($direccionId != null) { - $model = model('App\Models\Clientes\ClienteDireccionesModel'); - $data = $model->getDireccion($direccionId); + if ($calcular_envio_base) { + + $pais_id = 1; // españa + $cp = 18000; // envio nacional } else { - $data = []; - array_push($data, (object) [ - 'pais_id' => 1, // españa - 'cp' => 18000, // envio nacional - ]); + $pais_id = $direccion['pais_id']; + $cp = $direccion['cp']; } @@ -1530,41 +1759,40 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $coste = 0; $margen = 0; - if (count($data) > 0) { - $peso_envio = round(floatval($peso * $unidades / 1000.0)); // peso libro * unidades y se pasa a kilogramos - $tarifas_envio = $modelTarifaEnvio->getTarifaEnvio($data[0]->pais_id, $data[0]->cp, $peso_envio, $entregaPieCalle ? 'palets' : 'cajas'); - for ($i = 0; $i < count($tarifas_envio); $i++) { - if ($peso_envio > $tarifas_envio[$i]->peso_max || floatval($tarifas_envio[$i]->precio_max) == 0) { - $tarifas_envio[$i]->precio = number_format(floatval($tarifas_envio[$i]->precio_min) + ($peso_envio - floatval($tarifas_envio[$i]->peso_min)) * floatval($tarifas_envio[$i]->precio_adicional), 2); - } - // si no se calcula linealmente - else { - $m = (($tarifas_envio[$i]->precio_max - $tarifas_envio[$i]->precio_min) / ($tarifas_envio[$i]->peso_max - $tarifas_envio[$i]->peso_min)); - $b = $tarifas_envio[$i]->precio_max - $m * $tarifas_envio[$i]->peso_max; - $tarifas_envio[$i]->precio = number_format($m * $peso_envio + $b, 2); - } - $margen = $tarifas_envio[$i]->margen; - } - if (count($tarifas_envio) > 1) { - $tarifa_final = array_reduce($tarifas_envio, function ($previous, $current) { - return $current->precio < $previous->precio ? $current : $previous; - }); - $coste = $tarifa_final->precio; - } else { - if (count($tarifas_envio) > 0) - $coste = $tarifas_envio[0]->precio; + $peso_envio = round(floatval(floatval($peso) * floatval($unidades) / 1000.0)); // peso libro * unidades y se pasa a kilogramos + $tarifas_envio = $modelTarifaEnvio->getTarifaEnvio($pais_id, $cp, $peso_envio, $entregaPieCalle ? 'palets' : 'cajas'); + for ($i = 0; $i < count($tarifas_envio); $i++) { + if ($peso_envio > $tarifas_envio[$i]->peso_max || floatval($tarifas_envio[$i]->precio_max) == 0) { + $tarifas_envio[$i]->precio = number_format(floatval($tarifas_envio[$i]->precio_min) + ($peso_envio - floatval($tarifas_envio[$i]->peso_min)) * floatval($tarifas_envio[$i]->precio_adicional), 2); } - } - if (count($data) > 0 && count($tarifas_envio) > 0) { - $data[0]->coste = $coste; - $data[0]->tipo = $entregaPieCalle ? 'palets' : 'cajas'; - $data[0]->margen = $margen; - $data[0]->proveedor = $tarifas_envio[0]->proveedor; - $data[0]->proveedor_id = $tarifas_envio[0]->proveedor_id; + // si no se calcula linealmente + else { + $m = (($tarifas_envio[$i]->precio_max - $tarifas_envio[$i]->precio_min) / ($tarifas_envio[$i]->peso_max - $tarifas_envio[$i]->peso_min)); + $b = $tarifas_envio[$i]->precio_max - $m * $tarifas_envio[$i]->peso_max; + $tarifas_envio[$i]->precio = number_format($m * $peso_envio + $b, 2); + } + $margen = $tarifas_envio[$i]->margen; } - return $data; + if (count($tarifas_envio) > 1) { + $tarifa_final = array_reduce($tarifas_envio, function ($previous, $current) { + return $current->precio < $previous->precio ? $current : $previous; + }); + $coste = $tarifa_final->precio; + } else { + if (count($tarifas_envio) > 0) + $coste = $tarifas_envio[0]->precio; + $margen = $tarifas_envio[0]->margen; + } + + $return_data['coste'] = $coste; + $return_data['tipo'] = $entregaPieCalle ? 'palets' : 'cajas'; + $return_data['margen'] = $margen; + $return_data['proveedor'] = $tarifas_envio[0]->proveedor; + $return_data['proveedor_id'] = $tarifas_envio[0]->proveedor_id; + + return (object) $return_data; } protected function calcular_presupuesto($datos_entrada, $selected_tirada, $extra_info = false) @@ -1646,7 +1874,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datosPedido = (object) array( 'paginas' => $paginas, 'tirada' => $tirada[$t], - 'merma' => $tirada[$t] > $POD ? $this->calcular_merma($tirada[$t], $POD) : 0, + 'merma' => $this->calcular_merma($tirada[$t], $POD), 'ancho' => intval($tamanio['ancho']) ?? 100000, 'alto' => intval($tamanio['alto']) ?? 100000, 'isCosido' => $is_cosido, @@ -2108,40 +2336,88 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } // Servicios - - - /* - 'retractilado' => 3, - 'prototipo' => 9, - */ $serviciosAutomaticos = []; $servicios = []; + + $servicio_ferro = (object) [ + 'nombre' => 'ferro', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_ferro')->value + ]; + $servicio_prototipo = (object) [ + 'nombre' => 'prototipo', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_prototipo')->value + ]; + $servicio_retractilado = (object) [ + 'nombre' => 'retractilado', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_retractilado')->value + ]; + $servicio_retractilado5 = (object) [ + 'nombre' => 'retractilado5', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_retractilado5')->value + ]; + $servicio_plegado_guardas = (object) [ + 'nombre' => 'plegado_guardas', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_guardas')->value + ]; + $servicio_solapas_cubierta = (object) [ + 'nombre' => 'solapas_cubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_cubierta')->value + ]; + $servicio_solapas_sobrecubierta = (object) [ + 'nombre' => 'solapas_sobrecubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_sobrecubierta')->value + ]; + $servicio_solapas_faja = (object) [ + 'nombre' => 'solapas_faja', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('servicio_solapas_faja')->value + ]; + $servicio_solapas_grandes_cubierta = (object) [ + 'nombre' => 'solapas_grandes_cubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_cubierta')->value + ]; + $servicio_solapas_grandes_sobrecubierta = (object) [ + 'nombre' => 'solapas_grandes_sobrecubierta', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_sobrecubierta')->value + ]; + $servicio_solapas_grandes_faja = (object) [ + 'nombre' => 'solapas_grandes_faja', + 'id' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_plegado_exceso_solapas_faja')->value + ]; + // se comprueba si $datos guardas es un array if (is_array($datos_guardas)) { if (count($datos_guardas) > 0) { - array_push($servicios, 62); // Plegado de guardas + array_push($servicios, $servicio_plegado_guardas); // Plegado de guardas } } else { if ($datos_guardas > 0) { - array_push($servicios, 62); // Plegado de guardas + array_push($servicios, $servicio_plegado_guardas); // Plegado de guardas } } + if ($datos_entrada['servicios']['retractilado']) // acabado - array_push($servicios, 3); + array_push($servicios, $servicio_retractilado); if ($datos_entrada['servicios']['retractilado5']) // acabado - array_push($servicios, 98); + array_push($servicios, $servicio_retractilado5); if ($datos_entrada['servicios']['prototipo']) // extra - array_push($servicios, 9); + array_push($servicios, $servicio_prototipo); if ($datos_entrada['servicios']['ferro']) // extra - array_push($servicios, 30); - /*if ($datos_entrada['servicios']['ferroDigital']) - array_push($servicios, 29);*/ // Es gratis + array_push($servicios, $servicio_ferro); + if ($input_data['datosPedido']->solapas_ancho > 0) + array_push($servicios, $servicio_solapas_cubierta); + if (!is_null($sobreCubierta) && $sobreCubierta) // Si hay sobrecubierta, siempre con solapas + array_push($servicios, $servicio_solapas_sobrecubierta); + /* TO-DO + if (!is_null($faja) && $faja) // Si hay faja, siempre con solapas + array_push($servicios, $servicio_solapas_faja); + */ + foreach ($servicios as $servicio) { - if (intval($servicio) == 3 || intval($servicio) == 98) { + if ($servicio->nombre == "retractilado" || $servicio->nombre == "retractilado5") { // Servicios acabado $resultado = PresupuestoCLienteService::getServiciosAcabados([ - 'tarifa_id' => $servicio, + 'tarifa_id' => intval($servicio->id), 'tirada' => $datosPedido->tirada, 'POD' => $POD, ]); @@ -2169,12 +2445,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $totalServicios += floatval($resultado[0]->total); $margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0; } - } else if (intval($servicio) == 9 || intval($servicio) == 30 || intval($servicio) == 29) { + } else if ($servicio->nombre == "ferro" || $servicio->nombre == "prototipo") { // Extra $resultado = PresupuestoCLienteService::getServiciosExtra([ - 'tarifa_id' => $servicio, + 'tarifa_id' => intval($servicio->id), ]); - array_push($serviciosAutomaticos, $resultado[0]); + if ($resultado[0]->precio <= 0) { $errorModel = new ErrorPresupuesto(); @@ -2192,6 +2468,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController return $return_data; } + array_push($serviciosAutomaticos, $resultado[0]); $coste_servicios += floatval($resultado[0]->precio); if ($extra_info) { @@ -2199,21 +2476,49 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $margenServicios += floatval($resultado[0]->precio) * floatval($resultado[0]->margen) / 100.0; } } + else if ($servicio->nombre == 'solapas_cubierta' || $servicio->nombre == 'solapas_sobrecubierta' || $servicio->nombre == 'solapas_faja'){ + // Servicios manipulado + $resultado = PresupuestoCLienteService::getServiciosManipulado([ + 'tarifa_id' => intval($servicio->id), + 'tirada' => $datosPedido->tirada, + 'POD' => $POD, + ]); + + if ($resultado[0]->total <= 0) { + + $errorModel = new ErrorPresupuesto(); + $errorModel->insertError( + $datos_entrada['id'], + auth()->user()->id, + 'No se puede obtener servicio de manupulado con ' . ((string) $servicio->nombre), + $input_data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } else { + array_push($serviciosAutomaticos, $resultado[0]); + } + + $coste_servicios += floatval($resultado[0]->total); + if ($extra_info) { + $totalServicios += floatval($resultado[0]->total); + $margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0; + } + } } // Plegado de solapas grandes - if ( - (intval($solapasCubierta) > 0 && intval($cubierta['dimension_desarrollo']['ancho']) > 630) || - (is_array($sobreCubierta) && ($sobreCubierta['solapas'] > 0 && intval($linea_sobrecubierta['dimension_desarrollo']['ancho']) > 630)) - ) { - - // Servicios acabado + if (intval($solapasCubierta) > 0 && intval($cubierta['dimension_desarrollo']['ancho']) > 630) { + // Servicios manipulado $resultado = PresupuestoCLienteService::getServiciosManipulado([ - 'tarifa_id' => 73, + 'tarifa_id' => intval($servicio_solapas_grandes_cubierta->id), 'tirada' => $datosPedido->tirada, 'POD' => $POD, ]); - array_push($serviciosAutomaticos, $resultado[0]); if ($resultado[0]->total <= 0) { @@ -2221,7 +2526,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $errorModel->insertError( $datos_entrada['id'], auth()->user()->id, - 'No se puede obtener servicio de manupulado con id ' . ((string) $servicio), + 'No se puede obtener servicio de manupulado con ' . ((string) $servicio->nombre), $input_data ); $return_data = [ @@ -2230,6 +2535,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ]), ]; return $return_data; + } else { + array_push($serviciosAutomaticos, $resultado[0]); } $coste_servicios += floatval($resultado[0]->total); @@ -2237,9 +2544,45 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $totalServicios += floatval($resultado[0]->total); $margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0; } - } + if (is_array($sobreCubierta) && ($sobreCubierta['solapas'] > 0 && intval($linea_sobrecubierta['dimension_desarrollo']['ancho']) > 630)) { + + // Servicios manipulado + $resultado = PresupuestoCLienteService::getServiciosManipulado([ + 'tarifa_id' => intval($servicio_solapas_grandes_sobrecubierta->id), + 'tirada' => $datosPedido->tirada, + 'POD' => $POD, + ]); + + if ($resultado[0]->total <= 0) { + + $errorModel = new ErrorPresupuesto(); + $errorModel->insertError( + $datos_entrada['id'], + auth()->user()->id, + 'No se puede obtener servicio de manupulado ' . ((string) $servicio->nombre), + $input_data + ); + $return_data = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $return_data; + } else { + array_push($serviciosAutomaticos, $resultado[0]); + } + + $coste_servicios += floatval($resultado[0]->total); + if ($extra_info) { + $totalServicios += floatval($resultado[0]->total); + $margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0; + } + } + + // TO-DO Faja + array_push($precio_u, round(($costeInterior + $coste_cubierta + $coste_sobrecubierta + $costeServiciosDefecto + $coste_servicios) / $tirada[$t], 4)); array_push($peso, round($peso_interior + $peso_cubierta + $peso_sobrecubierta + $peso_guardas, 2)); @@ -2277,15 +2620,15 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $return_data['info'] = $info; - if ($extra_info) { // && $tirada[$t] == $selected_tirada) { + if ($extra_info && ($tirada[$t] == $selected_tirada)) { - $return_data['info']['interior'] = $interior; - $return_data['info']['cubierta'] = $cubierta; - $return_data['info']['sobrecubierta'] = $linea_sobrecubierta; - $return_data['info']['guardas'] = $guardas; - $return_data['info']['serviciosDefecto']['encuadernacion'] = $servDefectoEnc; - $return_data['info']['serviciosDefecto']['manipulado'] = $servDefectoMan; - $return_data['info']['servicios_automaticos'] = $serviciosAutomaticos; + $return_data['values']['interior'] = $interior; + $return_data['values']['cubierta'] = $cubierta; + $return_data['values']['sobrecubierta'] = $linea_sobrecubierta; + $return_data['values']['guardas'] = $guardas; + $return_data['values']['serviciosDefecto']['encuadernacion'] = $servDefectoEnc; + $return_data['values']['serviciosDefecto']['manipulado'] = $servDefectoMan; + $return_data['values']['servicios_automaticos'] = $serviciosAutomaticos; } } @@ -2400,7 +2743,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $merma = 0; if ($tirada > $POD) { - $merma = $tirada * 0.1 <= 30 ? $tirada * 0.1 : 30; + $merma = $tirada * 0.1; } else { $merma_lineas = []; foreach ($formas_lineas_interior as $formas_linea) { @@ -2563,7 +2906,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController { $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); $model_direcciones = model('App\Models\Clientes\ClienteDireccionesModel'); - $direcciones = $model->where('presupuesto_id', $id)->findAll(); + $direcciones = $model->where('presupuesto_id', $id)->asArray()->findAll(); + + return $direcciones; $result = []; $temp = []; From d61ea0d38052337882dee9c21af6b3e8e9902763 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Sun, 2 Feb 2025 10:04:42 +0100 Subject: [PATCH 6/7] Arreglo para merge --- ci4/app/Config/Routes.php | 52 ++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 60462f24..d9dfbf9a 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -46,6 +46,7 @@ $routes->group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function ( $routes->post('encuadernacion', 'TarifaMaquinas::add_tarifa_encuadernacion_maquina_with_tarea'); $routes->post('extra', 'TarifaMaquinas::add_tarifa_extra_maquina_with_tarea'); + $routes->delete('acabado/(:num)', 'TarifaMaquinas::delete_tarifa_acabado_maquina_with_tarea/$1'); $routes->delete('manipulado/(:num)', 'TarifaMaquinas::delete_tarifa_manipulado_maquina_with_tarea/$1'); $routes->delete('preimpresion/(:num)', 'TarifaMaquinas::delete_tarifa_preimpresion_maquina_with_tarea/$1'); @@ -76,6 +77,8 @@ $routes->group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function ( $routes->get('delete/(:num)', 'TarifaAcabados::delete/$1', ['as' => 'tarifaAcabadoDelete']); $routes->post('datatable', 'TarifaAcabados::datatable', ['as' => 'tarifaAcabadoDT']); $routes->get('select', 'TarifaAcabados::show_select', ["as" => "showSelectTarifaAcabado"]); + $routes->get('gettarifas', 'TarifaAcabados::getSelect2'); + $routes->group('lineas', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) { $routes->post('datatable', 'TarifaAcabadosLineas::datatable', ['as' => 'tarifaAcabadoLineasDT']); $routes->post('datatable_editor', 'TarifaAcabadosLineas::datatable_editor', ['as' => 'tarifaAcabadoLineasDTE']); @@ -122,13 +125,14 @@ $routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion'] $routes->get('datatable', 'ConfigErrores::datatable', ['as' => 'erroresPresupuestoDatatable']); $routes->post('edit/(:num)', 'ConfigErrores::update_error_presupuesto/$1', ['as' => 'erroresPresupuestoUpdate']); }); - $routes->group("servicios", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { - $routes->get('', 'ServicioCliente::index', ['as' => 'servicioClienteList']); - $routes->get('(:num)', 'ServicioCliente::show/$1', ['as' => 'servicioClienteShow']); - $routes->post('(:num)', 'ServicioCliente::store/$1', ['as' => 'servicioClienteStore']); - $routes->post('update/(:num)', 'ServicioCliente::update_servicio_cliente/$1', ['as' => 'updateServicioCliente']); - $routes->get('edit/(:num)', 'ServicioCliente::viewForm/$1', ['as' => 'servicioClienteViewForm']); - $routes->get('datatable', 'ServicioCliente::datatable', ['as' => 'servicioClienteDatatable']); + $routes->group("maquina-tareas", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) { + $routes->get('', 'MaquinaTarea::index', ['as' => 'maquinaTareaList']); + $routes->get('(:num)', 'MaquinaTarea::show/$1', ['as' => 'maquinaTareaShow']); + $routes->delete('(:num)', 'MaquinaTarea::delete/$1', ['as' => 'maquinaTareaDelete']); + $routes->post('', 'MaquinaTarea::store/$1', ['as' => 'maquinaTareaStore']); + $routes->post('update/(:num)', 'MaquinaTarea::update_servicio_cliente/$1', ['as' => 'maquinaTareaUpdate']); + $routes->get('edit/(:num)', 'MaquinaTarea::viewForm/$1', ['as' => 'maquinaTareaViewForm']); + $routes->get('datatable', 'MaquinaTarea::datatable', ['as' => 'maquinaTareaDatatable']); }); }); @@ -170,6 +174,7 @@ $routes->group('tarifapreimpresion', ['namespace' => 'App\Controllers\Tarifas'], $routes->get('delete/(:num)', 'Tarifapreimpresion::delete/$1', ['as' => 'deleteTarifapreimpresion']); $routes->post('allmenuitems', 'Tarifapreimpresion::allItemsSelect', ['as' => 'select2ItemsOfTarifaspreimpresion']); $routes->post('menuitems', 'Tarifapreimpresion::menuItems', ['as' => 'menuItemsOfTarifaspreimpresion']); + $routes->get('gettarifas', 'Tarifapreimpresion::getSelect2'); }); @@ -184,6 +189,7 @@ $routes->group('tarifaextra', ['namespace' => 'App\Controllers\Tarifas'], functi $routes->get('delete/(:num)', 'Tarifaextra::delete/$1', ['as' => 'deleteTarifaextra']); $routes->post('allmenuitems', 'Tarifaextra::allItemsSelect', ['as' => 'select2ItemsOfTarifasextra']); $routes->post('menuitems', 'Tarifaextra::menuItems', ['as' => 'menuItemsOfTarifasextra']); + $routes->get('gettarifas', 'Tarifaextra::getSelect2'); }); @@ -199,6 +205,7 @@ $routes->group('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas'], $routes->post('allmenuitems', 'Tarifasmanipulado::allItemsSelect', ['as' => 'select2ItemsOfTarifasManipulado']); $routes->post('menuitems', 'Tarifasmanipulado::menuItems', ['as' => 'menuItemsOfTarifasManipulado']); $routes->get('select', 'Tarifasmanipulado::show_select', ["as" => "showSelectTarifaManipulado"]); + $routes->get('gettarifas', 'Tarifasmanipulado::getSelect2'); }); $routes->resource('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasmanipulado', 'except' => 'show,new,create,update']); @@ -270,6 +277,7 @@ $routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracio $routes->post('datatable', 'Papelesimpresion::datatable', ['as' => 'dataTableOfPapelesImpresion']); $routes->post('allmenuitems', 'Papelesimpresion::allItemsSelect', ['as' => 'select2ItemsOfPapelesImpresion']); $routes->post('menuitems', 'Papelesimpresion::menuItems', ['as' => 'menuItemsOfPapelesImpresion']); + $routes->post('duplicate/(:num)','Papelesimpresion::duplicate/$1',['as' => 'duplicatePapelImpresion']); }); $routes->resource('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesimpresion', 'except' => 'show,new,create,update']); @@ -302,6 +310,8 @@ $routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], fun $routes->post('datatable', 'Maquinas::datatable', ['as' => 'dataTableOfMaquinas']); $routes->post('allmenuitems', 'Maquinas::allItemsSelect', ['as' => 'select2ItemsOfMaquinas']); $routes->post('menuitems', 'Maquinas::menuItems', ['as' => 'menuItemsOfMaquinas']); + $routes->post('duplicate/(:num)', 'Maquinas::duplicate/$1',['as' => 'duplicateMaquina']); + $routes->get('select', 'Maquinas::select', ['as' => 'selectMaquinas']); }); $routes->resource('maquinas', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinas', 'except' => 'show,new,create,update']); @@ -494,6 +504,7 @@ $routes->group('tarifasencuadernacion', ['namespace' => 'App\Controllers\Tarifas $routes->post('datatable', 'Tarifasencuadernacion::datatable', ['as' => 'dataTableOfTarifasEncuadernacion']); $routes->post('allmenuitems', 'Tarifasencuadernacion::allItemsSelect', ['as' => 'select2ItemsOfTarifasEncuadernacion']); $routes->post('menuitems', 'Tarifasencuadernacion::menuItems', ['as' => 'menuItemsOfTarifasEncuadernacion']); + $routes->get('gettarifas', 'Tarifasencuadernacion::getSelect2'); }); $routes->resource('tarifasencuadernacion', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasencuadernacion', 'except' => 'show,new,create,update']); @@ -618,6 +629,16 @@ $routes->group('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos $routes->post('datatable_2', 'Presupuestoadmin::datatable_2', ['as' => 'updateDataOfPresupuestoAdmin']); $routes->post('allmenuitems', 'Presupuestoadmin::allItemsSelect', ['as' => 'select2ItemsOfPresupuestoAdmin']); $routes->post('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']); + + $routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1'); + $routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior'); + $routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores'); + $routes->post('comparadorguardas', 'Presupuestoadmin::obtenerComparadorGuardas'); + $routes->get('papelgenerico', 'Presupuestoadmin::getPapelGenerico'); + $routes->get('papelgramaje', 'Presupuestoadmin::getGramaje'); + $routes->get('papelimpresion', 'Presupuestoadmin::getPapelImpresion'); + $routes->get('maquinas', 'Presupuestoadmin::getMaquinas'); + $routes->post('getlinea', 'Presupuestoadmin::getLineaPresupuesto'); }); $routes->resource('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestoadmin', 'except' => 'show,new,create,update']); @@ -642,32 +663,43 @@ $routes->group('presupuestocliente', ['namespace' => 'App\Controllers\Presupuest $routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']); $routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { - $routes->post('datatable', 'Presupuestoacabados::datatable', ['as' => 'dataTableOfPresupuestoAcabados']); + $routes->get('getacabados', 'Presupuestoacabados::getAcabados'); + $routes->post('getvalues', 'Presupuestoacabados::getRowValues'); $routes->post('menuitems', 'Presupuestoacabados::menuItems', ['as' => 'menuItemsOfPresupuestoAcabados']); $routes->post('edit/(:num)', 'Presupuestoacabados::edit/$1', ['as' => 'updatePresupuestoacabados']); - $routes->get('getacabados', 'Presupuestoacabados::getAcabados'); + $routes->get('cargar', 'Presupuestoacabados::cargar'); + $routes->post('update/(:num)', 'Presupuestoacabados::update/$1'); }); + $routes->group('serviciosencuadernaciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->post('datatable', 'Presupuestoencuadernaciones::datatable', ['as' => 'dataTableOfPresupuestoEncuadernaciones']); + $routes->post('getvalues', 'Presupuestoencuadernaciones::getRowValues'); $routes->post('menuitems', 'Presupuestoencuadernaciones::menuItems', ['as' => 'menuItemsOfPresupuestoEncuadernaciones']); $routes->get('delete/(:num)', 'Presupuestoencuadernaciones::delete/$1', ['as' => 'deletePresupuestoencuadernaciones']); $routes->post('edit/(:num)', 'Presupuestoencuadernaciones::edit/$1', ['as' => 'updatePresupuestoencuadernaciones']); + $routes->post('update/(:num)', 'Presupuestoencuadernaciones::update/$1'); }); $routes->group('serviciosmanipulados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { + $routes->post('getvalues', 'Presupuestomanipulados::getRowValues'); $routes->post('datatable', 'Presupuestomanipulados::datatable', ['as' => 'dataTableOfPresupuestoManipulados']); $routes->post('edit/(:num)', 'Presupuestomanipulados::edit/$1', ['as' => 'updatePresupuestomanipulados']); + $routes->post('update/(:num)', 'Presupuestomanipulados::update/$1'); + $routes->get('serviciosolapas', 'Presupuestomanipulados::getServicioSolapas'); }); $routes->group('serviciospreimpresiones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { + $routes->post('getvalues', 'Presupuestopreimpresiones::getRowValues'); $routes->post('datatable', 'Presupuestopreimpresiones::datatable', ['as' => 'dataTableOfPresupuestoPreimpresiones']); $routes->post('edit/(:num)', 'Presupuestopreimpresiones::edit/$1', ['as' => 'updatePresupuestopreimpresiones']); + $routes->get('cargar', 'Presupuestopreimpresiones::getSelect2'); }); $routes->group('serviciosextra', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { $routes->post('datatable', 'Presupuestoserviciosextra::datatable', ['as' => 'dataTableOfPresupuestoServiciosExtra']); $routes->post('edit/(:num)', 'Presupuestoserviciosextra::edit/$1', ['as' => 'updatePresupuestoServiciosExtra']); + $routes->post('getvalues', 'Presupuestoserviciosextra::getRowValues'); }); $routes->group('presupuestodirecciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) { @@ -934,8 +966,6 @@ $routes->group( $routes->options('items', static function () { }); $routes->options('items/(:any)', static function () { }); - $routes->post("calcular", 'ImprimelibrosApi::calcular'); - // ... From 430e20201e9c0c969aca7a55e1d0d4d928f70259 Mon Sep 17 00:00:00 2001 From: imnavajas Date: Sun, 2 Feb 2025 11:00:07 +0100 Subject: [PATCH 7/7] =?UTF-8?q?A=C3=B1adidas=20rutas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ci4/app/Config/Routes.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 11ae7fd4..bab916c2 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -964,6 +964,8 @@ $routes->group( $routes->options('items', static function () { }); $routes->options('items/(:any)', static function () { }); + $routes->post("calcular", 'ImprimelibrosApi::calcular'); + // ...