diff --git a/tienda_ilusion/don_confiao/static/js/calculate_subtotal_line.js b/tienda_ilusion/don_confiao/static/js/calculate_subtotal_line.js new file mode 100644 index 0000000..6f10690 --- /dev/null +++ b/tienda_ilusion/don_confiao/static/js/calculate_subtotal_line.js @@ -0,0 +1,50 @@ +const quantity_lineRegexSelector = `[id^="${idPrefix}"][id$="${quantitySuffix}"]`; +const price_lineRegexSelector = `[id^="${idPrefix}"][id$="${priceSuffix}"]`; + +function insertSubtotalField() { + // Selecciona la fila de precio unitario para añadir la fila del subtotal después de ella + const unitPriceRow = document.querySelector('input[id="id_saleline_set-0-unit_price"]').closest('tr'); + + // Crear una nueva fila para el subtotal + const subtotalRow = document.createElement('tr'); + subtotalRow.innerHTML = ` + + + `; + + // Insertar la fila del subtotal después de la fila del precio unitario + unitPriceRow.after(subtotalRow); + } + +function calculateSubtotal(id) { + const quantityElement = document.getElementById(`id_saleline_set-${id}-quantity`); + const unitPriceElement = document.getElementById(`id_saleline_set-${id}-unit_price`); + const subtotalElement = document.getElementById(`id_saleline_set-${id}-subtotal`); + + const quantity = parseFloat(quantityElement.value) || 0; + const unitPrice = parseFloat(unitPriceElement.value) || 0; + const subtotal = quantity * unitPrice; + + subtotalElement.value = subtotal.toFixed(2); + } + + // Inserta el campo subtotal al cargar la página + window.addEventListener('load', () => { + insertSubtotalField(); + + complete_form.addEventListener('change', function(event){ + const quantityInputs = document.querySelectorAll(quantity_lineRegexSelector); + const ids = Array.prototype.map.call(quantityInputs, function(input) { + return input.id.match(/\d+/)[0]; + }); + + ids.forEach(function(id) { + if (event.target.matches(quantity_lineRegexSelector)) { + calculateSubtotal(id); + } + if (event.target.matches(price_lineRegexSelector)) { + calculateSubtotal(id); + } + }) + }); + }); diff --git a/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html b/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html index 2095a43..c21690b 100644 --- a/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html +++ b/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html @@ -18,4 +18,5 @@
+