a punto de guardar

This commit is contained in:
2024-10-19 14:32:49 +02:00
parent 09e5149090
commit 1914cb01fe
7 changed files with 2346 additions and 85 deletions

View File

@ -412,11 +412,11 @@ 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{
} else {
$coste_envio += $coste_direccion->coste;
}
}
@ -425,16 +425,16 @@ 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{
} else {
$coste_envio += $coste_direccion->coste;
}
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
}
@ -616,11 +616,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;
@ -655,11 +656,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$interior = [
'papel_generico' => $papel,
'gramaje' => $gramaje,
'excluirRotativa' => $excluirRotativa,
'excluirRotativa' => $excluirRotativa,
'paginas' => $paginas,
'paginasColor' => $paginas_color,
'pos_paginas_color' => $posPaginasColor,
'paginas_color_consecutivas' => $paginasColorConsecutivas,
'papel_interior_diferente' => $papelInteriorDiferente
'papelInteriorDiferente' => $papelInteriorDiferente
];
@ -916,7 +918,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$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);
@ -951,7 +953,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$modelLinea = new PresupuestoLineaModel();
$lineas = $modelLinea->where('presupuesto_id', $id)->findAll();
[$data['datosGenerales']['paginasNegro'], $data['datosGenerales']['paginasColor']] =
[$data['datosGenerales']['paginasNegro'], $data['datosGenerales']['paginasColor']] =
$this->getPaginas($lineas);
@ -1339,7 +1341,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$gramaje = $datos_entrada['interior']['gramaje'];
$excluirRotativa = $datos_entrada['interior']['excluirRotativa'];
$paginas = $datos_entrada['interior']['paginas'];
$paginas_color = $datos_entrada['interior']['paginas_color'];
$paginas_color = $datos_entrada['interior']['paginasColor'];
// Cubierta
@ -1358,15 +1360,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();
@ -1427,9 +1420,15 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($interior == -1) {
$errorModel = new ErrorPresupuesto();
$errorModel->insertError($datos_entrada['id'], auth()->user()->id, 'No se puede obtener el interior', $input_data);
$errorModel->insertError(
$datos_entrada['id'],
auth()->user()->id,
'
No se puede obtener el interior',
$input_data
);
$return_data = [
'errors' => (object)([
'errors' => (object) ([
'status' => 1
]),
];
@ -1455,8 +1454,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
}
// Si es POD hay que volver a calcular para incluir la merma correcta
if ($tirada[$t] <= $POD) {
$num_formas = [];
@ -1472,10 +1469,16 @@ 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);
$errorModel->insertError(
$datos_entrada['id'],
auth()->user()->id,
'No se puede obtener el interior',
$input_data
);
$return_data = [
'errors' => (object)([
'errors' => (object) ([
'status' => 1
]),
];
@ -1511,11 +1514,21 @@ 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
]),
];
}
// Cubierta
$input_data['papel_generico'] = $papel_generico_cubierta;
@ -1548,11 +1561,21 @@ 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
]),
];
}
// Acabados Cubierta
$tarifaAcabadoCubierta = $this->obtenerTarifasAcabado($acabadosCubierta);
$acabadoCubierta = [];
@ -1564,8 +1587,22 @@ 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
]),
];
}
$coste_servicios += floatval($acabadoCubierta[0]->total);
}
}
@ -1607,11 +1644,21 @@ 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
]),
];
}
$lomo_sobrecubierta = $lomo + floatval($linea_sobrecubierta['mano']);
$tarifaAcabadoSobrecubierta = $this->obtenerTarifasAcabado(['plastificado' => $sobreCubierta['acabados']]);
@ -1619,14 +1666,30 @@ 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
]),
];
}
$coste_servicios += floatval($acabadoSobrecubierta[0]->total);
}
}
@ -1677,10 +1740,20 @@ 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
]),
];
}
}
}
if ($extra_info) {
@ -1704,8 +1777,23 @@ 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
]),
];
}
$costeServiciosDefecto += floatval($servicio->total);
if ($extra_info) {
@ -1741,6 +1829,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([
@ -1749,8 +1838,22 @@ 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
]),
];
}
$coste_servicios += floatval($resultado[0]->total);
if ($extra_info) {
@ -1763,8 +1866,22 @@ 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
]),
];
}
$coste_servicios += floatval($resultado[0]->precio);
if ($extra_info) {
@ -1776,11 +1893,7 @@ 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;
$porcentajeMargenServicios = $margenServicios / ($margenServicios + $totalServicios) * 100;
@ -1806,8 +1919,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;
@ -1823,7 +1936,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
$return_data += [
'errors' => $error,
'errors' => [],
//'total_lp' => $costeInterior + $coste_cubierta + $coste_sobrecubierta,
//'acabadoCubierta' => $acabadoCubierta,
//'acabadoSobrecubierta' => $acabadoSobrecubierta,
@ -1839,6 +1952,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
}
return $return_data;
} catch (Exception $e) {
return [
'exception' => $e->getMessage(),
@ -2285,11 +2399,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;
@ -2308,7 +2423,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$paginasNegro = $linea->paginas - $linea->rotativa_pag_color;
}
}
return [$paginasNegro, $paginasColor];
}
}