mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
trabajando en añadir tiradas alternativas
This commit is contained in:
@ -73,17 +73,8 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController
|
||||
$datos_tarifas = $postData['datos'] ?? [];
|
||||
$tirada = $postData['tirada'] ?? 0;
|
||||
$POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
|
||||
$result = [];
|
||||
|
||||
if (count($datos_tarifas) > 0) {
|
||||
foreach ($datos_tarifas as $tarifa) {
|
||||
$proveedor = $tarifa['proveedor_id'] == '' ? -1 : $tarifa['proveedor_id'];
|
||||
$values = $this->model->getPrecioTarifa($tarifa['tarifa_id'], $tirada, $proveedor, $POD);
|
||||
$values[0]->cubierta = $tarifa['cubierta'] ?? 0;
|
||||
$values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0;
|
||||
array_push($result, $values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
$result = $this->getServiciosAcabados($datos_tarifas, $tirada, $POD);
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
@ -95,6 +86,23 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController
|
||||
return $this->respond($data);
|
||||
}
|
||||
|
||||
public function getServiciosAcabados($datos_tarifas, $tirada, $POD){
|
||||
|
||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
$result = [];
|
||||
if (count($datos_tarifas) > 0) {
|
||||
foreach ($datos_tarifas as $tarifa) {
|
||||
$proveedor = $tarifa['proveedor_id'] == '' ? -1 : $tarifa['proveedor_id'];
|
||||
|
||||
$values = $model->getPrecioTarifa($tarifa['tarifa_id'], $tirada, $proveedor, $POD);
|
||||
$values[0]->cubierta = $tarifa['cubierta'] ?? 0;
|
||||
$values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0;
|
||||
array_push($result, $values[0]);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function cargar()
|
||||
{
|
||||
if($this->request->isAJAX()) {
|
||||
|
||||
@ -517,6 +517,12 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
|
||||
$data['direcciones'] = $this->obtenerDireccionesEnvio($id, $presupuesto->cliente_id);
|
||||
}
|
||||
|
||||
$data['comentarios_cliente'] = $presupuesto->comentarios_cliente;
|
||||
$data['comentarios_safekat'] = $presupuesto->comentarios_safekat;
|
||||
$data['comentarios_presupuesto'] = $presupuesto->comentarios_presupuesto;
|
||||
$data['comentarios_produccion'] = $presupuesto->comentarios_produccion;
|
||||
|
||||
$data['tiradasAlternativas'] = json_decode($presupuesto->tirada_alternativa_json_data);
|
||||
/*
|
||||
|
||||
|
||||
|
||||
@ -126,6 +126,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$this->viewData['POD'] = $POD;
|
||||
$this->viewData['lomo_maximo'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo')->value;
|
||||
$this->viewData['lomo_minimo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_minimo_fresado_cosido')->value;
|
||||
$this->viewData['eb'] = 0;
|
||||
|
||||
$this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . $this->viewData['pageTitle'] . ' ' . lang('Basic.global.addNewSuffix');
|
||||
|
||||
@ -166,6 +167,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$this->viewData['POD'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
|
||||
$this->viewData['lomo_maximo'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_maximo')->value;
|
||||
$this->viewData['lomo_minimo_fresado_cosido'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('lomo_minimo_fresado_cosido')->value;
|
||||
$this->viewData['eb'] = $presupuestoEntity->envio_base;
|
||||
|
||||
// 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) {
|
||||
@ -384,7 +387,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
|
||||
$guardas = PresupuestoClienteService::obtenerGuardas($input_data);
|
||||
|
||||
|
||||
foreach ($guardas as $linea) {
|
||||
if (count($linea) > 0) {
|
||||
$lomo += floatval($linea['mano']);
|
||||
@ -403,20 +406,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
if ($tipo == 'cosido' || $tipo == 'fresado') {
|
||||
if ($lomo < $lomo_minimo_fresado_cosido) {
|
||||
$errors['status'] = 1;
|
||||
$errors['value'] = 'No se pueden encuadernar libros cosidos o fresados con lomo inferior a '
|
||||
. $lomo_minimo_fresado_cosido . ' mm. El lomo actual es de ' . $lomo . ' mm. ' .
|
||||
"Por favor, aumente el número de páginas o el gramaje del papel para que sea encuadernable.";
|
||||
$errors['value'] = 'No se pueden encuadernar libros cosidos o fresados con lomo inferior a '
|
||||
. $lomo_minimo_fresado_cosido . ' mm. El lomo actual es de ' . $lomo . ' mm. ' .
|
||||
"Por favor, aumente el número de páginas o el gramaje del papel para que sea encuadernable.";
|
||||
}
|
||||
if ($lomo > $lomo_maximo) {
|
||||
$errors['status'] = 1;
|
||||
$errors['value'] = 'No se pueden encuadernar con un lomo superior a '
|
||||
. $lomo_maximo . ' mm. El lomo actual es de ' . $lomo . ' mm. ' .
|
||||
"Por favor, disminuya el número de páginas o el gramaje del papel para que sea encuadernable.";
|
||||
$errors['value'] = 'No se pueden encuadernar con un lomo superior a '
|
||||
. $lomo_maximo . ' mm. El lomo actual es de ' . $lomo . ' mm. ' .
|
||||
"Por favor, disminuya el número de páginas o el gramaje del papel para que sea encuadernable.";
|
||||
}
|
||||
}
|
||||
|
||||
$data = (object) array('lomo' => $lomo,
|
||||
'errors' => $errors);
|
||||
$data = (object) array(
|
||||
'lomo' => $lomo,
|
||||
'errors' => $errors
|
||||
);
|
||||
return $this->respond($data);
|
||||
|
||||
} else {
|
||||
@ -439,6 +444,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$cliente_id = $reqData['clienteId'] ?? -1;
|
||||
|
||||
$tirada = $reqData['tirada'] ?? 0;
|
||||
$selectedTirada = $reqData['selectedTirada'] ?? -1;
|
||||
$tamanio = $reqData['tamanio'];
|
||||
$paginas = $reqData['paginas'] ?? 0;
|
||||
$paginas_color = $reqData['paginasColor'] ?? 0;
|
||||
@ -551,21 +557,67 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
);
|
||||
}
|
||||
|
||||
if (count($direcciones) > 1) {
|
||||
// calculo del envio base (tirada_maxima)
|
||||
$return_data['eb'] = [];
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
$direccion = [];
|
||||
$coste_direccion = $this->getCosteEnvio(
|
||||
$direccion,
|
||||
$return_data['peso'][$i],
|
||||
$tirada[$i],
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
if (!property_exists($coste_direccion, 'coste')) {
|
||||
$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 {
|
||||
$return_data['eb'][$i] = round($coste_direccion->coste, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$envio_base = true;
|
||||
if (count($direcciones) > 0) {
|
||||
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
|
||||
$coste_envio = 0.0;
|
||||
$primer_envio = false;
|
||||
foreach ($direcciones as $direccion) {
|
||||
// El primer envio no se calcula ya que se añade el base
|
||||
if ($envio_base) {
|
||||
//aporte del envio al precio unidad
|
||||
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
|
||||
$envio_base = false;
|
||||
continue;
|
||||
}
|
||||
if($selectedTirada > 0){
|
||||
$unidades = floor($direccion['unidades'] * $tirada[$i] / $selectedTirada);
|
||||
}
|
||||
else{
|
||||
$unidades = $direccion['unidades'];
|
||||
}
|
||||
$coste_direccion = $this->getCosteEnvio(
|
||||
$direccion['id'],
|
||||
$direccion['direccion'],
|
||||
$return_data['peso'][$i],
|
||||
!$primer_envio ? intval($tirada[$i]) : $direccion['unidades'],
|
||||
$direccion['entregaPalets'] == 'true' ? 1 : 0
|
||||
)[0];
|
||||
|
||||
$primer_envio = true;
|
||||
$unidades,
|
||||
$direccion['entregaPalets'] == 'true' ? 1 : 0,
|
||||
false,
|
||||
);
|
||||
|
||||
if (!property_exists($coste_direccion, 'coste')) {
|
||||
|
||||
@ -586,43 +638,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
];
|
||||
return $return_data;
|
||||
} else {
|
||||
$coste_envio += $coste_direccion->coste;
|
||||
//aporte del envio al precio unidad
|
||||
$coste_envio += ($coste_direccion->coste / $tirada[$i]);
|
||||
}
|
||||
}
|
||||
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
|
||||
$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_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0];
|
||||
|
||||
if (!property_exists($coste_direccion, 'coste')) {
|
||||
$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);
|
||||
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
|
||||
$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() . ' - ' . $e->getFile() . ' - ' . $e->getLine());
|
||||
@ -708,16 +739,15 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
|
||||
$anchoTotal = 0;
|
||||
if(count($interior) == 2) {
|
||||
|
||||
if(count($interior[0]) > 0)
|
||||
$anchoTotal += $interior[0]['mano'];
|
||||
if(count($interior[1]) > 0)
|
||||
if (count($interior) == 2) {
|
||||
|
||||
if (count($interior[0]) > 0)
|
||||
$anchoTotal += $interior[0]['mano'];
|
||||
if (count($interior[1]) > 0)
|
||||
$anchoTotal += $interior[1]['mano'];
|
||||
}
|
||||
else{
|
||||
if(count($interior) > 0)
|
||||
$anchoTotal += $interior['mano'];
|
||||
} else {
|
||||
if (count($interior) > 0)
|
||||
$anchoTotal += $interior['mano'];
|
||||
}
|
||||
|
||||
|
||||
@ -900,17 +930,20 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
|
||||
$datosCabecera = $reqData['datosCabecera'] ?? [];
|
||||
|
||||
|
||||
$confirmar = $reqData['confirmar'] ?? 0;
|
||||
$confirmar = intval($confirmar);
|
||||
|
||||
$cliente_id = $reqData['clienteId'] ?? -1;
|
||||
|
||||
$tirada = $reqData['tirada'] ?? 0;
|
||||
$tirada = $reqData['tirada'] ?? [];
|
||||
$selected_tirada = $reqData['selectedTirada'] ?? 0;
|
||||
$tamanio = $reqData['tamanio'];
|
||||
$paginas = $reqData['paginas'] ?? 0;
|
||||
$paginas_color = $reqData['paginasColor'] ?? 0;
|
||||
|
||||
$envio_base = $reqData['eb'] ?? 0;
|
||||
|
||||
$posPaginasColor = $reqData['posPaginasColor'] ?? "";
|
||||
$paginasColorConsecutivas = $reqData['pagColorConsecutivas'] ?? 0;
|
||||
$papelInteriorDiferente = $reqData['papelInteriorDiferente'] ?? 0;
|
||||
@ -1038,43 +1071,120 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
// seleccionamos el peso de la tirada seleccionada
|
||||
$peso_libro = $resultado_presupuesto['peso'][array_search($selected_tirada, $tirada)];
|
||||
|
||||
// calculo del envio base (tirada_maxima)
|
||||
$resultado_presupuesto['eb'] = [];
|
||||
$datos_presupuesto['envio_base'] = 0;
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
$direccion = [];
|
||||
$coste_direccion = $this->getCosteEnvio(
|
||||
$direccion,
|
||||
$resultado_presupuesto['peso'][$i],
|
||||
$tirada[$i],
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
if (count($direcciones) > 1) {
|
||||
|
||||
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;
|
||||
|
||||
$coste_envio = 0.0;
|
||||
foreach ($direcciones as $direccion) {
|
||||
$precio_envio = $this->getCosteEnvio(
|
||||
$direccion['id'],
|
||||
$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);
|
||||
if(intval($selected_tirada) == intval($tirada[$i])){
|
||||
$datos_presupuesto['envio_base'] = round($coste_direccion->coste*(1 + $coste_direccion->margen/100.0), 2) ;
|
||||
}
|
||||
} 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;
|
||||
if (!property_exists($coste_direccion, 'coste')) {
|
||||
$errorModel = new ErrorPresupuesto();
|
||||
$data['direccion'] = 'Sin direccion';
|
||||
$data['peso'] = $resultado_presupuesto['peso'][$i];
|
||||
$data['palets'] = 'Sin direccion';
|
||||
$errorModel->insertError(
|
||||
$id,
|
||||
auth()->user()->id,
|
||||
'No se ha podido calcular el coste de envío',
|
||||
$data
|
||||
);
|
||||
$resultado_presupuesto = [
|
||||
'errors' => (object) ([
|
||||
'status' => 1
|
||||
]),
|
||||
];
|
||||
return $resultado_presupuesto;
|
||||
} else {
|
||||
$resultado_presupuesto['eb'][$i] = round($coste_direccion->coste, 2);
|
||||
$resultado_presupuesto['eb_margen'][$i] = round($coste_direccion->margen, 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
if (count($direcciones) > 0) {
|
||||
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
|
||||
$envio_base = true;
|
||||
$coste_envio = 0.0;
|
||||
$margen_envio = 0.0;
|
||||
foreach ($direcciones as $direccion)
|
||||
{
|
||||
// El primer envio no se calcula ya que se añade el base
|
||||
if ($envio_base) {
|
||||
//aporte del envio al precio unidad
|
||||
$coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]);
|
||||
$margen_envio += ($resultado_presupuesto['eb_margen'][$i] / $tirada[$i]);
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i];
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $resultado_presupuesto['eb_margen'][$i];
|
||||
$envio_base = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
$unidades = floor($direccion['unidades'] * $tirada[$i] / $selected_tirada);
|
||||
$coste_direccion = $this->getCosteEnvio(
|
||||
$direccion['direccion'],
|
||||
$resultado_presupuesto['peso'][$i],
|
||||
$unidades,
|
||||
$direccion['entregaPalets'] == 'true' ? 1 : 0,
|
||||
false,
|
||||
);
|
||||
|
||||
if (!property_exists($coste_direccion, 'coste')) {
|
||||
|
||||
$errorModel = new ErrorPresupuesto();
|
||||
$data['direccion'] = $direccion;
|
||||
$data['peso'] = $resultado_presupuesto['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
|
||||
);
|
||||
$resultado_presupuesto = [
|
||||
'errors' => (object) ([
|
||||
'status' => 1
|
||||
]),
|
||||
];
|
||||
return $resultado_presupuesto;
|
||||
} else {
|
||||
//aporte del envio al precio unidad
|
||||
$coste_envio += ($coste_direccion->coste / $tirada[$i]);
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] += $coste_direccion->coste - $coste_direccion->margen;
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] += $coste_direccion->margen;
|
||||
|
||||
}
|
||||
}
|
||||
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4);
|
||||
}
|
||||
} else {
|
||||
for ($i = 0; $i < count($tirada); $i++) {
|
||||
$coste_envio = 0.0;
|
||||
$coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]);
|
||||
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] = $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i];
|
||||
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] = $resultado_presupuesto['eb_margen'][$i];
|
||||
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$model_presupuesto = new PresupuestoModel();
|
||||
$tiradas_alternativas = [];
|
||||
$resumen_totales = [];
|
||||
@ -1117,6 +1227,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$datos_presupuesto['retractilado'] = $retractilado;
|
||||
$datos_presupuesto['retractilado5'] = $retractilado5;
|
||||
$datos_presupuesto['entrega_taller'] = $reqData['entrega_taller'] ?? 0;
|
||||
|
||||
|
||||
$resultado_presupuesto['info']['merma'] = $this->calcular_merma($selected_tirada, $POD);
|
||||
|
||||
@ -1234,6 +1345,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
if ($presupuesto) {
|
||||
$data['lc'] = $presupuesto->lomo_cubierta;
|
||||
$data['lsc'] = $presupuesto->lomo_sobrecubierta;
|
||||
$data['eb'] = $presupuesto->envio_base;
|
||||
$data['state'] = intval($presupuesto->estado_id);
|
||||
$data['datosGenerales']['titulo'] = $presupuesto->titulo;
|
||||
$data['datosGenerales']['autor'] = $presupuesto->autor;
|
||||
@ -1314,7 +1426,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
if (intval($presupuesto->recoger_en_taller) == 1) {
|
||||
$data['direcciones']['entrega_taller'] = 1;
|
||||
} else {
|
||||
$data['direcciones']['entrega_taller'] = 0;
|
||||
$data['direcciones'] = $this->obtenerDireccionesEnvio($id, $presupuesto->cliente_id);
|
||||
}
|
||||
|
||||
@ -1481,26 +1592,27 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$peso_envio = $peso_libro * $unidades / 1000.0;
|
||||
|
||||
$data = $this->getCosteEnvio(
|
||||
$direccion['id'],
|
||||
$direccion['direccion'],
|
||||
$peso_libro,
|
||||
$direccion['unidades'],
|
||||
$direccion['entregaPalets'] == 'false' ? 0 : 1
|
||||
$direccion['entregaPalets'] == 'false' ? 0 : 1,
|
||||
false
|
||||
);
|
||||
|
||||
if (count($data) > 0) {
|
||||
if (isset($data->coste)) {
|
||||
|
||||
$data[0]->presupuesto_id = $presupuestoId;
|
||||
$data[0]->tarifa_id = $data[0]->id;
|
||||
unset($data[0]->id);
|
||||
$data[0]->precio = $data[0]->coste;
|
||||
unset($data[0]->coste);
|
||||
$data[0]->entregaPieCalle = $direccion['entregaPalets'] == 'false' ? 0 : 1;
|
||||
unset($data[0]->tipo);
|
||||
$data[0]->peso = $peso_envio;
|
||||
$data[0]->cantidad = $unidades;
|
||||
$data->presupuesto_id = $presupuestoId;
|
||||
$data->tarifa_id = $data->id;
|
||||
unset($data->id);
|
||||
$data->precio = $data->coste;
|
||||
unset($data->coste);
|
||||
$data->entregaPieCalle = $direccion['entregaPalets'] == 'false' ? 0 : 1;
|
||||
unset($data->tipo);
|
||||
$data->peso = $peso_envio;
|
||||
$data->cantidad = $unidades;
|
||||
|
||||
$model = new PresupuestoDireccionesModel();
|
||||
$model->insert($data[0]);
|
||||
$model->insert($data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1566,18 +1678,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
|
||||
|
||||
protected function getCosteEnvio($direccionId = null, $peso, $unidades, $entregaPieCalle)
|
||||
protected function getCosteEnvio($direccion, $peso, $unidades, $entregaPieCalle, $calcular_envio_base)
|
||||
{
|
||||
$return_data = $direccion;
|
||||
|
||||
if ($direccionId != null) {
|
||||
$model = model('App\Models\Clientes\ClienteDireccionesModel');
|
||||
$data = $model->getDireccion($direccionId);
|
||||
if ($calcular_envio_base) {
|
||||
|
||||
$pais_id = 1; // españa
|
||||
$cp = 18000; // envio nacional
|
||||
} else {
|
||||
$data = [];
|
||||
array_push($data, (object) [
|
||||
'pais_id' => 1, // españa
|
||||
'cp' => 18000, // envio nacional
|
||||
]);
|
||||
$pais_id = $direccion['pais_id'];
|
||||
$cp = $direccion['cp'];
|
||||
}
|
||||
|
||||
|
||||
@ -1585,44 +1696,43 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
$coste = 0;
|
||||
$margen = 0;
|
||||
|
||||
if (count($data) > 0) {
|
||||
$peso_envio = round(floatval($peso * $unidades / 1000.0)); // peso libro * unidades y se pasa a kilogramos
|
||||
$tarifas_envio = $modelTarifaEnvio->getTarifaEnvio($data[0]->pais_id, $data[0]->cp, $peso_envio, $entregaPieCalle ? 'palets' : 'cajas');
|
||||
for ($i = 0; $i < count($tarifas_envio); $i++) {
|
||||
if ($peso_envio > $tarifas_envio[$i]->peso_max || floatval($tarifas_envio[$i]->precio_max) == 0) {
|
||||
$tarifas_envio[$i]->precio = number_format(floatval($tarifas_envio[$i]->precio_min) + ($peso_envio - floatval($tarifas_envio[$i]->peso_min)) * floatval($tarifas_envio[$i]->precio_adicional), 2);
|
||||
}
|
||||
// si no se calcula linealmente
|
||||
else {
|
||||
$m = (($tarifas_envio[$i]->precio_max - $tarifas_envio[$i]->precio_min) / ($tarifas_envio[$i]->peso_max - $tarifas_envio[$i]->peso_min));
|
||||
$b = $tarifas_envio[$i]->precio_max - $m * $tarifas_envio[$i]->peso_max;
|
||||
$tarifas_envio[$i]->precio = number_format($m * $peso_envio + $b, 2);
|
||||
}
|
||||
$margen = $tarifas_envio[$i]->margen;
|
||||
}
|
||||
|
||||
if (count($tarifas_envio) > 1) {
|
||||
$tarifa_final = array_reduce($tarifas_envio, function ($previous, $current) {
|
||||
return $current->precio < $previous->precio ? $current : $previous;
|
||||
});
|
||||
$coste = $tarifa_final->precio;
|
||||
} else {
|
||||
if (count($tarifas_envio) > 0)
|
||||
$coste = $tarifas_envio[0]->precio;
|
||||
$peso_envio = round(floatval(floatval($peso) * floatval($unidades) / 1000.0)); // peso libro * unidades y se pasa a kilogramos
|
||||
$tarifas_envio = $modelTarifaEnvio->getTarifaEnvio($pais_id, $cp, $peso_envio, $entregaPieCalle ? 'palets' : 'cajas');
|
||||
for ($i = 0; $i < count($tarifas_envio); $i++) {
|
||||
if ($peso_envio > $tarifas_envio[$i]->peso_max || floatval($tarifas_envio[$i]->precio_max) == 0) {
|
||||
$tarifas_envio[$i]->precio = number_format(floatval($tarifas_envio[$i]->precio_min) + ($peso_envio - floatval($tarifas_envio[$i]->peso_min)) * floatval($tarifas_envio[$i]->precio_adicional), 2);
|
||||
}
|
||||
}
|
||||
if (count($data) > 0 && count($tarifas_envio) > 0) {
|
||||
$data[0]->coste = $coste;
|
||||
$data[0]->tipo = $entregaPieCalle ? 'palets' : 'cajas';
|
||||
$data[0]->margen = $margen;
|
||||
$data[0]->proveedor = $tarifas_envio[0]->proveedor;
|
||||
$data[0]->proveedor_id = $tarifas_envio[0]->proveedor_id;
|
||||
// si no se calcula linealmente
|
||||
else {
|
||||
$m = (($tarifas_envio[$i]->precio_max - $tarifas_envio[$i]->precio_min) / ($tarifas_envio[$i]->peso_max - $tarifas_envio[$i]->peso_min));
|
||||
$b = $tarifas_envio[$i]->precio_max - $m * $tarifas_envio[$i]->peso_max;
|
||||
$tarifas_envio[$i]->precio = number_format($m * $peso_envio + $b, 2);
|
||||
}
|
||||
$margen = $tarifas_envio[$i]->margen;
|
||||
}
|
||||
|
||||
return $data;
|
||||
if (count($tarifas_envio) > 1) {
|
||||
$tarifa_final = array_reduce($tarifas_envio, function ($previous, $current) {
|
||||
return $current->precio < $previous->precio ? $current : $previous;
|
||||
});
|
||||
$coste = $tarifa_final->precio;
|
||||
} else {
|
||||
if (count($tarifas_envio) > 0)
|
||||
$coste = $tarifas_envio[0]->precio;
|
||||
$margen = $tarifas_envio[0]->margen;
|
||||
}
|
||||
|
||||
$return_data['coste'] = $coste;
|
||||
$return_data['tipo'] = $entregaPieCalle ? 'palets' : 'cajas';
|
||||
$return_data['margen'] = $margen;
|
||||
$return_data['proveedor'] = $tarifas_envio[0]->proveedor;
|
||||
$return_data['proveedor_id'] = $tarifas_envio[0]->proveedor_id;
|
||||
|
||||
return (object) $return_data;
|
||||
}
|
||||
|
||||
protected function calcular_presupuesto($datos_entrada, $selected_tirada, $extra_info = false)
|
||||
protected function calcular_presupuesto($datos_entrada, $selected_tirada, $extra_info = false)
|
||||
{
|
||||
try {
|
||||
$return_data = [];
|
||||
@ -2618,7 +2728,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
|
||||
{
|
||||
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
||||
$model_direcciones = model('App\Models\Clientes\ClienteDireccionesModel');
|
||||
$direcciones = $model->where('presupuesto_id', $id)->findAll();
|
||||
$direcciones = $model->where('presupuesto_id', $id)->asArray()->findAll();
|
||||
|
||||
return $direcciones;
|
||||
|
||||
$result = [];
|
||||
$temp = [];
|
||||
|
||||
@ -76,18 +76,8 @@ class Presupuestoencuadernaciones extends \App\Controllers\BaseResourceControlle
|
||||
$POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
|
||||
$ancho = $postData['ancho'] ?? 0;
|
||||
$alto = $postData['alto'] ?? 0;
|
||||
$result = [];
|
||||
|
||||
if (count($datos_tarifas) > 0) {
|
||||
foreach ($datos_tarifas as $tarifa) {
|
||||
if ($tarifaModel->isTarifaPorHoras($tarifa['tarifa_id'])) {
|
||||
$values = $this->model->getPrecioTarifaHoras($tarifa['tarifa_id'], $paginas, $tirada, -1, $POD);
|
||||
} else {
|
||||
$values = $this->model->getPrecioTarifa($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto, -1, $POD);
|
||||
}
|
||||
array_push($result, $values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
$result = $this->getServiciosEncuadernacion($datos_tarifas, $tirada, $paginas, $ancho, $alto, $POD);
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
@ -99,6 +89,26 @@ class Presupuestoencuadernaciones extends \App\Controllers\BaseResourceControlle
|
||||
return $this->respond($data);
|
||||
}
|
||||
|
||||
public function getServiciosEncuadernacion($datos_tarifas, $tirada, $paginas, $ancho, $alto, $POD)
|
||||
{
|
||||
$result = [];
|
||||
$tarifaModel = model('App\Models\Tarifas\TarifaEncuadernacionModel');
|
||||
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
|
||||
|
||||
|
||||
if (count($datos_tarifas) > 0) {
|
||||
foreach ($datos_tarifas as $tarifa) {
|
||||
if ($tarifaModel->isTarifaPorHoras($tarifa['tarifa_id'])) {
|
||||
$values = $model->getPrecioTarifaHoras($tarifa['tarifa_id'], $paginas, $tirada, -1, $POD);
|
||||
} else {
|
||||
$values = $model->getPrecioTarifa($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto, -1, $POD);
|
||||
}
|
||||
array_push($result, $values[0]);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
public function datatable()
|
||||
{
|
||||
|
||||
@ -95,14 +95,8 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController
|
||||
$tarifas = $postData['datos'] ?? [];
|
||||
$tirada = $postData['tirada'] ?? 0;
|
||||
$POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
|
||||
$result = [];
|
||||
|
||||
if(count($tarifas)>0){
|
||||
foreach ($tarifas as $tarifa){
|
||||
$values = $this->model->getPrecioTarifa($tarifa, $tirada, $POD);
|
||||
array_push($result, $values[0]);
|
||||
}
|
||||
}
|
||||
|
||||
$result = $this->getServiciosManipulado($tarifas, $tirada, $POD);
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
@ -113,6 +107,22 @@ class Presupuestomanipulados extends \App\Controllers\BaseResourceController
|
||||
|
||||
return $this->respond($data);
|
||||
}
|
||||
|
||||
public function getServiciosManipulado($datos_tarifas, $tirada, $POD)
|
||||
{
|
||||
$result = [];
|
||||
$model = model('App\Models\Presupuestos\PresupuestoManipuladosModel');
|
||||
|
||||
if (count($datos_tarifas) > 0) {
|
||||
foreach ($datos_tarifas as $tarifa) {
|
||||
$values = $model->getPrecioTarifa($tarifa['tarifa_id'], $tirada, $POD);
|
||||
$values[0]->cubierta = $tarifa['cubierta'] ?? 0;
|
||||
$values[0]->sobrecubierta = $tarifa['sobrecubierta'] ?? 0;
|
||||
array_push($result, $values[0]);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
public function datatable()
|
||||
|
||||
@ -82,7 +82,12 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
|
||||
$id = $reqData['id'] ?? 0;
|
||||
|
||||
$json_data = $reqData['json_tiradas'] ?? null;
|
||||
$json_data_acabados = $reqData['json_acabados'] ?? null;
|
||||
$json_data_encuadernacion = $reqData['json_encuadernaciones'] ?? null;
|
||||
$json_data_manipulado = $reqData['json_manipulado'] ?? null;
|
||||
$cliente_id = $reqData['cliente_id'] ?? 0;
|
||||
|
||||
$tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4;
|
||||
@ -95,7 +100,7 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
|
||||
|
||||
foreach ($data as $linea) {
|
||||
// Se obtienen los valores de cada linea para el calculo del precio
|
||||
$datosPedido = (object)array(
|
||||
$datosPedido = (object) array(
|
||||
'paginas' => intval($linea['paginas']) ?? 0,
|
||||
'tirada' => intval($reqData['tirada']) ?? 0,
|
||||
'merma' => intval($reqData['merma']) ?? 0,
|
||||
@ -144,24 +149,24 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
|
||||
$uso = 'interior';
|
||||
$tipo = strpos($linea['row_id'], "_bn") !== false ? 'negro' : 'color';
|
||||
$paginas_negro = isset($linea['numPagColor']) ? intval($datosPedido->paginas) - intval($linea['numPagColor']) : 0;
|
||||
$paginas_color = $linea['numPagColor'] ?? 0;
|
||||
$paginas = (object)array(
|
||||
$paginas_color = $linea['numPagColor'] ?? 0;
|
||||
$paginas = (object) array(
|
||||
'negro' => $paginas_negro,
|
||||
'color' => $paginas_color,
|
||||
);
|
||||
$parametrosRotativa = (object)array(
|
||||
$parametrosRotativa = (object) array(
|
||||
'a_favor_fibra' => $datosPedido->a_favor_fibra,
|
||||
'bnPages' => $paginas->negro,
|
||||
'colorPages' => $paginas->color,
|
||||
'bnPages' => $paginas->negro,
|
||||
'colorPages' => $paginas->color,
|
||||
'rotativa_gota_negro' => 0,
|
||||
'rotativa_gota_color' => 0,
|
||||
);
|
||||
$parametrosRotativa->rotativa_gota_negro = floatval($linea['gotaNegro']?? 0);
|
||||
$parametrosRotativa->rotativa_gota_color = floatval($linea['gotaColor']?? 0);
|
||||
$parametrosRotativa->rotativa_negro = floatval($linea['cobNegro'] ?? 0);
|
||||
$parametrosRotativa->rotativa_cyan = floatval($linea['cobCyan'] ?? 0);
|
||||
$parametrosRotativa->rotativa_magenta = floatval($linea['cobMagenta']?? 0);
|
||||
$parametrosRotativa->rotativa_amarillo = floatval($linea['cobAmarillo']?? 0);
|
||||
$parametrosRotativa->rotativa_gota_negro = floatval($linea['gotaNegro'] ?? 0);
|
||||
$parametrosRotativa->rotativa_gota_color = floatval($linea['gotaColor'] ?? 0);
|
||||
$parametrosRotativa->rotativa_negro = floatval($linea['cobNegro'] ?? 0);
|
||||
$parametrosRotativa->rotativa_cyan = floatval($linea['cobCyan'] ?? 0);
|
||||
$parametrosRotativa->rotativa_magenta = floatval($linea['cobMagenta'] ?? 0);
|
||||
$parametrosRotativa->rotativa_amarillo = floatval($linea['cobAmarillo'] ?? 0);
|
||||
break;
|
||||
case 'lp_cubierta':
|
||||
$uso = 'cubierta';
|
||||
@ -194,14 +199,14 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
|
||||
$datosTipolog = $linea['gotaNegro'] ?? null;
|
||||
if (!is_null($datosTipolog)) {
|
||||
$datosTipolog = [];
|
||||
$data_temp = (object)array(
|
||||
$data_temp = (object) array(
|
||||
'negro' => floatval($linea['cobNegro'] ?? 0),
|
||||
'cyan' => floatval($linea['cobCyan'] ?? 0),
|
||||
'magenta' => floatval($linea['cobMagenta']?? 0),
|
||||
'amarillo' => floatval($linea['cobAmarillo']?? 0),
|
||||
'magenta' => floatval($linea['cobMagenta'] ?? 0),
|
||||
'amarillo' => floatval($linea['cobAmarillo'] ?? 0),
|
||||
'cg' => floatval($linea['cobCG'] ?? 0),
|
||||
'gota_negro' => floatval($linea['gotaNegro']?? 0),
|
||||
'gota_color' => floatval($linea['gotaColor']?? 0),
|
||||
'gota_negro' => floatval($linea['gotaNegro'] ?? 0),
|
||||
'gota_color' => floatval($linea['gotaColor'] ?? 0),
|
||||
);
|
||||
array_push($datosTipolog, $data_temp);
|
||||
}
|
||||
@ -213,13 +218,13 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
|
||||
$datosLinea['datosPedido'] = $datosPedido;
|
||||
$datosLinea['cliente_id'] = $cliente_id;
|
||||
$datosLinea['papel'] = $papel;
|
||||
if(isset($isColor))
|
||||
$datosLinea['isColor'] = $isColor;
|
||||
if(isset($opciones_papel))
|
||||
if (isset($isColor))
|
||||
$datosLinea['isColor'] = $isColor;
|
||||
if (isset($opciones_papel))
|
||||
$datosLinea['opciones_papel'] = $opciones_papel;
|
||||
if(isset($parametrosRotativa))
|
||||
if (isset($parametrosRotativa))
|
||||
$datosLinea['parametrosRotativa'] = $parametrosRotativa;
|
||||
if(isset($paginas))
|
||||
if (isset($paginas))
|
||||
$datosLinea['paginas'] = $paginas;
|
||||
$datosLinea['maquina'] = $maquina;
|
||||
$datosLinea['papel_generico'] = $papel_generico;
|
||||
@ -257,19 +262,113 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
|
||||
$linea_coste['total_coste'] +=
|
||||
$linea_coste['fields']['precio_tinta'];
|
||||
if (strpos($linea['row_id'], 'lp_rot') === 0) {
|
||||
$linea_coste['total_coste'] +=
|
||||
$linea_coste['fields']['total_corte'];
|
||||
}
|
||||
$linea_coste['total_coste'] +=
|
||||
$linea_coste['fields']['total_corte'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$linea_coste['total_margen'] = $linea_coste['fields']['margen_papel_pedido'] +
|
||||
$linea_coste['fields']['margen_impresion_horas'] +
|
||||
$linea_coste['fields']['margen_click_pedido'];
|
||||
|
||||
|
||||
unset($linea_coste['fields']);
|
||||
array_push($values, $linea_coste);
|
||||
}
|
||||
|
||||
// Calculo de los servicios (presimpresion y extra no dependen de nada)
|
||||
$servicios = (object) (['coste' => 0.0, 'margen' => 0.0]);
|
||||
|
||||
if ($json_data_acabados) {
|
||||
$json_data_acabados = json_decode($json_data_acabados, true);
|
||||
if (count($json_data_acabados) > 0) {
|
||||
|
||||
$acabados = new Presupuestoacabados();
|
||||
$POD = (new \App\Models\Configuracion\ConfigVariableModel())->getVariable('POD')->value;
|
||||
$result = $acabados->getServiciosAcabados($json_data_acabados, $reqData['tirada'], $POD);
|
||||
if (count($result) > 0) {
|
||||
foreach ($result as $servicio) {
|
||||
$coste = round($servicio->total / (1 + $servicio->margen / 100), 2);
|
||||
$margen = round($servicio->total - $coste, 2);
|
||||
$servicios->coste += $coste;
|
||||
$servicios->margen += $margen;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($json_data_encuadernacion) {
|
||||
$json_data_encuadernacion = json_decode($json_data_encuadernacion, true);
|
||||
if (count($json_data_encuadernacion) > 0) {
|
||||
|
||||
$encuadernacion = new Presupuestoencuadernaciones();
|
||||
$POD = (new \App\Models\Configuracion\ConfigVariableModel())->getVariable('POD')->value;
|
||||
$result = $encuadernacion->getServiciosEncuadernacion($json_data_encuadernacion, $reqData['tirada'], $reqData['paginas'], $reqData['ancho'], $reqData['alto'], $POD);
|
||||
if (count($result) > 0) {
|
||||
foreach ($result as $servicio) {
|
||||
$coste = round($servicio->total / (1 + $servicio->margen / 100), 2);
|
||||
$margen = round($servicio->total - $coste, 2);
|
||||
$servicios->coste += $coste;
|
||||
$servicios->margen += $margen;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($json_data_manipulado) {
|
||||
$json_data_manipulado = json_decode($json_data_manipulado, true);
|
||||
if (count($json_data_manipulado) > 0) {
|
||||
$manipulados = new Presupuestomanipulados();
|
||||
$POD = (new \App\Models\Configuracion\ConfigVariableModel())->getVariable('POD')->value;
|
||||
$result = $manipulados->getServiciosManipulado($json_data_manipulado, $reqData['tirada'], $POD);
|
||||
if (count($result) > 0) {
|
||||
foreach ($result as $servicio) {
|
||||
$coste = round($servicio->total / (1 + $servicio->margen / 100), 2);
|
||||
$margen = round($servicio->total - $coste, 2);
|
||||
$servicios->coste += $coste;
|
||||
$servicios->margen += $margen;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$json_envios = $reqData['json_envios'] ?? null;
|
||||
$coste_envio = 0.0;
|
||||
$margen_envio = 0.0;
|
||||
$tirada_base = floatval($reqData['tirada_base']);
|
||||
$peso_libro = floatval($reqData['peso_libro']);
|
||||
// el primer envio con la tirada base
|
||||
$model = model('App\Models\Tarifas\TarifaEnvioModel');
|
||||
$envios = $model->getTarifaEnvio(1, 18000, $tirada_base * $peso_libro/1000.0, "cajas");
|
||||
$resultado = $this->calcular_envio($envios, $tirada_base * $peso_libro/1000.0);
|
||||
$coste_envio += $resultado->coste;
|
||||
$margen_envio += $resultado->margen;
|
||||
|
||||
if ($json_envios) {
|
||||
$json_envios = json_decode($json_envios, true);
|
||||
if (count($json_envios) > 0) {
|
||||
//la primera linea es el envio base
|
||||
for($i = 1; $i < count($json_envios); $i++) {
|
||||
|
||||
$porcentaje = ($json_envios[$i]['cantidad']) / $tirada_base * 100.0;
|
||||
$cantidad = floor($reqData['tirada'] * $porcentaje / 100.0);
|
||||
$peso_envio = $cantidad * $peso_libro / 1000.0;
|
||||
|
||||
$paisId = $json_envios[$i]['pais_id'];
|
||||
$cp = $json_envios[$i]['cp'];
|
||||
$tipo_envio = $json_envios[$i]['entregaPieCalle'] == 1 ? 'palets' : 'cajas';
|
||||
|
||||
$model = model('App\Models\Tarifas\TarifaEnvioModel');
|
||||
$envios = $model->getTarifaEnvio($paisId, $cp, $peso_envio, $tipo_envio);
|
||||
|
||||
$resultado = $this->calcular_envio($envios, $peso_envio);
|
||||
$coste_envio += $resultado->coste;
|
||||
$margen_envio += $resultado->margen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
$values = [];
|
||||
}
|
||||
@ -279,8 +378,36 @@ class Presupuestotiradasalternativas extends \App\Controllers\BaseResourceContro
|
||||
|
||||
$response[$csrfTokenName] = $newTokenHash;
|
||||
$response['lineas'] = $values;
|
||||
$response['servicios'] = $servicios;
|
||||
$response['envios'] = (object) (['coste' => $coste_envio, 'margen' => $margen_envio]);
|
||||
|
||||
return $this->respond($response);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private function calcular_envio($envio, $peso_envio)
|
||||
{
|
||||
$coste_envio = 0.0;
|
||||
$margen_envio = 0.0;
|
||||
if (count(value: $envio) > 0) {
|
||||
$envio = $envio[0];
|
||||
if ($envio->id != null) {
|
||||
|
||||
if ($peso_envio > $envio->peso_max || floatval($envio->precio_max) == 0) {
|
||||
$coste_envio += number_format(floatval($envio->precio_min) + ($peso_envio - floatval($envio->peso_min)) * floatval($envio->precio_adicional), 2);
|
||||
}
|
||||
// si no se calcula linealmente
|
||||
else {
|
||||
$m = (($envio->precio_max - $envio->precio_min) / ($envio->peso_max - $envio->peso_min));
|
||||
$b = $envio->precio_max - $m * $envio->peso_max;
|
||||
$coste_envio = number_format($m * $peso_envio + $b, 2);
|
||||
|
||||
}
|
||||
|
||||
$margen_envio += $coste_envio * $envio->margen / 100.0;
|
||||
}
|
||||
}
|
||||
|
||||
return (object) (['coste' => $coste_envio, 'margen' => $margen_envio]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,6 +63,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
|
||||
"comentarios_pdf" => null,
|
||||
"comentarios_tarifa" => null,
|
||||
"comentarios_produccion" => null,
|
||||
"comentarios_presupuesto" => null,
|
||||
"lomo_cubierta" => null,
|
||||
"lomo_sobrecubierta" => null,
|
||||
"total_presupuesto" => null,
|
||||
@ -107,6 +108,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
|
||||
'paginasCuadernillo' => null,
|
||||
'lomo_redondo' => null,
|
||||
'cabezada' => null,
|
||||
'envio_base' => null,
|
||||
];
|
||||
protected $casts = [
|
||||
"cliente_id" => "int",
|
||||
|
||||
@ -315,7 +315,7 @@ return [
|
||||
'tiradasAlternativas' => 'Tiradas alternativas',
|
||||
'tiradasInfoIVA' => 'Los precios mostrados no incluyen IVA',
|
||||
'tiradaMargen' => 'Margen',
|
||||
'tiradaEnvio' => 'Coste Envío',
|
||||
'tiradaEnvio' => 'Precio Envío',
|
||||
'tiradaImpresion' => 'Coste Impresión',
|
||||
'duplicado' => 'DUPLICADO',
|
||||
|
||||
|
||||
@ -85,6 +85,7 @@ class PresupuestoModel extends \App\Models\BaseModel
|
||||
"comentarios_safekat",
|
||||
"comentarios_pdf",
|
||||
"comentarios_tarifa",
|
||||
"comentarios_presupuesto",
|
||||
"comentarios_produccion",
|
||||
"lomo_cubierta",
|
||||
"lomo_sobrecubierta",
|
||||
@ -132,6 +133,7 @@ class PresupuestoModel extends \App\Models\BaseModel
|
||||
'paginasCuadernillo',
|
||||
'lomo_redondo',
|
||||
'cabezada',
|
||||
'envio_base',
|
||||
];
|
||||
protected $returnType = "App\Entities\Presupuestos\PresupuestoEntity";
|
||||
|
||||
@ -412,6 +414,7 @@ class PresupuestoModel extends \App\Models\BaseModel
|
||||
'ferro_digital' => $data['ferro_digital'] ? 1 : 0,
|
||||
'marcapaginas' => $data['marcapaginas'] ? 1 : 0,
|
||||
'prototipo' => $data['prototipo'] ? 1 : 0,
|
||||
'envio_base' => $data['envio_base'],
|
||||
'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,
|
||||
|
||||
@ -73,38 +73,6 @@ async function get_coste_envio_tiradasAlternativas(tirada){
|
||||
}
|
||||
|
||||
|
||||
function checkInsertar(){
|
||||
|
||||
var cantidad_total = 0
|
||||
$('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data = this.data();
|
||||
cantidad_total += parseInt(data.cantidad )
|
||||
} );
|
||||
var htmlString = ''
|
||||
if(cantidad_total < parseInt($('#tirada').val())){
|
||||
$('#rowInsertar').css('display', 'flex')
|
||||
}
|
||||
else{
|
||||
$('#rowInsertar').css('display', 'none')
|
||||
}
|
||||
|
||||
if(cantidad_total != parseInt($('#tirada').val())){
|
||||
htmlString = `
|
||||
<div class="alert alert-warning d-flex align-items-baseline" role="alert">
|
||||
<span class="alert-icon alert-icon-lg text-primary me-2">
|
||||
<i class="ti ti-bell ti-sm"></i>
|
||||
</span>
|
||||
<div class="d-flex flex-column ps-1">
|
||||
<h5 class="alert-heading mb-2">` +
|
||||
window.Presupuestos.validation.ejemplares_envio +
|
||||
`</h5>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
$('#alert-envios').html(htmlString)
|
||||
}
|
||||
|
||||
|
||||
async function updateTablaEnvios(tirada_inicial = null, tirada = null){
|
||||
|
||||
var peso_total_libro = get_peso_libro();
|
||||
@ -201,80 +169,11 @@ $('#insertar_direccion').on('click', function(){
|
||||
|
||||
|
||||
|
||||
$(document).on('click', '.delete-add-row', function(e) {
|
||||
const row = $(this).closest('tr');
|
||||
tableEnvios.row( row )
|
||||
.remove()
|
||||
.draw();
|
||||
checkInsertar()
|
||||
//updateTotales(false, false, true)
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: true
|
||||
})
|
||||
showBreadCrumbSaveButton(true);
|
||||
|
||||
})
|
||||
|
||||
$(document).on('click', '.btn-edit-add', function(e) {
|
||||
const row = $(this).closest('tr');
|
||||
var data = tableEnvios.row( row ).data()
|
||||
|
||||
$("#addressForm").attr('action','edit')
|
||||
$("#addressForm").attr('row', row[0]._DT_RowIndex)
|
||||
$("#addressForm").attr('presupuestodireccion_id', $(this).attr('data-id'))
|
||||
var $newAddDialog = $("#addressForm")
|
||||
var maximaCantidad = parseInt($('#tirada').val())
|
||||
$("#add_cantidad").attr("max" , maximaCantidad);
|
||||
$("#add_cantidad").val( maximaCantidad);
|
||||
$("#add_cantidad").on('change', function(){
|
||||
$("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val())
|
||||
})
|
||||
|
||||
cantidad_total = 0
|
||||
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var data2 = this.data();
|
||||
cantidad_total += parseInt(data2.cantidad)
|
||||
} );
|
||||
cantidad_total -= parseInt(data.cantidad) // Si es editar tienes que restar los de la linea actual
|
||||
$('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total)
|
||||
$('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total)
|
||||
|
||||
$('#add_att').val(data.att)
|
||||
$('#add_direccion').val(data.direccion)
|
||||
$('#add_email').val(data.email)
|
||||
$('#add_cp').val(data.cp)
|
||||
$('#add_municipio').val(data.municipio)
|
||||
$('#add_provincia').val(data.provincia)
|
||||
$('#add_pais_id').val(data.paisId)
|
||||
$('#add_telefono').val(data.telefono)
|
||||
$('#add_cantidad').val(data.cantidad)
|
||||
$('#add_entregaPieCalle').prop('checked', data.entregaPieCalle==1?true:false)
|
||||
|
||||
$newAddDialog.modal('show')
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$('#recoger_en_taller').change(function(){
|
||||
if(this.checked) {
|
||||
$('#rowTable').css('display', 'none')
|
||||
$('#rowInsertar').css('display', 'none')
|
||||
tableEnvios.clear().draw()
|
||||
}
|
||||
else{
|
||||
$('#rowTable').css('display', 'flex')
|
||||
$('#rowInsertar').css('display', 'flex')
|
||||
tableEnvios.columns.adjust();
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -316,43 +215,5 @@ function save_datos_envios(){
|
||||
}
|
||||
|
||||
|
||||
function load_datos_envios(){
|
||||
|
||||
window.direccionesList.forEach((linea) => {
|
||||
tableEnvios.row
|
||||
.add({
|
||||
'tarifa_id': linea.tarifa_id,
|
||||
'cantidad': linea.cantidad,
|
||||
'peso': linea.peso,
|
||||
'att': linea.att,
|
||||
'email': linea.email,
|
||||
'direccion': linea.direccion,
|
||||
'cp': linea.cp,
|
||||
'municipio': linea.municipio,
|
||||
'provincia': linea.provincia,
|
||||
'paisId': linea.pais_id,
|
||||
'telefono': linea.telefono,
|
||||
'proveedor': linea.proveedor,
|
||||
'proveedor_id': linea.proveedor_id,
|
||||
'precio': linea.precio,
|
||||
'margen': linea.margen,
|
||||
'entregaPieCalle': linea.entregaPieCalle,
|
||||
'actionBtns_direcciones': actionBtns_direcciones,
|
||||
})
|
||||
.draw();
|
||||
checkInsertar()
|
||||
|
||||
|
||||
});
|
||||
|
||||
updatePresupuesto({
|
||||
update_lineas: false,
|
||||
update_servicios: false,
|
||||
update_envios: false,
|
||||
update_resumen: true,
|
||||
update_tiradas_alternativas: false
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
@ -10,6 +10,15 @@
|
||||
<div class="accordion-body">
|
||||
<div id='alert-envios'></div>
|
||||
<?= view("themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm") ?>
|
||||
<div class='row'>
|
||||
<div class='col-md-12 col-lg-4 px-4 py-2'>
|
||||
<label for='envio_base' class='form-label'>
|
||||
Envio base
|
||||
</label>
|
||||
<input readonly type='text' class='form-control' id='envio_base' name='envio_base' value='<?= $presupuestoEntity->envio_base ?>' />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id='rowTable' class='row'>
|
||||
<table id="tableOfDireccionesEnvio" class="table comparator-table dt-responsive dataTable px-2 update-resumen-presupuesto" style="width: 95%;">
|
||||
<thead>
|
||||
|
||||
@ -2,20 +2,21 @@
|
||||
<div class="modal-dialog modal-lg modal-simple">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 id="labelTitleConfirmDialog" class="modal-title"><?= lang('PresupuestosDirecciones.direccionTitle') ?></h4>
|
||||
<h4 id="labelTitleConfirmDialog" class="modal-title">
|
||||
<?= lang('PresupuestosDirecciones.direccionTitle') ?></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<div id='error-tarifa'></div>
|
||||
<div class="mb-3">
|
||||
<label for="add_clientedAdd" class="form-label">
|
||||
<?=lang('PresupuestosDirecciones.clientedAdd') ?>*
|
||||
</label>
|
||||
<select id="add_clientedAdd" class="form-control select2bs" style="width: 100%;" >
|
||||
|
||||
</select>
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div id='error-tarifa'></div>
|
||||
<div class="mb-3">
|
||||
<label for="add_clientedAdd" class="form-label">
|
||||
<?= lang('PresupuestosDirecciones.clientedAdd') ?>*
|
||||
</label>
|
||||
<select id="add_clientedAdd" class="form-control select2bs" style="width: 100%;">
|
||||
|
||||
</select>
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="add_cantidad" class="form-label">
|
||||
<?= lang('PresupuestosDirecciones.cantidad') ?>*
|
||||
@ -41,32 +42,32 @@
|
||||
<input type="text" id="add_direccion" maxLength="255" class="form-control new-address">
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="add_pais_id" class="form-label">
|
||||
<?=lang('PresupuestosDirecciones.pais') ?>*
|
||||
<?= lang('PresupuestosDirecciones.pais') ?>*
|
||||
</label>
|
||||
<select id="add_pais_id" class="form-control select2bs new-address" style="width: 100%;" >
|
||||
<select id="add_pais_id" class="form-control select2bs new-address" style="width: 100%;">
|
||||
</select>
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
|
||||
|
||||
|
||||
<div class='row'>
|
||||
|
||||
<div id='divMunicipio' class="col-md-12 col-lg-12 pl-4">
|
||||
<div id='divMunicipio' class="col-md-12 col-lg-12 pl-4">
|
||||
<div class="mb-3">
|
||||
<label for="add_municipio" class="form-label">
|
||||
<?=lang('PresupuestosDirecciones.municipio') ?>*
|
||||
<?= lang('PresupuestosDirecciones.municipio') ?>*
|
||||
</label>
|
||||
<input type="text" id="add_municipio" maxLength="100" class="form-control new-address">
|
||||
</div><!--//.mb-3 -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 col-lg-6 pl-4 spain-data" style="display: none;">
|
||||
<div class="col-md-12 col-lg-6 pl-4 spain-data" style="display: none;">
|
||||
<div class="mb-3">
|
||||
<label for="add_provincia" class="form-label">
|
||||
<?=lang('PresupuestosDirecciones.provincia') ?>*
|
||||
<?= lang('PresupuestosDirecciones.provincia') ?>*
|
||||
</label>
|
||||
<input type="text" id="add_provincia" maxLength="100" class="form-control new-address">
|
||||
</div><!--//.mb-3 -->
|
||||
@ -76,37 +77,42 @@
|
||||
|
||||
<div class='row'>
|
||||
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="mb-3">
|
||||
<label for="add_cp" class="form-label">
|
||||
<?=lang('PresupuestosDirecciones.cp') ?>*
|
||||
<?= lang('PresupuestosDirecciones.cp') ?>*
|
||||
</label>
|
||||
<input type="text" id="add_cp" maxLength="100" class="form-control new-address">
|
||||
</div><!--//.mb-3 -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="mb-3">
|
||||
<label for="add_telefono" class="form-label">
|
||||
<?=lang('PresupuestosDirecciones.telefono') ?>*
|
||||
<?= lang('PresupuestosDirecciones.telefono') ?>*
|
||||
</label>
|
||||
<input type="text" id="add_telefono" maxLength="100" class="form-control new-address"></input>
|
||||
<input type="text" id="add_telefono" maxLength="100"
|
||||
class="form-control new-address"></input>
|
||||
</div><!--//.mb-3 -->
|
||||
</div>
|
||||
|
||||
</div> <!-- //.row -->
|
||||
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="add_entregaPieCalle" name="add_entregaPieCalle" value="1" >
|
||||
<label class="form-check-label" for="add_entregaPieCalle"><?= lang('PresupuestosDirecciones.entregaPieCalle') ?></label>
|
||||
<input class="form-check-input" type="checkbox" id="add_entregaPieCalle"
|
||||
name="add_entregaPieCalle" value="1">
|
||||
<label class="form-check-label"
|
||||
for="add_entregaPieCalle"><?= lang('PresupuestosDirecciones.entregaPieCalle') ?></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="col-md-12 col-lg-6 pl-4">
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input class="form-check-input" type="checkbox" id="add_saveDirection" name="add_saveDirection" value="1" >
|
||||
<label class="form-check-label" for="add_saveDirection"><?= lang('PresupuestosDirecciones.saveDirection') ?></label>
|
||||
<input class="form-check-input" type="checkbox" id="add_saveDirection" name="add_saveDirection"
|
||||
value="1">
|
||||
<label class="form-check-label"
|
||||
for="add_saveDirection"><?= lang('PresupuestosDirecciones.saveDirection') ?></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -114,22 +120,15 @@
|
||||
<label style="display:none" for="add_alias" class="form-label save-alias">
|
||||
<?= lang('PresupuestosDirecciones.alias') ?>*
|
||||
</label>
|
||||
<input type="text" id="add_alias" maxLength="100" class="form-control new-address save-alias" style='display: none;'>
|
||||
<input type="text" id="add_alias" maxLength="100" class="form-control new-address save-alias"
|
||||
style='display: none;'>
|
||||
</div><!--//.mb-3 -->
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button id="saveDireccionEnvio"
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
>Guardar</button>
|
||||
<button id="cancelAdd"
|
||||
type="button"
|
||||
class="btn btn-default"
|
||||
>Cancelar</button>
|
||||
<button id="saveDireccionEnvio" type="button" class="btn btn-primary">Guardar</button>
|
||||
<button id="cancelAdd" type="button" class="btn btn-default">Cancelar</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
@ -1,59 +1,3 @@
|
||||
// Selección de la última columna de la tabla de tiradas
|
||||
const lastColNr_tiradasAlt = $('#tableTiradas').find("tr:first th").length - 1;
|
||||
|
||||
|
||||
// Función para generar los botones de acción de la tabla de tiradas
|
||||
const actionBtns_tiradasAlt = function (data) {
|
||||
return `
|
||||
<a href="javascript:void(0);"><i class="ti ti-check ti-sm comfirm-tirada-alt mx-2" data-id="${data.row_id}"></i></a>
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-tirada mx-2" data-id="${data.row_id}"></i></a>
|
||||
`;
|
||||
};
|
||||
|
||||
|
||||
// Inicializaciones de la tabla de tiradas
|
||||
var tableTiradas;
|
||||
|
||||
|
||||
// Espera a que todas las variables necesarias estén definidas
|
||||
(async () => {
|
||||
|
||||
while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url"))
|
||||
await new Promise(resolve => setTimeout(resolve, 200));
|
||||
initTableTiradas();
|
||||
fill_tiradas_alternativas();
|
||||
|
||||
/*$('.tiradas-alternativas').each(function() {
|
||||
if ($(this).is('input')) {
|
||||
$(this).bind('change', update_tiradas_alternativas);
|
||||
} else if ($(this).is('button')) {
|
||||
$(this).bind('click', update_tiradas_alternativas);
|
||||
} else if ($(this).is('table')) {
|
||||
$(this).bind('draw.dt', update_tiradas_alternativas);
|
||||
}
|
||||
else{
|
||||
// para los botones de borrar
|
||||
$(this).bind('click', update_tiradas_alternativas);
|
||||
}
|
||||
});*/
|
||||
|
||||
})();
|
||||
|
||||
|
||||
async function actualizar_tiradas_alternativas(){
|
||||
if(tableTiradas !== undefined && tableTiradas.rows().count() > 0){
|
||||
// se obtiene la primera columna de la tabla de tiradas
|
||||
const data = tableTiradas.rows().data().toArray();
|
||||
// se borra la tabla de tiradas
|
||||
tableTiradas.clear().draw();
|
||||
const tiradas = data.map(row => row.tirada);
|
||||
// por cada tirada, se añade una fila a la tabla de tiradas
|
||||
await tiradas.forEach(async function(tirada){
|
||||
await add_tirada_alternativa(tirada);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Evento de añadir una tirada alternativa
|
||||
@ -229,55 +173,6 @@ function getLomoExterior(){
|
||||
}
|
||||
|
||||
|
||||
// Inicialización de la tabla de tiradas
|
||||
function initTableTiradas() {
|
||||
tableTiradas = $('#tableTiradas').DataTable({
|
||||
"language": {
|
||||
"url": window.datatable_lang_url
|
||||
},
|
||||
"paging": false,
|
||||
"info": false,
|
||||
"searching": false,
|
||||
"ordering": true,
|
||||
"autoWidth": false,
|
||||
"responsive": true,
|
||||
"columnDefs": [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [lastColNr_tiradasAlt]
|
||||
},
|
||||
],
|
||||
"columns": [
|
||||
{ data: "tirada" },
|
||||
{ data: 'coste_impresion' },
|
||||
{ data: 'coste_envio' },
|
||||
{ data: 'margen' ,
|
||||
render: function ( data, type, row ) {
|
||||
return data + '%';
|
||||
}
|
||||
},
|
||||
{ data: 'total_pedido' },
|
||||
{ data: 'precio_unidad' },
|
||||
{
|
||||
data: actionBtns_tiradasAlt,
|
||||
className: 'row-edit dt-center'
|
||||
}
|
||||
],
|
||||
order: [[0, 'asc']]
|
||||
});
|
||||
}
|
||||
|
||||
// Evento de borrado de una fila de la tabla de tiradas
|
||||
$(document).on('click', '.btn-delete-tirada', function (e) {
|
||||
|
||||
const row = $(this).closest('tr');
|
||||
tableTiradas.row(row)
|
||||
.remove()
|
||||
.draw();
|
||||
showBreadCrumbSaveButton(true);
|
||||
})
|
||||
|
||||
|
||||
// Función para usar la tirada alternativa como tirada principal
|
||||
$(document).on('click', '.comfirm-tirada-alt', function (e) {
|
||||
@ -340,57 +235,9 @@ function filterData(data, keys) {
|
||||
}
|
||||
|
||||
|
||||
// Función para obtener la merma de la tirada alternativa
|
||||
function get_merma_tirada_alternativa(tirada){
|
||||
|
||||
var merma = 0
|
||||
|
||||
if(tirada>parseInt($('#POD').val())){
|
||||
|
||||
merma = tirada*0.1<=30 ? tirada*0.1 : 30
|
||||
}
|
||||
else{
|
||||
merma_lineas = []
|
||||
$('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
|
||||
var rowData = this.data();
|
||||
if(rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta'){
|
||||
const formas_linea = $('#isCosido').val()==0?parseInt(rowData.formas):parseInt(rowData.formas)/2
|
||||
if(formas_linea > tirada)
|
||||
merma_lineas.push(formas_linea-tirada)
|
||||
else
|
||||
merma_lineas.push(tirada%formas_linea)
|
||||
}
|
||||
})
|
||||
|
||||
if(merma_lineas.length>0)
|
||||
merma = Math.max(...merma_lineas)
|
||||
else
|
||||
merma = 0
|
||||
}
|
||||
return merma;
|
||||
}
|
||||
|
||||
|
||||
function fill_tiradas_alternativas(){
|
||||
tableTiradas.clear().draw();
|
||||
const text = $('#tirada_alternativa_json_data').val()
|
||||
if(text.length>0){
|
||||
|
||||
const data = JSON.parse(text);
|
||||
if(data.length>0){
|
||||
$.each(data, function(key, value) {
|
||||
tableTiradas.row.add({
|
||||
tirada: value.tirada,
|
||||
coste_impresion: value.coste_impresion,
|
||||
coste_envio: value.coste_envio,
|
||||
margen: value.margen,
|
||||
total_pedido: value.total_pedido,
|
||||
precio_unidad: value.precio_unidad,
|
||||
}).draw(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<th><?= lang('Presupuestos.tiradaMargen') ?></th>
|
||||
<th><?= lang('Presupuestos.totalPedido') ?></th>
|
||||
<th><?= lang('Presupuestos.precioUnidad') ?></th>
|
||||
<th></th>
|
||||
<th style="min-width: 80px;"></th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
@ -48,21 +48,6 @@
|
||||
</div> <!-- //.accordion-item -->
|
||||
</div> <!-- //.accordion -->
|
||||
|
||||
<!------------------------------------------------------->
|
||||
<!-- Código JS comportamiento ?????. -->
|
||||
<!------------------------------------------------------->
|
||||
<?= $this->section("additionalInlineJs") ?>
|
||||
/* window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json";
|
||||
|
||||
window.datatable_TA_url = "<?= route_to('dataTableOfPresupuestoTiradasAlternativas') ?>";
|
||||
window.get_tirada_url = "<?= route_to('getTiradaData') ?>";
|
||||
|
||||
window.error_lang_tirada_alt_duplicada = "<?= lang('Presupuestos.errores.tirada_alt_duplicada') ?>";
|
||||
window.error_lang_tirada_alt_tipo = "<?= lang('Presupuestos.errores.tirada_alt_tipo') ?>";
|
||||
*/
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
<input readonly hidden id="lomo_minimo_fresado_cosido" value="<?= $lomo_minimo_fresado_cosido ?>"></input>
|
||||
<input readonly hidden id="pod" value="<?= $POD ?>"></input>
|
||||
<input readonly hidden id="c" value="<?= $clienteId ?>"></input>
|
||||
<input readonly hidden id="eb" value="<?= $eb ?>"></input>
|
||||
|
||||
<!-- Create Deal Wizard -->
|
||||
<div id="wizard-presupuesto-cliente" class="bs-stepper vertical mt-2 linear">
|
||||
|
||||
@ -8,6 +8,7 @@ class tarjetaDireccion {
|
||||
this.card = this.#generateHTML(id, direccion);
|
||||
this.deleteBtn = this.card.find('.direccion-eliminar');
|
||||
this.editBtn = this.card.find('.direccion-editar');
|
||||
this.direccion = direccion;
|
||||
}
|
||||
|
||||
|
||||
@ -89,13 +90,21 @@ class tarjetaDireccion {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
getPaisId() {
|
||||
return this.direccion.pais_id;
|
||||
}
|
||||
|
||||
getDireccion() {
|
||||
return this.direccion;
|
||||
}
|
||||
|
||||
getDireccionId() {
|
||||
return this.direccionId;
|
||||
}
|
||||
|
||||
getFormData() {
|
||||
return {
|
||||
id: this.direccionId,
|
||||
direccion: this.direccion,
|
||||
unidades: this.getUnidades(),
|
||||
entregaPalets: this.getEntregaPalets()
|
||||
};
|
||||
|
||||
@ -8,6 +8,7 @@ import LineasPresupuesto from './sections/lineasPresupuesto.js';
|
||||
import PreviewFormasAdmin from './sections/previewFormasAdmin.js';
|
||||
import Servicios from './sections/servicios.js';
|
||||
import Envios from './sections/envios.js';
|
||||
import TiradasAlernativas from './sections/tiradasAlternativas.js';
|
||||
|
||||
class PresupuestoAdminEdit {
|
||||
|
||||
@ -40,6 +41,9 @@ class PresupuestoAdminEdit {
|
||||
this.previewFormasAdmin = null;
|
||||
this.servicios = new Servicios();
|
||||
this.envios = new Envios();
|
||||
this.tiradasAlternativas = new TiradasAlernativas({
|
||||
getDimensionLibro: this.getDimensionLibro,
|
||||
});
|
||||
this.calcularPresupuesto = false;
|
||||
}
|
||||
|
||||
@ -69,7 +73,6 @@ class PresupuestoAdminEdit {
|
||||
this.datosLibro.init();
|
||||
this.comparador.init();
|
||||
this.lineasPresupuesto.init();
|
||||
this.envios.init();
|
||||
|
||||
this.previewFormasAdmin = new PreviewFormasAdmin(tipoLibro, this.tipoTapa,
|
||||
{
|
||||
@ -84,6 +87,8 @@ class PresupuestoAdminEdit {
|
||||
);
|
||||
this.previewFormasAdmin.init();
|
||||
this.servicios.init();
|
||||
this.envios.init();
|
||||
this.tiradasAlternativas.init();
|
||||
|
||||
if (window.location.href.includes("edit")) {
|
||||
|
||||
@ -128,6 +133,14 @@ class PresupuestoAdminEdit {
|
||||
|
||||
self.servicios.cargar(response.data.servicios);
|
||||
self.envios.cargar(response.data.direcciones);
|
||||
|
||||
$('#comentariosCliente').val(response.data.comentarios_cliente);
|
||||
$('#comentariosSafekat').val(response.data.comentarios_safekat);
|
||||
$('#comentariosPdf').val(response.data.comentarios_presupuesto);
|
||||
$('#comentariosProduccion').val(response.data.comentarios_produccion);
|
||||
|
||||
self.tiradasAlternativas.cargar(response.data.tiradasAlternativas);
|
||||
|
||||
/*self.direcciones.handleChangeCliente();
|
||||
|
||||
self.direcciones.cargarDatos(response.data.direcciones, response.data.datosGenerales);
|
||||
|
||||
@ -0,0 +1,338 @@
|
||||
import { getToken } from "../../../common/common.js";
|
||||
|
||||
class TiradasAlernativas {
|
||||
|
||||
constructor(functions = {}) {
|
||||
|
||||
this.getDimensionLibro = functions.getDimensionLibro;
|
||||
|
||||
this.csrf_token = getToken();
|
||||
this.csrf_hash = $('#mainContainer').find('input[name="' + this.csrf_token + '"]').val();
|
||||
|
||||
this.addTirada = $('#add_tirada_alt');
|
||||
this.tirada = $('#tirada_alt');
|
||||
|
||||
this.table = null;
|
||||
}
|
||||
|
||||
init() {
|
||||
|
||||
const self = this;
|
||||
|
||||
this.addTirada.on('click', this.addTiradaAlt.bind(this));
|
||||
|
||||
this.table = $('#tableTiradas').DataTable({
|
||||
|
||||
"language": {
|
||||
"url": "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
"paging": false,
|
||||
"info": false,
|
||||
"searching": false,
|
||||
"ordering": true,
|
||||
"autoWidth": false,
|
||||
"responsive": true,
|
||||
"columnDefs": [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [$('#tableTiradas').find("tr:first th").length - 1]
|
||||
},
|
||||
],
|
||||
"columns": [
|
||||
{ data: "tirada" },
|
||||
{ data: 'coste_impresion' },
|
||||
{
|
||||
data: 'coste_envio',
|
||||
render: function (data, type, row) {
|
||||
return parseFloat(data).toFixed(2);
|
||||
},
|
||||
},
|
||||
{
|
||||
data: 'margen',
|
||||
render: function (data, type, row) {
|
||||
return data + '%';
|
||||
}
|
||||
},
|
||||
{
|
||||
data: 'total_pedido',
|
||||
render: function (data, type, row) {
|
||||
return parseFloat(data).toFixed(2);
|
||||
}
|
||||
},
|
||||
{
|
||||
data: 'precio_unidad',
|
||||
render: function (data, type, row) {
|
||||
return parseFloat(data).toFixed(4);
|
||||
}
|
||||
},
|
||||
{
|
||||
data: function (row, type, set, meta) {
|
||||
return `
|
||||
<a href="javascript:void(0);"><i class="ti ti-check ti-sm comfirm-tirada-alt mx-2" ></i></a>
|
||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-tirada mx-2" F></i></a>
|
||||
`;
|
||||
},
|
||||
className: 'row-edit dt-center'
|
||||
}
|
||||
],
|
||||
order: [[0, 'asc']]
|
||||
});
|
||||
|
||||
// Evento de borrado de una fila de la tabla de tiradas
|
||||
$(document).on('click', '.btn-delete-tirada', function (e) {
|
||||
|
||||
const row = $(this).closest('tr');
|
||||
self.table.row(row)
|
||||
.remove()
|
||||
.draw();
|
||||
showBreadCrumbSaveButton(true);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
cargar(datos) {
|
||||
|
||||
this.table.clear().draw();
|
||||
this.table.rows.add(datos).draw();
|
||||
}
|
||||
|
||||
|
||||
addTiradaAlt() {
|
||||
|
||||
const self = this;
|
||||
const id = window.location.href.split('/').pop();
|
||||
|
||||
const tirada = parseInt(this.tirada.val());
|
||||
const tirada_ejemplo = parseInt($('#tirada').val());
|
||||
const POD = parseInt($('#POD').val());
|
||||
|
||||
if ((tirada_ejemplo > POD && tirada <= POD) ||
|
||||
(tirada_ejemplo <= POD && tirada > POD)) {
|
||||
popErrorAlert('No se pueden mezclar tiradas POD y no POD', 'alert-tiradas_alt');
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.table.rows().count() > 0) {
|
||||
let tiradas = this.table.rows().data().toArray();
|
||||
if (tiradas.find(t => parseInt(t.tirada) == tirada)) {
|
||||
popErrorAlert('La tirada ya existe', 'alert-tiradas_alt');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const dimension = this.getDimensionLibro();
|
||||
|
||||
const envios = JSON.stringify($('#tableOfDireccionesEnvio').DataTable().rows().data().toArray());
|
||||
|
||||
let datos = {
|
||||
id: id,
|
||||
tirada: this.tirada.val(),
|
||||
peso_libro: this.get_peso_libro(),
|
||||
tirada_base: $('#tirada').val(),
|
||||
paginas: $('#paginas').val(),
|
||||
merma: this.getMerma(tirada),
|
||||
tipo_impresion_id: $('#tipo_impresion_id').val(),
|
||||
json_tiradas: this.generate_json_lp(),
|
||||
json_acabados: this.generate_json_servicios('acabados'),
|
||||
json_encuadernaciones: this.generate_json_servicios('encuadernaciones'),
|
||||
json_manipulado: this.generate_json_servicios('manipulado'),
|
||||
json_envios: envios,
|
||||
ancho: dimension.ancho,
|
||||
alto: dimension.alto,
|
||||
cliente_id: $('#clienteId').find(":selected").val(),
|
||||
solapas_cubierta: $('#solapas').is(':checked') ? 1 : 0,
|
||||
solapas_cubierta_ancho: $('#solapas').is(':checked') ? parseInt($('#solapas_ancho').val()) : 0,
|
||||
solapas_sobrecubierta: $('#solapas_sobrecubierta').is(':checked') ? 1 : 0,
|
||||
solapas_sobrecubierta_ancho: $('#solapas_sobrecubierta').is(':checked') ? parseInt($('#solapas_ancho_sobrecubierta').val()) : 0,
|
||||
lomo: $('#lomo_cubierta').val(),
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '/presupuestotiradasalternativas/datatable_2',
|
||||
data: datos,
|
||||
success: async function (data) {
|
||||
|
||||
var coste_total = 0.0;
|
||||
var margen_total = 0.0;
|
||||
|
||||
var costes_servicios = 0.0;
|
||||
var margen_servicios = 0.0;
|
||||
|
||||
var coste_envio = 0.0;
|
||||
var margen_envio = 0.0;
|
||||
|
||||
if (data.lineas.length > 0) {
|
||||
// Se cogen los valores de la linea con los datos correspondientes
|
||||
data.lineas.forEach(function (value) {
|
||||
coste_total += value.total_coste;
|
||||
margen_total += value.total_margen;
|
||||
});
|
||||
|
||||
if (data.servicios) {
|
||||
costes_servicios += data.servicios.coste;
|
||||
margen_servicios += data.servicios.margen;
|
||||
|
||||
}
|
||||
|
||||
$('#tableOfServiciosPreimpresion').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
costes_servicios += parseFloat(rowData.coste);
|
||||
margen_servicios += parseFloat(rowData.precio) - parseFloat(rowData.coste);
|
||||
});
|
||||
|
||||
$('#tableOfServiciosExtra').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
costes_servicios += parseFloat(rowData.coste);
|
||||
margen_servicios += parseFloat(rowData.precio) - parseFloat(rowData.coste);
|
||||
});
|
||||
|
||||
if (data.envios) {
|
||||
coste_envio += data.envios.coste;
|
||||
margen_envio += data.envios.margen;
|
||||
|
||||
}
|
||||
|
||||
// Se añade la fila a la tabla de tiradas
|
||||
self.table.row.add({
|
||||
tirada: datos.tirada,
|
||||
coste_impresion: coste_total.toFixed(2),
|
||||
coste_envio: coste_envio.toFixed(2),
|
||||
margen: ((margen_total + margen_servicios + margen_envio) / (coste_total + coste_envio) * 100.0).toFixed(2),
|
||||
total_pedido: (coste_total + costes_servicios + coste_envio).toFixed(2),
|
||||
precio_unidad: ((coste_total + costes_servicios + coste_envio) / datos.tirada).toFixed(4),
|
||||
|
||||
}).draw(false);
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
error: function (e) { }
|
||||
});
|
||||
}
|
||||
|
||||
generate_json_lp() {
|
||||
|
||||
const data = $('#tableLineasPresupuesto').DataTable().data().toArray();
|
||||
|
||||
let json = this.filterData(data,
|
||||
['paginas',
|
||||
'numPagColor',
|
||||
'paginas_impresion',
|
||||
'papel', // papel generico
|
||||
'papel_impresion_id',
|
||||
'gramaje',
|
||||
'maquina_id',
|
||||
'aFavorFibra',
|
||||
'row_id',
|
||||
'check_papel_total',
|
||||
'check_impresion_total',
|
||||
'cobAmarillo', // tipologia de papel
|
||||
'cobCyan',
|
||||
'cobMagenta',
|
||||
'cobNegro',
|
||||
'cobCG',
|
||||
'gotaColor',
|
||||
'gotaNegro']);
|
||||
|
||||
json.forEach(element => {
|
||||
element['check_papel_total'] = $('#' + element['row_id'] + '_checkPapel').is(':checked') ? 1 : 0;
|
||||
element['check_impresion_total'] = $('#' + element['row_id'] + '_checkClicks').is(':checked') ? 1 : 0;
|
||||
});
|
||||
return JSON.stringify(json);
|
||||
}
|
||||
|
||||
generate_json_servicios(servicios) {
|
||||
|
||||
let json = [];
|
||||
switch (servicios) {
|
||||
case 'acabados':
|
||||
$('#tableOfServiciosAcabado').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
json.push(rowData);
|
||||
});
|
||||
break;
|
||||
case 'encuadernaciones':
|
||||
$('#tableOfServiciosEncuadernacion').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
json.push(rowData);
|
||||
});
|
||||
break;
|
||||
case 'presimpresion':
|
||||
$('#tableOfServiciosPreimpresion').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
json.push(rowData);
|
||||
});
|
||||
break;
|
||||
case 'manipulado':
|
||||
$('#tableOfServiciosManipulado').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
json.push(rowData);
|
||||
});
|
||||
break;
|
||||
case 'extra':
|
||||
$('#tableOfServiciosExtra').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
json.push(rowData);
|
||||
});
|
||||
break;
|
||||
}
|
||||
return JSON.stringify(json);
|
||||
}
|
||||
|
||||
get_peso_libro() {
|
||||
|
||||
var peso_total_libro = 0.0
|
||||
$('#tableLineasPresupuesto').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
peso_total_libro += parseFloat(rowData.peso)
|
||||
})
|
||||
return peso_total_libro;
|
||||
}
|
||||
|
||||
getMerma(tirada) {
|
||||
|
||||
let merma = 0;
|
||||
|
||||
if (tirada > parseInt($('#POD').val())) {
|
||||
|
||||
merma = tirada * 0.1 <= 30 ? tirada * 0.1 : 30
|
||||
}
|
||||
else {
|
||||
let merma_lineas = []
|
||||
$('#tableLineasPresupuesto').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
|
||||
var rowData = this.data();
|
||||
if (rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta') {
|
||||
const formas_linea = $('#isCosido').val() == 0 ? parseInt(rowData.formas) : parseInt(rowData.formas) / 2
|
||||
if (formas_linea > tirada)
|
||||
merma_lineas.push(formas_linea - tirada)
|
||||
else
|
||||
merma_lineas.push(tirada % formas_linea)
|
||||
}
|
||||
})
|
||||
|
||||
if (merma_lineas.length > 0)
|
||||
merma = Math.max(...merma_lineas)
|
||||
else
|
||||
merma = 0
|
||||
}
|
||||
return merma;
|
||||
}
|
||||
|
||||
filterData(data, keys) {
|
||||
|
||||
return data.map(obj => {
|
||||
|
||||
const newObj = {};
|
||||
keys.forEach(key => {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
newObj[key] = obj[key];
|
||||
}
|
||||
});
|
||||
return newObj;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default TiradasAlernativas;
|
||||
@ -104,7 +104,7 @@ class Direcciones {
|
||||
for (let i = 0; i < datos.length; i++) {
|
||||
|
||||
let id = datos[i].id;
|
||||
let unidades = datos[i].unidades;
|
||||
let unidades = datos[i].cantidad;
|
||||
let entregaPalets = datos[i].palets;
|
||||
|
||||
|
||||
@ -113,7 +113,22 @@ class Direcciones {
|
||||
if (unidades == null || unidades <= 0 || unidades == undefined)
|
||||
return;
|
||||
|
||||
let peticion = new Ajax('/misdirecciones/getDireccionPresupuesto/' + id, {}, {},
|
||||
let divId = "dirEnvio-1";
|
||||
let direccionesActuales = this.divDirecciones.find('.direccion-cliente');
|
||||
if (direccionesActuales.length > 0) {
|
||||
// the the lass item
|
||||
let last = direccionesActuales[direccionesActuales.length - 1];
|
||||
divId = "dirEnvio-" + (parseInt(last.id.split('-')[1]) + 1);
|
||||
}
|
||||
let tarjeta = new tarjetaDireccion(this.divDirecciones, divId, datos[i]);
|
||||
tarjeta.setUnidades(unidades);
|
||||
tarjeta.setEntregaPalets(entregaPalets);
|
||||
tarjeta.card.find('.direccion-editar').on('click', this.#editUnits.bind(self));
|
||||
tarjeta.card.find('.direccion-eliminar').on('click', this.#deleteDireccion.bind(self));
|
||||
this.divDirecciones.append(tarjeta.card);
|
||||
this.direcciones.push(tarjeta);
|
||||
|
||||
/*let peticion = new Ajax('/misdirecciones/getDireccionPresupuesto/' + id, {}, {},
|
||||
(response) => {
|
||||
let divId = "dirEnvio-1";
|
||||
let direccionesActuales = this.divDirecciones.find('.direccion-cliente');
|
||||
@ -134,7 +149,7 @@ class Direcciones {
|
||||
console.error('Error getting address');
|
||||
});
|
||||
|
||||
peticion.get();
|
||||
peticion.get();*/
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
@ -226,7 +241,7 @@ class Direcciones {
|
||||
let direcciones = [];
|
||||
this.direcciones.forEach(direccion => {
|
||||
let dir = {
|
||||
id: direccion.getId(),
|
||||
direccion: direccion.getDireccion(),
|
||||
unidades: direccion.getUnidades(),
|
||||
entregaPalets: direccion.getEntregaPalets()
|
||||
};
|
||||
@ -306,12 +321,23 @@ class Direcciones {
|
||||
total_unidades += parseInt(this.direcciones[i].getUnidades());
|
||||
}
|
||||
|
||||
|
||||
if (this.getSelectedTirada() == null) {
|
||||
popErrorAlert("Tiene que seleccionar una tirada para insertar una dirección");
|
||||
return;
|
||||
}
|
||||
|
||||
if (total_unidades + parseInt(unidades) > this.getSelectedTirada()) {
|
||||
popErrorAlert("El total de unidades enviadas tiene que ser menor que " + this.getSelectedTirada());
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this.getSelectedTirada() == null) {
|
||||
popErrorAlert("Tiene que seleccionar una tirada para insertar una dirección");
|
||||
return;
|
||||
}
|
||||
|
||||
if (unidades > this.getSelectedTirada()) {
|
||||
popErrorAlert("El total de unidades enviadas tiene que ser menor que " + this.getSelectedTirada());
|
||||
return;
|
||||
|
||||
@ -569,6 +569,9 @@ class PresupuestoCliente {
|
||||
popAlert2Hide();
|
||||
|
||||
for (let i = 0; i < response.tiradas.length; i++) {
|
||||
if(i==0){
|
||||
$('#eb').val(response.eb[i]);
|
||||
}
|
||||
new tarjetaTiradasPrecio(
|
||||
this.divTiradasPrecios,
|
||||
('precio-tiradas-' + response.tiradas[i]),
|
||||
@ -677,6 +680,10 @@ class PresupuestoCliente {
|
||||
},
|
||||
}
|
||||
|
||||
if(this.direcciones.getSelectedTirada() != null && this.direcciones.getSelectedTirada() != undefined && this.direcciones.getSelectedTirada() > 0){
|
||||
this.datos.selectedTirada = this.direcciones.getSelectedTirada();
|
||||
}
|
||||
|
||||
this.datos.guardas = this.disenioCubierta.getGuardas();
|
||||
|
||||
if (calcularSolapas) {
|
||||
@ -692,6 +699,7 @@ class PresupuestoCliente {
|
||||
this.datos.retractilado = this.datosGenerales.retractilado.is(':checked') ? 1 : 0;
|
||||
this.datos.retractilado5 = this.datosGenerales.retractilado5.is(':checked') ? 1 : 0;
|
||||
|
||||
this.datos.eb = $('#eb').val();
|
||||
|
||||
this.datos.cubierta = {
|
||||
tipoCubierta: this.disenioCubierta.disenioCubierta.filter('.selected').attr('id'),
|
||||
@ -758,6 +766,7 @@ class PresupuestoCliente {
|
||||
referenciaCliente: this.datosGenerales.referenciaCliente.val(),
|
||||
}
|
||||
this.datos.selectedTirada = this.direcciones.getSelectedTirada();
|
||||
this.datos
|
||||
}
|
||||
|
||||
if (window.location.href.includes("edit")) {
|
||||
|
||||
Reference in New Issue
Block a user