diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
index 6fc12fa2..e801f1df 100755
--- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
+++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php
@@ -17,6 +17,7 @@ use App\Models\Presupuestos\PresupuestoManipuladosModel;
use App\Models\Presupuestos\PresupuestoModel;
use App\Models\Presupuestos\PresupuestoPreimpresionesModel;
use App\Models\Presupuestos\PresupuestoServiciosExtraModel;
+use App\Models\Presupuestos\ErrorPresupuesto;
use App\Services\PresupuestoClienteService;
use App\Services\PresupuestoService;
use Exception;
@@ -100,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'] = [
@@ -135,52 +137,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
// 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;
-
- $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);
+ if(auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')){
+ $clienteId = $user->cliente_id;
}
-
- $datosPresupuesto->paginasCuadernillo = [32, 28, 24, 20, 16];
- $presupuestoEntity->paginas_por_cuadernillo = $this->obtenerPaginasCuadernillo($presupuestoEntity);
-
+ else{
+ $clienteId = $presupuestoEntity->cliente_id;
+ }
+
$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
@@ -294,6 +261,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$modelPapelGenerico = new PapelGenericoModel();
+ $id = $reqData['id'] ?? 0;
+
$cliente_id = $reqData['clienteId'] ?? -1;
$tirada = $reqData['tirada'] ?? 0;
@@ -320,6 +289,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']);
@@ -348,6 +318,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
'solapasCubierta' => intval($cubierta['solapas'] ?? 0),
'acabadosCubierta' => $cubierta['acabados'] ?? 0,
+ 'lomoRedondo' => $lomoRedondo,
];
// Sobrecubierta
@@ -366,12 +337,13 @@ 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;
$datos_presupuesto = array(
+ 'id' => $id,
'tirada' => $tirada,
'tamanio' => $tamanio,
'tipo_impresion_id' => $tipo_impresion_id,
@@ -389,6 +361,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'] . ' - ' .
@@ -408,11 +392,28 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$direccion['unidades'],
$direccion['entregaPalets'] == 'true' ? 1 : 0
)[0];
-
+
if (!property_exists($coste_direccion, 'coste')) {
- $return_data['errors']->envios = "No se ha podido calcular el coste de envío";
- }else{
+
+ $errorModel = new ErrorPresupuesto();
+ $data['direccion'] = $direccion;
+ $data['peso'] = $return_data['peso'][$i];
+ $data['palets'] = $direccion['entregaPalets'] == 'true' ? 1 : 0;
+ $errorModel->insertError(
+ $id,
+ auth()->user()->id,
+ 'No se ha podido calcular el coste de envío',
+ $data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+
+ } else {
$coste_envio += $coste_direccion->coste;
}
}
@@ -421,16 +422,31 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} else {
for ($i = 0; $i < count($tirada); $i++) {
-
+
$coste_envio = 0.0;
$coste_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0];
-
+
if (!property_exists($coste_direccion, 'coste')) {
- $return_data['errors']->envios = "No se ha podido calcular el coste de envío";
- }else{
+ $errorModel = new ErrorPresupuesto();
+ $data['direccion'] = 'Sin direccion';
+ $data['peso'] = $return_data['peso'][$i];
+ $data['palets'] = 'Sin direccion';
+ $errorModel->insertError(
+ $id,
+ auth()->user()->id,
+ 'No se ha podido calcular el coste de envío',
+ $data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ } else {
$coste_envio += $coste_direccion->coste;
}
-
+
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
}
@@ -612,11 +628,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$selected_tirada = $reqData['selectedTirada'] ?? 0;
$tamanio = $reqData['tamanio'];
$paginas = $reqData['paginas'] ?? 0;
-
+ $paginas_color = $reqData['paginasColor'] ?? 0;
+
$posPaginasColor = $reqData['posPaginasColor'] ?? "";
$paginasColorConsecutivas = $reqData['pagColorConsecutivas'] ?? 0;
- $papelInteriorDiferente = $reqData['papelInteriorDiferente'] ?? 0;
-
+ $papelInteriorDiferente = $reqData['papelInteriorDiferente'] ?? 0;
+
$tipo = $reqData['tipo'];
$paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null;
@@ -625,6 +642,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'] ?? [];
@@ -651,11 +670,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$interior = [
'papel_generico' => $papel,
'gramaje' => $gramaje,
- 'excluirRotativa' => $excluirRotativa,
+ 'excluirRotativa' => $excluirRotativa,
'paginas' => $paginas,
+ 'paginas_color' => $paginas_color,
'pos_paginas_color' => $posPaginasColor,
'paginas_color_consecutivas' => $paginasColorConsecutivas,
- 'papel_interior_diferente' => $papelInteriorDiferente
+ 'papelInteriorDiferente' => $papelInteriorDiferente
];
@@ -666,6 +686,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
@@ -684,7 +706,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;
@@ -697,7 +719,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'isColor' => $isColor,
'isHq' => $isHq,
'paginasCuadernillo' => $paginasCuadernillo,
-
+
'interior' => $interior,
'cubierta' => $cubierta,
'sobrecubierta' => $sobrecubierta,
@@ -817,6 +839,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$datos_presupuesto['cubierta']['acabadosCubierta']['id'] = 0;
}
+ $datos_presupuesto['prototipo'] = $prototipo;
+
$id = $model_presupuesto->insertarPresupuestoCliente(
$id,
$selected_tirada,
@@ -899,20 +923,21 @@ 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;
$data['datosGenerales']['clienteId'] = $presupuesto->cliente_id;
$data['datosGenerales']['clienteNombre'] = $modelCliente->getNombre($presupuesto->cliente_id);
- model('App\Models\Clientes\ClienteModel')
+ model('App\Models\Clientes\ClienteModel')
->find($presupuesto->cliente_id)->nombre;
$data['datosGenerales']['papelFormatoId'] = $presupuesto->papel_formato_id;
$data['datosGenerales']['papelFormatoNombre'] = $modelPapelFormato->getNombre($presupuesto->papel_formato_id);
@@ -920,37 +945,50 @@ 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;
+
+ $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();
+
+ [$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;
- 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
@@ -1344,6 +1382,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;
@@ -1354,15 +1393,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
// Servicios
$servicios = $datos_entrada['servicios'] ?? [];
- $error = (object) [
- 'interior' => "",
- 'cubierta' => "",
- 'sobrecubierta' => "",
- 'guardas' => "",
- 'servicios' => "",
- 'serviciosDefecto' => "",
- "envios" => "",
- ];
$coste_servicios = 0.0;
$POD = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD();
@@ -1421,6 +1451,23 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$interior = PresupuestoClienteService::obtenerInterior($input_data);
+ if ($interior == -1) {
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ '
+ No se puede obtener el interior',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
+
$costeInterior = 0.0;
$peso_interior = 0.0;
foreach ($interior as $linea) {
@@ -1441,10 +1488,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
- if ($costeInterior <= 0) {
- $error->interior = lang('Presupuestos.errores.noInterior');
- }
-
// Si es POD hay que volver a calcular para incluir la merma correcta
if ($tirada[$t] <= $POD) {
$num_formas = [];
@@ -1459,6 +1502,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$info['merma'] = max($info['merma'], $input_data['datosPedido']->merma);
}
$interior = PresupuestoClienteService::obtenerInterior($input_data);
+ if ($interior == -1) {
+
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener el interior',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
$costeInterior = 0.0;
$peso_interior = 0.0;
@@ -1490,11 +1549,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
- if ($costeInterior <= 0)
- $error->interior = lang('Presupuestos.errores.noInterior');
- else
- $error->interior = "";
+ if ($costeInterior <= 0) {
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener el interior',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
// Cubierta
$input_data['papel_generico'] = $papel_generico_cubierta;
@@ -1507,6 +1577,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;
@@ -1527,11 +1598,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
);
}
}
- if ($coste_cubierta <= 0)
- $error->cubierta = lang('Presupuestos.errores.noCubiertaSobrecubierta');
- else
- $error->cubierta = "";
+ if ($coste_cubierta <= 0) {
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener la cubierta',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
// Acabados Cubierta
$tarifaAcabadoCubierta = $this->obtenerTarifasAcabado($acabadosCubierta);
$acabadoCubierta = [];
@@ -1543,8 +1625,23 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$acabadoCubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
if (count($acabadoCubierta) > 0) {
- if ($acabadoCubierta[0]->total <= 0)
- $error->servicios = lang('Presupuestos.errores.errorPresupuesto');
+ if ($acabadoCubierta[0]->total <= 0) {
+
+ $input_data['tarifas_acabado_cubierta'] = $tarifaAcabadoCubierta;
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener acabados de cubierta',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
$coste_servicios += floatval($acabadoCubierta[0]->total);
}
}
@@ -1586,11 +1683,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
);
}
}
- if ($coste_sobrecubierta <= 0)
- $error->sobrecubierta = lang('Presupuestos.errores.noCubiertaSobrecubierta');
- else
- $error->sobrecubierta = "";
+ if ($coste_sobrecubierta <= 0) {
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener la sobrecubierta',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
$lomo_sobrecubierta = $lomo + floatval($linea_sobrecubierta['mano']);
$tarifaAcabadoSobrecubierta = $this->obtenerTarifasAcabado(['plastificado' => $sobreCubierta['acabados']]);
@@ -1598,14 +1706,31 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($tarifaAcabadoSobrecubierta as $tarifa) {
// NONE
- if($tarifaAcabadoSobrecubierta[0] == 0)
+ if ($tarifaAcabadoSobrecubierta[0] == 0)
continue;
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$acabadoSobrecubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
if (count($acabadoSobrecubierta) > 0) {
- if ($acabadoSobrecubierta[0]->total <= 0)
- $error->servicios = lang('Presupuestos.errores.errorPresupuesto');
+
+ if ($acabadoSobrecubierta[0]->total <= 0) {
+
+ $input_data['tarifas_acabado_sobrecubierta'] = $tarifaAcabadoSobrecubierta;
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener acabados de sobrecubierta',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
+
$coste_servicios += floatval($acabadoSobrecubierta[0]->total);
}
}
@@ -1656,10 +1781,21 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
);
}
}
- if ($coste_guardas <= 0)
- $error->guardas = lang('Presupuestos.errores.noGuardas');
- else
- $error->guardas = "";
+ if ($coste_guardas <= 0) {
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener las guardas',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
}
}
if ($extra_info) {
@@ -1683,8 +1819,24 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
]);
$costeServiciosDefecto = 0.0;
foreach ($servDefecto as $servicio) {
- if ($servicio->total <= 0)
- $error->serviciosDefecto = lang('Presupuestos.errores.errorPresupuesto');
+ if ($servicio->total <= 0) {
+
+ $input_data['servicios'] = $servDefecto;
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener servicios',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
+
$costeServiciosDefecto += floatval($servicio->total);
if ($extra_info) {
@@ -1720,6 +1872,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($datos_entrada['servicios']['prototipo'])
array_push($servicios, 9);
foreach ($servicios as $servicio) {
+
if (intval($servicio) == 3) {
// Servicios acabado
$resultado = PresupuestoCLienteService::getServiciosAcabados([
@@ -1728,8 +1881,23 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'POD' => $POD,
]);
array_push($serviciosAutomaticos, $resultado[0]);
- if ($resultado[0]->total <= 0)
- $error->servicios = lang('Presupuestos.errores.errorPresupuesto');
+
+ if ($resultado[0]->total <= 0) {
+
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener servicio con id 3',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
$coste_servicios += floatval($resultado[0]->total);
if ($extra_info) {
@@ -1742,8 +1910,23 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'tarifa_id' => $servicio,
]);
array_push($serviciosAutomaticos, $resultado[0]);
- if ($resultado[0]->precio <= 0)
- $error->servicios = lang('Presupuestos.errores.errorPresupuesto');
+ if ($resultado[0]->precio <= 0) {
+
+ $errorModel = new ErrorPresupuesto();
+ $errorModel->insertError(
+ $datos_entrada['id'],
+ auth()->user()->id,
+ 'No se puede obtener servicio con id 9',
+ $input_data
+ );
+ $return_data = [
+ 'errors' => (object) ([
+ 'status' => 1
+ ]),
+ ];
+ return $return_data;
+ }
+
$coste_servicios += floatval($resultado[0]->precio);
if ($extra_info) {
@@ -1755,10 +1938,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
array_push($precio_u, round(($costeInterior + $coste_cubierta + $coste_sobrecubierta + $costeServiciosDefecto + $coste_servicios) / $tirada[$t], 4));
array_push($peso, round($peso_interior + $peso_cubierta + $peso_sobrecubierta + $peso_guardas, 2));
- foreach ($error as $err) {
- if ($err != "")
- break;
- }
if ($extra_info) {
$totalServicios -= $margenServicios;
@@ -1785,8 +1964,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
));
}
- $info['lomo_cubierta'] = $lomo;
- $info['lomo_sobrecubierta'] = $lomo_sobrecubierta;
+ $info['lomo_cubierta'] = round(floatval($lomo), 2);
+ $info['lomo_sobrecubierta'] = round(floatval($lomo_sobrecubierta), 2);
$return_data['info'] = $info;
@@ -1802,7 +1981,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
$return_data += [
- 'errors' => $error,
+ 'errors' => (object) ([
+ 'status' => 0,
+ ]),
//'total_lp' => $costeInterior + $coste_cubierta + $coste_sobrecubierta,
//'acabadoCubierta' => $acabadoCubierta,
//'acabadoSobrecubierta' => $acabadoSobrecubierta,
@@ -1818,6 +1999,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
return $return_data;
+
} catch (Exception $e) {
return [
'exception' => $e->getMessage(),
@@ -1990,6 +2172,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)
{
@@ -2072,18 +2267,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,
@@ -2093,49 +2288,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)
@@ -2264,11 +2466,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
- private function getPaginas($lineas){
+ private function getPaginas($lineas)
+ {
$paginasNegro = 0;
$paginasColor = 0;
-
+
foreach ($lineas as $linea) {
if (strpos($linea->tipo, "lp_bn") !== false || strpos($linea->tipo, "lp_bnhq") !== false) {
$paginasNegro = $linea->paginas;
@@ -2287,7 +2490,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$paginasNegro = $linea->paginas - $linea->rotativa_pag_color;
}
}
-
+
return [$paginasNegro, $paginasColor];
}
+
}
diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php
index edecdb9b..3969835e 100755
--- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php
+++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php
@@ -92,6 +92,9 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
"is_duplicado" => false,
'paginas_color_consecutivas' => null,
'papel_interior_diferente' => null,
+ 'paginasCuadernillo' => null,
+ 'lomo_redondo' => null,
+ 'cabezada' => null,
];
protected $casts = [
"cliente_id" => "int",
@@ -159,5 +162,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
"is_duplicado" => "boolean",
'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 ee35e651..f242d25e 100755
--- a/ci4/app/Models/Presupuestos/PresupuestoModel.php
+++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php
@@ -129,6 +129,9 @@ class PresupuestoModel extends \App\Models\BaseModel
"is_duplicado",
'paginas_color_consecutivas',
'papel_interior_diferente',
+ 'paginasCuadernillo',
+ 'lomo_redondo',
+ 'cabezada',
];
protected $returnType = "App\Entities\Presupuestos\PresupuestoEntity";
@@ -406,16 +409,21 @@ 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,
'papel_formato_alto' => !$papel_formato_id ? $data['tamanio']['alto'] : null,
'titulo' => $data_cabecera['titulo'],
+ 'autor' => $data_cabecera['autor'],
+ 'ISBN' => $data_cabecera['isbn'],
+ 'coleccion' => $data_cabecera['coleccion'],
'referencia_cliente' => $data_cabecera['referenciaCliente'],
'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'],
@@ -424,9 +432,9 @@ class PresupuestoModel extends \App\Models\BaseModel
'merma_cubierta' => $extra_info['merma'],
'paginasCuadernillo' => $data['paginasCuadernillo'],
- 'pos_paginas_color' => $data['interior']['pos_paginas_color'],
+ 'comp_pos_paginas_color' => $data['interior']['pos_paginas_color'],
'paginas_color_consecutivas' => $data['interior']['paginas_color_consecutivas'],
- 'papel_interior_diferente' => $data['interior']['papel_interior_diferente'],
+ 'papel_interior_diferente' => $data['interior']['papelInteriorDiferente'],
'lomo_cubierta' => $extra_info['lomo_cubierta'],
'lomo_sobrecubierta' => $extra_info['lomo_sobrecubierta'],
@@ -495,29 +503,45 @@ class PresupuestoModel extends \App\Models\BaseModel
if (is_array($data)) {
// -- INTERIOR --
// Si hay negro
- if ($data['interior']['paginas'] > $data['interior']['paginas_color']) {
+ if (intval($data['interior']['paginas']) > intval($data['interior']['paginas_color'])) {
if ($data['isHq'])
$key = 'bnhq';
else
$key = 'bn';
+ if (array_key_exists('id', $data['interior']['papel_generico'])) {
+ $papel_id = intval($data['interior']['papel_generico']['id']);
+ $gramaje = intval($data['interior']['gramaje']);
+ } else {
+ $papel_id = intval($data['interior']['papel_generico']['negro']['id']);
+ $gramaje = intval($data['interior']['gramaje']['negro']);
+ }
+
+
$values[$key] = array(
- 'paginas' => intval($data['interior']['paginas']) - intval($data['interior']['paginas_color']),
- 'papel_id' => intval($data['interior']['papel_generico']['id']),
- 'gramaje' => intval($data['interior']['gramaje']),
+ 'paginas' => intval($data['interior']['paginas']) - intval(intval($data['interior']['paginas_color'])),
+ 'papel_id' => $papel_id,
+ 'gramaje' => $gramaje,
);
}
// Si hay color
- if ($data['interior']['paginas_color'] > 0) {
+ if (intval($data['interior']['paginas_color']) > 0) {
if ($data['isHq'])
$key = 'colorhq';
else
$key = 'color';
+ if (array_key_exists('id', $data['interior']['papel_generico'])) {
+ $papel_id = intval($data['interior']['papel_generico']['id']);
+ $gramaje = intval($data['interior']['gramaje']);
+ } else {
+ $papel_id = intval($data['interior']['papel_generico']['color']['id']);
+ $gramaje = intval($data['interior']['gramaje']['color']);
+ }
$values[$key] = array(
- 'paginas' => intval($data['interior']['paginas_color']),
- 'papel_id' => intval($data['interior']['papel_generico']['id']),
- 'gramaje' => intval($data['interior']['gramaje']),
+ 'paginas' => intval(intval($data['interior']['paginas_color'])),
+ 'papel_id' => $papel_id,
+ 'gramaje' => $gramaje,
);
}
@@ -555,7 +579,7 @@ class PresupuestoModel extends \App\Models\BaseModel
$builder = $this->db
->table($this->table . " t1")
->select(
- "t1.id AS numero, t1.tipo_impresion_id as tipo, t1.tirada AS unidades, t1.total_aceptado as total, t1.paginas AS paginas,
+ "t1.id AS numero, t1.tipo_impresion_id as tipo, t1.tirada AS unidades, t1.total_aceptado as total, t1.paginas AS paginas,
t1.titulo AS titulo, t1.autor AS autor, t1.isbn AS isbn,
t1.papel_formato_id AS papel_formato_id, t1.papel_formato_personalizado AS papel_formato_personalizado,
t1.papel_formato_ancho AS papel_formato_ancho, t1.papel_formato_alto AS papel_formato_alto,
@@ -563,7 +587,7 @@ class PresupuestoModel extends \App\Models\BaseModel
t3.codigo AS codigo_encuadernacion,
t1.solapas AS solapas_cubierta, CAST(t1.solapas_ancho AS INT) AS solapas_ancho_cubierta,
t1.solapas_sobrecubierta AS solapas_sobrecubierta, CAST(t1.solapas_ancho_sobrecubierta AS INT) AS solapas_ancho_sobrecubierta,"
- );
+ );
$builder->join("lg_papel_formato t2", "t1.papel_formato_id = t2.id", "left");
$builder->join("tipos_presupuestos t3", "t1.tipo_impresion_id = t3.id", "left");
$builder->where("t1.is_deleted", 0);
diff --git a/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php b/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php
index cbbbe3bd..9c9227d0 100644
--- a/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php
+++ b/ci4/app/Models/Tarifas/Acabados/TarifaAcabadoModel.php
@@ -91,7 +91,7 @@ class TarifaAcabadoModel extends \App\Models\BaseModel
//JJO
$builder->where("t1.is_deleted", 0);
-
+
return empty($search)
? $builder
: $builder
@@ -116,8 +116,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(
@@ -130,18 +131,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
@@ -186,4 +187,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 c02f8ba8..25a3a42c 100644
--- a/ci4/app/Services/PresupuestoClienteService.php
+++ b/ci4/app/Services/PresupuestoClienteService.php
@@ -25,8 +25,13 @@ class PresupuestoClienteService extends BaseService
$total_plana = -1;
$hay_plana = false;
if ($data['isColor']) {
- if ($data['datosPedido']->paginas == $data['paginas_color'])
- $total_plana += floatval($plana[1]['total_impresion']);
+ if ($data['datosPedido']->paginas == $data['paginas_color']){
+ if(count($plana[1]) > 2)
+ $total_plana += floatval($plana[1]['total_impresion']);
+ else
+ return -1;
+ }
+
elseif (count($plana) > 0) {
if (count($plana[0]) > 2 && count($plana[1]) > 2) {
$total_plana = 0.0;
@@ -72,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 = [];
@@ -86,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 ace18543..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
@@ -16,7 +16,7 @@
-
+
@@ -101,7 +101,7 @@
-
+
@@ -110,16 +110,16 @@
-
+
@@ -127,7 +127,7 @@
-