Feat: Calculo de subtotal para muchas lineas
This commit is contained in:
parent
c10aa4b9ca
commit
45199030a0
@ -1,3 +1,6 @@
|
|||||||
|
const quantity_lineRegexSelector = `[id^="${idPrefix}"][id$="${quantitySuffix}"]`;
|
||||||
|
const price_lineRegexSelector = `[id^="${idPrefix}"][id$="${priceSuffix}"]`;
|
||||||
|
|
||||||
function insertSubtotalField() {
|
function insertSubtotalField() {
|
||||||
// Selecciona la fila de precio unitario para añadir la fila del subtotal después de ella
|
// 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');
|
const unitPriceRow = document.querySelector('input[id="id_saleline_set-0-unit_price"]').closest('tr');
|
||||||
@ -13,10 +16,10 @@ function insertSubtotalField() {
|
|||||||
unitPriceRow.after(subtotalRow);
|
unitPriceRow.after(subtotalRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
function calculateSubtotal() {
|
function calculateSubtotal(id) {
|
||||||
const quantityElement = document.getElementById('id_saleline_set-0-quantity');
|
const quantityElement = document.getElementById(`id_saleline_set-${id}-quantity`);
|
||||||
const unitPriceElement = document.getElementById('id_saleline_set-0-unit_price');
|
const unitPriceElement = document.getElementById(`id_saleline_set-${id}-unit_price`);
|
||||||
const subtotalElement = document.getElementById('id_saleline_set-0-subtotal');
|
const subtotalElement = document.getElementById(`id_saleline_set-${id}-subtotal`);
|
||||||
|
|
||||||
const quantity = parseFloat(quantityElement.value) || 0;
|
const quantity = parseFloat(quantityElement.value) || 0;
|
||||||
const unitPrice = parseFloat(unitPriceElement.value) || 0;
|
const unitPrice = parseFloat(unitPriceElement.value) || 0;
|
||||||
@ -29,7 +32,19 @@ function calculateSubtotal() {
|
|||||||
window.addEventListener('load', () => {
|
window.addEventListener('load', () => {
|
||||||
insertSubtotalField();
|
insertSubtotalField();
|
||||||
|
|
||||||
// Agregar los eventos para calcular el subtotal cuando cambie la cantidad o el precio unitario
|
complete_form.addEventListener('change', function(event){
|
||||||
document.getElementById('id_saleline_set-0-quantity').addEventListener('input', calculateSubtotal);
|
const quantityInputs = document.querySelectorAll(quantity_lineRegexSelector);
|
||||||
document.getElementById('id_saleline_set-0-unit_price').addEventListener('input', calculateSubtotal);
|
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);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user