form.php

Listado

Formulario

Total: $0.00

----------------------------------------------------------------------------------------------------------------------------------------------------- grillas_catalogo.php '; // Agregar los encabezados de la grilla echo '
Código
'; echo '
Artículo
'; echo '
'; echo '
'; $contador = 0; // Contador de filas llenas $color_clase = 'fila-color1'; // Alternancia de colores para las filas foreach ($data as $item) { $contador++; // Alternar el color de la fila $color_clase = ($color_clase == 'fila-color1') ? 'fila-color2' : 'fila-color1'; echo '
' . htmlspecialchars($item['codart']) . '
'; echo '
' . htmlspecialchars($item['descripcion']) . '
'; echo '
'; echo '
'; } for ($j = $contador; $j < $filas_vacias; $j++) { echo '
'; echo '
'; echo '
'; echo '
'; } echo ''; } ?> ----------------------------------------------------------------------------------------------------------------------------------------------------- boton_elegir.php Elegir"; } ?> ----------------------------------------------------------------------------------------------------------------------------------------------------- articulos.js $(document).ready(function() { // Función para agregar o actualizar artículos en la tabla $('.elegir-btn').on('click', function() { // Obtener los datos del artículo var codigo = $(this).data('codigo'); var descripcion = $(this).data('descripcion'); var precio = parseFloat($(this).data('precio').replace('$', '')); // Buscar todas las filas que coinciden con el código var filasExistentes = $('#formulario tbody tr').filter(function() { return $(this).find('td').eq(0).text() === codigo; }); // Verificar si hay alguna fila existente if (filasExistentes.length === 0) { var cantidad = 1; // Cantidad inicial es 1 var subtotal = cantidad * precio; // Crear la nueva fila y agregarla a la tabla var nuevaFila = '' + '' + codigo + '' + '' + descripcion + '' + '$' + precio.toFixed(2) + '' + '' + '' + cantidad + '' + '' + '$' + subtotal.toFixed(2) + '' + '' + ''; $('#formulario tbody').append(nuevaFila); } else { // Si ya existe, sumar la cantidad a la primera fila encontrada var filaExistente = filasExistentes.first(); var cantidadExistente = parseInt(filaExistente.find('td').eq(4).text()); // Aseguramos que accedemos al índice correcto var cantidadNueva = cantidadExistente + 1; // Aumentamos en 1 la cantidad // Calcular el nuevo subtotal var precioExistente = parseFloat(filaExistente.find('td').eq(2).text().replace('$', '')); var subtotalNuevo = cantidadNueva * precioExistente; // Actualizar la fila con la nueva cantidad y subtotal filaExistente.find('td').eq(4).text(cantidadNueva); // Actualizamos la cantidad filaExistente.find('td').eq(6).text('$' + subtotalNuevo.toFixed(2)); // Actualizamos el subtotal } // Actualizar el total actualizarTotal(); }); // Detectar doble clic en la celda de cantidad $('#formulario').on('dblclick', 'td.cantidad', function() { var celdaCantidad = $(this); var cantidadActual = parseInt(celdaCantidad.text()); // Reemplazar la celda con un campo de entrada var inputCantidad = $(''); celdaCantidad.html(inputCantidad); inputCantidad.focus(); // Guardar el nuevo valor al presionar Enter o hacer clic fuera del campo de entrada inputCantidad.on('blur keyup', function(event) { if (event.type === 'blur' || event.key === 'Enter') { var cantidadNueva = parseInt($(this).val()); if (!isNaN(cantidadNueva) && cantidadNueva > 0) { celdaCantidad.text(cantidadNueva); // Actualizar el subtotal var fila = celdaCantidad.closest('tr'); var precio = parseFloat(fila.find('td').eq(2).text().replace('$', '')); var subtotalNuevo = cantidadNueva * precio; fila.find('td').eq(6).text('$' + subtotalNuevo.toFixed(2)); // Actualizar el total actualizarTotal(); } else { celdaCantidad.text(cantidadActual); // Revertir al valor original si la entrada no es válida } } }); }); // Event listeners para los botones "-" y "+" $('#formulario').on('click', '.btn-restar', function() { var fila = $(this).closest('tr'); var cantidad = parseInt(fila.find('td.cantidad').text()); var precio = parseFloat(fila.find('td').eq(2).text().replace('$', '')); if (cantidad > 1) { cantidad -= 1; fila.find('td.cantidad').text(cantidad); var nuevoSubtotal = cantidad * precio; fila.find('td').eq(6).text('$' + nuevoSubtotal.toFixed(2)); } actualizarTotal(); }); $('#formulario').on('click', '.btn-sumar', function() { var fila = $(this).closest('tr'); var cantidad = parseInt(fila.find('td.cantidad').text()); var precio = parseFloat(fila.find('td').eq(2).text().replace('$', '')); cantidad += 1; fila.find('td.cantidad').text(cantidad); var nuevoSubtotal = cantidad * precio; fila.find('td').eq(6).text('$' + nuevoSubtotal.toFixed(2)); actualizarTotal(); }); // Función para eliminar fila $('#formulario').on('click', '.btn-eliminar', function() { $(this).closest('tr').remove(); actualizarTotal(); }); // Actualizar el total function actualizarTotal() { var total = 0; $('#formulario tbody tr').each(function() { var subtotal = parseFloat($(this).find('td').eq(6).text().replace('$', '')); total += subtotal; }); $('#total').text('$' + total.toFixed(2)); } });