diff --git a/src/server/router/admin_router.js b/src/server/router/admin_router.js index e729d32..5f16a0f 100755 --- a/src/server/router/admin_router.js +++ b/src/server/router/admin_router.js @@ -310,7 +310,7 @@ router.post('/import', authenticate, async (req, res) => { } } - const cancella_categorie = true; + const cancella_categorie = false; if (cancella_categorie) { await CatProd.deleteMany({ idapp }); @@ -377,7 +377,7 @@ router.post('/import', authenticate, async (req, res) => { versione = shared_consts.VERSIONE.STREAMING; else versione = 100; - + if (versione === shared_consts.VERSIONE.DOWNLOAD) productInfo.productType = shared_consts.PRODUCTTYPE.DOWNLOAD; else if (versione === shared_consts.VERSIONE.DVD) @@ -563,7 +563,7 @@ router.post('/import', authenticate, async (req, res) => { if (!recProductExist) { isnuovo = true; } - + let arrvariazioni = []; if (isnuovo) { myproduct.isbn = product.isbn; @@ -579,8 +579,17 @@ router.post('/import', authenticate, async (req, res) => { } } + // cerca l'indice della versione in arrvariazioni + let ind = arrvariazioni.findIndex(x => x.versione === versione); + let nuovaVariazione = ind < 0; + // let variazione = {}; + if (!nuovaVariazione) { + // Mantieni intatte questi campi del RECORD su DB: + variazione.quantita = arrvariazioni[ind].quantita; + } + variazione.active = true; // ++ ?? variazione.versione = versione; variazione.status = product.Stato ? product.Stato : null; @@ -591,7 +600,9 @@ router.post('/import', authenticate, async (req, res) => { variazione.edizione = product.Edizione ? product.Edizione : ''; variazione.eta = product.eta ? product.eta : ''; variazione.addtocart_link = product.addtocart_link ? product.addtocart_link : ''; - if (!options.aggiornaStockQty && esisteindb && !isnuovo) { + + + if (!options.aggiornaStockQty && !nuovaVariazione) { // non aggiornare la Quantita in magazzino } else if (product.Quantita) { variazione.quantita = parseInt(product.Quantita); @@ -600,13 +611,14 @@ router.post('/import', authenticate, async (req, res) => { // ----------------------------- - // cerca l'indice della versione in arrvariazioni - let ind = arrvariazioni.findIndex(x => x.versione === versione); if (ind >= 0) arrvariazioni[ind] = variazione; // aggiorna il record "ind" in arrvariazioni else arrvariazioni.push(variazione); // aggiunge un nuovo record in arrvariazioni + // Effettua l'ordinamento seguendo la "versione" + arrvariazioni.sort((a, b) => a.versione - b.versione); + // Inserisce o aggiorna il record variazione nell'array delle variazioni, in base a "versione" if (isnuovo) { myproduct.arrvariazioni = arrvariazioni; @@ -635,7 +647,52 @@ router.post('/import', authenticate, async (req, res) => { updated++; let modif = ''; for (const field of arrfieldchange) { - modif += field + ': ' + recold[field] + ' -> ' + recnew[field] + ' | '; + if (field === 'arrvariazioni') { + modif += field + ': ' + + // Controlla quali campi sono variati tra recold.arrvariazioni e recnew.arrvariazioni + for (const variazione of recnew.arrvariazioni) { + // trova la versione in recold.arrvariazioni + let ind = recold.arrvariazioni.findIndex(x => x.versione === variazione.versione); + + if (ind < 0) { + modif += 'Nuova Variazione [' + variazione.versione + '] ' + variazione.status + ' | Price: ' + variazione.price + ' -> Sale_Price: ' + variazione.sale_price + ' | '; + } else { + let oldvariazione = recold.arrvariazioni[ind]; + if (oldvariazione.status !== variazione.status) { + modif += 'Variazione [' + oldvariazione.versione + '] ' + variazione.status + ' -> ' + variazione.status; + } + if (oldvariazione.price !== variazione.price) { + modif += ' | Price: ' + oldvariazione.price + ' -> ' + variazione.price; + } + if (oldvariazione.sale_price !== variazione.sale_price) { + modif += ' | Sale Price: ' + oldvariazione.sale_price + ' -> ' + variazione.sale_price; + } + if (oldvariazione.formato !== variazione.formato) { + modif += ' | Formato: ' + oldvariazione.formato + ' -> ' + variazione.formato; + } + if (oldvariazione.tipologia !== variazione.tipologia) { + modif += ' | Tipologia: ' + oldvariazione.tipologia + ' -> ' + variazione.tipologia; + } + if (oldvariazione.edizione !== variazione.edizione) { + modif += ' | Edizione: ' + oldvariazione.edizione + ' -> ' + variazione.edizione; + } + if (oldvariazione.eta !== variazione.eta) { + modif += ' | Età: ' + oldvariazione.eta + ' -> ' + variazione.eta; + } + if (oldvariazione.preOrderDate !== variazione.preOrderDate) { + modif += ' | PreOrderDate: ' + oldvariazione.preOrderDate + ' -> ' + variazione.preOrderDate; + } + if (oldvariazione.addtocart_link !== variazione.addtocart_link) { + modif += ' | AddToCart: ' + oldvariazione.addtocart_link + ' -> ' + variazione.addtocart_link; + } + } + } + + } else { + modif += field + ': ' + recold[field] + ' -> ' + recnew[field] + ' | '; + } + } console.log('Changed: [' + indprod + '/' + dataObjects.length + ']', productInfo.name, '[' + myproduct.idProductInfo + '] : ' + modif);