diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 16afd091..724b41b5 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -101,6 +101,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $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'] = [ @@ -138,50 +139,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $user = $model_user->find(auth()->user()->id); $clienteId = $user->cliente_id; - $datosPresupuesto = (object) array(); - $datosPresupuesto->POD = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD(); - $datosPresupuesto->paisList = model('App\Models\Configuracion\PaisModel')->getAllForMenu('id, nombre', 'nombre', true); - $datosPresupuesto->papelFormatoList = $this->getPapelFormatoListItems($presupuestoEntity->papel_formato_id ?? null); - - $datosPresupuesto->papelInteriorNegro = model('App\Models\Configuracion\PapelGenericoModel')->getPapelForComparador('negro', false, false, false, false, true); - $datosPresupuesto->papelInteriorNegroHq = model('App\Models\Configuracion\PapelGenericoModel')->getPapelForComparador('negrohq', false, false, false, false, true); - $datosPresupuesto->papelInteriorColor = model('App\Models\Configuracion\PapelGenericoModel')->getPapelForComparador('color', false, false, false, false, true); - $datosPresupuesto->papelInteriorColorHq = model('App\Models\Configuracion\PapelGenericoModel')->getPapelForComparador('colorhq', false, false, false, false, true); - - $datosPresupuesto->papelCubierta = model('App\Models\Configuracion\PapelGenericoModel')->getPapelForComparador('colorhq', true, false, false, false, true); - $datosPresupuesto->papelSobrecubierta = model('App\Models\Configuracion\PapelGenericoModel')->getPapelForComparador('colorhq', false, true, false, false, true); - $datosPresupuesto->papelGuardas = model('App\Models\Configuracion\PapelGenericoModel')->getPapelForComparador('colorhq', false, false, false, true, false); - - $datosPresupuesto->acabadosCubierta = $this->getAcabadosCubierta(); - $datosPresupuesto->acabadosSobrecubierta = $this->getAcabadosSobrecubierta(); - - $datosPresupuesto->tipo_libro = $this->getTipoLibro($presupuestoEntity->tipo_impresion_id ?? null); - $datosPresupuesto->color_impresion = - $this->getTipoInterior($presupuestoEntity->id ?? null); - $datosPresupuesto->tapa = $this->getTapa($presupuestoEntity->tipo_impresion_id ?? null); - - $datosPresupuesto->clienteList = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null); - - $this->obtenerTiradas($presupuestoEntity); - $this->obtenerDatosPapel($presupuestoEntity); - $this->obtenerPaginasColor($presupuestoEntity); - $this->obtenerDireccionesEnvio($presupuestoEntity); - - // Si el presupuesto está confirmado, se generan los datos del resumen - if ($presupuestoEntity->estado_id == 2) { - $this->generarResumen($presupuestoEntity); - } - - $datosPresupuesto->paginasCuadernillo = [32, 28, 24, 20, 16]; - $presupuestoEntity->paginas_por_cuadernillo = $this->obtenerPaginasCuadernillo($presupuestoEntity); $this->viewData['formAction'] = 'edit'; $this->viewData['paisList'] = $this->getPaisListItems(); - $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 @@ -323,6 +285,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $direcciones = $reqData['direcciones'] ?? []; $tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']); + $lomoRedondo = $cubierta['lomoRedondo'] ?? 0; if ($papelInteriorDiferente) { $papel['negro'] = $modelPapelGenerico->getIdFromCode($interior['papelInterior']['negro']); @@ -351,6 +314,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0), 'solapasCubierta' => intval($cubierta['solapas'] ?? 0), 'acabadosCubierta' => $cubierta['acabados'] ?? 0, + 'lomoRedondo' => $lomoRedondo, ]; // Sobrecubierta @@ -369,7 +333,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datos_guardas = [ 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), 'gramaje' => intval($guardas['gramaje']), - 'caras' => intval($guardas['guardasImpresas']), + 'caras' => intval($guardas['caras']), ]; } else $datos_guardas = false; @@ -393,6 +357,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ); $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'] . ' - ' . @@ -415,7 +391,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController if (!property_exists($coste_direccion, 'coste')) { - + $errorModel = new ErrorPresupuesto(); $data['direccion'] = $direccion; $data['peso'] = $return_data['peso'][$i]; @@ -432,7 +408,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ]), ]; return $return_data; - + } else { $coste_envio += $coste_direccion->coste; } @@ -448,21 +424,21 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 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; + $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; } @@ -662,6 +638,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $isColor = intval($reqData['isColor']) ?? 0; $isHq = intval($reqData['isHq']) ?? 0; + $prototipo = intval($reqData['prototipo']) ?? 0; + $interior = $reqData['interior'] ?? []; $cubierta = $reqData['cubierta'] ?? []; $sobrecubierta = $reqData['sobrecubierta'] ?? []; @@ -704,6 +682,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0), 'solapasCubierta' => intval($cubierta['solapas'] ?? 0), 'acabadosCubierta' => $cubierta['acabados'] ?? 0, + 'lomoRedondo' => $cubierta['lomoRedondo'] ?? 0, + 'cabezada' => $cubierta['cabezada'] ?? 'WHI', ]; // Sobrecubierta @@ -722,7 +702,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datos_guardas = [ 'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']), 'gramaje' => intval($guardas['gramaje']), - 'caras' => intval($guardas['guardasImpresas']), + 'caras' => intval($guardas['caras']), ]; } else $datos_guardas = false; @@ -735,7 +715,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 'isColor' => $isColor, 'isHq' => $isHq, 'paginasCuadernillo' => $paginasCuadernillo, - + 'interior' => $interior, 'cubierta' => $cubierta, 'sobrecubierta' => $sobrecubierta, @@ -855,6 +835,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $datos_presupuesto['cubierta']['acabadosCubierta']['id'] = 0; } + $datos_presupuesto['prototipo'] = $prototipo; + $id = $model_presupuesto->insertarPresupuestoCliente( $id, $selected_tirada, @@ -937,14 +919,15 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $presupuesto = $this->model->find($id); $data = []; if ($presupuesto) { + $data['lc'] = $presupuesto->lomo_cubierta; + $data['lsc'] = $presupuesto->lomo_sobrecubierta; $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']['paginasCuadernillo'] = $presupuesto->paginasCuadernillo; $data['datosGenerales']['tirada'] = $presupuesto->tirada; $data['datosGenerales']['ivaReducido'] = $presupuesto->iva_reducido; $data['datosGenerales']['excluirRotativa'] = $presupuesto->excluir_rotativa; @@ -958,29 +941,34 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $data['datosGenerales']['papelFormatoAncho'] = $presupuesto->papel_formato_ancho; $data['datosGenerales']['papelFormatoAlto'] = $presupuesto->papel_formato_alto; + $data['datosGenerales']['posPaginasColor'] = $presupuesto->comp_pos_paginas_color; $data['datosGenerales']['papelInteriorDiferente'] = $presupuesto->papel_interior_diferente; + $data['datosGenerales']['paginasColorConsecutivas'] = $presupuesto->paginas_color_consecutivas; - $data['tiradasPrecio'] = [ - (object) [ - 'tirada' => $presupuesto->tirada, - 'precio' => $presupuesto->total_confirmado, - 'precio_u' => $presupuesto->total_precio_unidad, - ] - ]; + $data['datosGenerales']['tipo'] = $this->getTipoLibro($presupuesto->tipo_impresion_id ?? null); + $data['datosGenerales']['prototipo'] = $presupuesto->prototipo; - $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; - }); + $datos_papel = $this->obtenerDatosPapel($presupuesto->id); + $data['interior'] = $datos_papel['interior'] ? $datos_papel['interior'] : []; + + $data['cubierta'] = $datos_papel['cubierta'] ? $datos_papel['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; + $data['cubierta']['solapas_ancho'] = $presupuesto->solapas_ancho; + $data['cubierta']['cabezada'] = $presupuesto->cabezada; + $modelAcabado = model("App\Models\Tarifas\Acabados\TarifaAcabadoModel"); + $data['cubierta']['plastificado'] = $modelAcabado->getCodeFromId($presupuesto->acabado_cubierta_id); + $data['cubierta']['barniz'] = $modelAcabado->getCodeFromId($presupuesto->barniz_cubierta_id); + $data['cubierta']['estampado'] = $modelAcabado->getCodeFromId($presupuesto->estampado_cubierta_id); + $data['cubierta']['retractilado'] = $presupuesto->retractilado ? 1 : 0; + + $data['sobrecubierta'] = array_key_exists('sobrecubierta', $datos_papel) ? $datos_papel['sobrecubierta'] : []; + $data['sobrecubierta']['solapas'] = $presupuesto->solapas_sobrecubierta ? 1 : 0; + $data['sobrecubierta']['solapas_ancho'] = $presupuesto->solapas_ancho_sobrecubierta; + $data['sobrecubierta']['plastificado'] = $modelAcabado->getCodeFromId($presupuesto->acabado_sobrecubierta_id); + + $data['guardas'] = array_key_exists('guardas', $datos_papel) ? $datos_papel['guardas'] : []; $modelLinea = new PresupuestoLineaModel(); $lineas = $modelLinea->where('presupuesto_id', $id)->findAll(); @@ -988,7 +976,15 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController [$data['datosGenerales']['paginasNegro'], $data['datosGenerales']['paginasColor']] = $this->getPaginas($lineas); + $data['direcciones'] = $this->obtenerDireccionesEnvio($id, $presupuesto->cliente_id); + $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; + + } + return $this->respond([ 'status' => 1, 'data' => $data @@ -1382,6 +1378,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $carasCubierta = $datos_entrada['cubierta']['carasCubierta']; $solapasCubierta = $datos_entrada['cubierta']['solapasCubierta']; $acabadosCubierta = $datos_entrada['cubierta']['acabadosCubierta'] ?? []; + $lomoRedondo = $datos_entrada['cubierta']['lomoRedondo']; // Sobrecubierta $sobreCubierta = $datos_entrada["sobrecubierta"] ?? null; @@ -1576,6 +1573,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $input_data['isColor'] = 1; $input_data['isHq'] = 1; $input_data['uso'] = 'cubierta'; + $input_data['lomoRedondo'] = $lomoRedondo; $cubierta = PresupuestoClienteService::obtenerCubierta($input_data); $coste_cubierta = 0.0; @@ -2168,6 +2166,19 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } else return ''; } + + protected function obtenerTipoTapa($tipo_impresion_id) + { + $model = model('App\Models\Configuracion\TipoPresupuestoModel'); + $data = $model->get_isTapaDura($tipo_impresion_id); + if ($data) { + return 'dura'; + } else { + return 'blanda'; + } + } + + protected function getTipoInterior($presupuestoId) { @@ -2250,18 +2261,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController } } - protected function obtenerDireccionesEnvio($presupuestoEntity) + protected function obtenerDireccionesEnvio($id, $cliente_id) { $model = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); $model_direcciones = model('App\Models\Clientes\ClienteDireccionesModel'); $model_pais = model('App\Models\Configuracion\PaisModel'); - $direcciones = $model->where('presupuesto_id', $presupuestoEntity->id)->findAll(); + $direcciones = $model->where('presupuesto_id', $id)->findAll(); $result = []; $temp = []; for ($i = 0; $i < count($direcciones); $i++) { $direccion_id = $model_direcciones->getIdForPresupuestoCliente( - $presupuestoEntity->cliente_id, + $cliente_id, $direcciones[$i]->att, $direcciones[$i]->email, $direcciones[$i]->direccion, @@ -2271,49 +2282,56 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ); if (count($direccion_id) > 0) { $temp = $direcciones[$i]->toArray(); - $temp['pais'] = $model_pais->where('id', $direcciones[$i]->pais_id)->first()->nombre; - $temp['direccion_id'] = $direccion_id[0]->id; - array_push($result, $temp); + array_push($result, [ + 'id' => $temp['id'], + 'unidades' => $temp['cantidad'], + 'palets' => $temp['entregaPieCalle'], + ]); } } if (count($result) > 0) - $presupuestoEntity->direcciones_envio = $result; + return $result; + else + return []; } - protected function obtenerDatosPapel($presupuestoEntity) + protected function obtenerDatosPapel($presupuesto_id) { - $id = $presupuestoEntity->id; + $return_data = []; $model = model('App\Models\Presupuestos\PresupuestoLineaModel'); - $data = $model->where('presupuesto_id', $id)->findAll(); + $data = $model->where('presupuesto_id', $presupuesto_id)->findAll(); + + $modelPapelGenerico = model('App\Models\Configuracion\PapelGenericoModel'); + if (count($data) > 0) { foreach ($data as $linea) { - // Se coje el primer papel que se encuentre para el interior - // para presupuestos del cliente sólo se escoje un papel para el interior - if (strpos($linea->tipo, "bn") !== false || strpos($linea->tipo, "color") !== false) { - $presupuestoEntity->papel_interior = $linea->papel_id; - $presupuestoEntity->gramaje_interior = $linea->gramaje; - } - // Si es cubierta - else if (strpos($linea->tipo, "cubierta") !== false && strpos($linea->tipo, "sobrecubierta") === false) { - $presupuestoEntity->papel_cubierta = $linea->papel_id; - $presupuestoEntity->gramaje_cubierta = $linea->gramaje; - $presupuestoEntity->paginas_cubierta = $linea->paginas; - } - // Si es sobrecubierta - else if (strpos($linea->tipo, "sobrecubierta") !== false) { - $presupuestoEntity->papel_sobrecubierta = $linea->papel_id; - $presupuestoEntity->gramaje_sobrecubierta = $linea->gramaje; - $presupuestoEntity->paginas_sobrecubierta = $linea->paginas; - } - // Si es guardas - else if (strpos($linea->tipo, "guardas") !== false) { - $presupuestoEntity->papel_guardas = $linea->papel_id; - $presupuestoEntity->paginas_guardas = $linea->paginas; + if ($linea->tipo == 'lp_bn' || $linea->tipo == 'lp_bnhq' || $linea->tipo == 'lp_rot_bn') { + $return_data['interior']['negro']['tipo'] = $linea->tipo == 'lp_bn' || $linea->tipo == 'lp_rot_bn' ? 'negroEstandar' : 'negroPremium'; + $return_data['interior']['negro']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id); + $return_data['interior']['negro']['gramaje'] = $linea->gramaje; + } else if ($linea->tipo == 'lp_color' || $linea->tipo == 'lp_colorhq' || $linea->tipo == 'lp_rot_color') { + $return_data['interior']['color']['tipo'] = $linea->tipo == 'lp_color' || $linea->tipo == 'lp_rot_color' ? 'colorEstandar' : 'colorPremium'; + $return_data['interior']['color']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id); + $return_data['interior']['color']['gramaje'] = $linea->gramaje; + } else if ($linea->tipo == 'lp_cubierta') { + $return_data['cubierta']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id); + $return_data['cubierta']['gramaje'] = $linea->gramaje; + $return_data['cubierta']['paginas'] = $linea->paginas; + } else if ($linea->tipo == 'lp_sobrecubierta') { + $return_data['sobrecubierta']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id); + $return_data['sobrecubierta']['gramaje'] = $linea->gramaje; + $return_data['sobrecubierta']['paginas'] = $linea->paginas; + } else if ($linea->tipo == 'lp_guardas') { + $return_data['guardas']['papel'] = $modelPapelGenerico->getCodeFromId($linea->papel_id); + $return_data['guardas']['gramaje'] = $linea->gramaje; + $return_data['guardas']['paginas'] = $linea->paginas; } } } + + return $return_data; } protected function generarResumen($presupuestoEntity) @@ -2469,4 +2487,5 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController return [$paginasNegro, $paginasColor]; } + } diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php index 8aa6103d..3969835e 100755 --- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php +++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php @@ -93,6 +93,8 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity 'paginas_color_consecutivas' => null, 'papel_interior_diferente' => null, 'paginasCuadernillo' => null, + 'lomo_redondo' => null, + 'cabezada' => null, ]; protected $casts = [ "cliente_id" => "int", @@ -161,5 +163,6 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity 'paginas_color_consecutivas' => "boolean", 'papel_interior_diferente' => "boolean", 'paginasCuadernillo' => "int", + 'lomo_redondo' => "boolean", ]; } diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index 9b27c5a2..49f4a7a1 100755 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -76,6 +76,22 @@ class PapelGenericoModel extends \App\Models\BaseModel return $data; } + + public function getCodeFromId($id=0){ + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.code AS code" + ) + ->where("t1.id", $id) + ->where("t1.is_deleted", 0); + $data = $builder->get()->getFirstRow(); + // se convierte a de stdClass a array + $data = json_decode(json_encode($data), true); + return $data; + } + + /** * Get resource data. * diff --git a/ci4/app/Models/Configuracion/PapelImpresionModel.php b/ci4/app/Models/Configuracion/PapelImpresionModel.php index c5da113b..eac4807c 100755 --- a/ci4/app/Models/Configuracion/PapelImpresionModel.php +++ b/ci4/app/Models/Configuracion/PapelImpresionModel.php @@ -322,4 +322,22 @@ class PapelImpresionModel extends \App\Models\BaseModel return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } + + public function getPapelGenericoCode($papel_id = 0){ + $builder = $this->db + ->table($this->table . " t1") + ->select("t2.code AS code") + ->join("lg_papel_generico t2", "t1.papel_generico_id = t2.id", "left") + ->where("t1.id", $papel_id) + ->where("t1.is_deleted", 0) + ->where("t1.isActivo", 1) + ->where("t2.is_deleted", 0); + + $result = $builder->get()->getResultObject(); + if(count($result) > 0){ + return $result[0]->code; + } + else + return ""; + } } diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index 08e314bd..f242d25e 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -130,6 +130,8 @@ class PresupuestoModel extends \App\Models\BaseModel 'paginas_color_consecutivas', 'papel_interior_diferente', 'paginasCuadernillo', + 'lomo_redondo', + 'cabezada', ]; protected $returnType = "App\Entities\Presupuestos\PresupuestoEntity"; @@ -407,7 +409,7 @@ class PresupuestoModel extends \App\Models\BaseModel 'guardas' => in_array(62, $data['servicios']) ? 1 : 0, 'faja_color' => in_array(16, $data['servicios']) ? 1 : 0, 'ferro' => in_array(24, $data['servicios']) ? 1 : 0, - 'prototipo' => in_array(9, $data['servicios']) ? 1 : 0, + 'prototipo' => $data['prototipo'] ? 1 : 0, 'papel_formato_id' => is_null($papel_formato_id) ? 0 : $papel_formato_id->id, 'papel_formato_personalizado' => !$papel_formato_id ? 1 : 0, 'papel_formato_ancho' => !$papel_formato_id ? $data['tamanio']['ancho'] : null, @@ -420,6 +422,8 @@ class PresupuestoModel extends \App\Models\BaseModel 'paginas' => $data['interior']['paginas'], 'tirada' => $tirada, 'solapas' => $data['cubierta']['solapasCubierta'] == 0 ? 0 : 1, + 'lomo_redondo' => $data['cubierta']['lomoRedondo'] == 0 ? 0 : 1, + 'cabezada' => $data['cubierta']['cabezada'] == 0 ? 0 : 1, 'solapas_ancho' => $data['cubierta']['solapasCubierta'] == 0 ? $data['cubierta']['solapasCubierta'] : 0, 'solapas_sobrecubierta' => !$data['sobrecubierta'] ? 0 : 1, 'solapas_ancho_sobrecubierta' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['solapas'], diff --git a/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php b/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php index eb1a2719..eac2ae8b 100644 --- a/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php +++ b/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php @@ -90,7 +90,7 @@ class TarifaAcabadoModel extends \App\Models\BaseModel //JJO $builder->where("t1.is_deleted", 0); - + return empty($search) ? $builder : $builder @@ -115,8 +115,9 @@ class TarifaAcabadoModel extends \App\Models\BaseModel return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject(); } - public function getTarifaPresupuestoAcabado($tarifa_id, $tirada, $proveedor_id = -1){ - + public function getTarifaPresupuestoAcabado($tarifa_id, $tirada, $proveedor_id = -1) + { + $builder = $this->db ->table($this->table . " t1") ->select( @@ -129,18 +130,18 @@ class TarifaAcabadoModel extends \App\Models\BaseModel ->where("t1.is_deleted", 0) //->where("t1.mostrar_en_presupuesto", 1) ->where("t2.is_deleted", 0); - + $builder->where('t1.id =', $tarifa_id); $builder->where('t2.tirada_min <=', $tirada); $builder->where('t2.tirada_max >=', $tirada); - - if($proveedor_id != -1){ + + if ($proveedor_id != -1) { $builder->where('t2.proveedor_id', $proveedor_id); } return $builder->get()->getResultObject(); } - public function getNombreTarifaAcabado($id=-1) + public function getNombreTarifaAcabado($id = -1) { /* Todos los servicios de encuadernacion activas que se pueden usar en presupuestos @@ -185,4 +186,23 @@ class TarifaAcabadoModel extends \App\Models\BaseModel return $builder->orderBy("t1.id", "asc")->get()->getResultObject(); } + + public function getCodeFromId($id = 0) + { + + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.code AS code" + ) + ->where("t1.id", $id) + ->where("t1.is_deleted", 0); + + $data = $builder->get()->getResultObject(); + if (count($data) > 0) { + return $data[0]->code; + } else { + return ""; + } + } } diff --git a/ci4/app/Services/PresupuestoClienteService.php b/ci4/app/Services/PresupuestoClienteService.php index 1dc5deb6..25a3a42c 100644 --- a/ci4/app/Services/PresupuestoClienteService.php +++ b/ci4/app/Services/PresupuestoClienteService.php @@ -77,6 +77,7 @@ class PresupuestoClienteService extends BaseService $isHq = $data['isHq']; $cliente_id = $data['cliente_id']; $paginas_color = $data['paginas_color']; + $lomoRedondo = $data['lomoRedondo']; $lineas_cubierta = []; @@ -91,7 +92,8 @@ class PresupuestoClienteService extends BaseService 'isColor' => $isColor, 'isHq' => $isHq, 'cliente_id' => $cliente_id, - 'a_favor_fibra' => $i + 'a_favor_fibra' => $i, + 'lomoRedondo' => $lomoRedondo ]); if (count($lineas) > 0) { diff --git a/ci4/app/Services/PresupuestoService.php b/ci4/app/Services/PresupuestoService.php index 781b8127..dcf1fa87 100755 --- a/ci4/app/Services/PresupuestoService.php +++ b/ci4/app/Services/PresupuestoService.php @@ -838,9 +838,13 @@ class PresupuestoService extends BaseService * Devuelve el ancho de la cubierta/sobrecubierta, incluido el lomo. * El $uso tiene que ser "cubierta" o "sobrecubierta" */ - public static function getAnchoTotalExteriores($uso = "cubierta", $tipo_impresion_id = 1, $datosPedido = null, $maquina_id = -1) + public static function getAnchoTotalExteriores($uso = "cubierta", $tipo_impresion_id = 1, $datosPedido = null, $maquina_id = -1, $lomoRedondo = 0) { $ancho_total = 0; + $sangre_cubierta = self::SANGRE_FORMAS_CUBIERTA; + if($datosPedido->ancho > 210 || $datosPedido->alto > 297){ + $sangre_cubierta = 15; + } if ($datosPedido) { // Tapa blanda (cosido y fresado) @@ -861,8 +865,13 @@ class PresupuestoService extends BaseService // si es cubierta // se añade 7mm del ancho del cartón (2*3.5mm) por cada lado del lomo // más 7mm de vuelo+cajo por cada lado. Por último, 20mm de sangre por cada lado - if ($uso == "cubierta") - $ancho_total += (2 * 7 + 2 * self::SANGRE_FORMAS_CUBIERTA + 7); + if ($uso == "cubierta"){ + $ancho_total += (2 * 7 + 2 * $sangre_cubierta + 6); + if($lomoRedondo){ + $ancho_total += 6; + } + } + // si es sobrecubierta // Se añaden 5mm de sangre por cada lado + 2 * 7mm de vuelo portada y contraportada -> total 52 else @@ -893,7 +902,7 @@ class PresupuestoService extends BaseService // Tapa dura else{ // Se le suma 20mm de sangre por cada lado. Como son 2 hojas independientes, se multiplica por 4 - $ancho_total += (4 * self::SANGRE_FORMAS_CUBIERTA); + $ancho_total += (4 * $sangre_cubierta); } } else { @@ -1716,6 +1725,7 @@ class PresupuestoService extends BaseService $cliente_id = $input_data['cliente_id']; $datosTipolog = $input_data['datosTipolog'] ?? null; $a_favor_fibra = $datosPedido->a_favor_fibra ?? false; + $lomoRedondo = $input_data['lomoRedondo'] ?? 0; $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); @@ -1747,7 +1757,7 @@ class PresupuestoService extends BaseService if ($uso == 'cubierta' || $uso == 'sobrecubierta') { - $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($uso, $tipo_impresion_id, $datosPedido, $maquina->maquina_id); + $datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($uso, $tipo_impresion_id, $datosPedido, $maquina->maquina_id, $lomoRedondo); $datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($uso, $tipo_impresion_id, $datosPedido); } diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php index 35ef7f60..4640397b 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php @@ -101,7 +101,7 @@
-
+
@@ -110,16 +110,16 @@
-