mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
guardar terminado
This commit is contained in:
@ -89,47 +89,27 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
public function add()
|
||||
{
|
||||
$this->viewData['breadcrumb'] = [
|
||||
['title' => lang("App.menu_presupuestos"), 'route' => "javascript:void(0);", 'active' => false],
|
||||
['title' => "Listado", 'route' => site_url('presupuestocliente/list'), 'active' => true]
|
||||
];
|
||||
|
||||
// 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;
|
||||
|
||||
$presupuestoEntity = isset($sanitizedData) ? new PresupuestoEntity($sanitizedData) : new PresupuestoEntity();
|
||||
$presupuestoEntity->clienteId = $clienteId;
|
||||
|
||||
$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 = "";
|
||||
$datosPresupuesto->color_impresion = 'negro';
|
||||
$datosPresupuesto->tapa = 'blanda';
|
||||
|
||||
$datosPresupuesto->clienteList = $this->getClienteListItems($clienteId ?? null);
|
||||
$datosPresupuesto->paginasCuadernillo = [32, 28, 24, 20, 16];
|
||||
$presupuestoEntity->estado_id = 1;
|
||||
$presupuestoEntity->paginas_por_cuadernillo = 32;
|
||||
$POD = model('App\Models\Configuracion\ConfiguracionSistemaModel')->getPOD();
|
||||
|
||||
$this->viewData['breadcrumb'] = [
|
||||
['title' => lang("App.menu_presupuestos"), 'route' => site_url('presupuestocliente/list'), 'active' => false],
|
||||
['title' => "Añadir Presupuesto", 'route' => "javascript:void(0);", 'active' => true]
|
||||
];
|
||||
|
||||
$this->viewData['formAction'] = 'add';
|
||||
|
||||
$this->viewData['paisList'] = $this->getPaisListItems();
|
||||
|
||||
$this->viewData['presupuestoEntity'] = $presupuestoEntity;
|
||||
$this->viewData['datosPresupuesto'] = $datosPresupuesto;
|
||||
|
||||
$this->viewData['clienteId'] = $clienteId;
|
||||
$this->viewData['POD'] = $POD;
|
||||
|
||||
$this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . $this->viewData['pageTitle'] . ' ' . lang('Basic.global.addNewSuffix');
|
||||
|
||||
@ -139,13 +119,13 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
public function edit($requestedId = null)
|
||||
{
|
||||
if ($requestedId == null) :
|
||||
if ($requestedId == null):
|
||||
return $this->redirect2listView();
|
||||
endif;
|
||||
$id = filter_var($requestedId, FILTER_SANITIZE_URL);
|
||||
$presupuestoEntity = $this->model->find($id);
|
||||
|
||||
if ($presupuestoEntity == false) :
|
||||
if ($presupuestoEntity == false):
|
||||
$message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Presupuestos.presupuesto')), $id]);
|
||||
return $this->redirect2listView('sweet-error', $message);
|
||||
endif;
|
||||
@ -155,7 +135,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$user = $model_user->find(auth()->user()->id);
|
||||
$clienteId = $user->cliente_id;
|
||||
|
||||
$datosPresupuesto = (object)array();
|
||||
$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);
|
||||
@ -198,8 +178,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
$this->viewData['presupuestoEntity'] = $presupuestoEntity;
|
||||
$this->viewData['datosPresupuesto'] = $datosPresupuesto;
|
||||
$this->viewData['clienteId'] = $presupuestoEntity->cliente_id; // En el caso del edit, se mantiene el clienteId del presupuesto
|
||||
|
||||
|
||||
$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
|
||||
// se actualiza la bbdd para que sólo ejecute algunas funciones una vez
|
||||
if ($presupuestoEntity->is_duplicado) {
|
||||
@ -237,7 +218,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$datetime = (new \CodeIgniter\I18n\Time("now"));
|
||||
$rawResult = $this->model->where('id', $id)
|
||||
->set([
|
||||
'deleted_at' => $datetime->format('Y-m-d H:i:s'),
|
||||
'deleted_at' => $datetime->format('Y-m-d H:i:s'),
|
||||
'is_deleted' => $this->delete_flag
|
||||
])
|
||||
->update();
|
||||
@ -337,13 +318,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
$tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']);
|
||||
|
||||
if($papelInteriorDiferente){
|
||||
if ($papelInteriorDiferente) {
|
||||
$papel['negro'] = $modelPapelGenerico->getIdFromCode($interior['papelInterior']['negro']);
|
||||
$papel['color'] = $modelPapelGenerico->getIdFromCode($interior['papelInterior']['color']);
|
||||
$gramaje['negro'] = intval($interior['gramajeInterior']['negro']);
|
||||
$gramaje['color'] = intval($interior['gramajeInterior']['color']);
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
$papel = $modelPapelGenerico->getIdFromCode($interior['papelInterior']);
|
||||
$gramaje = intval($interior['gramajeInterior']);
|
||||
}
|
||||
@ -361,9 +341,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
// Cubierta
|
||||
$cubierta = [
|
||||
'papel_generico_cubierta' => $modelPapelGenerico->getIdFromCode($cubierta['papelCubierta']),
|
||||
'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
|
||||
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
|
||||
'solapasCubierta' => intval($cubierta['solapas'] ?? 0),
|
||||
'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
|
||||
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
|
||||
'solapasCubierta' => intval($cubierta['solapas'] ?? 0),
|
||||
'acabadosCubierta' => $cubierta['acabados'] ?? 0,
|
||||
];
|
||||
|
||||
@ -371,8 +351,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
if ($sobrecubierta != "false" && $sobrecubierta != null) {
|
||||
$sobrecubierta = [
|
||||
'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']),
|
||||
'gramaje' => intval($sobrecubierta['gramaje']),
|
||||
'solapas' => intval($sobrecubierta['solapas'] ?? 0),
|
||||
'gramaje' => intval($sobrecubierta['gramaje']),
|
||||
'solapas' => intval($sobrecubierta['solapas'] ?? 0),
|
||||
'acabados' => $sobrecubierta['plastificado'] ?? 0,
|
||||
];
|
||||
} else
|
||||
@ -382,8 +362,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
if ($guardas != "false" && $guardas != null) {
|
||||
$datos_guardas = [
|
||||
'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']),
|
||||
'gramaje' => intval($guardas['gramaje']),
|
||||
'caras' => intval($guardas['guardasImpresas']),
|
||||
'gramaje' => intval($guardas['gramaje']),
|
||||
'caras' => intval($guardas['guardasImpresas']),
|
||||
];
|
||||
} else
|
||||
$datos_guardas = false;
|
||||
@ -406,40 +386,42 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
);
|
||||
|
||||
$return_data = $this->calcular_presupuesto($datos_presupuesto, 0, false); //TRUE FOR DEBUG
|
||||
if(array_key_exists('exception', $return_data)){
|
||||
if (array_key_exists('exception', $return_data)) {
|
||||
return $this->failServerError(
|
||||
$return_data['exception'] . ' - ' .
|
||||
$return_data['file'] . ' - ' . $return_data['line']);
|
||||
$return_data['file'] . ' - ' . $return_data['line']
|
||||
);
|
||||
}
|
||||
if(count($direcciones) > 1){
|
||||
|
||||
for ($i=0; $i<count($tirada); $i++){
|
||||
|
||||
if (count($direcciones) > 1) {
|
||||
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
|
||||
$coste_envio = 0.0;
|
||||
foreach($direcciones as $direccion){
|
||||
foreach ($direcciones as $direccion) {
|
||||
$coste_envio += $this->getCosteEnvio(
|
||||
$direccion['id'],
|
||||
$return_data['peso'][$i],
|
||||
$direccion['id'],
|
||||
$return_data['peso'][$i],
|
||||
$direccion['unidades'],
|
||||
$direccion['enPallets'] == 'true'?1:0)[0]->coste;
|
||||
$direccion['entregaPalets'] == 'true' ? 1 : 0
|
||||
)[0]->coste;
|
||||
}
|
||||
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
|
||||
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
for ($i=0; $i<count($tirada); $i++){
|
||||
} 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_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
return $this->respond($return_data);
|
||||
} catch (Exception $e) {
|
||||
return $this->failServerError($e->getMessage());
|
||||
return $this->failServerError($e->getMessage() );
|
||||
}
|
||||
} else {
|
||||
return $this->failUnauthorized('Invalid request', 403);
|
||||
@ -468,7 +450,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function getNuevaDireccion()
|
||||
{
|
||||
@ -591,60 +573,97 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
}
|
||||
|
||||
public function guardarPresupuesto()
|
||||
public function guardar()
|
||||
{
|
||||
if ($this->request->isAJAX()) {
|
||||
|
||||
$modelPapelGenerico = new PapelGenericoModel();
|
||||
|
||||
$reqData = $this->request->getPost();
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
|
||||
$confirmar = $reqData['confirmar'] ?? 0;
|
||||
|
||||
$id = $reqData['id'] ?? 0;
|
||||
$id = intval($id);
|
||||
|
||||
$datosCabecera = $reqData['datos_cabecera'] ?? [];
|
||||
$datosCabecera = $reqData['datosCabecera'] ?? [];
|
||||
|
||||
$tirada = $reqData['datos_libro']['tirada'] ?? 0;
|
||||
$selected_tirada = $reqData['tirada'] ?? 0;
|
||||
$peso_libro = $reqData['peso'] ?? 0;
|
||||
$tamanio = $reqData['datos_libro']['tamanio'];
|
||||
$tipo_impresion_id = $this->getTipoImpresion($reqData['datos_libro']['tipo'], $reqData['datos_libro']['tapa']);
|
||||
$cliente_id = $reqData['datos_libro']['clienteId'] ?? -1;
|
||||
$isColor = intval($reqData['datos_libro']['isColor']) ?? 0;
|
||||
$isHq = intval($reqData['datos_libro']['isHq']) ?? 0;
|
||||
$paginasCuadernillo = $reqData['datos_libro']['paginasCuadernillo'] ?? null;
|
||||
$confirmar = $reqData['confirmar'] ?? 0;
|
||||
|
||||
$cliente_id = $reqData['clienteId'] ?? -1;
|
||||
|
||||
$tirada = $reqData['tirada'] ?? 0;
|
||||
$selected_tirada = $reqData['selectedTirada'] ?? 0;
|
||||
$tamanio = $reqData['tamanio'];
|
||||
$paginas = $reqData['paginas'] ?? 0;
|
||||
$paginas_color = $reqData['paginasColor'] ?? 0;
|
||||
$tipo = $reqData['tipo'];
|
||||
|
||||
$paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null;
|
||||
$papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null;
|
||||
|
||||
$isColor = intval($reqData['isColor']) ?? 0;
|
||||
$isHq = intval($reqData['isHq']) ?? 0;
|
||||
|
||||
$interior = $reqData['interior'] ?? [];
|
||||
$cubierta = $reqData['cubierta'] ?? [];
|
||||
$sobrecubierta = $reqData['sobrecubierta'] ?? [];
|
||||
$guardas = $reqData['guardas'] ?? [];
|
||||
$faja = $reqData['faja'] ?? [];
|
||||
$excluirRotativa = $reqData['excluirRotativa'] ?? 0;
|
||||
$ivaReducido = intval($reqData['ivaReducido']) ?? 0;
|
||||
|
||||
$direcciones = $reqData['direcciones'] ?? [];
|
||||
|
||||
$tipo_impresion_id = $this->getTipoImpresion($tipo, $cubierta['tipoCubierta']);
|
||||
|
||||
if ($papelInteriorDiferente) {
|
||||
$papel['negro'] = $modelPapelGenerico->getIdFromCode($interior['papelInterior']['negro']);
|
||||
$papel['color'] = $modelPapelGenerico->getIdFromCode($interior['papelInterior']['color']);
|
||||
$gramaje['negro'] = intval($interior['gramajeInterior']['negro']);
|
||||
$gramaje['color'] = intval($interior['gramajeInterior']['color']);
|
||||
} else {
|
||||
$papel = $modelPapelGenerico->getIdFromCode($interior['papelInterior']);
|
||||
$gramaje = intval($interior['gramajeInterior']);
|
||||
}
|
||||
// Interior
|
||||
$papel_generico = [
|
||||
'id' => $reqData['datos_libro']['papelInterior'] ?? 0,
|
||||
'nombre' => $reqData['datos_libro']['papelInteriorNombre'] ?? "",
|
||||
$interior = [
|
||||
'papel_generico' => $papel,
|
||||
'gramaje' => $gramaje,
|
||||
'excluirRotativa' => $excluirRotativa == "false" ? false : true,
|
||||
'paginas' => $paginas,
|
||||
'paginas_color' => $paginas_color,
|
||||
'papelInteriorDiferente' => $papelInteriorDiferente
|
||||
];
|
||||
$gramaje = $reqData['datos_libro']['gramajeInterior'] ?? 0;
|
||||
$excluirRotativa = $reqData['datos_libro']['excluirRotativa'] ?? 0;
|
||||
$paginas = intval($reqData['datos_libro']['paginas']) ?? 0;
|
||||
$paginas_color = intval($reqData['datos_libro']['paginasColor']) ?? 0;
|
||||
|
||||
|
||||
// Cubierta
|
||||
$papel_generico_cubierta = [
|
||||
'id' => $reqData['datos_libro']['papelCubierta'] ?? 0,
|
||||
'nombre' => $reqData['datos_libro']['papelCubiertaNombre'] ?? "",
|
||||
$cubierta = [
|
||||
'papel_generico_cubierta' => $modelPapelGenerico->getIdFromCode($cubierta['papelCubierta']),
|
||||
'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
|
||||
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0),
|
||||
'solapasCubierta' => intval($cubierta['solapas'] ?? 0),
|
||||
'acabadosCubierta' => $cubierta['acabados'] ?? 0,
|
||||
];
|
||||
$gramajeCubierta = $reqData['datos_libro']['gramajeCubierta'] ?? 0;
|
||||
$carasCubierta = intval($reqData['datos_libro']['carasCubierta'] ?? 0);
|
||||
$solapasCubierta = intval($reqData['datos_libro']['solapasCubierta'] ?? 0);
|
||||
$acabadoCubierta = $reqData['datos_libro']['acabadoCubierta'] ?? 0;
|
||||
|
||||
// Sobrecubierta
|
||||
$sobreCubierta = $reqData['datos_libro']["sobrecubierta"] ?? null;
|
||||
if ($sobrecubierta != "false" && $sobrecubierta != null) {
|
||||
$sobrecubierta = [
|
||||
'papel' => $modelPapelGenerico->getIdFromCode($sobrecubierta['papel']),
|
||||
'gramaje' => intval($sobrecubierta['gramaje']),
|
||||
'solapas' => intval($sobrecubierta['solapas'] ?? 0),
|
||||
'acabados' => $sobrecubierta['plastificado'] ?? 0,
|
||||
];
|
||||
} else
|
||||
$sobrecubierta = false;
|
||||
|
||||
// Guardas
|
||||
$datos_guardas = $reqData['datos_libro']['guardas'] ?? 0;
|
||||
|
||||
$servicios = $reqData['datos_libro']['servicios'] ?? [];
|
||||
$iva_reducido = $reqData['iva_reducido'];
|
||||
if ($guardas != "false" && $guardas != null) {
|
||||
$datos_guardas = [
|
||||
'papel' => $modelPapelGenerico->getIdFromCode($guardas['papel']),
|
||||
'gramaje' => intval($guardas['gramaje']),
|
||||
'caras' => intval($guardas['guardasImpresas']),
|
||||
];
|
||||
} else
|
||||
$datos_guardas = false;
|
||||
|
||||
$datos_presupuesto = array(
|
||||
'tirada' => $tirada,
|
||||
@ -655,23 +674,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
'isHq' => $isHq,
|
||||
'paginasCuadernillo' => $paginasCuadernillo,
|
||||
|
||||
'interior' => array(
|
||||
'papel_generico' => $papel_generico,
|
||||
'gramaje' => $gramaje,
|
||||
'excluirRotativa' => $excluirRotativa,
|
||||
'paginas' => $paginas,
|
||||
'paginas_color' => $paginas_color,
|
||||
),
|
||||
'cubierta' => array(
|
||||
'papel_generico_cubierta' => $papel_generico_cubierta,
|
||||
'gramajeCubierta' => $gramajeCubierta,
|
||||
'carasCubierta' => $carasCubierta,
|
||||
'solapasCubierta' => $solapasCubierta,
|
||||
),
|
||||
'acabadoCubierta' => $acabadoCubierta,
|
||||
'sobrecubierta' => $sobreCubierta,
|
||||
'interior' => $interior,
|
||||
'cubierta' => $cubierta,
|
||||
'sobrecubierta' => $sobrecubierta,
|
||||
'datos_guardas' => $datos_guardas,
|
||||
'servicios' => $servicios,
|
||||
|
||||
'servicios' => $reqData['servicios'] ?? [],
|
||||
);
|
||||
|
||||
$resultado_presupuesto = $this->calcular_presupuesto($datos_presupuesto, $selected_tirada, true);
|
||||
@ -682,56 +690,65 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
if (!empty($error)) {
|
||||
return $this->respond([
|
||||
'error' => $error,
|
||||
$csrfTokenName => $newTokenHash
|
||||
]);
|
||||
}
|
||||
}
|
||||
} else if (isset($resultado_presupuesto['exception'])) {
|
||||
return $this->respond([
|
||||
'error' => $resultado_presupuesto['exception'],
|
||||
$csrfTokenName => $newTokenHash
|
||||
'file' => $resultado_presupuesto['file'],
|
||||
'line' => $resultado_presupuesto['line'],
|
||||
]);
|
||||
}
|
||||
|
||||
// seleccionamos el peso de la tirada seleccionada
|
||||
$peso_libro = $resultado_presupuesto['peso'][array_search($selected_tirada, $tirada)];
|
||||
|
||||
|
||||
if (count($direcciones) > 1) {
|
||||
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] = 0.0;
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] = 0.0;
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] = 0.0;
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] = 0.0;
|
||||
|
||||
foreach ($reqData['direcciones'] as $direccion) {
|
||||
|
||||
$proporcion = intval($direccion['unidades']) / $selected_tirada * 100.0;
|
||||
$unidades_calculo = floor($tirada[$i] * $proporcion / 100.0);
|
||||
try {
|
||||
$coste_envio = $this->calcular_coste_envio(
|
||||
$coste_envio = 0.0;
|
||||
foreach ($direcciones as $direccion) {
|
||||
$precio_envio = $this->getCosteEnvio(
|
||||
$direccion['id'],
|
||||
$peso_libro,
|
||||
$unidades_calculo,
|
||||
$direccion['tipo'] == 'cajas' ? 0 : 1
|
||||
);
|
||||
|
||||
if (count($coste_envio) > 0) {
|
||||
$coste = floatval($coste_envio[0]->coste);
|
||||
$margen = ($coste * floatval($coste_envio[0]->margen)) / 100.0;
|
||||
$coste -= $margen;
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $coste;
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $margen;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
return $this->respond([
|
||||
'status' => -1,
|
||||
'message' => "Error al calcular el coste de envío (¿las direcciones están guardadas?)",
|
||||
$csrfTokenName => $newTokenHash
|
||||
]);
|
||||
$resultado_presupuesto['peso'][$i],
|
||||
$direccion['unidades'],
|
||||
$direccion['entregaPalets'] == 'true' ? 1 : 0
|
||||
)[0];
|
||||
$coste_envio += $precio_envio->coste;
|
||||
$margen_envio = $precio_envio->margen;
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $coste_envio - $margen_envio;
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $margen_envio;
|
||||
}
|
||||
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
|
||||
}
|
||||
} else {
|
||||
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
$coste_envio = 0.0;
|
||||
$precio_envio = $this->getCosteEnvio(null, $resultado_presupuesto['peso'][$i], $tirada[$i], false)[0];
|
||||
$coste_envio += $precio_envio->coste;
|
||||
$margen_envio = $precio_envio->margen;
|
||||
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
|
||||
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] = $coste_envio - $margen_envio;
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] = $margen_envio;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
$model_presupuesto = new PresupuestoModel();
|
||||
$tiradas_alternativas = [];
|
||||
$resumen_totales = [];
|
||||
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
|
||||
if ($tirada[$i] != $selected_tirada) {
|
||||
|
||||
$coste_total = $resultado_presupuesto['info']['totales'][$i]['totalImpresion'] + $resultado_presupuesto['info']['totales'][$i]['totalPapel'] +
|
||||
@ -741,9 +758,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$resultado_presupuesto['info']['totales'][$i]['margenPapel'] +
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio']) / ($coste_total + $coste_envio) * 100.0, 2);
|
||||
$total_pedido = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio), 2);
|
||||
$precio_u = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio) / $tirada[$i], 4);
|
||||
$precio_u = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio) / $tirada[$i], 4);
|
||||
|
||||
array_push($tiradas_alternativas, (object)array(
|
||||
array_push($tiradas_alternativas, (object) array(
|
||||
'tirada' => $tirada[$i],
|
||||
'coste_impresion' => round($coste_total, 2),
|
||||
'coste_envio' => $coste_envio,
|
||||
@ -761,6 +778,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$borrar_antes = true;
|
||||
}
|
||||
|
||||
if($datos_presupuesto['sobrecubierta']){
|
||||
$acabado_id = $this->obtenerTarifasAcabado(['plastificado' => $datos_presupuesto['sobrecubierta']['acabados']]);
|
||||
if(count($acabado_id)>0){
|
||||
$datos_presupuesto['sobrecubierta']['acabados'] = $acabado_id[0];
|
||||
}
|
||||
}
|
||||
$acabado_id = $this->obtenerTarifasAcabado($datos_presupuesto['cubierta']['acabadosCubierta']);
|
||||
if(count($acabado_id)>0){
|
||||
$datos_presupuesto['cubierta']['acabadosCubierta']['plastificado'] = $acabado_id[0];
|
||||
$datos_presupuesto['cubierta']['acabadosCubierta']['barniz'] = $acabado_id[1];
|
||||
$datos_presupuesto['cubierta']['acabadosCubierta']['estampado'] = $acabado_id[2];
|
||||
}
|
||||
else{
|
||||
$datos_presupuesto['cubierta']['acabadosCubierta']['id'] = 0;
|
||||
}
|
||||
|
||||
$id = $model_presupuesto->insertarPresupuestoCliente(
|
||||
$id,
|
||||
$selected_tirada,
|
||||
@ -768,7 +801,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$datosCabecera,
|
||||
$resultado_presupuesto['info'],
|
||||
$resumen_totales,
|
||||
$iva_reducido,
|
||||
$ivaReducido,
|
||||
$excluirRotativa,
|
||||
$tiradas_alternativas
|
||||
);
|
||||
@ -823,7 +856,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
'status' => $id,
|
||||
'url' => site_url('presupuestos/presupuestocliente/edit'),
|
||||
'message' => lang('Basic.global.saveSuccess', [lang('Basic.global.record')]),
|
||||
$csrfTokenName => $newTokenHash
|
||||
]);
|
||||
} else {
|
||||
return $this->failUnauthorized('Invalid request', 403);
|
||||
@ -969,7 +1001,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$unidades = intval($direccion['unidades']);
|
||||
$peso_envio = $peso_libro * $unidades / 1000.0;
|
||||
|
||||
$data = $this->calcular_coste_envio($direccion['id'], $peso_libro, $direccion['unidades'], $direccion['tipo'] == 'cajas' ? 0 : 1);
|
||||
$data = $this->getCosteEnvio(
|
||||
$direccion['id'],
|
||||
$peso_libro,
|
||||
$direccion['unidades'],
|
||||
$direccion['entregaPalets'] == 'false' ? 0 : 1);
|
||||
|
||||
if (count($data) > 0) {
|
||||
|
||||
$data[0]->presupuesto_id = $presupuestoId;
|
||||
@ -977,7 +1014,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
unset($data[0]->id);
|
||||
$data[0]->precio = $data[0]->coste;
|
||||
unset($data[0]->coste);
|
||||
$data[0]->entregaPieCalle = $direccion['tipo'] == 'cajas' ? 0 : 1;
|
||||
$data[0]->entregaPieCalle = $direccion['entregaPalets'] == 'false' ? 0 : 1;
|
||||
unset($data[0]->tipo);
|
||||
$data[0]->peso = $peso_envio;
|
||||
$data[0]->cantidad = $unidades;
|
||||
@ -1016,8 +1053,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$data = [
|
||||
'presupuesto_id' => $presupuestoId,
|
||||
'tarifa_extra_id' => $servicio->tarifa_id,
|
||||
'precio_total' => $servicio->total,
|
||||
'precio_unidad' => $servicio->precio_unidad,
|
||||
'precio' => $servicio->precio,
|
||||
'margen' => $servicio->margen,
|
||||
];
|
||||
$model->insert($data);
|
||||
@ -1050,18 +1086,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
protected function getCosteEnvio($direccionId = null, $peso, $unidades, $entregaPieCalle)
|
||||
{
|
||||
|
||||
if($direccionId != null){
|
||||
if ($direccionId != null) {
|
||||
$model = model('App\Models\Clientes\ClienteDireccionesModel');
|
||||
$data = $model->getDireccion($direccionId);
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
$data = [];
|
||||
array_push($data, (object)[
|
||||
array_push($data, (object) [
|
||||
'pais_id' => 1, // españa
|
||||
'cp' => 18000, // envio nacional
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$modelTarifaEnvio = model('App\Models\Tarifas\TarifaEnvioModel');
|
||||
$coste = 0;
|
||||
@ -1123,7 +1158,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$isColor = $datos_entrada['isColor'];
|
||||
$isHq = $datos_entrada['isHq'];
|
||||
$paginasCuadernillo = $datos_entrada['paginasCuadernillo'] ?? null;
|
||||
|
||||
|
||||
|
||||
// Interior
|
||||
$papelInteriorDiferente = $datos_entrada['interior']['papelInteriorDiferente'] ?? false;
|
||||
@ -1150,7 +1185,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
// Servicios
|
||||
$servicios = $datos_entrada['servicios'] ?? [];
|
||||
|
||||
$error = (object)[
|
||||
$error = (object) [
|
||||
'interior' => "",
|
||||
'cubierta' => "",
|
||||
'sobrecubierta' => "",
|
||||
@ -1187,7 +1222,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
$is_cosido = (new TipoPresupuestoModel())->get_isCosido($tipo_impresion_id);
|
||||
|
||||
$datosPedido = (object)array(
|
||||
$datosPedido = (object) array(
|
||||
'paginas' => $paginas,
|
||||
'tirada' => $tirada[$t],
|
||||
'merma' => $tirada[$t] > $POD ? $this->calcular_merma($tirada[$t], $POD) : 0,
|
||||
@ -1332,6 +1367,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$acabadoCubierta = [];
|
||||
foreach ($tarifaAcabadoCubierta as $tarifa) {
|
||||
|
||||
if($tarifa == 0)
|
||||
continue;
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$acabadoCubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
|
||||
|
||||
@ -1591,7 +1628,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
}
|
||||
|
||||
$return_data += [
|
||||
$return_data += [
|
||||
'errors' => $error,
|
||||
'total_lp' => $costeInterior + $coste_cubierta + $coste_sobrecubierta,
|
||||
'acabadoCubierta' => $acabadoCubierta,
|
||||
@ -1730,7 +1767,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
{
|
||||
$model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel');
|
||||
$data = $model->getServiciosAcabadoCubierta();
|
||||
array_unshift($data, (object)['id' => '', 'label' => lang('Basic.global.None')]);
|
||||
array_unshift($data, (object) ['id' => '', 'label' => lang('Basic.global.None')]);
|
||||
return $data;
|
||||
}
|
||||
|
||||
@ -1738,18 +1775,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
{
|
||||
$model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel');
|
||||
$data = $model->getServiciosAcabadoSobrecubierta();
|
||||
array_unshift($data, (object)['id' => '', 'label' => lang('Basic.global.None')]);
|
||||
array_unshift($data, (object) ['id' => '', 'label' => lang('Basic.global.None')]);
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function getClienteListItems($selId = null)
|
||||
{
|
||||
$data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Clientes.cliente'))])];
|
||||
if (!empty($selId)) :
|
||||
if (!empty($selId)):
|
||||
$clienteModel = model('App\Models\Clientes\ClienteModel');
|
||||
|
||||
$selOption = $clienteModel->where('id', $selId)->findColumn('nombre');
|
||||
if (!empty($selOption)) :
|
||||
if (!empty($selOption)):
|
||||
$data[$selId] = $selOption[0];
|
||||
endif;
|
||||
endif;
|
||||
@ -1787,7 +1824,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$color = 'negro';
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoLineaModel');
|
||||
$data = $model->where('presupuesto_id', $presupuestoId)->findAll();;
|
||||
$data = $model->where('presupuesto_id', $presupuestoId)->findAll();
|
||||
;
|
||||
foreach ($data as $linea) {
|
||||
|
||||
if (strpos($linea->tipo, "hq") !== false) { // $linea->tipo contains the substring "hq"
|
||||
@ -1930,7 +1968,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
protected function generarResumen($presupuestoEntity)
|
||||
{
|
||||
|
||||
$presupuestoEntity->resumen = (object)[
|
||||
$presupuestoEntity->resumen = (object) [
|
||||
'titulo' => $this->generarTitulo($presupuestoEntity),
|
||||
'tamanio' => $this->obtenerTamanio($presupuestoEntity),
|
||||
'tipo_impresion' => $this->obtenerTipoImpresion($presupuestoEntity)
|
||||
@ -2035,64 +2073,21 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
{
|
||||
$tarifas = [];
|
||||
|
||||
$model = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel');
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
if ($value != 'NONE') {
|
||||
$data = $model->where('code', $value)->first();
|
||||
$data = $data->id;
|
||||
array_push($tarifas, $data);
|
||||
}
|
||||
else{
|
||||
array_push($tarifas, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return $tarifas;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user