Bueno, tengo un artículo en localStorage llamado products . Este elemento contiene una Array de JSON Objects que contiene detalles de productos como quantity , unit_price , etc.
Aquí está la función de activación para agregar productos a la tabla y actualizar la tabla...
function addProduct() { try { //Add product to localstorage addProductToLocalStorage(); //Update pre order table (products) updateTable(); showAlert('Product added!', 'success', 'alert'); } catch (err) { console.log(err); } }Este artículo se asigna cuando el usuario quiere agregar productos a una factura, lo uso para calcular los valores de subtotal, impuestos y costo total.
Aquí es donde agrego el producto a los products en localStorage
function addProductToLocalStorage() { try { //Temporary product let product = JSON.parse(localStorage.getItem("tempProduct")); let item = JSON.parse(localStorage.getItem("products")); //Check if the item already exists let products = item ? item : []; products.push(product); localStorage.setItem("products", JSON.stringify(products)); //Delete item localStorage.removeItem("tempProduct"); } catch (error) { console.log(error); } } tempProduct es un elemento que contiene información sobre el producto que está agregando el usuario, esto se debe a que almaceno información sobre el producto del servidor que no se imprime al usuario, es solo para hacer cálculos.
El artículo se compensa cuando se crea la factura.
function createInvoice(){ ... localStorage.removeItem("products"); }El problema aquí es que si el usuario quiere crear dos o más facturas y agregar productos a las facturas al mismo tiempo, el elemento almacenará los datos de ambas facturas y hará un lío con los valores.
Estoy pensando que tal vez establecer nombres dinámicos para el elemento, como un token único para cada ventana 'Crear Inovice' abierta, me ayudará con esto, pero no sé si hay una mejor solución. Déjame saber cómo lidiarías con esto.