resuelto problema presupuesto cliente

This commit is contained in:
2025-03-21 18:27:31 +01:00
parent af25237fa5
commit e1d208a4dd
9 changed files with 134 additions and 92 deletions

View File

@ -605,8 +605,16 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
// para el calculo del precio unidad, sólo se tiene en cuenta el envío base
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
}
$envio_base = true; $envio_base = true;
$coste_envio = 0.0; // se inicializa para calcular los costes de envíos restantes si es que hay
$return_data['coste_envio'] = [];
if (count($direcciones) > 0) { if (count($direcciones) > 0) {
for ($i = 0; $i < count($tirada); $i++) { for ($i = 0; $i < count($tirada); $i++) {
@ -614,8 +622,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($direcciones as $direccion) { foreach ($direcciones as $direccion) {
// El primer envio no se calcula ya que se añade el base // El primer envio no se calcula ya que se añade el base
if ($envio_base) { if ($envio_base) {
//aporte del envio al precio unidad
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
$envio_base = false; $envio_base = false;
continue; continue;
} }
@ -651,19 +657,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
]; ];
return $return_data; return $return_data;
} else { } else {
//aporte del envio al precio unidad // Se añade a los costes de envío
$coste_envio += ($coste_direccion->coste / $tirada[$i]); $coste_envio += $coste_direccion->coste;
} }
} }
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
} $return_data['coste_envio'][$i] = round($coste_envio, 2);
} else {
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += ($return_data['eb'][$i] / $tirada[$i]);
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio, 4);
} }
} }
if ($this->request) { if ($this->request) {
if ($this->request->isAJAX()) if ($this->request->isAJAX())
return $this->respond($return_data); return $this->respond($return_data);
@ -1158,6 +1162,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$resultado_presupuesto['info']['totales'][$i]['coste_envio'] = 0.0; $resultado_presupuesto['info']['totales'][$i]['coste_envio'] = 0.0;
$resultado_presupuesto['info']['totales'][$i]['margen_envio'] = 0.0; $resultado_presupuesto['info']['totales'][$i]['margen_envio'] = 0.0;
} }
// para el calculo del precio unidad, sólo se tiene en cuenta el envío base
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += ($resultado_presupuesto['eb'][$i] / $tirada[$i]);
$resultado_presupuesto['info']['totales'][$i]['envio_base_coste'] = $resultado_presupuesto['eb'][$i] - $resultado_presupuesto['eb_margen'][$i];
$resultado_presupuesto['info']['totales'][$i]['envio_base_margen'] = $resultado_presupuesto['eb_margen'][$i];
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4);
}
$coste_envio = 0.0; // se inicializa para calcular los costes de envíos restantes si es que hay
$resultado_presupuesto['coste_envio'] = [];
if (count($direcciones) > 0) { if (count($direcciones) > 0) {
for ($i = 0; $i < count($tirada); $i++) { for ($i = 0; $i < count($tirada); $i++) {
@ -1168,11 +1184,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
foreach ($direcciones as $direccion) { foreach ($direcciones as $direccion) {
// El primer envio no se calcula ya que se añade el base // El primer envio no se calcula ya que se añade el base
if ($envio_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; $envio_base = false;
continue; continue;
} }
@ -1212,19 +1223,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
$resultado_presupuesto['precio_u'][$i] = round(floatval($resultado_presupuesto['precio_u'][$i]) + $coste_envio, 4); $resultado_presupuesto['coste_envio'][$i] = round($coste_envio, 2);
}
} 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(); $model_presupuesto = new PresupuestoModel();
$tiradas_alternativas = []; $tiradas_alternativas = [];
$resumen_totales = []; $resumen_totales = [];
@ -1240,7 +1242,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$resultado_presupuesto['info']['totales'][$i]['margenPapel'] + $resultado_presupuesto['info']['totales'][$i]['margenPapel'] +
$resultado_presupuesto['info']['totales'][$i]['margen_envio']) / ($coste_total + $coste_envio) * 100.0, 2); $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); $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( $resultado_presupuesto['precio_u'][$i], 4);
array_push($tiradas_alternativas, (object) array( array_push($tiradas_alternativas, (object) array(
'tirada' => $tirada[$i], 'tirada' => $tirada[$i],
@ -1252,6 +1254,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
)); ));
} else { } else {
$resumen_totales = $resultado_presupuesto['info']['totales'][$i]; $resumen_totales = $resultado_presupuesto['info']['totales'][$i];
$resumen_totales['precio_unidad'] = round($resultado_presupuesto['precio_u'][$i], 4);
} }
} }
@ -1607,7 +1611,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
if (intval($presupuesto->estado_id) == 2) { if (intval($presupuesto->estado_id) == 2) {
$data['resumen']['base'] = $presupuesto->total_aceptado; $data['resumen']['base'] = $presupuesto->total_antes_descuento;
$data['resumen']['total_envio'] = round(
floatval($presupuesto->total_coste_envios) +
floatval($presupuesto->total_margen_envios), 2);
$data['resumen']['precio_unidad'] = $presupuesto->total_precio_unidad; $data['resumen']['precio_unidad'] = $presupuesto->total_precio_unidad;
} }

View File

@ -754,6 +754,7 @@ return [
"menu_presupuestos_clientes" => "Presupuestos (Clientes)", "menu_presupuestos_clientes" => "Presupuestos (Clientes)",
"menu_presupuesto" => "Libros", "menu_presupuesto" => "Libros",
"menu_presupuesto_buscador" => "Buscador", "menu_presupuesto_buscador" => "Buscador",
"menu_presupuesto_importador" => "Importador ERP antiguo",
"menu_libros" => "Libros", "menu_libros" => "Libros",
"menu_libros_fresasdo_tapa_dura" => "Fresado tapa dura", "menu_libros_fresasdo_tapa_dura" => "Fresado tapa dura",
"menu_libros_fresasdo_tapa_blanda" => "Fresado tapa blanda", "menu_libros_fresasdo_tapa_blanda" => "Fresado tapa blanda",

View File

@ -404,9 +404,9 @@ class PresupuestoModel extends \App\Models\BaseModel
$is_cosido = (new TipoPresupuestoModel())->get_isCosido($data['tipo_impresion_id']); $is_cosido = (new TipoPresupuestoModel())->get_isCosido($data['tipo_impresion_id']);
$totalCostes = $resumen_totales['totalPapel'] + $resumen_totales['totalImpresion'] + $totalCostes = $resumen_totales['totalPapel'] + $resumen_totales['totalImpresion'] +
$resumen_totales['totalServicios'] + $resumen_totales['coste_envio']; $resumen_totales['totalServicios'] + $resumen_totales['envio_base_coste'];
$totalMargenes = $resumen_totales['margenPapel'] + $resumen_totales['margenImpresion'] + $totalMargenes = $resumen_totales['margenPapel'] + $resumen_totales['margenImpresion'] +
$resumen_totales['margenServicios'] + $resumen_totales['margen_envio']; $resumen_totales['margenServicios'] + $resumen_totales['envio_base_margen'];
$fields = [ $fields = [
'cliente_id' => $data['clienteId'], 'cliente_id' => $data['clienteId'],
@ -486,9 +486,9 @@ class PresupuestoModel extends \App\Models\BaseModel
'total_descuento' => 0, 'total_descuento' => 0,
'total_descuentoPercent' => 0, 'total_descuentoPercent' => 0,
'total_precio_unidad' => round(($totalCostes + $totalMargenes) / $tirada, 4), 'total_precio_unidad' => $resumen_totales['precio_unidad'],
'total_presupuesto' => round($totalCostes + $totalMargenes, 2), 'total_presupuesto' => round($totalCostes + $totalMargenes + $resumen_totales['coste_envio']+$resumen_totales['margen_envio'], 2),
'total_aceptado' => round($totalCostes + $totalMargenes, 2), 'total_aceptado' => round($totalCostes + $totalMargenes + $resumen_totales['coste_envio']+$resumen_totales['margen_envio'], 2),
'total_factor' => round(($totalCostes + $totalMargenes - $resumen_totales['coste_envio'] - $resumen_totales['margen_envio']) / $resumen_totales['sumForFactor'], 2), 'total_factor' => round(($totalCostes + $totalMargenes - $resumen_totales['coste_envio'] - $resumen_totales['margen_envio']) / $resumen_totales['sumForFactor'], 2),
'total_factor_ponderado' => round(($totalCostes + $totalMargenes - $resumen_totales['coste_envio'] - $resumen_totales['margen_envio']) / $resumen_totales['sumForFactorPonderado'], 2), 'total_factor_ponderado' => round(($totalCostes + $totalMargenes - $resumen_totales['coste_envio'] - $resumen_totales['margen_envio']) / $resumen_totales['sumForFactorPonderado'], 2),

View File

@ -5,9 +5,11 @@
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center"> <div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h5 class="mb-1 "> Precio unidad: <span id="resumenPrecioU"></span> </h5> <h5 class="mb-1 "> Precio unidad: <span id="resumenPrecioU"></span> </h5>
<h4 class="mb-1 "> Total base: <span id="resumenTotalBase"></span> </h> <h4 class="mb-1 "> Total base: <span id="resumenTotalBase"></span> </h4>
<h4 class="mb-1 "> Iva (<span id="resumenIvaPorcentaje"></span>%): <span id="resumenIva"></span> </h> <h4 class="mb-1 "> Envío: <span id="resumenTotalEnvio"></span> </h4>
<h3 class="mt-3 mb-1 fw-bold"> Total: <span id="resumenTotal"></span> </h> <h4 class="mb-1 "> Total antes de I.V.A: <span id="resumenTotalAntesIVA"></span> </h4>
<h4 class="mb-1 "> Iva (<span id="resumenIvaPorcentaje"></span>%): <span id="resumenIva"></span> </h4>
<h3 class="mt-3 mb-1 fw-bold"> Total: <span id="resumenTotal"></span> </h3>
</div><!--//.mb-3 --> </div><!--//.mb-3 -->
<div id="divFormaCubierta" class="col-sm-12 mb-3 d-flex flex-column align-items-center"> <div id="divFormaCubierta" class="col-sm-12 mb-3 d-flex flex-column align-items-center">

View File

@ -23,27 +23,23 @@ if (auth()->user()->can('presupuesto.menu')) {
</a> </a>
<ul class="menu-sub"> <ul class="menu-sub">
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestoadmin/list/1") ?>" <a href="<?= site_url("presupuestoadmin/list/1") ?>" class="menu-link">
class="menu-link">
<?= lang("App.menu_libros_fresasdo_tapa_dura") ?> <?= lang("App.menu_libros_fresasdo_tapa_dura") ?>
</a> </a>
</li> </li>
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestoadmin/list/2") ?>" <a href="<?= site_url("presupuestoadmin/list/2") ?>" class="menu-link">
class="menu-link">
<?= lang("App.menu_libros_fresasdo_tapa_blanda") ?> <?= lang("App.menu_libros_fresasdo_tapa_blanda") ?>
</a> </a>
</li> </li>
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestoadmin/list/3") ?>" <a href="<?= site_url("presupuestoadmin/list/3") ?>" class="menu-link">
class="menu-link">
<?= lang("App.menu_libros_cosido_tapa_dura") ?> <?= lang("App.menu_libros_cosido_tapa_dura") ?>
</a> </a>
</li> </li>
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestoadmin/list/4") ?>" <a href="<?= site_url("presupuestoadmin/list/4") ?>" class="menu-link">
class="menu-link">
<?= lang("App.menu_libros_cosido_tapa_blanda") ?> <?= lang("App.menu_libros_cosido_tapa_blanda") ?>
</a> </a>
</li> </li>
@ -59,8 +55,7 @@ if (auth()->user()->can('presupuesto.menu')) {
</li> </li>
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestoadmin/list/6") ?>" <a href="<?= site_url("presupuestoadmin/list/6") ?>" class="menu-link">
class="menu-link">
<?= lang("App.menu_libros_espiral_tapa_blanda") ?> <?= lang("App.menu_libros_espiral_tapa_blanda") ?>
</a> </a>
</li> </li>
@ -96,7 +91,8 @@ if (auth()->user()->can('presupuesto.menu')) {
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestos/tarjetascomerciales") ?>" class="menu-link"> <a href="<?= site_url("presupuestos/tarjetascomerciales") ?>" class="menu-link">
<div data-i18n="<?= lang("App.menu_tarjetas_comerciales") ?>"><?= lang("App.menu_tarjetas_comerciales") ?></div> <div data-i18n="<?= lang("App.menu_tarjetas_comerciales") ?>">
<?= lang("App.menu_tarjetas_comerciales") ?></div>
</a> </a>
</li> </li>
@ -119,18 +115,21 @@ if (auth()->user()->can('presupuesto.menu')) {
<ul class="menu-sub"> <ul class="menu-sub">
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestos/dipticos") ?>" class="menu-link"> <a href="<?= site_url("presupuestos/dipticos") ?>" class="menu-link">
<div data-i18n="<?= lang("App.menu_folleto_diptico") ?>"><?= lang("App.menu_folleto_diptico") ?></div> <div data-i18n="<?= lang("App.menu_folleto_diptico") ?>"><?= lang("App.menu_folleto_diptico") ?>
</div>
</a> </a>
</li> </li>
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestos/tripticos") ?>" class="menu-link"> <a href="<?= site_url("presupuestos/tripticos") ?>" class="menu-link">
<div data-i18n="<?= lang("App.menu_folleto_triptico") ?>"><?= lang("App.menu_folleto_triptico") ?></div> <div data-i18n="<?= lang("App.menu_folleto_triptico") ?>">
<?= lang("App.menu_folleto_triptico") ?></div>
</a> </a>
</li> </li>
<li class="menu-item"> <li class="menu-item">
<a href="<?= site_url("presupuestos/cuadripticos") ?>" class="menu-link"> <a href="<?= site_url("presupuestos/cuadripticos") ?>" class="menu-link">
<div data-i18n="<?= lang("App.menu_folleto_cuadriptico") ?>"><?= lang("App.menu_folleto_cuadriptico") ?></div> <div data-i18n="<?= lang("App.menu_folleto_cuadriptico") ?>">
<?= lang("App.menu_folleto_cuadriptico") ?></div>
</a> </a>
</li> </li>
</ul> </ul>
@ -140,8 +139,13 @@ if (auth()->user()->can('presupuesto.menu')) {
<div data-i18n="<?= lang("App.menu_calendarios") ?>"><?= lang("App.menu_calendarios") ?></div> <div data-i18n="<?= lang("App.menu_calendarios") ?>"><?= lang("App.menu_calendarios") ?></div>
</a> </a>
</li> </li>
<li class="menu-item">
<a href="<?= site_url("/importador") ?>" class="menu-link">
<?= lang("App.menu_presupuesto_importador") ?>
</a>
</li>
</ul> </ul>
</li> </li>
<?php } ?> <?php } ?>

View File

@ -100,6 +100,7 @@ class Resumen {
let margenServicios = parseFloat(0); let margenServicios = parseFloat(0);
let totalEnvios = 0; let totalEnvios = 0;
let totalEnvios_base = 0;
let margenEnvios = 0; let margenEnvios = 0;
let sumForFactor = 0.0; let sumForFactor = 0.0;
@ -262,15 +263,16 @@ class Resumen {
if (updateEnvio) { if (updateEnvio) {
totalEnvios = parseFloat($('#envio_base').val()); totalEnvios_base = parseFloat($('#envio_base').val());
if (typeof $('#tableOfDireccionesEnvio').DataTable() !== 'undefined' && $('#tableOfDireccionesEnvio').DataTable().rows().count() > 0) { if (typeof $('#tableOfDireccionesEnvio').DataTable() !== 'undefined' && $('#tableOfDireccionesEnvio').DataTable().rows().count() > 0) {
$('#tableOfDireccionesEnvio').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { $('#tableOfDireccionesEnvio').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
if (rowIdx == 0) { // el primer envio es el base, y no se debe de cobrar
return; if (rowIdx != 0) {
}
let data = this.data() let data = this.data()
totalEnvios += parseFloat(data.precio) totalEnvios += parseFloat(data.precio)
margenEnvios += parseFloat((data.precio) * data.margen / 100) margenEnvios += parseFloat((data.precio) * data.margen / 100)
}
}); });
} }
@ -298,10 +300,11 @@ class Resumen {
if ($('#total_descuentoPercent').val() < 0) { if ($('#total_descuentoPercent').val() < 0) {
$('#total_descuentoPercent').val(0) $('#total_descuentoPercent').val(0)
} }
let totalAntesDescuento = totalCostes + totalMargenes let totalAntesDescuento = totalCostes + totalMargenes - parseFloat(totalEnvios.toFixed(2)) + totalEnvios_base;
let totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val() || 0) / 100 let totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val() || 0) / 100
let totalPresupuesto = totalAntesDescuento - totalDescuento let totalPresupuesto = totalAntesDescuento - totalDescuento; // para el calculo del precio_u solo se tiene en cuenta el base
let precioUnidad = totalPresupuesto / parseInt($('#tirada').val()) let precioUnidad = totalPresupuesto / parseInt($('#tirada').val())
totalPresupuesto += totalEnvios;
$('#totalAntesDescuento').text((this.addSeparatorsNF(totalAntesDescuento.toFixed(2), ".", ",", ".")) + "€") $('#totalAntesDescuento').text((this.addSeparatorsNF(totalAntesDescuento.toFixed(2), ".", ",", ".")) + "€")
$('#descuentoTotal').text((this.addSeparatorsNF(totalDescuento.toFixed(2), ".", ",", ".")) + "€") $('#descuentoTotal').text((this.addSeparatorsNF(totalDescuento.toFixed(2), ".", ",", ".")) + "€")
@ -313,10 +316,10 @@ class Resumen {
$('#precioUnidadPresupuesto').attr('val', (precioUnidad).toFixed(4)) $('#precioUnidadPresupuesto').attr('val', (precioUnidad).toFixed(4))
$('#totalDespuesDecuento').trigger("change") $('#totalDespuesDecuento').trigger("change")
$('#factor').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactor).toFixed(2), ".", ",", ".")) $('#factor').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactor).toFixed(2), ".", ",", "."))
$('#factor').attr('val', ((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactor).toFixed(2)) $('#factor').attr('val', ((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactor).toFixed(2))
$('#factor_ponderado').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactorPonderado).toFixed(2), ".", ",", ".")) $('#factor_ponderado').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactorPonderado).toFixed(2), ".", ",", "."))
$('#factor_ponderado').attr('val', ((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactorPonderado).toFixed(2)) $('#factor_ponderado').attr('val', ((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactorPonderado).toFixed(2))
} }
@ -365,8 +368,7 @@ class Resumen {
roundToTwoDecimals(num) { roundToTwoDecimals(num) {
return parseFloat(num.toFixed(2)); return parseFloat(num.toFixed(2));
} }
updateToastSummary() updateToastSummary() {
{
if (this.toastPresupuestoTotal) { if (this.toastPresupuestoTotal) {
this.toastPresupuestoTotal.close() this.toastPresupuestoTotal.close()
} }

View File

@ -622,7 +622,8 @@ class PresupuestoCliente {
('precio-tiradas-' + response.tiradas[i]), ('precio-tiradas-' + response.tiradas[i]),
response.tiradas[i], response.tiradas[i],
precio, precio,
response.precio_u[i] response.precio_u[i],
response.coste_envio[i]
); );
if (this.actualizarTiradasEnvio) { if (this.actualizarTiradasEnvio) {
@ -895,7 +896,10 @@ class PresupuestoCliente {
$('#menu_resumen_button').trigger('click'); $('#menu_resumen_button').trigger('click');
setTimeout(() => { setTimeout(() => {
self.resumen.init_dropzone(); self.resumen.init_dropzone();
self.resumen.generate_total(response.data.resumen.base, response.data.resumen.precio_unidad, response.data.datosGenerales.ivaReducido); self.resumen.generate_total(response.data.resumen.base,
response.data.resumen.precio_unidad,
response.data.resumen.total_envio,
response.data.datosGenerales.ivaReducido);
}, 0); }, 0);
} }
}, 0); }, 0);

View File

@ -48,6 +48,8 @@ class Resumen {
this.precio_unidad = $(this.domItem.find("#resumenPrecioU")); this.precio_unidad = $(this.domItem.find("#resumenPrecioU"));
this.total_base = $(this.domItem.find("#resumenTotalBase")); this.total_base = $(this.domItem.find("#resumenTotalBase"));
this.total_envios = $(this.domItem.find("#resumenTotalEnvio"));
this.total_antes_iva = $(this.domItem.find("#resumenTotalAntesIVA"));
this.iva_porcentaje = $(this.domItem.find("#resumenIvaPorcentaje")); this.iva_porcentaje = $(this.domItem.find("#resumenIvaPorcentaje"));
this.iva = $(this.domItem.find("#resumenIva")); this.iva = $(this.domItem.find("#resumenIva"));
this.total = $(this.domItem.find("#resumenTotal")); this.total = $(this.domItem.find("#resumenTotal"));
@ -308,19 +310,26 @@ class Resumen {
return parseInt($(this).find('.tarjeta-tiradas-precios-tirada').attr('data')) == unidades; return parseInt($(this).find('.tarjeta-tiradas-precios-tirada').attr('data')) == unidades;
}); });
let envios = tarjetaPrecio.find('.tarjeta-tiradas-precios-envio').val();
this.total_envios.text(this.#changeDecimalFormat(parseFloat(envios).toFixed(2)));
let precio_u_text = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio-unidad').text(); let precio_u_text = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio-unidad').text();
precio_u_text = precio_u_text.replace('€/ud', ''); precio_u_text = precio_u_text.replace('€/ud', '');
const base = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio').attr('data'); const base = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio').attr('data');
let base_text = this.#changeDecimalFormat(parseFloat(base).toFixed(2)); let base_text = this.#changeDecimalFormat(parseFloat(base).toFixed(2));
const total_antes_iva_text = this.#changeDecimalFormat((parseFloat(base) + parseFloat(envios)).toFixed(2));
const iva_porcentaje = parseInt(this.datosGenerales.ivaReducido.find('option:selected').val()) == 1 ? 0.04 : 0.21; const iva_porcentaje = parseInt(this.datosGenerales.ivaReducido.find('option:selected').val()) == 1 ? 0.04 : 0.21;
const iva = (parseFloat(base) * iva_porcentaje).toFixed(2); const iva = ((parseFloat(base) + parseFloat(envios))* iva_porcentaje).toFixed(2);
let iva_text = this.#changeDecimalFormat(iva); let iva_text = this.#changeDecimalFormat(iva);
const total = (parseFloat(base) + parseFloat(iva)).toFixed(2); const total = (parseFloat(base) + parseFloat(envios) +parseFloat(iva)).toFixed(2);
let total_text = this.#changeDecimalFormat(total); let total_text = this.#changeDecimalFormat(total);
this.precio_unidad.text(precio_u_text); this.precio_unidad.text(precio_u_text);
this.total_base.text(base_text); this.total_base.text(base_text);
this.iva_porcentaje.text(this.datosGenerales.ivaReducido.find('option:selected').val() == 1 ? '4' : '21'); this.iva_porcentaje.text(this.datosGenerales.ivaReducido.find('option:selected').val() == 1 ? '4' : '21');
@ -329,23 +338,28 @@ class Resumen {
} }
generate_total(base, precio_u, iva_reducido) { generate_total(base, precio_u, total_envio, iva_reducido) {
let precio_u_text = String(precio_u); let precio_u_text = String(precio_u);
precio_u_text = precio_u_text.replace('€/u', ''); precio_u_text = precio_u_text.replace('€/u', '');
precio_u_text = this.#changeDecimalFormat(precio_u_text); precio_u_text = this.#changeDecimalFormat(precio_u_text);
let base_text = this.#changeDecimalFormat(String(base)); let base_text = this.#changeDecimalFormat(String(base));
let envios_text = this.#changeDecimalFormat(total_envio.toFixed(2));
let total_antes_iva = parseFloat(base) + parseFloat(total_envio);
let total_antes_iva_text = this.#changeDecimalFormat(total_antes_iva.toFixed(2));
const iva_porcentaje = !iva_reducido? 0.21 : 0.04; const iva_porcentaje = !iva_reducido? 0.21 : 0.04;
const iva = (parseFloat(base) * iva_porcentaje).toFixed(2); const iva = ((parseFloat(base) + parseFloat(total_envio)) * iva_porcentaje).toFixed(2);
let iva_text = this.#changeDecimalFormat(iva); let iva_text = this.#changeDecimalFormat(iva);
const total = (parseFloat(base) + parseFloat(iva)).toFixed(2); const total = (parseFloat(base) + parseFloat(total_envio) + parseFloat(iva)).toFixed(2);
let total_text = this.#changeDecimalFormat(total); let total_text = this.#changeDecimalFormat(total);
this.precio_unidad.text(precio_u_text); this.precio_unidad.text(precio_u_text);
this.total_base.text(base_text); this.total_base.text(base_text);
this.total_envios.text(envios_text);
this.total_antes_iva.text(total_antes_iva_text);
this.iva_porcentaje.text(!iva_reducido? '21' : '4'); this.iva_porcentaje.text(!iva_reducido? '21' : '4');
this.iva.text(iva_text); this.iva.text(iva_text);
this.total.text(total_text); this.total.text(total_text);

View File

@ -1,13 +1,14 @@
class tarjetaTiradasPrecio { class tarjetaTiradasPrecio {
constructor(domItem, id, tirada, precio, precio_unidad) { constructor(domItem, id, tirada, precio, precio_unidad, envio) {
this.domItem = domItem; this.domItem = domItem;
this.id = id; this.id = id;
this.tirada = tirada; this.tirada = tirada;
this.precio = precio; this.precio = precio;
this.precio_unidad = precio_unidad; this.precio_unidad = precio_unidad;
this.envio = envio;
this.card = this.#generateHTML(id, tirada, precio, precio_unidad); this.card = this.#generateHTML(id, tirada, precio, precio_unidad, envio);
this.domItem.append(this.card); this.domItem.append(this.card);
} }
@ -15,7 +16,7 @@ class tarjetaTiradasPrecio {
return value.toLocaleString("de-DE", { minimumFractionDigits: digits, maximumFractionDigits: digits }); return value.toLocaleString("de-DE", { minimumFractionDigits: digits, maximumFractionDigits: digits });
} }
#generateHTML(id, tirada, precio, precio_unidad) { #generateHTML(id, tirada, precio, precio_unidad, envio) {
let $html = $('<div>', { let $html = $('<div>', {
id: id, id: id,
@ -38,6 +39,7 @@ class tarjetaTiradasPrecio {
const formattedPrecio = this.formatNumber(precio, 2); const formattedPrecio = this.formatNumber(precio, 2);
const formattedPrecioUnidad = this.formatNumber(precio_unidad, 4); const formattedPrecioUnidad = this.formatNumber(precio_unidad, 4);
$listContent.append($('<h7>', { $listContent.append($('<h7>', {
id: 'ud_' + id, id: 'ud_' + id,
class: 'mb-1 tarjeta-tiradas-precios-tirada', class: 'mb-1 tarjeta-tiradas-precios-tirada',
@ -56,6 +58,12 @@ class tarjetaTiradasPrecio {
text: formattedPrecioUnidad + '€/ud' text: formattedPrecioUnidad + '€/ud'
}).attr('data', precio_unidad)); }).attr('data', precio_unidad));
$listContent.append($('<input>', {
id: 'envio_' + id,
type: 'hidden',
class: 'mb-1 tarjeta-tiradas-precios-envio',
}).val(envio));
$liWrapper.append($listContent); $liWrapper.append($listContent);
$link.append($liWrapper); $link.append($liWrapper);
$html.append($link); $html.append($link);