diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 2d01a49f..5a60b886 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -970,7 +970,7 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func * -------------------------------------------------------------------- */ $routes->post('auth/jwt', '\App\Controllers\Sistema\AuthAPIController::jwtLogin'); - + $routes->group( 'api', [ @@ -984,13 +984,8 @@ $routes->group( 'filter' => 'cors' ]); - $routes->options('items', static function () { }); - $routes->options('items/(:any)', static function () { }); - $routes->post("calcular", 'ImprimelibrosApi::calcular'); - - - + $routes->post("guardar", 'ImprimelibrosApi::guardar'); // ... } ); diff --git a/ci4/app/Controllers/API/ImprimelibrosApi.php b/ci4/app/Controllers/API/ImprimelibrosApi.php index 35838875..aeff2713 100644 --- a/ci4/app/Controllers/API/ImprimelibrosApi.php +++ b/ci4/app/Controllers/API/ImprimelibrosApi.php @@ -25,6 +25,53 @@ class ImprimelibrosApi extends ResourceController { helper(['form']); + $jsonData = json_decode($this->request->getBody(), true); + + if (json_last_error() !== JSON_ERROR_NONE) { + return $this->respond( + [ + 'status' => 400, + 'error' => 'Invalid JSON format' + ], + 400 + ); + } + + + // Access the entire POST data + $post_data = $jsonData; + + //return $this->respond(var_dump($post_data)); + + // Instancia de presupuesto cliente + $presupuestocliente = new Presupuestocliente(); + $response = $presupuestocliente->calcular($post_data); + + if (isset($response['tiradas'])) { + + $response = [ + 'status' => 200, + 'error' => null, + 'data' => [ + 'tiradas' => $response['tiradas'], + 'precios' => $response['precio_u'] + ] + ]; + }else{ + $response = [ + 'status' => 400, + 'error' => $response + ]; + + } + return $this->respond($response); + } + + + public function guardar() + { + helper(['form']); + // Access the entire POST data $post_data = $this->request->getJSON(true); @@ -32,7 +79,9 @@ class ImprimelibrosApi extends ResourceController // Instancia de presupuesto cliente $presupuestocliente = new Presupuestocliente(); - $response = $presupuestocliente->calcular($post_data); + $response = $presupuestocliente->guardar($post_data); + + return $this->respond($response); $response = [ 'status' => 200, @@ -45,21 +94,5 @@ class ImprimelibrosApi extends ResourceController return $this->respond($response); } - 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); - } } diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index fdb162cd..db85cbb3 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -459,7 +459,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $tipo = $reqData['tipo']; $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; - $papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; + $papelInteriorDiferente = intval($reqData['papelInteriorDiferente'] ?? null); $isColor = intval($reqData['isColor']) ?? 0; $isHq = intval($reqData['isHq']) ?? 0; @@ -560,11 +560,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } if (array_key_exists('exception', $return_data)) { - return $return_data; - /*return $this->failServerError( + return $this->failServerError( $return_data['exception'] . ' - ' . $return_data['file'] . ' - ' . $return_data['line'] - );*/ + ); } // calculo del envio base (tirada_maxima) @@ -930,483 +929,497 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } - public function guardar() + public function guardar($data = -1) { - if ($this->request->isAJAX()) { - $modelPapelGenerico = new PapelGenericoModel(); - - $reqData = $this->request->getPost(); - - $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; - - $id = $reqData['id'] ?? 0; - $id = intval($id); - - $datosCabecera = $reqData['datosCabecera'] ?? []; - - - $confirmar = $reqData['confirmar'] ?? 0; - $confirmar = intval($confirmar); - - $cliente_id = $reqData['clienteId'] ?? -1; - - $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; - - $tipo = $reqData['tipo']; - - $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; - $papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; - - $isColor = intval($reqData['isColor']) ?? 0; - $isHq = intval($reqData['isHq']) ?? 0; - - $prototipo = intval($reqData['prototipo']) ?? 0; - $ferro = intval($reqData['ferro']) ?? 0; - $ferroDigital = intval($reqData['ferroDigital']) ?? 0; - $marcapaginas = intval($reqData['marcapaginas']) ?? 0; - $retractilado = intval($reqData['retractilado']) ?? 0; - $retractilado5 = intval($reqData['retractilado5']) ?? 0; - - $interior = $reqData['interior'] ?? []; - $cubierta = $reqData['cubierta'] ?? []; - $sobrecubierta = $reqData['sobrecubierta'] ?? []; - $guardas = $reqData['guardas'] ?? []; - $faja = $reqData['faja'] ?? []; - $excluirRotativa = $reqData['excluirRotativa'] ?? 0; - $excluirRotativa = intval($excluirRotativa); - $ivaReducido = intval($reqData['ivaReducido']) ?? 0; - - $direcciones = $reqData['direcciones'] ?? []; - - $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); - - 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']); + if ($this->request) { + if ($this->request->isAJAX()) + $reqData = $this->request->getPost(); + } else { + if ($data == -1) { + return "Error: sin datos"; } - // Interior - $interior = [ - 'papel_generico' => $papel, - 'gramaje' => $gramaje, - 'excluirRotativa' => $excluirRotativa, - 'paginas' => $paginas, - 'paginas_color' => $paginas_color, - 'pos_paginas_color' => $posPaginasColor, - 'paginas_color_consecutivas' => $paginasColorConsecutivas, - 'papelInteriorDiferente' => $papelInteriorDiferente + $reqData = $data; + } + + $modelPapelGenerico = new PapelGenericoModel(); + + //$reqData = $this->request->getPost(); + + $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; + + $id = $reqData['id'] ?? 0; + $id = intval($id); + + $datosCabecera = $reqData['datosCabecera'] ?? []; + + + $confirmar = $reqData['confirmar'] ?? 0; + $confirmar = intval($confirmar); + + $cliente_id = $reqData['clienteId'] ?? -1; + + $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; + + $tipo = $reqData['tipo']; + + $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? 32; + $papelInteriorDiferente = intval($reqData['papelInteriorDiferente'] ?? null); + + $isColor = intval($reqData['isColor']) ?? 0; + $isHq = intval($reqData['isHq']) ?? 0; + + $prototipo = intval($reqData['prototipo'] ?? 0); + $ferro = intval($reqData['ferro'] ?? 0); + $ferroDigital = intval($reqData['ferroDigital'] ?? 0); + $marcapaginas = intval($reqData['marcapaginas'] ?? 0); + $retractilado = intval($reqData['retractilado'] ?? 0); + $retractilado5 = intval($reqData['retractilado5'] ?? 0); + + $interior = $reqData['interior'] ?? []; + $cubierta = $reqData['cubierta'] ?? []; + $sobrecubierta = $reqData['sobrecubierta'] ?? []; + $guardas = $reqData['guardas'] ?? []; + $faja = $reqData['faja'] ?? []; + $excluirRotativa = $reqData['excluirRotativa'] ?? 0; + $excluirRotativa = intval($excluirRotativa); + $ivaReducido = intval($reqData['ivaReducido'] ?? 0); + + $direcciones = $reqData['direcciones'] ?? []; + + $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); + + 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, + 'pos_paginas_color' => $posPaginasColor, + 'paginas_color_consecutivas' => $paginasColorConsecutivas, + 'papelInteriorDiferente' => $papelInteriorDiferente + ]; + + + // Cubierta + $cubierta = [ + 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(), + 'gramajeCubierta' => intval($cubierta['gramajeCubierta']), + 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 2), + 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0, + 'acabado' => $cubierta['acabado'] ?? 0, + 'lomoRedondo' => $cubierta['lomoRedondo'] ?? 0, + 'cabezada' => $cubierta['cabezada'] ?? 'WHI', + ]; + + // Sobrecubierta + if ($sobrecubierta != "false" && $sobrecubierta != null) { + $sobrecubierta = [ + 'papel' => $modelPapelGenerico->where('id', $sobrecubierta['papel'])->first()->toArray(), + 'gramaje' => intval($sobrecubierta['gramaje']), + 'solapas' => intval($sobrecubierta['solapas'] ?? 0), + 'acabado' => $sobrecubierta['acabado'] ?? 0, ]; + } else + $sobrecubierta = false; - - // 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' => $cubierta['lomoRedondo'] ?? 0, - 'cabezada' => $cubierta['cabezada'] ?? 'WHI', + // Guardas + if ($guardas != "false" && $guardas != null) { + $datos_guardas = [ + 'papel' => $modelPapelGenerico->where('id', $guardas['papel'])->first()->toArray(), + 'gramaje' => intval($guardas['gramaje']), + 'caras' => intval($guardas['caras']), ]; + } else + $datos_guardas = false; - // Sobrecubierta - if ($sobrecubierta != "false" && $sobrecubierta != null) { - $sobrecubierta = [ - 'papel' => $modelPapelGenerico->where('id', $sobrecubierta['papel'])->first()->toArray(), - 'gramaje' => intval($sobrecubierta['gramaje']), - 'solapas' => intval($sobrecubierta['solapas'] ?? 0), - 'acabado' => $sobrecubierta['acabado'] ?? 0, - ]; - } else - $sobrecubierta = false; + $datos_presupuesto = array( + 'tirada' => $tirada, + 'tamanio' => $tamanio, + 'tipo_impresion_id' => $tipo_impresion_id, + 'clienteId' => $cliente_id, + 'isColor' => $isColor, + 'isHq' => $isHq, + 'paginasCuadernillo' => $paginasCuadernillo, - // Guardas - if ($guardas != "false" && $guardas != null) { - $datos_guardas = [ - 'papel' => $modelPapelGenerico->where('id', $guardas['papel'])->first()->toArray(), - 'gramaje' => intval($guardas['gramaje']), - 'caras' => intval($guardas['caras']), - ]; - } else - $datos_guardas = false; + 'interior' => $interior, + 'cubierta' => $cubierta, + 'sobrecubierta' => $sobrecubierta, + 'datos_guardas' => $datos_guardas, + 'faja' => $faja, - $datos_presupuesto = array( - 'tirada' => $tirada, - 'tamanio' => $tamanio, - 'tipo_impresion_id' => $tipo_impresion_id, - 'clienteId' => $cliente_id, - 'isColor' => $isColor, - 'isHq' => $isHq, - 'paginasCuadernillo' => $paginasCuadernillo, + 'servicios' => $reqData['servicios'] ?? [], + ); - 'interior' => $interior, - 'cubierta' => $cubierta, - 'sobrecubierta' => $sobrecubierta, - 'datos_guardas' => $datos_guardas, - 'faja' => $faja, + $datos_presupuesto['id'] = $id; - 'servicios' => $reqData['servicios'] ?? [], + $resultado_presupuesto = $this->calcular_presupuesto($datos_presupuesto, $selected_tirada, true); + + if (isset($resultado_presupuesto['errors'])) { + $errors = $resultado_presupuesto['errors']; + foreach ($errors as $error) { + if (!empty($error)) { + return $this->respond([ + 'error' => $error, + ]); + } + } + } else if (isset($resultado_presupuesto['exception'])) { + return $this->respond([ + 'error' => $resultado_presupuesto['exception'], + 'file' => $resultado_presupuesto['file'], + 'line' => $resultado_presupuesto['line'], + ]); + } + + // 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 ); - $datos_presupuesto['id'] = $id; - - $resultado_presupuesto = $this->calcular_presupuesto($datos_presupuesto, $selected_tirada, true); - - if (isset($resultado_presupuesto['errors'])) { - $errors = $resultado_presupuesto['errors']; - foreach ($errors as $error) { - if (!empty($error)) { - return $this->respond([ - 'error' => $error, - ]); - } - } - } else if (isset($resultado_presupuesto['exception'])) { - return $this->respond([ - 'error' => $resultado_presupuesto['exception'], - 'file' => $resultado_presupuesto['file'], - 'line' => $resultado_presupuesto['line'], - ]); + if (intval($selected_tirada) == intval($tirada[$i])) { + $datos_presupuesto['envio_base'] = round($coste_direccion->coste * (1 + $coste_direccion->margen / 100.0), 2); } - // 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 (!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 ); - - if (intval($selected_tirada) == intval($tirada[$i])) { - $datos_presupuesto['envio_base'] = round($coste_direccion->coste * (1 + $coste_direccion->margen / 100.0), 2); - } - - 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); - } + $resultado_presupuesto = [ + 'errors' => (object) ([ + 'status' => 1 + ]), + ]; + return $resultado_presupuesto; } 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); - } + $resultado_presupuesto['eb'][$i] = round($coste_direccion->coste, 2); + $resultado_presupuesto['eb_margen'][$i] = round($coste_direccion->margen, 2); } + } - $model_presupuesto = new PresupuestoModel(); - $tiradas_alternativas = []; - $resumen_totales = []; + 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++) { - if ($tirada[$i] != $selected_tirada) { + $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; + } - $coste_total = $resultado_presupuesto['info']['totales'][$i]['totalImpresion'] + $resultado_presupuesto['info']['totales'][$i]['totalPapel'] + - $resultado_presupuesto['info']['totales'][$i]['margenImpresion'] + $resultado_presupuesto['info']['totales'][$i]['margenPapel']; - $coste_envio = $resultado_presupuesto['info']['totales'][$i]['coste_envio'] + $resultado_presupuesto['info']['totales'][$i]['margen_envio']; - $margen_total = round(($resultado_presupuesto['info']['totales'][$i]['margenImpresion'] + - $resultado_presupuesto['info']['totales'][$i]['margenPapel'] + - $resultado_presupuesto['info']['totales'][$i]['margen_envio']) / ($coste_total + $coste_envio) * 100.0, 2); - $total_pedido = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio), 2); - $precio_u = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio) / $tirada[$i], 4); + $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, + ); - array_push($tiradas_alternativas, (object) array( - 'tirada' => $tirada[$i], - 'coste_impresion' => round($coste_total, 2), - 'coste_envio' => $coste_envio, - 'margen' => $margen_total, - 'total_pedido' => $total_pedido, - 'precio_unidad' => $precio_u, - )); - } else { - $resumen_totales = $resultado_presupuesto['info']['totales'][$i]; - } - } + if (!property_exists($coste_direccion, 'coste')) { - $borrar_antes = false; - if ($id != 0) { - $borrar_antes = true; - } + $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; - $datos_presupuesto['prototipo'] = $prototipo; - $datos_presupuesto['ferro'] = $ferro; - $datos_presupuesto['ferro_digital'] = $ferroDigital; - $datos_presupuesto['marcapaginas'] = $marcapaginas; - $datos_presupuesto['retractilado'] = $retractilado; - $datos_presupuesto['retractilado5'] = $retractilado5; - $datos_presupuesto['entrega_taller'] = $reqData['entrega_taller'] ?? 0; - - - $resultado_presupuesto['info']['merma'] = $this->calcular_merma($selected_tirada, $POD); - - $datos_presupuesto['faja'] = $faja; - - $id = $model_presupuesto->insertarPresupuestoCliente( - $id, - $selected_tirada, - $datos_presupuesto, - $datosCabecera, - $resultado_presupuesto['info'], - $resumen_totales, - $ivaReducido, - $excluirRotativa, - $tiradas_alternativas - ); - - // Lineas Presupuesto - if ($borrar_antes && $id > 0) { - $this->borrarRelacionesPresupuesto($id); - } - - foreach ($resultado_presupuesto['values']['interior'] as $linea) { - - if (count($linea) > 0) - $this->guardarLineaPresupuesto($id, $linea); - } - 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']['faja']) > 0) - $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['faja']); - if (count($resultado_presupuesto['values']['guardas']) > 0) - $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['guardas']); - - // Servicios - if ($sobrecubierta) { - if (intval($sobrecubierta['acabado']) > 0) { - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $servicio = $model->getPrecioTarifa(intval($sobrecubierta['acabado']), intval($selected_tirada), -1, $POD); - - if (count($servicio) > 0) { - if ($servicio[0]->total > 0) { - $this->guardarServicio($id, $servicio[0], 'acabado', false, true); - } } } + $resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4); } - if (intval($cubierta['acabado']) > 0) { + } 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 = []; + + 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'] + + $resultado_presupuesto['info']['totales'][$i]['margenImpresion'] + $resultado_presupuesto['info']['totales'][$i]['margenPapel']; + $coste_envio = $resultado_presupuesto['info']['totales'][$i]['coste_envio'] + $resultado_presupuesto['info']['totales'][$i]['margen_envio']; + $margen_total = round(($resultado_presupuesto['info']['totales'][$i]['margenImpresion'] + + $resultado_presupuesto['info']['totales'][$i]['margenPapel'] + + $resultado_presupuesto['info']['totales'][$i]['margen_envio']) / ($coste_total + $coste_envio) * 100.0, 2); + $total_pedido = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio), 2); + $precio_u = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio) / $tirada[$i], 4); + + array_push($tiradas_alternativas, (object) array( + 'tirada' => $tirada[$i], + 'coste_impresion' => round($coste_total, 2), + 'coste_envio' => $coste_envio, + 'margen' => $margen_total, + 'total_pedido' => $total_pedido, + 'precio_unidad' => $precio_u, + )); + } else { + $resumen_totales = $resultado_presupuesto['info']['totales'][$i]; + } + } + + $borrar_antes = false; + if ($id != 0) { + $borrar_antes = true; + } + + $datos_presupuesto['prototipo'] = $prototipo; + $datos_presupuesto['ferro'] = $ferro; + $datos_presupuesto['ferro_digital'] = $ferroDigital; + $datos_presupuesto['marcapaginas'] = $marcapaginas; + $datos_presupuesto['retractilado'] = $retractilado; + $datos_presupuesto['retractilado5'] = $retractilado5; + $datos_presupuesto['entrega_taller'] = $reqData['entrega_taller'] ?? 0; + + + $resultado_presupuesto['info']['merma'] = $this->calcular_merma($selected_tirada, $POD); + + $datos_presupuesto['faja'] = $faja; + + $id = $model_presupuesto->insertarPresupuestoCliente( + $id, + $selected_tirada, + $datos_presupuesto, + $datosCabecera, + $resultado_presupuesto['info'], + $resumen_totales, + $ivaReducido, + $excluirRotativa, + $tiradas_alternativas + ); + + // Lineas Presupuesto + if ($borrar_antes && $id > 0) { + $this->borrarRelacionesPresupuesto($id); + } + + foreach ($resultado_presupuesto['values']['interior'] as $linea) { + + if (count($linea) > 0) + $this->guardarLineaPresupuesto($id, $linea); + } + 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']['faja']) > 0) + $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['faja']); + if (count($resultado_presupuesto['values']['guardas']) > 0) + $this->guardarLineaPresupuesto($id, $resultado_presupuesto['values']['guardas']); + + // Servicios + if ($sobrecubierta) { + if (intval($sobrecubierta['acabado']) > 0) { $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $servicio = $model->getPrecioTarifa(intval($cubierta['acabado']), intval($selected_tirada), -1, $POD); + $servicio = $model->getPrecioTarifa(intval($sobrecubierta['acabado']), intval($selected_tirada), -1, $POD); if (count($servicio) > 0) { if ($servicio[0]->total > 0) { - $this->guardarServicio($id, $servicio[0], 'acabado', true, false); + $this->guardarServicio($id, $servicio[0], 'acabado', false, true); } } - } - if (is_array($faja) && intval($faja['acabado']) > 0) { - $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); - $servicio = $model->getPrecioTarifa(intval($faja['acabado']), intval($selected_tirada), -1, $POD); + } + if (intval($cubierta['acabado']) > 0) { + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $servicio = $model->getPrecioTarifa(intval($cubierta['acabado']), intval($selected_tirada), -1, $POD); - if (count($servicio) > 0) { - if ($servicio[0]->total > 0) { - $this->guardarServicio($id, $servicio[0], 'acabado', false, false, true); - } + if (count($servicio) > 0) { + if ($servicio[0]->total > 0) { + $this->guardarServicio($id, $servicio[0], 'acabado', true, false); } + } + } + if (is_array($faja) && $faja !== [] && intval($faja['acabado']) > 0) { + $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); + $servicio = $model->getPrecioTarifa(intval($faja['acabado']), intval($selected_tirada), -1, $POD); + + if (count($servicio) > 0) { + if ($servicio[0]->total > 0) { + $this->guardarServicio($id, $servicio[0], 'acabado', false, false, true); + } } - foreach ($resultado_presupuesto['values']['serviciosDefecto']['encuadernacion'] as $servicio) { - $this->guardarServicio($id, $servicio, 'encuadernacion'); - } - foreach ($resultado_presupuesto['values']['serviciosDefecto']['manipulado'] as $servicio) { + + } + foreach ($resultado_presupuesto['values']['serviciosDefecto']['encuadernacion'] as $servicio) { + $this->guardarServicio($id, $servicio, 'encuadernacion'); + } + foreach ($resultado_presupuesto['values']['serviciosDefecto']['manipulado'] as $servicio) { + $this->guardarServicio($id, $servicio, 'manipulado'); + } + $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 == $servicio_ferro->id || $servicio->tarifa_id == $servicio_prototipo->id) { + // Servicios extra + $this->guardarServicio($id, $servicio, 'extra'); + } else if ($servicio->tarifa_id == $servicio_plegado_guardas->id) { + // Servicios manipulado + $this->guardarServicio($id, $servicio, 'manipulado'); + } 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'); } - $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 == $servicio_ferro->id || $servicio->tarifa_id == $servicio_prototipo->id) { - // Servicios extra - $this->guardarServicio($id, $servicio, 'extra'); - } else if ($servicio->tarifa_id == $servicio_plegado_guardas->id) { - // Servicios manipulado - $this->guardarServicio($id, $servicio, 'manipulado'); - } 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'); - } + if (array_key_exists('direcciones', $reqData)) { + + foreach ($reqData['direcciones'] as $direccion) { + $this->guardarLineaEnvio($id, $direccion, $peso_libro); } + } - if (array_key_exists('direcciones', $reqData)) { + if ($confirmar) { + $model_presupuesto->confirmarPresupuesto($id); + PresupuestoService::crearPedido($id); + } - foreach ($reqData['direcciones'] as $direccion) { - $this->guardarLineaEnvio($id, $direccion, $peso_libro); - } - } - - if ($confirmar) { - $model_presupuesto->confirmarPresupuesto($id); - PresupuestoService::crearPedido($id); - } + if ($this->request) { return $this->respond([ 'status' => $id, 'url' => site_url('presupuestos/presupuestocliente/edit'), 'message' => lang('Basic.global.saveSuccess', [lang('Basic.global.record')]), ]); - } else { - return $this->failUnauthorized('Invalid request', 403); + }else{ + return [ + 'sk_id' => $id, + 'sk_url' => site_url('presupuestos/presupuestocliente/edit/' . $id) + ]; } } @@ -2137,7 +2150,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($acabadoCubierta[0]->total), 2); $base = round(floatval($acabadoCubierta[0]->total / (1 + $acabadoCubierta[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($acabadoCubierta[0]->total - $base), 2); } } @@ -2228,7 +2241,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($acabadoSobrecubierta[0]->total), 2); $base = round(floatval($acabadoSobrecubierta[0]->total / (1 + $acabadoSobrecubierta[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($acabadoSobrecubierta[0]->total - $base), 2); } } @@ -2381,7 +2394,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($acabadoFaja[0]->total), 2); $base = round(floatval($acabadoFaja[0]->total / (1 + $acabadoFaja[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($acabadoFaja[0]->total - $base), 2); } } @@ -2435,8 +2448,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($servicio->total), 2); $base = round(floatval($servicio->total / (1 + $servicio->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada), 2)*$datosPedido->tirada; - $margenServicios += round(floatval($servicio->total -$base), 2); + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; + $margenServicios += round(floatval($servicio->total - $base), 2); } } @@ -2472,8 +2485,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($servicio->total), 2); $base = round(floatval($servicio->total / (1 + $servicio->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada), 2)*$datosPedido->tirada; - $margenServicios += round(floatval($servicio->total -$base), 2); + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; + $margenServicios += round(floatval($servicio->total - $base), 2); } } @@ -2541,20 +2554,23 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } - if ($datos_entrada['servicios']['retractilado']) // acabado - array_push($servicios, $servicio_retractilado); - if ($datos_entrada['servicios']['retractilado5']) // acabado - array_push($servicios, $servicio_retractilado5); - if ($datos_entrada['servicios']['prototipo']) // extra - array_push($servicios, $servicio_prototipo); - if ($datos_entrada['servicios']['ferro']) // extra - array_push($servicios, $servicio_ferro); - if ($solapasCubierta > 0) - array_push($servicios, $servicio_solapas_cubierta); - if (!is_null($sobreCubierta) && $sobreCubierta) // Si hay sobrecubierta, siempre con solapas - array_push($servicios, $servicio_solapas_sobrecubierta); - if (!is_null($faja) && $faja && $faja != false) // Si hay faja, siempre con solapas - array_push($servicios, $servicio_solapas_faja); + if ($datos_entrada['servicios'] !== []) { + + if ($datos_entrada['servicios']['retractilado']) // acabado + array_push($servicios, $servicio_retractilado); + if ($datos_entrada['servicios']['retractilado5']) // acabado + array_push($servicios, $servicio_retractilado5); + if ($datos_entrada['servicios']['prototipo']) // extra + array_push($servicios, $servicio_prototipo); + if ($datos_entrada['servicios']['ferro']) // extra + array_push($servicios, $servicio_ferro); + if ($solapasCubierta > 0) + array_push($servicios, $servicio_solapas_cubierta); + if (!is_null($sobreCubierta) && $sobreCubierta) // Si hay sobrecubierta, siempre con solapas + array_push($servicios, $servicio_solapas_sobrecubierta); + if (!is_null($faja) && $faja && $faja != false) // Si hay faja, siempre con solapas + array_push($servicios, $servicio_solapas_faja); + } foreach ($servicios as $servicio) { @@ -2589,7 +2605,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($resultado[0]->total), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($resultado[0]->total - $base), 2); } } else if ($servicio->nombre == "ferro" || $servicio->nombre == "prototipo") { @@ -2621,7 +2637,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($resultado[0]->precio), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($resultado[0]->total - $base), 2); } } else if ($servicio->nombre == 'solapas_cubierta' || $servicio->nombre == 'solapas_sobrecubierta' || $servicio->nombre == 'solapas_faja') { @@ -2655,7 +2671,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($resultado[0]->total), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($resultado[0]->total - $base), 2); } } @@ -2693,7 +2709,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($resultado[0]->total), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($resultado[0]->total - $base), 2); } } @@ -2730,12 +2746,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($resultado[0]->total), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($resultado[0]->total - $base), 2); } } - if (is_array($faja) && ($faja['solapas'] > 0 && intval($linea_faja['dimension_desarrollo']['ancho']) > 630)) { + if (is_array($faja) && $faja !== [] && ($faja['solapas'] > 0 && intval($linea_faja['dimension_desarrollo']['ancho']) > 630)) { // Servicios manipulado $resultado = PresupuestoCLienteService::getServiciosManipulado([ @@ -2767,7 +2783,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if ($extra_info) { $totalServicios += round(floatval($resultado[0]->total), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); - $base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; + $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada; $margenServicios += round(floatval($resultado[0]->total - $base), 2); } } diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index 6746ff99..26259f17 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -450,12 +450,12 @@ class PresupuestoModel extends \App\Models\BaseModel 'comparador_json_data' => $this->generateJson($data), 'faja_color' => is_array($data['faja']) ? 1 : 0, - 'solapas_ancho_faja_color' => is_array($data['faja']) ? $data['faja']['solapas'] : 60, - 'alto_faja_color' => is_array($data['faja']) ? $data['faja']['alto'] : 50, + 'solapas_ancho_faja_color' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['solapas'] : 60, + 'alto_faja_color' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['alto'] : 50, 'acabado_cubierta_id' => $data['cubierta']['acabado'], 'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabado'], - 'acabado_faja_id' => is_array($data['faja']) ? $data['faja']['acabado'] : 0, + 'acabado_faja_id' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['acabado'] : 0, 'comp_tipo_impresion' => $data['isHq'] ? ($data['isColor'] ? 'colorhq' : 'negrohq') : ($data['isColor'] ? 'color' : 'negro'), @@ -582,7 +582,7 @@ class PresupuestoModel extends \App\Models\BaseModel } // -- Faja -- - if ($data['faja'] != 0) { + if ($data['faja'] != 0 && $data['faja'] !== []) { $values['faja'] = array( 'papel_id' => intval($data['faja']['papel']), 'gramaje' => intval($data['faja']['gramaje']),