JavaScript - Sumar columna tabla cuando se agregan filas

 
Vista:
sin imagen de perfil
Val: 35
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Sumar columna tabla cuando se agregan filas

Publicado por Jonathan (23 intervenciones) el 26/12/2019 17:21:49
Tengo un input, que cada ves que ingreso un código de barras, se agrega una nueva fila a una tabla con cantidad de 1, si el código ya existe en la tabla, se aumenta la cantidad +1, si no existe se agrega una nueva fila
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function datos_repetidos() {
    var buscar = $("#busqueda").val();
    var existe = false;
    $(".tabla_existencias tbody tr").find('td:eq(0)').each(function () {
        var codigo = $(this).html();
        if(codigo == buscar){
            var trDelResultado = $(this).parent();
            var cantidad = parseInt(trDelResultado.find("td:eq(2)").html());
            var precio = parseInt(trDelResultado.find("td:eq(3)").html());
            trDelResultado.find("td:eq(2)").html(cantidad+1);
            trDelResultado.find("td:eq(4)").html((cantidad+1)*precio);
            existe = true;
        }
    });
 
    if (!existe){
        var action = 'fetch_data';
            var busqueda = document.getElementById("busqueda").value;
            $.ajax({
                url:"ventas.php",
                method: "POST",
                dataType: "json",
                data:{ action:action,busqueda:busqueda},
                success:function(data){
                    $('.listado_ventas tbody').append(data.html2);
                }
            });
    }
    calcular();
    document.getElementById("busqueda").value = "";
}

Todo bien hasta ahí, ahora quiero que cada ves que se agreguen filas, como valla sumando la cantidad en un input, con el siguiente codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function calcular() {
    // obtenemos todas las filas del tbody
    var filas=document.querySelectorAll(".tabla_existencias tbody tr");
 
    var total=0;
 
    // recorremos cada una de las filas
    filas.forEach(function(e) {
 
        // obtenemos las columnas de cada fila
        var columnas=e.querySelectorAll("td");
 
        // obtenemos los valores de la cantidad y importe
        var cantidad = parseInt(columnas[2].innerHTML);
		total+=cantidad;
 
    });
 
    $('#total').val(total)
 
}

Pero el problema es que cuando agrego una fila, me muestra cantidad 0 y cuando agrego una segunda fila y aumenta la cantidad a 2, entonces no parte sumando de 1.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Sumar columna tabla cuando se agregan filas

Publicado por Alejandro (532 intervenciones) el 27/12/2019 00:58:04
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
El problema es que tu AJAX es asíncrono, quiere decir que continua con el código sin esperar la respuesta del AJAX.
Mueve la linea 29 calcular() despues de la linaa 25
1
2
$('.listado_ventas tbody').append(data.html2);
calcular();
Eso debería ser suficiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Sumar columna tabla cuando se agregan filas

Publicado por Jonathan (23 intervenciones) el 27/12/2019 14:59:06
Muchas gracias estimado, me sirvió su respuesta, ahora en la misma funcion calcular, estoy sumando los totales y los impuestos, pero mi problema viene con el totalbruto, ya que si yo no agrego la funcion tofixed() el numero se muestra así 10084.03361344538, pero quiero que se muestre como numero entero, entonces con la funcion tofixed(), se muestra así 010084, porque se agrega ese 0 antes.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function calcular() {
    var filas=document.querySelectorAll(".tabla_existencias tbody tr");
    var articulos = 0;
    var totalbruto = 0;
    var totaliva = 0;
    var totalneto = 0;
    filas.forEach(function(e) {
        var columnas=e.querySelectorAll("td");
        var cantidad = parseInt(columnas[2].innerHTML);
        var totbruto = (parseInt(columnas[4].innerHTML))/1.19;
        var totiva = (parseInt(columnas[4].innerHTML))*0.19;
        var totneto = parseInt(columnas[4].innerHTML);
        articulos += cantidad;
        totalbruto += totbruto.toFixed();
        totaliva += totiva;
        totalneto += totneto;
    });
    $('#narticulos').val(articulos);
    $('#totbruto').val(totalbruto);
    $('#iva').val(totaliva);
    $('#totneto').val(totalneto);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Sumar columna tabla cuando se agregan filas

Publicado por Alejandro (532 intervenciones) el 27/12/2019 15:54:19
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
toFixed retorna un String, totalbruto += totbruto.toFixed(); equivale a concatenar totalbruto y el resultado de la conversión de totbruto.toFixed()
1
totalbruto = 0+'10084';

Me parece que lo puedes seguir haciendo con parseInt()
1
totalbruto += parseInt(totbruto);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar