diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 4015ad4c..900fe2d1 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -578,6 +578,7 @@ $routes->group('presupuestocliente', ['namespace' => 'App\Controllers\Presupuest $routes->post('getDireccionesCliente', 'Presupuestocliente::getDireccionesCliente', ['as' => 'getDirecciones']); $routes->post('getNuevaDireccion', 'Presupuestocliente::getNuevaDireccion', ['as' => 'nuevaDireccion']); $routes->post('guardar', 'Presupuestocliente::guardar', ['as' => 'guardar']); + $routes->get('cargar/(:num)', 'Presupuestocliente::cargar/$1', ['as' => 'cargarPresupuesto']); $routes->post('duplicarPresupuesto', 'Presupuestocliente::duplicarPresupuesto', ['as' => 'duplicarPresupuesto']); $routes->post('calcular', 'Presupuestocliente::calcular', ['as' => 'calcularPresupuesto']); }); diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 4d537282..47ca3ba8 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -93,13 +93,13 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ['title' => lang("App.menu_presupuestos"), 'route' => "javascript:void(0);", 'active' => false], ['title' => "Listado", 'route' => site_url('presupuestocliente/list'), 'active' => true] ]; - + // Se obtiene el cliente ID a partir del usuario de la sesion $model_user = model('App\Models\Usuarios\UserModel'); $user = $model_user->find(auth()->user()->id); $clienteId = $user->cliente_id; $POD = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD(); - + $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_presupuestos"), 'route' => site_url('presupuestocliente/list'), 'active' => false], ['title' => "Añadir Presupuesto", 'route' => "javascript:void(0);", 'active' => true] @@ -107,7 +107,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $this->viewData['formAction'] = 'add'; - + $this->viewData['paisList'] = model('App\Models\Configuracion\PaisModel')->getAllForMenu('id, nombre', 'nombre', true); $this->viewData['clienteId'] = $clienteId; $this->viewData['POD'] = $POD; @@ -178,7 +178,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $this->viewData['presupuestoEntity'] = $presupuestoEntity; $this->viewData['datosPresupuesto'] = $datosPresupuesto; - + $this->viewData['clienteId'] = $clienteId; $this->viewData['POD'] = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD(); // Si se ha llamado a esta funcion porque se ha duplicado el presupuesto @@ -312,6 +312,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $guardas = $reqData['guardas'] ?? []; $faja = $reqData['faja'] ?? []; $excluirRotativa = $reqData['excluirRotativa'] ?? 0; + $excluirRotativa = intval($excluirRotativa); $ivaReducido = intval($reqData['ivaReducido']) ?? 0; $direcciones = $reqData['direcciones'] ?? []; @@ -331,7 +332,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $interior = [ 'papel_generico' => $papel, 'gramaje' => $gramaje, - 'excluirRotativa' => $excluirRotativa == "false" ? false : true, + 'excluirRotativa' => $excluirRotativa, 'paginas' => $paginas, 'paginas_color' => $paginas_color, 'papelInteriorDiferente' => $papelInteriorDiferente @@ -421,7 +422,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController return $this->respond($return_data); } catch (Exception $e) { - return $this->failServerError($e->getMessage() ); + return $this->failServerError($e->getMessage()); } } else { return $this->failUnauthorized('Invalid request', 403); @@ -609,6 +610,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $guardas = $reqData['guardas'] ?? []; $faja = $reqData['faja'] ?? []; $excluirRotativa = $reqData['excluirRotativa'] ?? 0; + $excluirRotativa = intval($excluirRotativa); $ivaReducido = intval($reqData['ivaReducido']) ?? 0; $direcciones = $reqData['direcciones'] ?? []; @@ -628,7 +630,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $interior = [ 'papel_generico' => $papel, 'gramaje' => $gramaje, - 'excluirRotativa' => $excluirRotativa == "false" ? false : true, + 'excluirRotativa' => $excluirRotativa, 'paginas' => $paginas, 'paginas_color' => $paginas_color, 'papelInteriorDiferente' => $papelInteriorDiferente @@ -703,8 +705,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController // seleccionamos el peso de la tirada seleccionada $peso_libro = $resultado_presupuesto['peso'][array_search($selected_tirada, $tirada)]; - - + + if (count($direcciones) > 1) { for ($i = 0; $i < count($tirada); $i++) { @@ -746,9 +748,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $model_presupuesto = new PresupuestoModel(); $tiradas_alternativas = []; $resumen_totales = []; - + for ($i = 0; $i < count($tirada); $i++) { - + if ($tirada[$i] != $selected_tirada) { $coste_total = $resultado_presupuesto['info']['totales'][$i]['totalImpresion'] + $resultado_presupuesto['info']['totales'][$i]['totalPapel'] + @@ -778,19 +780,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $borrar_antes = true; } - if($datos_presupuesto['sobrecubierta']){ + if ($datos_presupuesto['sobrecubierta']) { $acabado_id = $this->obtenerTarifasAcabado(['plastificado' => $datos_presupuesto['sobrecubierta']['acabados']]); - if(count($acabado_id)>0){ + if (count($acabado_id) > 0) { $datos_presupuesto['sobrecubierta']['acabados'] = $acabado_id[0]; } } $acabado_id = $this->obtenerTarifasAcabado($datos_presupuesto['cubierta']['acabadosCubierta']); - if(count($acabado_id)>0){ + if (count($acabado_id) > 0) { $datos_presupuesto['cubierta']['acabadosCubierta']['plastificado'] = $acabado_id[0]; $datos_presupuesto['cubierta']['acabadosCubierta']['barniz'] = $acabado_id[1]; $datos_presupuesto['cubierta']['acabadosCubierta']['estampado'] = $acabado_id[2]; - } - else{ + } else { $datos_presupuesto['cubierta']['acabadosCubierta']['id'] = 0; } @@ -862,6 +863,145 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } + + public function cargar($id) + { + if ($this->request->isAJAX()) { + + $modelPapelGenerico = new PapelGenericoModel(); + + $reqData = $this->request->getPost(); + + $presupuesto = $this->model->find($id); + $data = []; + if ($presupuesto) { + $data['datosGenerales']['titulo'] = $presupuesto->titulo; + $data['datosGenerales']['autor'] = $presupuesto->autor; + $data['datosGenerales']['isbn'] = $presupuesto->isbn; + $data['datosGenerales']['coleccion'] = $presupuesto->coleccion; + $data['datosGenerales']['referenciaCliente'] = $presupuesto->referencia_cliente; + $data['datosGenerales']['paginas'] = $presupuesto->paginas; + $data['datosGenerales']['posPaginasColor'] = $presupuesto->paginas_color; + $data['datosGenerales']['paginasCuadernillo'] = $presupuesto->paginas_cuadernillo; + $data['datosGenerales']['tirada'] = $presupuesto->tirada; + $data['datosGenerales']['ivaReducido'] = $presupuesto->iva_reducido; + $data['datosGenerales']['excluirRotativa'] = $presupuesto->excluir_rotativa; + $data['datosGenerales']['clienteId'] = $presupuesto->cliente_id; + $data['datosGenerales']['clienteNombre'] = + model('App\Models\Clientes\ClienteModel') + ->find($presupuesto->cliente_id)->nombre; + $data['datosGenerales']['papelFormatoId'] = $presupuesto->papel_formato_id; + $data['datosGenerales']['papelFormatoPersonalizado'] = $presupuesto->papel_formato_personalizado; + $data['datosGenerales']['papelInteriorDiferente'] = $presupuesto->papel_interior_diferente; + + $data['tiradasPrecio'] = [ + (object) [ + 'tirada' => $presupuesto->tirada, + 'precio' => $presupuesto->total_confirmado, + 'precio_u' => $presupuesto->total_precio_unidad, + ] + ]; + + $tiradas_alternativas = json_decode($presupuesto->tirada_alternativa_json_data); + for ($i = 0; $i < count($tiradas_alternativas); $i++) { + $tirada = $tiradas_alternativas[$i]; + $data['datosGenerales']['tirada' . ($i + 2)] = $tirada->tirada; + array_push($data['tiradasPrecio'], (object) [ + 'tirada' => intval($tirada->tirada), + 'precio' => $tirada->total_pedido, + 'precio_u' => $tirada->precio_unidad, + ]); + } + usort($data['tiradasPrecio'], function ($a, $b) { + return $a->tirada <=> $b->tirada; + }); + + $modelLinea = new PresupuestoLineaModel(); + $lineas = $modelLinea->where('presupuesto_id', $id)->findAll(); + + [$data['datosGenerales']['paginasNegro'], $data['datosGenerales']['paginasColor']] = + $this->getPaginas($lineas); + + + return $this->respond([ + 'status' => 1, + 'data' => $data + ]); + } + ; + /* + + if (this.datos.tipo == "cosido") { + this.datos.paginasCuadernillo = this.datosGenerales.paginasCuadernillo.val(); + } + + + } + ////////////////////////// + this.datos = { + + + tamanio: this.datosGenerales.getDimensionLibro(), + tirada: this.datosGenerales.getTiradas(), + paginas: this.datosGenerales.paginas.val(), + paginasColor: this.datosGenerales.paginasColor.val(), + paginasCuadernillo: this.datosGenerales.paginasCuadernillo.val(), + papelInteriorDiferente: this.datosGenerales.papelDiferente.is(':checked') ? 1 : 0, + + tipo: this.datosGenerales.tiposLibro.filter('.selected').attr('id'), + + isColor: this.datosGenerales.getIsColor() ? 1 : 0, + isHq: this.disenioInterior.getIsHq() ? 1 : 0, + + interior: { + papelInterior: this.disenioInterior.getPapel(), + gramajeInterior: this.disenioInterior.getGramaje(), + }, + + cubierta: { + tipoCubierta: this.disenioCubierta.disenioCubierta.filter('.selected').attr('id'), + papelCubierta: this.disenioCubierta.getPapel(), + gramajeCubierta: this.disenioCubierta.getGramaje(), + cabezada: this.disenioCubierta.getCabezada(), + acabados: this.disenioCubierta.getAcabados(), + carasImpresion: this.disenioCubierta.carasCubierta.val(), + }, + + guardas: this.disenioCubierta.getGuardas(), + sobrecubierta: this.disenioCubierta.getSobrecubierta(), + faja: this.disenioCubierta.getFaja(), + + + let solapasCubierta = this.disenioCubierta.getSolapasCubierta(); + if (solapasCubierta !== null && solapasCubierta !== undefined) { + + if (solapasCubierta === false) + this.datos.cubierta.solapas = 0; + else { + this.datos.cubierta.solapas = 1; + this.datos.cubierta.tamanioSolapas = solapasCubierta; + } + } + else { + this.datos.cubierta.solapas = 0; + } + + if (this.direcciones.direcciones.length > 0) { + this.datos.direcciones = []; + for (let i = 0; i < this.direcciones.direcciones.length; i++) { + this.datos.direcciones.push(this.direcciones.direcciones[i].getFormData()); + }; + } + + + } + ////////////////////////////////////////////////////////*/ + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + public function get_files() { @@ -1002,10 +1142,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $peso_envio = $peso_libro * $unidades / 1000.0; $data = $this->getCosteEnvio( - $direccion['id'], - $peso_libro, - $direccion['unidades'], - $direccion['entregaPalets'] == 'false' ? 0 : 1); + $direccion['id'], + $peso_libro, + $direccion['unidades'], + $direccion['entregaPalets'] == 'false' ? 0 : 1 + ); if (count($data) > 0) { @@ -1367,7 +1508,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $acabadoCubierta = []; foreach ($tarifaAcabadoCubierta as $tarifa) { - if($tarifa == 0) + if ($tarifa == 0) continue; $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); $acabadoCubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD); @@ -1630,11 +1771,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $return_data += [ 'errors' => $error, - 'total_lp' => $costeInterior + $coste_cubierta + $coste_sobrecubierta, - 'acabadoCubierta' => $acabadoCubierta, - 'acabadoSobrecubierta' => $acabadoSobrecubierta, - 'total_servicios_defecto' => $costeServiciosDefecto, - 'total_servicios_automaticos' => $coste_servicios, + //'total_lp' => $costeInterior + $coste_cubierta + $coste_sobrecubierta, + //'acabadoCubierta' => $acabadoCubierta, + //'acabadoSobrecubierta' => $acabadoSobrecubierta, + //'total_servicios_defecto' => $costeServiciosDefecto, + //'total_servicios_automaticos' => $coste_servicios, 'tiradas' => $tirada, 'precio_u' => $precio_u, 'peso' => $peso, @@ -2082,12 +2223,39 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data = $model->where('code', $value)->first(); $data = $data->id; array_push($tarifas, $data); - } - else{ + } else { array_push($tarifas, 0); } } return $tarifas; } + + + private function getPaginas($lineas){ + + $paginasNegro = 0; + $paginasColor = 0; + + foreach ($lineas as $linea) { + if (strpos($linea->tipo, "lp_bn") !== false || strpos($linea->tipo, "lp_color") !== false) { + $paginasNegro = $linea->paginas; + } + + if (strpos($linea->tipo, "lp_color") !== false || strpos($linea->tipo, "lp_colorhq") !== false) { + $paginasColor = $linea->paginas; + } + + if (strpos($linea->tipo, "lp_rot_bn") !== false) { + $paginasNegro = $linea->paginas; + } + + if (strpos($linea->tipo, "lp_rot_color") !== false) { + $paginasColor = $linea->rotativa_pag_color; + $paginasNegro = $linea->paginas - $linea->rotativa_pag_color; + } + } + + return [$paginasNegro, $paginasColor]; + } } diff --git a/ci4/app/Services/PresupuestoClienteService.php b/ci4/app/Services/PresupuestoClienteService.php index 46ca2fd9..c02f8ba8 100644 --- a/ci4/app/Services/PresupuestoClienteService.php +++ b/ci4/app/Services/PresupuestoClienteService.php @@ -27,12 +27,13 @@ class PresupuestoClienteService extends BaseService if ($data['isColor']) { if ($data['datosPedido']->paginas == $data['paginas_color']) $total_plana += floatval($plana[1]['total_impresion']); - - elseif (count($plana[0]) > 2 && count($plana[1]) > 2) { - $total_plana = 0.0; - foreach ($plana as $linea) { - if (count($linea) > 0) - $total_plana += floatval($linea['total_impresion']); + elseif (count($plana) > 0) { + if (count($plana[0]) > 2 && count($plana[1]) > 2) { + $total_plana = 0.0; + foreach ($plana as $linea) { + if (count($linea) > 0) + $total_plana += floatval($linea['total_impresion']); + } } } } else { @@ -46,7 +47,7 @@ class PresupuestoClienteService extends BaseService } $total_rotativa = -1; - if (!$data['excluirRotativa'] && count($rotativa) > 0 && $rotativa['num_formas']['posicion_formas'] != 'n/a') { + if (!$data['excluirRotativa'] && count($rotativa) > 0 && $rotativa['num_formas']['posicion_formas'] != 'n/a') { $total_rotativa = floatval($rotativa['total_impresion']); } if ($total_plana < 0 && $total_rotativa < 0) @@ -305,7 +306,7 @@ class PresupuestoClienteService extends BaseService $datosPedido->paginas = $paginas_color; for ($i = 0; $i < 2; $i++) { - if ($data['papelInteriorDiferente'] == true){ + if ($data['papelInteriorDiferente'] == true) { $papel_generico = $papel_generico_color; $gramaje = $gramaje_color; } @@ -377,8 +378,7 @@ class PresupuestoClienteService extends BaseService return []; } } - } - else{ + } else { if (count($linea_negro_plana) > 0) { $linea_negro_plana = $linea_negro_plana[0]['fields']; $linea_negro_plana['tipo_linea'] = $isHq ? 'lp_bnhq' : 'lp_bn'; diff --git a/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php b/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php index 6f0ddc22..e5019405 100755 --- a/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php +++ b/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php @@ -21,10 +21,13 @@ if (session()->has('error')) {
+
+
+ section('globalJsFunctions') ?> -function popAlert(message, alertClass, alertIcon, containerId = 'sk-alert'){ +function popAlert(message, alertClass, alertIcon, containerId = 'sk-alert', fade = true){ var htmlString = `