Merge branch 'dev/presu_cliente_v2' into feat/tarifa-code

This commit is contained in:
amazuecos
2024-10-22 14:22:07 +02:00
22 changed files with 62193 additions and 340 deletions

View File

@ -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];
}
}