From e1d208a4ddfbe4ab281db4b305533404168a2b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Fri, 21 Mar 2025 18:27:31 +0100 Subject: [PATCH] resuelto problema presupuesto cliente --- .../Presupuestos/Presupuestocliente.php | 67 ++++++++++--------- ci4/app/Language/es/App.php | 1 + .../Models/Presupuestos/PresupuestoModel.php | 10 +-- .../presupuestos/cliente/items/_resumen.php | 8 ++- .../vuexy/main/menus/presupuesto_menu.php | 38 ++++++----- .../presupuestoAdmin/sections/resumen.js | 56 ++++++++-------- .../presupuestoCliente/presupuestoCliente.js | 8 ++- .../pages/presupuestoCliente/resumen.js | 24 +++++-- .../tarjetaTiradasPrecio.js | 14 +++- 9 files changed, 134 insertions(+), 92 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index e7741ab0..b25d3db9 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -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; + $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) { for ($i = 0; $i < count($tirada); $i++) { @@ -614,8 +622,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 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; } @@ -651,19 +657,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController ]; return $return_data; } else { - //aporte del envio al precio unidad - $coste_envio += ($coste_direccion->coste / $tirada[$i]); + // Se añade a los costes de envío + $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->isAJAX()) 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]['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) { for ($i = 0; $i < count($tirada); $i++) { @@ -1168,11 +1184,6 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController 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; } @@ -1212,18 +1223,9 @@ 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(); $tiradas_alternativas = []; @@ -1240,7 +1242,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController $resultado_presupuesto['info']['totales'][$i]['margenPapel'] + $resultado_presupuesto['info']['totales'][$i]['margen_envio']) / ($coste_total + $coste_envio) * 100.0, 2); $total_pedido = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio), 2); - $precio_u = round(($coste_total + $resultado_presupuesto['info']['totales'][$i]['totalServicios'] + $resultado_presupuesto['info']['totales'][$i]['margenServicios'] + $coste_envio) / $tirada[$i], 4); + $precio_u = round( $resultado_presupuesto['precio_u'][$i], 4); array_push($tiradas_alternativas, (object) array( 'tirada' => $tirada[$i], @@ -1252,6 +1254,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController )); } else { $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) { - $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; } diff --git a/ci4/app/Language/es/App.php b/ci4/app/Language/es/App.php index 3bb95036..5fad7c09 100755 --- a/ci4/app/Language/es/App.php +++ b/ci4/app/Language/es/App.php @@ -754,6 +754,7 @@ return [ "menu_presupuestos_clientes" => "Presupuestos (Clientes)", "menu_presupuesto" => "Libros", "menu_presupuesto_buscador" => "Buscador", + "menu_presupuesto_importador" => "Importador ERP antiguo", "menu_libros" => "Libros", "menu_libros_fresasdo_tapa_dura" => "Fresado tapa dura", "menu_libros_fresasdo_tapa_blanda" => "Fresado tapa blanda", diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index 341b10b9..de3a817b 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -404,9 +404,9 @@ class PresupuestoModel extends \App\Models\BaseModel $is_cosido = (new TipoPresupuestoModel())->get_isCosido($data['tipo_impresion_id']); $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'] + - $resumen_totales['margenServicios'] + $resumen_totales['margen_envio']; + $resumen_totales['margenServicios'] + $resumen_totales['envio_base_margen']; $fields = [ 'cliente_id' => $data['clienteId'], @@ -486,9 +486,9 @@ class PresupuestoModel extends \App\Models\BaseModel 'total_descuento' => 0, 'total_descuentoPercent' => 0, - 'total_precio_unidad' => round(($totalCostes + $totalMargenes) / $tirada, 4), - 'total_presupuesto' => round($totalCostes + $totalMargenes, 2), - 'total_aceptado' => round($totalCostes + $totalMargenes, 2), + 'total_precio_unidad' => $resumen_totales['precio_unidad'], + 'total_presupuesto' => round($totalCostes + $totalMargenes + $resumen_totales['coste_envio']+$resumen_totales['margen_envio'], 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_ponderado' => round(($totalCostes + $totalMargenes - $resumen_totales['coste_envio'] - $resumen_totales['margen_envio']) / $resumen_totales['sumForFactorPonderado'], 2), diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php index 7eb9dee7..3f447a46 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_resumen.php @@ -5,9 +5,11 @@
Precio unidad:
-

Total base: € -

Iva (%): € -

Total: € +

Total base:

+

Envío:

+

Total antes de I.V.A:

+

Iva (%):

+

Total:

diff --git a/ci4/app/Views/themes/vuexy/main/menus/presupuesto_menu.php b/ci4/app/Views/themes/vuexy/main/menus/presupuesto_menu.php index 0b253bdb..52af9ab7 100644 --- a/ci4/app/Views/themes/vuexy/main/menus/presupuesto_menu.php +++ b/ci4/app/Views/themes/vuexy/main/menus/presupuesto_menu.php @@ -23,27 +23,23 @@ if (auth()->user()->can('presupuesto.menu')) { - - - + \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js index cbc1c042..1e152889 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js @@ -18,7 +18,7 @@ class Resumen { await self.updateTotales(); $(document).trigger('update-totales-completed'); }); - $("#totalDespuesDecuento").on('change',this.updateToastSummary.bind(this)) + $("#totalDespuesDecuento").on('change', this.updateToastSummary.bind(this)) } cargar(resumen) { @@ -26,7 +26,7 @@ class Resumen { // Mapear los valores a los elementos HTML por ID $("#totalCostePapel").text(resumen.total_coste_papel.toString().replace('.', ',') + "€" || "0€"); $("#porcentajeMargenPapel").text(resumen.total_margenPercent_papel ? resumen.total_margenPercent_papel.toString().replace('.', ',') + "%" : "0%"); - $("#margenPapel").text(resumen.total_margen_papel.toString().replace('.', ',')+ "€" || "0€"); + $("#margenPapel").text(resumen.total_margen_papel.toString().replace('.', ',') + "€" || "0€"); $("#totalCosteImpresion").text(resumen.total_coste_impresion.toString().replace('.', ',') + "€" || "0€"); $("#porcentajeMargenImpresion").text(resumen.total_margenPercent_impresion ? resumen.total_margenPercent_impresion.toString().replace('.', ',') + "%" : "0%"); @@ -56,7 +56,7 @@ class Resumen { $("#totalAceptado").val(resumen.total_aceptado.toString().replace('.', ',') + "€" || "0€"); } - $('#ivaReducido').val(resumen.iva_reducido ? 1: 0); + $('#ivaReducido').val(resumen.iva_reducido ? 1 : 0); } @@ -100,6 +100,7 @@ class Resumen { let margenServicios = parseFloat(0); let totalEnvios = 0; + let totalEnvios_base = 0; let margenEnvios = 0; let sumForFactor = 0.0; @@ -134,7 +135,7 @@ class Resumen { if (rowData.maquinaTipo == 'inkjet') { totalImpresion += parseFloat(rowData.totalTinta) - totalImpresion += parseFloat(rowData.totalCorte)?? 0; + totalImpresion += parseFloat(rowData.totalCorte) ?? 0; //sumForFactor += (parseFloat(rowData.totalTinta) + parseFloat(rowData.totalCorte)) } @@ -189,7 +190,7 @@ class Resumen { let margen_servicio = parseFloat(rowData.margen); totalServicios += total_servicio let base = self.roundToTwoDecimals(total_servicio / (1 + margen_servicio / 100.0)); - base = self.roundToTwoDecimals(base / parseInt($('#tirada').val()))*parseInt($('#tirada').val()); + base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val()); margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base)); }); } @@ -201,7 +202,7 @@ class Resumen { let margen_servicio = parseFloat(rowData.margen); totalServicios += total_servicio let base = self.roundToTwoDecimals(total_servicio / (1 + margen_servicio / 100.0)); - base = self.roundToTwoDecimals(base / parseInt($('#tirada').val()))*parseInt($('#tirada').val()); + base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val()); margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base)); }); } @@ -211,7 +212,7 @@ class Resumen { let rowData = this.data(); let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio)); let base = (parseFloat(rowData.precio / (1 + parseFloat(rowData.margen) / 100.0)).toFixed(2)); - base = self.roundToTwoDecimals(base / parseInt($('#tirada').val()))*parseInt($('#tirada').val()); + base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val()); margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base)); totalServicios += total_servicio }); @@ -222,7 +223,7 @@ class Resumen { let rowData = this.data(); let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio)); let base = (parseFloat(rowData.precio / (1 + parseFloat(rowData.margen) / 100.0)).toFixed(2)); - base = self.roundToTwoDecimals(base / parseInt($('#tirada').val()))*parseInt($('#tirada').val()); + base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val()); margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base)); totalServicios += total_servicio; }); @@ -235,7 +236,7 @@ class Resumen { let margen_servicio = parseFloat(rowData.margen); totalServicios += total_servicio let base = self.roundToTwoDecimals(total_servicio / (1 + margen_servicio / 100.0)); - base = self.roundToTwoDecimals(base / parseInt($('#tirada').val()))*parseInt($('#tirada').val()); + base = self.roundToTwoDecimals(base / parseInt($('#tirada').val())) * parseInt($('#tirada').val()); margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base)); }); } @@ -262,15 +263,16 @@ class Resumen { if (updateEnvio) { - totalEnvios = parseFloat($('#envio_base').val()); + totalEnvios_base = parseFloat($('#envio_base').val()); if (typeof $('#tableOfDireccionesEnvio').DataTable() !== 'undefined' && $('#tableOfDireccionesEnvio').DataTable().rows().count() > 0) { $('#tableOfDireccionesEnvio').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { - if (rowIdx == 0) { - return; + // el primer envio es el base, y no se debe de cobrar + if (rowIdx != 0) { + + let data = this.data() + totalEnvios += parseFloat(data.precio) + margenEnvios += parseFloat((data.precio) * data.margen / 100) } - let data = this.data() - totalEnvios += parseFloat(data.precio) - margenEnvios += parseFloat((data.precio) * data.margen / 100) }); } @@ -298,10 +300,11 @@ class Resumen { if ($('#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 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()) + totalPresupuesto += totalEnvios; $('#totalAntesDescuento').text((this.addSeparatorsNF(totalAntesDescuento.toFixed(2), ".", ",", ".")) + "€") $('#descuentoTotal').text((this.addSeparatorsNF(totalDescuento.toFixed(2), ".", ",", ".")) + "€") @@ -313,15 +316,15 @@ class Resumen { $('#precioUnidadPresupuesto').attr('val', (precioUnidad).toFixed(4)) $('#totalDespuesDecuento').trigger("change") - $('#factor').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactor).toFixed(2), ".", ",", ".")) - $('#factor').attr('val', ((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactor).toFixed(2)) - $('#factor_ponderado').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactorPonderado).toFixed(2), ".", ",", ".")) - $('#factor_ponderado').attr('val', ((totalPresupuesto - totalEnvios - margenEnvios) / sumForFactorPonderado).toFixed(2)) + $('#factor').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactor).toFixed(2), ".", ",", ".")) + $('#factor').attr('val', ((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactor).toFixed(2)) + $('#factor_ponderado').text(this.addSeparatorsNF(((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactorPonderado).toFixed(2), ".", ",", ".")) + $('#factor_ponderado').attr('val', ((totalPresupuesto - totalEnvios - totalEnvios_base - margenEnvios) / sumForFactorPonderado).toFixed(2)) } - getData(){ + getData() { let data = { 'total_coste_papel': $('#totalCostePapel').text().replace('€', '').replace(',', '.'), @@ -354,7 +357,7 @@ class Resumen { 'iva_reducido': $('#ivaReducido').val() }; - if($('#confirmar_presupuesto').prop('checked')){ + if ($('#confirmar_presupuesto').prop('checked')) { data.confirmar = '1'; data.total_aceptado = $('#totalDespuesDecuento').text().replace('€', '').replace(',', '.'); } @@ -365,15 +368,14 @@ class Resumen { roundToTwoDecimals(num) { return parseFloat(num.toFixed(2)); } - updateToastSummary() - { - if(this.toastPresupuestoTotal){ + updateToastSummary() { + if (this.toastPresupuestoTotal) { this.toastPresupuestoTotal.close() } this.toastPresupuestoTotal = toastPresupuestoSummary($("#totalDespuesDecuento").text() ?? 0) this.toastPresupuestoTotal.fire().then((result) => { - if(result.isDismissed && result.dismiss == 'close'){ + if (result.isDismissed && result.dismiss == 'close') { this.updateToastSummary() $('html, body').animate( { diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js index 8965dea4..fa45b210 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -622,7 +622,8 @@ class PresupuestoCliente { ('precio-tiradas-' + response.tiradas[i]), response.tiradas[i], precio, - response.precio_u[i] + response.precio_u[i], + response.coste_envio[i] ); if (this.actualizarTiradasEnvio) { @@ -895,7 +896,10 @@ class PresupuestoCliente { $('#menu_resumen_button').trigger('click'); setTimeout(() => { 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); diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js index 4c297776..0ccd5839 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/resumen.js @@ -48,6 +48,8 @@ class Resumen { this.precio_unidad = $(this.domItem.find("#resumenPrecioU")); 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 = $(this.domItem.find("#resumenIva")); this.total = $(this.domItem.find("#resumenTotal")); @@ -308,19 +310,26 @@ class Resumen { 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(); precio_u_text = precio_u_text.replace('€/ud', ''); const base = tarjetaPrecio.find('.tarjeta-tiradas-precios-precio').attr('data'); 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 = (parseFloat(base) * iva_porcentaje).toFixed(2); + const iva = ((parseFloat(base) + parseFloat(envios))* iva_porcentaje).toFixed(2); 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); + this.precio_unidad.text(precio_u_text); this.total_base.text(base_text); 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); precio_u_text = precio_u_text.replace('€/u', ''); precio_u_text = this.#changeDecimalFormat(precio_u_text); 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 = (parseFloat(base) * iva_porcentaje).toFixed(2); + const iva = ((parseFloat(base) + parseFloat(total_envio)) * iva_porcentaje).toFixed(2); 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); this.precio_unidad.text(precio_u_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.text(iva_text); this.total.text(total_text); diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/tarjetaTiradasPrecio.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/tarjetaTiradasPrecio.js index 25e11ef5..1fbeead7 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/tarjetaTiradasPrecio.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/tarjetaTiradasPrecio.js @@ -1,13 +1,14 @@ class tarjetaTiradasPrecio { - constructor(domItem, id, tirada, precio, precio_unidad) { + constructor(domItem, id, tirada, precio, precio_unidad, envio) { this.domItem = domItem; this.id = id; this.tirada = tirada; this.precio = precio; 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); } @@ -15,7 +16,7 @@ class tarjetaTiradasPrecio { return value.toLocaleString("de-DE", { minimumFractionDigits: digits, maximumFractionDigits: digits }); } - #generateHTML(id, tirada, precio, precio_unidad) { + #generateHTML(id, tirada, precio, precio_unidad, envio) { let $html = $('
', { id: id, @@ -37,6 +38,7 @@ class tarjetaTiradasPrecio { const formattedPrecio = this.formatNumber(precio, 2); const formattedPrecioUnidad = this.formatNumber(precio_unidad, 4); + $listContent.append($('', { id: 'ud_' + id, @@ -56,6 +58,12 @@ class tarjetaTiradasPrecio { text: formattedPrecioUnidad + '€/ud' }).attr('data', precio_unidad)); + $listContent.append($('', { + id: 'envio_' + id, + type: 'hidden', + class: 'mb-1 tarjeta-tiradas-precios-envio', + }).val(envio)); + $liWrapper.append($listContent); $link.append($liWrapper); $html.append($link);