mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
acabando el tema de las direcciones
This commit is contained in:
@ -332,13 +332,15 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$excluirRotativa = $reqData['excluirRotativa'] ?? 0;
|
||||
$ivaReducido = $reqData['ivaReducido'] ?? 0;
|
||||
|
||||
$direcciones = $reqData['direcciones'] ?? [];
|
||||
|
||||
$tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']);
|
||||
|
||||
// Interior
|
||||
$interior = [
|
||||
'papel_generico' => $modelPapelGenerico->getIdFromCode($interior['papelInterior']),
|
||||
'gramaje' => intval($interior['gramajeInterior']),
|
||||
'excluirRotativa' => $excluirRotativa == "false" ? false: true,
|
||||
'excluirRotativa' => $excluirRotativa == "false" ? false : true,
|
||||
'paginas' => $paginas,
|
||||
'paginas_color' => $paginas_color,
|
||||
];
|
||||
@ -361,8 +363,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
'solapas' => intval($sobrecubierta['solapas'] ?? 0),
|
||||
'acabados' => $sobrecubierta['plastificado'] ?? 0,
|
||||
];
|
||||
}
|
||||
else
|
||||
} else
|
||||
$sobrecubierta = false;
|
||||
|
||||
// Guardas
|
||||
@ -372,8 +373,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
'gramaje' => intval($guardas['gramaje']),
|
||||
'caras' => intval($guardas['guardasImpresas']),
|
||||
];
|
||||
}
|
||||
else
|
||||
} else
|
||||
$datos_guardas = false;
|
||||
|
||||
$datos_presupuesto = array(
|
||||
@ -389,10 +389,38 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
'cubierta' => $cubierta,
|
||||
'sobrecubierta' => $sobrecubierta,
|
||||
'datos_guardas' => $datos_guardas,
|
||||
|
||||
'servicios' => $reqData['servicios'] ?? [],
|
||||
);
|
||||
|
||||
$return_data = $this->calcular_presupuesto($datos_presupuesto, 0, false); //TRUE FOR DEBUG
|
||||
|
||||
if(count($direcciones) > 1){
|
||||
|
||||
for ($i=0; $i<count($tirada); $i++){
|
||||
|
||||
$coste_envio = 0.0;
|
||||
foreach($direcciones as $direccion){
|
||||
$coste_envio += $this->getCosteEnvio(
|
||||
$direccion['id'],
|
||||
$return_data['peso'][$i],
|
||||
$direccion['unidades'],
|
||||
$direccion['enPallets'] == 'true'?1:0)[0]->coste;
|
||||
}
|
||||
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
for ($i=0; $i<count($tirada); $i++){
|
||||
$coste_envio = 0.0;
|
||||
$coste_envio += $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0]->coste;
|
||||
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return $this->respond($return_data);
|
||||
} catch (Exception $e) {
|
||||
return $this->failServerError($e->getMessage());
|
||||
@ -424,30 +452,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
}
|
||||
|
||||
public function getDatosDireccion()
|
||||
{
|
||||
|
||||
if ($this->request->isAJAX()) {
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
|
||||
$reqData = $this->request->getPost();
|
||||
$direccionId = $reqData['id'] ?? 0;
|
||||
$peso = $reqData['peso'] ?? 0;
|
||||
$unidades = $reqData['unidades'] ?? 0;
|
||||
$entregaPieCalle = $reqData['entregaPieCalle'] ?? 0;
|
||||
|
||||
$data = $this->calcular_coste_envio($direccionId, $peso, $unidades, $entregaPieCalle);
|
||||
|
||||
return $this->respond([
|
||||
'data' => $data,
|
||||
$csrfTokenName => $newTokenHash
|
||||
]);
|
||||
} else {
|
||||
return $this->failUnauthorized('Invalid request', 403);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function getNuevaDireccion()
|
||||
{
|
||||
@ -1026,11 +1031,21 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
|
||||
|
||||
protected function calcular_coste_envio($direccionId, $peso, $unidades, $entregaPieCalle)
|
||||
protected function getCosteEnvio($direccionId = null, $peso, $unidades, $entregaPieCalle)
|
||||
{
|
||||
|
||||
$model = model('App\Models\Clientes\ClienteDireccionesModel');
|
||||
$data = $model->getDireccion($direccionId);
|
||||
if($direccionId != null){
|
||||
$model = model('App\Models\Clientes\ClienteDireccionesModel');
|
||||
$data = $model->getDireccion($direccionId);
|
||||
}
|
||||
else{
|
||||
$data = [];
|
||||
array_push($data, (object)[
|
||||
'pais_id' => 1, // españa
|
||||
'cp' => 18000, // envio nacional
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
$modelTarifaEnvio = model('App\Models\Tarifas\TarifaEnvioModel');
|
||||
$coste = 0;
|
||||
@ -1105,6 +1120,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$gramajeCubierta = $datos_entrada['cubierta']['gramajeCubierta'];
|
||||
$carasCubierta = $datos_entrada['cubierta']['carasCubierta'];
|
||||
$solapasCubierta = $datos_entrada['cubierta']['solapasCubierta'];
|
||||
$acabadosCubierta = $datos_entrada['cubierta']['acabadosCubierta'] ?? [];
|
||||
|
||||
// Sobrecubierta
|
||||
$sobreCubierta = $datos_entrada["sobrecubierta"] ?? null;
|
||||
@ -1291,18 +1307,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
else
|
||||
$error->cubierta = "";
|
||||
|
||||
$tarifaAcabadoCubierta = intval($datos_entrada['acabadoCubierta'] ?? 0);
|
||||
// Acabados Cubierta
|
||||
$tarifaAcabadoCubierta = $this->obtenerTarifasAcabado($acabadosCubierta);
|
||||
$acabadoCubierta = [];
|
||||
if ($tarifaAcabadoCubierta > 0) {
|
||||
foreach ($tarifaAcabadoCubierta as $tarifa) {
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoCubierta = $model->getPrecioTarifa($tarifaAcabadoCubierta, $datosPedido->tirada, -1, $POD);
|
||||
}
|
||||
if (count($acabadoCubierta) > 0) {
|
||||
if ($acabadoCubierta[0]->total <= 0)
|
||||
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
|
||||
$coste_servicios += floatval($acabadoCubierta[0]->total);
|
||||
$acabadoCubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
|
||||
|
||||
if (count($acabadoCubierta) > 0) {
|
||||
if ($acabadoCubierta[0]->total <= 0)
|
||||
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
|
||||
$coste_servicios += floatval($acabadoCubierta[0]->total);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Sobrecubierta
|
||||
$coste_sobrecubierta = 0.0;
|
||||
$peso_sobrecubierta = 0.0;
|
||||
@ -1316,7 +1336,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$input_data['datosPedido']->paginas = 4;
|
||||
$input_data['paginas_color'] = 4;
|
||||
$input_data['datosPedido']->solapas_ancho = intval($sobreCubierta['solapas'] ?? 0);
|
||||
$input_data['datosPedido']->solapas = $input_data['datosPedido']->solapas_ancho > 0 ? 1 : 0;
|
||||
$input_data['datosPedido']->solapas = $sobreCubierta['solapas'] > 0 ? 1 : 0;
|
||||
$input_data['datosPedido']->lomo = $this->calcular_lomo([$cubierta], $input_data['datosPedido']->lomo);
|
||||
$input_data['isColor'] = 1;
|
||||
$input_data['isHq'] = 1;
|
||||
@ -1346,17 +1366,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
$lomo_sobrecubierta = $lomo + floatval($linea_sobrecubierta['mano']);
|
||||
|
||||
////////////////////////////////////JJJO
|
||||
$tarifaAcabadoSobrecubierta = intval(strlen($sobreCubierta['acabados']) == 0 ? 0 : $sobreCubierta['acabados']);
|
||||
$tarifaAcabadoSobrecubierta = $this->obtenerTarifasAcabado(['plastificado' => $sobreCubierta['acabados']]);
|
||||
$acabadoSobrecubierta = [];
|
||||
if ($tarifaAcabadoSobrecubierta > 0) {
|
||||
foreach ($tarifaAcabadoSobrecubierta as $tarifa) {
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoSobrecubierta = $model->getPrecioTarifa($tarifaAcabadoSobrecubierta, $datosPedido->tirada, $POD);
|
||||
}
|
||||
if (count($acabadoSobrecubierta) > 0) {
|
||||
if ($acabadoSobrecubierta[0]->total <= 0)
|
||||
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
|
||||
$coste_servicios += floatval($acabadoSobrecubierta[0]->total);
|
||||
$acabadoSobrecubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
|
||||
|
||||
if (count($acabadoSobrecubierta) > 0) {
|
||||
if ($acabadoSobrecubierta[0]->total <= 0)
|
||||
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
|
||||
$coste_servicios += floatval($acabadoSobrecubierta[0]->total);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1460,16 +1481,16 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
/*
|
||||
'retractilado' => 3,
|
||||
'retractilado5' => 5,
|
||||
'ferro' => 24,
|
||||
'prototipo' => 9,
|
||||
'fajaColor' => 16,
|
||||
'plegadoGuardas' => 62,
|
||||
*/
|
||||
$serviciosAutomaticos = [];
|
||||
|
||||
$servicios = [];
|
||||
if ($datos_entrada['cubierta']['acabadosCubierta']['retractilado'] === 'true')
|
||||
array_push($servicios, 3);
|
||||
if ($datos_entrada['servicios']['prototipo'])
|
||||
array_push($servicios, 9);
|
||||
foreach ($servicios as $servicio) {
|
||||
if (intval($servicio) == 3 || intval($servicio) == 5 || intval($servicio) == 16) {
|
||||
if (intval($servicio) == 3) {
|
||||
// Servicios acabado
|
||||
$resultado = PresupuestoCLienteService::getServiciosAcabados([
|
||||
'tarifa_id' => $servicio,
|
||||
@ -1485,22 +1506,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$totalServicios += floatval($resultado[0]->total);
|
||||
$margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0;
|
||||
}
|
||||
} else if (intval($servicio) == 24) {
|
||||
// Servicios preimpresion (Ferro)
|
||||
$resultado = PresupuestoCLienteService::getServiciosPreimpresion([
|
||||
'tarifa_id' => $servicio,
|
||||
]);
|
||||
array_push($serviciosAutomaticos, $resultado[0]);
|
||||
if ($resultado[0]->precio <= 0)
|
||||
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
|
||||
|
||||
$coste_servicios += floatval($resultado[0]->precio);
|
||||
if ($extra_info) {
|
||||
$totalServicios += floatval($resultado[0]->precio);
|
||||
$margenServicios += floatval($resultado[0]->precio) * floatval($resultado[0]->margen) / 100.0;
|
||||
}
|
||||
}
|
||||
if (intval($servicio) == 9) {
|
||||
} else if (intval($servicio) == 9) {
|
||||
// Servicios preimpresion
|
||||
$resultado = PresupuestoCLienteService::getServiciosExtra([
|
||||
'tarifa_id' => $servicio,
|
||||
@ -1514,22 +1520,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$totalServicios += floatval($resultado[0]->precio);
|
||||
$margenServicios += floatval($resultado[0]->precio) * floatval($resultado[0]->margen) / 100.0;
|
||||
}
|
||||
} else if (intval($servicio) == 62) {
|
||||
// Servicios manipulado
|
||||
$resultado = PresupuestoCLienteService::getServiciosManipulado([
|
||||
'tarifa_id' => $servicio,
|
||||
'tirada' => $tirada[$t],
|
||||
'POD' => $POD,
|
||||
]);
|
||||
array_push($serviciosAutomaticos, $resultado[0]);
|
||||
if ($resultado[0]->total <= 0)
|
||||
$error->servicios = lang('Presupuestos.errores.errorPresupuesto');
|
||||
|
||||
$coste_servicios += floatval($resultado[0]->total);
|
||||
if ($extra_info) {
|
||||
$totalServicios += floatval($resultado[0]->total);
|
||||
$margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2020,4 +2010,69 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
return 32; // valor por defecto
|
||||
}
|
||||
|
||||
protected function obtenerTarifasAcabado($acabados)
|
||||
{
|
||||
$tarifas = [];
|
||||
|
||||
|
||||
foreach ($acabados as $acabado => $value) {
|
||||
|
||||
if ($acabado == 'plastificado') {
|
||||
|
||||
if ($value !== 'NONE') {
|
||||
|
||||
switch ($value) {
|
||||
case 'BRIL':
|
||||
array_push($tarifas, 1);
|
||||
break;
|
||||
case 'MATE':
|
||||
array_push($tarifas, 2);
|
||||
break;
|
||||
case 'ANTI':
|
||||
array_push($tarifas, 28);
|
||||
break;
|
||||
case 'SAND':
|
||||
array_push($tarifas, 94);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if ($acabado == 'barniz') {
|
||||
if ($value !== 'NONE') {
|
||||
switch ($value) {
|
||||
case 'R2D':
|
||||
array_push($tarifas, 102);
|
||||
break;
|
||||
case 'R3D':
|
||||
array_push($tarifas, 8);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if ($acabado == 'estampado') {
|
||||
if ($value !== 'NONE') {
|
||||
switch ($value) {
|
||||
case 'GOLD':
|
||||
array_push($tarifas, 103);
|
||||
break;
|
||||
case 'SILV':
|
||||
array_push($tarifas, 104);
|
||||
break;
|
||||
case 'COPP':
|
||||
array_push($tarifas, 105);
|
||||
break;
|
||||
case 'BRON':
|
||||
array_push($tarifas, 106);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $tarifas;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user