From 6208839a1236dd15db17608e32ddc56fc2f63b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Thu, 3 Apr 2025 23:36:12 +0200 Subject: [PATCH 1/4] empezando modificaciones --- .../Presupuestos/Presupuestoadmin.php | 5 + .../admin/_resumenPresupuestoItems.php | 133 ++++++++++++------ .../presupuestoAdmin/presupuestoAdminEdit.js | 7 + 3 files changed, 103 insertions(+), 42 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index 47883116..d55231e8 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -633,6 +633,11 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $data['resumen']['total_factor'] = is_numeric($presupuesto->total_factor) ? $presupuesto->total_factor : 0; $data['resumen']['total_factor_ponderado'] = is_numeric($presupuesto->total_factor_ponderado) ? $presupuesto->total_factor_ponderado : 0; + $data['total_aceptado_revisado'] = $presupuesto->total_aceptado_revisado; + $data['aprobado_by_at'] = ($presupuesto->aprobado_user_id != null)?model('App\Models\UserModel')->getFullName($presupuesto->aprobado_user_id) . ', ' + . date('d/m/Y', strtotime($presupuesto->aprobado_at)):''; + + $data['resumen']['iva_reducido'] = $presupuesto->iva_reducido; $data['created_by'] = model('App\Models\UserModel')->getFullName($presupuesto->user_created_id); diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php index 5f4c691b..24eb02b6 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php @@ -2,14 +2,12 @@

-
+
@@ -18,63 +16,88 @@
Coste papel
-
+
Margen papel
-
-
+
+
Coste impresión
-
+
Margen impresión
-
-
+
+
Coste servicios
-
+
Margen servicios
-
-
+
+
Coste de envío
-
+
Precio de envío
-
+
Margen envío
-
+

Total Costes
-
+
Total Margen
-
-
+
+

Total
-
+
Descuento (%)
-
-
+
+
Total presupuesto
-
+
Precio unidad
-
+
Factor
-
-
Factor Ponderado
-
+
+
Factor Ponderado +
+
- estado_id == 2 ? 'onclick="return false;"' : ''; ?> type="checkbox" id="confirmar_presupuesto" name="confirmar_presupuesto" value="1" estado_id == 2 ? 'checked' : ''; ?>> - + estado_id == 2 ? 'onclick="return false;"' : ''; ?> type="checkbox" id="confirmar_presupuesto" + name="confirmar_presupuesto" value="1" estado_id == 2 ? 'checked' : ''; ?>> +
@@ -92,18 +115,44 @@
- estado_id == 2): ?> -
-
- - > -
-
- +
+
+
+
+
+ + estado_id == 2)? "disabled":"" ?> type="text" class="autonumeric-currency form-control text-center fs-5" + id="total_aceptado_revisado"> +
+
+ +
+
+ estado_id == 2): ?> +
+
+ + > +
+
+ +
+

+ +

+
+
+
+
+
-
- - + + + + + \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js index 7894e139..7299bcf5 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js @@ -82,6 +82,10 @@ class PresupuestoAdminEdit { // Autonumeric AutoNumeric.multiple('.autonumeric-currency', { decimalPlaces: 2, currencySymbol: '€', currencySymbolPlacement: 's', digitGroupSeparator: '.', decimalCharacter: ',' }); + + $('#total_aceptado_revisado').on('change', function () { + AutoNumeric.getAutoNumericElement(this).set(this.value); + }); const impresion_id = $('#tipo_impresion_id').val(); let tipoLibro = ''; @@ -375,6 +379,9 @@ class PresupuestoAdminEdit { self.tipo_impresion.val(response.data.tipo_impresion); self.POD.val(response.data.POD); + $('#total_aceptado_revisado').val(response.data.total_aceptado_revisado); + $('#aprobado_by_at').html(response.data.aprobado_by_at); + $('#created_by').html(response.data.created_by); $('#updated_by').html(response.data.updated_by); $('#created_at').html(response.data.created_at); From cdf70c19ff2faa57060eeb1819fde516616f6527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Thu, 3 Apr 2025 23:37:14 +0200 Subject: [PATCH 2/4] =?UTF-8?q?a=C3=B1adidos=20ficheros=20nuevos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...AddTotalAceptadoRevisadoToPresupuestos.php | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 ci4/app/Database/Migrations/2025-04-03-200406_AddTotalAceptadoRevisadoToPresupuestos.php diff --git a/ci4/app/Database/Migrations/2025-04-03-200406_AddTotalAceptadoRevisadoToPresupuestos.php b/ci4/app/Database/Migrations/2025-04-03-200406_AddTotalAceptadoRevisadoToPresupuestos.php new file mode 100755 index 00000000..5bf43d37 --- /dev/null +++ b/ci4/app/Database/Migrations/2025-04-03-200406_AddTotalAceptadoRevisadoToPresupuestos.php @@ -0,0 +1,25 @@ +forge->addColumn('presupuestos', [ + 'total_aceptado_revisado' => [ + 'type' => 'FLOAT', + 'null' => true, + 'default' => null, + 'after' => 'total_aceptado' // Opcional: reemplazar con la última columna actual + ], + ]); + } + + public function down() + { + $this->forge->dropColumn('presupuestos', 'total_aceptado_revisado'); + } +} From a0cb7039912149854b919f1975ee2873a165c4ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Fri, 4 Apr 2025 09:21:36 +0200 Subject: [PATCH 3/4] trabajando --- .../Presupuestos/Presupuestoadmin.php | 10 +++++--- .../presupuestoAdmin/presupuestoAdminEdit.js | 9 ++++--- .../presupuestoAdmin/sections/resumen.js | 25 +++++++++++++++---- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index d55231e8..31ef4ed1 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -232,12 +232,16 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $postData = $this->request->getPost(); $postData['updated_at'] = gmdate('Y-m-d H:m:s', time()); - + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); - - // JJO $sanitizedData['user_updated_id'] = auth()->user()->id; + if(isset($sanitizedData['total_aceptado_revisado']) && $sanitizedData['total_aceptado_revisado'] != 0 + && $sanitizedData['total_aceptado_revisado'] != null && $sanitizedData['total_aceptado_revisado'] != ""){ + $sanitizedData['aprobado_at'] = $sanitizedData['updated_at']; + $sanitizedData['aprobado_by'] = $sanitizedData['user_updated_id']; + } + if ($this->request->getPost('is_duplicado') == null) { $sanitizedData['is_duplicado'] = 0; } diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js index 7299bcf5..1606cd6e 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js @@ -83,10 +83,6 @@ class PresupuestoAdminEdit { // Autonumeric AutoNumeric.multiple('.autonumeric-currency', { decimalPlaces: 2, currencySymbol: '€', currencySymbolPlacement: 's', digitGroupSeparator: '.', decimalCharacter: ',' }); - $('#total_aceptado_revisado').on('change', function () { - AutoNumeric.getAutoNumericElement(this).set(this.value); - }); - const impresion_id = $('#tipo_impresion_id').val(); let tipoLibro = ''; if (impresion_id == 1 || impresion_id == 2) { @@ -124,6 +120,11 @@ class PresupuestoAdminEdit { this.tiradasAlternativas.init(); this.resumen.init(); + $('#btn_aceptar_revisado').on('click', function () { + + this.resumen.updateTotales({ updateLP: true, updateServicios: true, updateEnvio: true }); + }.bind(this)); + if (window.location.href.includes("edit")) { setTimeout(() => { diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js index cc09be38..bcedce0c 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js @@ -11,7 +11,7 @@ class Resumen { const self = this; this.toastPresupuestoTotal = null $(".update-totales").on("change", function () { - self.updateTotales(true, true, true) + self.updateTotales(null, { updateLP: true, updateServicios: true, updateEnvio: true }); }); $(document).on('update-totales', async function () { @@ -52,7 +52,7 @@ class Resumen { $("#margenEnvios").html(resumen.total_margen_envios || 0); $("#margenEnvios").val(resumen.total_margen_envios || 0); - $("#totalCostes").html(resumen.total_costes || 0); + $("#totalCostes").html(resumen.total_costes || 0).val(); $("#porcentajeMargen").html(resumen.porcentajeMargen ? resumen.porcentajeMargen: 0); $("#totalMargenes").html(resumen.total_margenes || 0); $("#totalCostes").val(resumen.total_costes || 0); @@ -94,7 +94,7 @@ class Resumen { - async updateTotales(event, data = {}) { + async updateTotales(data = {}) { const self = this; @@ -297,8 +297,20 @@ class Resumen { margenEnvios = parseFloat($('#margenEnvios').attr('val')) } - let totalCostes = parseFloat(totalPapel.toFixed(2)) + parseFloat(totalImpresion.toFixed(2)) + parseFloat(totalServicios.toFixed(2)) + parseFloat(totalEnvios.toFixed(2)) + let totalCostes = parseFloat(totalPapel.toFixed(2)) + parseFloat(totalImpresion.toFixed(2)) + + parseFloat(totalServicios.toFixed(2)) + parseFloat(totalEnvios.toFixed(2)) + let totalMargenes = parseFloat(margenPapel.toFixed(2)) + parseFloat(margenImpresion.toFixed(2)) + parseFloat(margenServicios.toFixed(2)) + parseFloat(margenEnvios.toFixed(2)) + + let total_aceptado_revisado = AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]).getNumber() + if(total_aceptado_revisado != '' && total_aceptado_revisado != undefined && + total_aceptado_revisado != null && total_aceptado_revisado != 0){ + if(total_aceptado_revisado < totalCostes){ + total_aceptado_revisado = totalCoste ; + } + totalMargenes = parseFloat(total_aceptado_revisado)- totalCostes; + } + let porcentajeMargen = totalCostes + totalMargenes > 0 ? (100 * totalMargenes / (totalCostes + totalMargenes)).toFixed(0) : 0 $('#totalCostes').html(totalCostes).val(totalCostes.toFixed(2)) $('#totalMargenes').html(totalMargenes).val(totalMargenes.toFixed(2)) @@ -307,7 +319,7 @@ class Resumen { if ($('#total_descuentoPercent').val() < 0) { $('#total_descuentoPercent').val(0) } - let totalAntesDescuento = totalCostes + totalMargenes - parseFloat(totalEnvios.toFixed(2)) + totalEnvios_base; + let totalAntesDescuento = totalCostes + totalMargenes + parseFloat(totalEnvios.toFixed(2)) + totalEnvios_base; let totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val() || 0) / 100 let totalPresupuesto = totalAntesDescuento - totalDescuento; // para el calculo del precio_u solo se tiene en cuenta el base let precioUnidad = totalPresupuesto / parseInt($('#tirada').val()) @@ -372,6 +384,9 @@ class Resumen { return data; } + updateFromTotalAceptadoRevisado() { + } + roundToTwoDecimals(num) { return parseFloat(num.toFixed(2)); } From cddf64b0256aa989e72a933bf34faf53c9ff2038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Jim=C3=A9nez?= Date: Fri, 4 Apr 2025 17:03:08 +0200 Subject: [PATCH 4/4] terminada modificacion --- .../Presupuestos/Presupuestoadmin.php | 13 +++- .../Presupuestos/PresupuestoEntity.php | 2 + .../PresupuestoDireccionesModel.php | 1 + .../Models/Presupuestos/PresupuestoModel.php | 1 + .../admin/_resumenPresupuestoItems.php | 45 ++++++----- httpdocs/assets/js/safekat/components/chat.js | 2 +- .../presupuestoAdmin/presupuestoAdminEdit.js | 36 +++++++-- .../pages/presupuestoAdmin/sections/envios.js | 9 +-- .../presupuestoAdmin/sections/resumen.js | 78 +++++++++++++------ 9 files changed, 129 insertions(+), 58 deletions(-) diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index 31ef4ed1..7c3e941d 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -239,7 +239,13 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController if(isset($sanitizedData['total_aceptado_revisado']) && $sanitizedData['total_aceptado_revisado'] != 0 && $sanitizedData['total_aceptado_revisado'] != null && $sanitizedData['total_aceptado_revisado'] != ""){ $sanitizedData['aprobado_at'] = $sanitizedData['updated_at']; - $sanitizedData['aprobado_by'] = $sanitizedData['user_updated_id']; + $sanitizedData['aprobado_user_id'] = $sanitizedData['user_updated_id']; + } + + if ($presupuestoEntity->estado_id == 1 && isset($postData['confirmar']) && $postData['confirmar'] == 1) { + $sanitizedData['aprobado_at'] = $sanitizedData['updated_at']; + $sanitizedData['aprobado_user_id'] = $sanitizedData['user_updated_id']; + $sanitizedData['total_aceptado_revisado'] = $sanitizedData['total_presupuesto']; } if ($this->request->getPost('is_duplicado') == null) { @@ -638,8 +644,9 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $data['resumen']['total_factor_ponderado'] = is_numeric($presupuesto->total_factor_ponderado) ? $presupuesto->total_factor_ponderado : 0; $data['total_aceptado_revisado'] = $presupuesto->total_aceptado_revisado; - $data['aprobado_by_at'] = ($presupuesto->aprobado_user_id != null)?model('App\Models\UserModel')->getFullName($presupuesto->aprobado_user_id) . ', ' - . date('d/m/Y', strtotime($presupuesto->aprobado_at)):''; + $data['aprobado_by_at'] = ($presupuesto->aprobado_user_id != null)? + model('App\Models\UserModel')->getFullName($presupuesto->aprobado_user_id) . ', ' + . date('d/m/Y H:i:s', strtotime($presupuesto->aprobado_at)):''; $data['resumen']['iva_reducido'] = $presupuesto->iva_reducido; diff --git a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php index c4993d9c..2b28d821 100755 --- a/ci4/app/Entities/Presupuestos/PresupuestoEntity.php +++ b/ci4/app/Entities/Presupuestos/PresupuestoEntity.php @@ -100,6 +100,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "total_factor" => null, "total_factor_ponderado" => null, 'total_aceptado' => null, + 'total_aceptado_revisado' => null, 'iva_reducido' => null, 'excluir_rotativa' => null, "acabado_cubierta_id" => null, @@ -173,6 +174,7 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity "total_factor" => "?float", "total_factor_ponderado" => "?float", 'total_aceptado' => "?float", + 'total_aceptado_revisado' => "?float", 'iva_reducido' => "?boolean", 'excluir_rotativa' => "?boolean", "acabado_cubierta_id" => "int", diff --git a/ci4/app/Models/Presupuestos/PresupuestoDireccionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoDireccionesModel.php index 90da4d00..cc24fb30 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoDireccionesModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoDireccionesModel.php @@ -74,6 +74,7 @@ class PresupuestoDireccionesModel extends \App\Models\BaseModel $builder->where('t1.presupuesto_id', $presupuesto_id); $builder->join("lg_paises t2", "t1.pais_id = t2.id", "left"); + $builder->orderBy('t1.id', 'DESC'); return empty($search) ? $builder diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index 38f9aada..676e78b8 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -119,6 +119,7 @@ class PresupuestoModel extends \App\Models\BaseModel "total_descuento", "total_descuentoPercent", "total_presupuesto", + "total_aceptado_revisado", "total_precio_unidad", "total_factor", "total_factor_ponderado", diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php index 24eb02b6..31a2a04b 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/admin/_resumenPresupuestoItems.php @@ -44,13 +44,13 @@
Coste de envío
-
Precio de envío
-
+ class="autonumeric-resumen-currency">
Margen envío
+ class="autonumeric-resumen-currency">
+
Total envío base
+

@@ -69,7 +69,7 @@
-
Total
+
Total antes de descuento
Descuento (%)
@@ -118,28 +118,41 @@
+ +
+

El total aceptado y revisado tiene que ser mayor que total costes + precio de envío +

+
- estado_id == 2)? "disabled":"" ?> type="text" class="autonumeric-currency form-control text-center fs-5" - id="total_aceptado_revisado"> + estado_id == 2) ? "disabled" : "" ?> type="text" + class="autonumeric-currency form-control text-center fs-5" + id="total_aceptado_revisado">
-
- estado_id == 2): ?> + estado_id == 2): ?>
-
+
> + class="form-control text-center fs-5 autonumeric-resumen-currency" value="" >
- +

@@ -149,10 +162,6 @@

- - -
- - \ No newline at end of file + \ No newline at end of file diff --git a/httpdocs/assets/js/safekat/components/chat.js b/httpdocs/assets/js/safekat/components/chat.js index e0de09bf..043a6fef 100644 --- a/httpdocs/assets/js/safekat/components/chat.js +++ b/httpdocs/assets/js/safekat/components/chat.js @@ -68,7 +68,7 @@ class Chat { } if (this.chatHistoryBody[0]) { - console.log("History body"); + //console.log("History body"); this.scrollbarChatHistory = new PerfectScrollbar(this.chatHistoryBody[0], { wheelPropagation: false, suppressScrollX: true, diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js index 1606cd6e..c597c3ce 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/presupuestoAdminEdit.js @@ -120,9 +120,28 @@ class PresupuestoAdminEdit { this.tiradasAlternativas.init(); this.resumen.init(); - $('#btn_aceptar_revisado').on('click', function () { - - this.resumen.updateTotales({ updateLP: true, updateServicios: true, updateEnvio: true }); + $('#btn_ajustar_revisado').on('click', function () { + + this.resumen.updateTotales({ updateLP: true, updateServicios: true, updateEnvio: true }, true); + }.bind(this)); + + $('#total_aceptado_revisado').on('change', function () { + let totalCostes = AutoNumeric.getAutoNumericElement($('#totalCostes')[0]); + let envio_base = AutoNumeric.getAutoNumericElement($('#precioEnvios')[0]); + let autoTotalAceptado = AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]); + let total_aceptado_revisado = autoTotalAceptado.getNumber(); + + if (total_aceptado_revisado && total_aceptado_revisado != 0) { + const nuevoTotal = totalCostes.getNumber() + envio_base.getNumber(); + + if (total_aceptado_revisado < nuevoTotal) { + // Solo usá .set(), no .val() ni .html() + autoTotalAceptado.set(nuevoTotal); + total_aceptado_revisado = nuevoTotal; + } + + totalMargenes = total_aceptado_revisado - nuevoTotal; + } }.bind(this)); if (window.location.href.includes("edit")) { @@ -147,7 +166,7 @@ class PresupuestoAdminEdit { target.removeClass('d-none'); } }); - + $(document).on('update-presupuesto', this.updatePresupuesto.bind(this)); @@ -380,9 +399,10 @@ class PresupuestoAdminEdit { self.tipo_impresion.val(response.data.tipo_impresion); self.POD.val(response.data.POD); - $('#total_aceptado_revisado').val(response.data.total_aceptado_revisado); + AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]).set(response.data.total_aceptado_revisado); + $('#aprobado_by_at').html(response.data.aprobado_by_at); - + $('#created_by').html(response.data.created_by); $('#updated_by').html(response.data.updated_by); $('#created_at').html(response.data.created_at); @@ -628,7 +648,7 @@ class PresupuestoAdminEdit { const svgData = serializer.serializeToString(shapeSvgEl); const svgBlob = new Blob([svgData], { type: 'image/svg+xml;charset=utf-8' }); const svgUrl = URL.createObjectURL(svgBlob); - const img = new Image(shapeSvgEl.getBoundingClientRect().width,shapeSvgEl.getBoundingClientRect().height); + const img = new Image(shapeSvgEl.getBoundingClientRect().width, shapeSvgEl.getBoundingClientRect().height); img.onload = () => { const scaleFactor = 3; // Increase resolution (e.g., 2x, 3x) const canvas = document.createElement('canvas'); @@ -639,7 +659,7 @@ class PresupuestoAdminEdit { canvas.height = height * scaleFactor; const ctx = canvas.getContext('2d'); ctx.scale(scaleFactor, scaleFactor); - ctx.drawImage(img, 0,0,width,height); + ctx.drawImage(img, 0, 0, width, height); const pngUrl = canvas.toDataURL('image/png'); const downloadLink = document.createElement('a'); downloadLink.href = pngUrl; diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js index a67afda7..00170f69 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/envios.js @@ -41,14 +41,13 @@ class Envios { processing: true, autoWidth: true, responsive: true, - order: [[0, "asc"]], pageLength: 20, lengthChange: false, searching: false, paging: false, info: false, scrollX: true, - + ordering: false, columns: [ { 'data': 'tarifa_id' }, { 'data': 'cantidad' }, @@ -87,10 +86,10 @@ class Envios { { orderable: false, searchable: false, - targets: [$('#tableOfDireccionesEnvio').find("tr:first th").length - 1] + // all columns + targets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] + //targets: [$('#tableOfDireccionesEnvio').find("tr:first th").length - 1] }, - { "orderData": [0], "targets": 0 }, - ], language: { url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" diff --git a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js index bcedce0c..ca466e56 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoAdmin/sections/resumen.js @@ -26,22 +26,22 @@ class Resumen { // Mapear los valores a los elementos HTML por ID $("#totalCostePapel").val(resumen.total_coste_papel || 0); $("#totalCostePapel").html(resumen.total_coste_papel || 0); - $("#porcentajeMargenPapel").val(resumen.total_margenPercent_papel ? resumen.total_margenPercent_papel: 0); - $("#porcentajeMargenPapel").html(resumen.total_margenPercent_papel ? resumen.total_margenPercent_papel: 0); + $("#porcentajeMargenPapel").val(resumen.total_margenPercent_papel ? resumen.total_margenPercent_papel : 0); + $("#porcentajeMargenPapel").html(resumen.total_margenPercent_papel ? resumen.total_margenPercent_papel : 0); $("#margenPapel").val(resumen.total_margen_papel || 0); $("#margenPapel").html(resumen.total_margen_papel || 0); $("#totalCosteImpresion").val(resumen.total_coste_impresion || 0); $("#totalCosteImpresion").html(resumen.total_coste_impresion || 0); - $("#porcentajeMargenImpresion").val(resumen.total_margenPercent_impresion ? resumen.total_margenPercent_impresion: 0); - $("#porcentajeMargenImpresion").html(resumen.total_margenPercent_impresion ? resumen.total_margenPercent_impresion: 0); + $("#porcentajeMargenImpresion").val(resumen.total_margenPercent_impresion ? resumen.total_margenPercent_impresion : 0); + $("#porcentajeMargenImpresion").html(resumen.total_margenPercent_impresion ? resumen.total_margenPercent_impresion : 0); $("#margenImpresion").val(resumen.total_margen_impresion || 0); $("#margenImpresion").html(resumen.total_margen_impresion || 0); $("#totalServicios").html(resumen.total_coste_servicios || 0); $("#totalServicios").val(resumen.total_coste_servicios || 0); - $("#porcentajeMargenServicios").val(resumen.total_margenPercent_servicios ? resumen.total_margenPercent_servicios: 0); - $("#porcentajeMargenServicios").html(resumen.total_margenPercent_servicios ? resumen.total_margenPercent_servicios: 0); + $("#porcentajeMargenServicios").val(resumen.total_margenPercent_servicios ? resumen.total_margenPercent_servicios : 0); + $("#porcentajeMargenServicios").html(resumen.total_margenPercent_servicios ? resumen.total_margenPercent_servicios : 0); $("#margenServicios").val(resumen.total_margen_servicios || 0); $("#margenServicios").html(resumen.total_margen_servicios || 0); @@ -53,10 +53,10 @@ class Resumen { $("#margenEnvios").val(resumen.total_margen_envios || 0); $("#totalCostes").html(resumen.total_costes || 0).val(); - $("#porcentajeMargen").html(resumen.porcentajeMargen ? resumen.porcentajeMargen: 0); + $("#porcentajeMargen").html(resumen.porcentajeMargen ? resumen.porcentajeMargen : 0); $("#totalMargenes").html(resumen.total_margenes || 0); $("#totalCostes").val(resumen.total_costes || 0); - $("#porcentajeMargen").val(resumen.porcentajeMargen ? resumen.porcentajeMargen: 0); + $("#porcentajeMargen").val(resumen.porcentajeMargen ? resumen.porcentajeMargen : 0); $("#totalMargenes").val(resumen.total_margenes || 0); $("#totalAntesDescuento").html(resumen.total_antes_descuento || 0); @@ -64,14 +64,14 @@ class Resumen { $("#descuentoTotal").html(resumen.total_descuento || 0); $("#totalDespuesDecuento").html(resumen.total_presupuesto || 0).trigger("change") $("#precioUnidadPresupuesto").html(resumen.total_precio_unidad || 0); - $("#factor").html(resumen.total_factor|| 0); - $("#factor_ponderado").html(resumen.total_factor_ponderado|| 0); + $("#factor").html(resumen.total_factor || 0); + $("#factor_ponderado").html(resumen.total_factor_ponderado || 0); $("#totalAntesDescuento").val(resumen.total_antes_descuento || 0); $("#descuentoTotal").val(resumen.total_descuento || 0); $("#totalDespuesDecuento").val(resumen.total_presupuesto || 0).trigger("change") $("#precioUnidadPresupuesto").val(resumen.total_precio_unidad || 0); - $("#factor").val(resumen.total_factor|| 0); - $("#factor_ponderado").val(resumen.total_factor_ponderado|| 0); + $("#factor").val(resumen.total_factor || 0); + $("#factor_ponderado").val(resumen.total_factor_ponderado || 0); if (resumen.total_aceptado !== undefined) { $("#totalAceptado").html(resumen.total_aceptado || 0); @@ -94,7 +94,7 @@ class Resumen { - async updateTotales(data = {}) { + async updateTotales(data = {}, ajustar = false) { const self = this; @@ -181,7 +181,7 @@ class Resumen { $('#porcentajeMargenImpresion').html(porcentajeMargenImpresion).val(porcentajeMargenImpresion.toFixed(2)) $('#totalCosteImpresion').html(totalImpresion).val(totalImpresion.toFixed(2)) $('#margenImpresion').html(margenImpresion).val(margenImpresion.toFixed(2)) - + } else { @@ -297,18 +297,45 @@ class Resumen { margenEnvios = parseFloat($('#margenEnvios').attr('val')) } - let totalCostes = parseFloat(totalPapel.toFixed(2)) + parseFloat(totalImpresion.toFixed(2)) + let totalCostes = parseFloat(totalPapel.toFixed(2)) + parseFloat(totalImpresion.toFixed(2)) + parseFloat(totalServicios.toFixed(2)) + parseFloat(totalEnvios.toFixed(2)) let totalMargenes = parseFloat(margenPapel.toFixed(2)) + parseFloat(margenImpresion.toFixed(2)) + parseFloat(margenServicios.toFixed(2)) + parseFloat(margenEnvios.toFixed(2)) - let total_aceptado_revisado = AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]).getNumber() - if(total_aceptado_revisado != '' && total_aceptado_revisado != undefined && - total_aceptado_revisado != null && total_aceptado_revisado != 0){ - if(total_aceptado_revisado < totalCostes){ - total_aceptado_revisado = totalCoste ; + let autoTotalAceptado = AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]); + let total_aceptado_revisado = autoTotalAceptado.getNumber(); + + if (ajustar) { + if (total_aceptado_revisado && total_aceptado_revisado != 0) { + const nuevoTotal = totalCostes + totalEnvios_base; + + + if (total_aceptado_revisado < nuevoTotal) { + + if($('#total_aceptado')){ + $('#div_ajustar_error').removeClass('d-none'); + $('#error_recalcular_margen').hide().empty(). + html('El presupuesto está confirmado y el total coste + precio de envio es menor que el total aceptado y revisado'). + fadeIn("slow", function(){ + setTimeout(function(){ + $('#div_ajustar_error').addClass('d-none'); + }, 5000); + }); + + } + else{ + autoTotalAceptado.set(nuevoTotal); + total_aceptado_revisado = nuevoTotal; + } + + + } - totalMargenes = parseFloat(total_aceptado_revisado)- totalCostes; + + if(!($('#total_aceptado') && total_aceptado_revisado < nuevoTotal)){ + totalMargenes = total_aceptado_revisado - nuevoTotal; + } + } } let porcentajeMargen = totalCostes + totalMargenes > 0 ? (100 * totalMargenes / (totalCostes + totalMargenes)).toFixed(0) : 0 @@ -319,11 +346,10 @@ class Resumen { if ($('#total_descuentoPercent').val() < 0) { $('#total_descuentoPercent').val(0) } - let totalAntesDescuento = totalCostes + totalMargenes + parseFloat(totalEnvios.toFixed(2)) + totalEnvios_base; + let totalAntesDescuento = totalCostes + totalMargenes + totalEnvios_base; let totalDescuento = totalAntesDescuento * parseInt($('#total_descuentoPercent').val() || 0) / 100 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').html(totalAntesDescuento).val(totalAntesDescuento.toFixed(2)) $('#descuentoTotal').html(totalDescuento).val(totalDescuento.toFixed(2)) @@ -381,6 +407,12 @@ class Resumen { data.total_aceptado = $('#totalDespuesDecuento').val(); } + let autoTotalAceptado = AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]); + let total_aceptado_revisado = autoTotalAceptado.getNumber(); + if (total_aceptado_revisado && total_aceptado_revisado != 0) { + data.total_aceptado_revisado = total_aceptado_revisado; + } + return data; }