- Corretta query di estrapolazione libri su GM (Marco)
- aggiornato bestseller su fatlast1Y - non mostrare piu i libri che non hanno l'immagine (sul catalogo). - metti online i compressi
This commit is contained in:
@@ -221,8 +221,8 @@ exports.getTableContentBase = async (options) => {
|
|||||||
` +
|
` +
|
||||||
(options.campispeciali
|
(options.campispeciali
|
||||||
? `
|
? `
|
||||||
,f.DescrizioneStatoProdotto
|
|
||||||
,i.DescrizioneTipologia
|
,i.DescrizioneTipologia
|
||||||
|
,f.DescrizioneStatoProdotto
|
||||||
,n.DescrizioneFormato
|
,n.DescrizioneFormato
|
||||||
,y.DescrizioneCollana
|
,y.DescrizioneCollana
|
||||||
,z.AutoriCompleti
|
,z.AutoriCompleti
|
||||||
@@ -230,33 +230,51 @@ exports.getTableContentBase = async (options) => {
|
|||||||
,z3.CasaEditrice`
|
,z3.CasaEditrice`
|
||||||
: ``) +
|
: ``) +
|
||||||
(options.showQtaDisponibile ? ` ,q.QtaDisponibile ` : ``) +
|
(options.showQtaDisponibile ? ` ,q.QtaDisponibile ` : ``) +
|
||||||
` FROM T_WEB_Articoli T
|
` FROM T_WEB_Articoli T WITH (noLock)
|
||||||
JOIN(
|
RIGHT JOIN(
|
||||||
SELECT IdArticolo, MAX(DataOra) AS data
|
SELECT IdArticolo, MAX(DataOra) AS data
|
||||||
FROM T_WEB_Articoli
|
FROM T_WEB_Articoli
|
||||||
GROUP BY IdArticolo
|
GROUP BY IdArticolo
|
||||||
) b ON T.IdArticolo = b.IdArticolo AND T.DataOra = b.data ` +
|
) b ON T.IdArticolo = b.IdArticolo AND T.DataOra = b.data ` +
|
||||||
(options.campispeciali
|
(options.campispeciali
|
||||||
? ` LEFT JOIN(
|
? `
|
||||||
SELECT e.IdStatoProdotto, e.Descrizione as DescrizioneStatoProdotto
|
RIGHT JOIN
|
||||||
FROM T_WEB_StatiProdotto e
|
( SELECT
|
||||||
JOIN(
|
e.IdStatoProdotto,
|
||||||
SELECT IdStatoProdotto, MAX(DataOra) as data1
|
e.Descrizione as DescrizioneStatoProdotto
|
||||||
FROM T_WEB_StatiProdotto
|
FROM
|
||||||
GROUP BY IdStatoProdotto
|
T_WEB_StatiProdotto e
|
||||||
) c ON e.IdStatoProdotto = c.IdStatoProdotto AND e.DataOra = c.data1
|
JOIN
|
||||||
) f ON T.IdStatoProdotto = f.IdStatoProdotto
|
(
|
||||||
LEFT JOIN(
|
SELECT
|
||||||
SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia
|
IdStatoProdotto,
|
||||||
FROM T_WEB_Tipologie g
|
MAX(DataOra) as data1
|
||||||
|
FROM
|
||||||
|
T_WEB_StatiProdotto
|
||||||
|
GROUP BY
|
||||||
|
IdStatoProdotto ) c
|
||||||
|
ON
|
||||||
|
e.IdStatoProdotto = c.IdStatoProdotto
|
||||||
|
AND e.DataOra = c.data1 ) f
|
||||||
|
ON
|
||||||
|
T.IdStatoProdotto = f.IdStatoProdotto
|
||||||
|
|
||||||
|
RIGHT JOIN(
|
||||||
|
SELECT g.IdTipologia,
|
||||||
|
g.Descrizione as DescrizioneTipologia
|
||||||
|
FROM
|
||||||
|
T_WEB_Tipologie g
|
||||||
JOIN(
|
JOIN(
|
||||||
SELECT IdTipologia, MAX(DataOra) as data1
|
SELECT IdTipologia, MAX(DataOra) as data1
|
||||||
FROM T_WEB_Tipologie
|
FROM
|
||||||
|
T_WEB_Tipologie
|
||||||
GROUP BY IdTipologia
|
GROUP BY IdTipologia
|
||||||
) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1
|
) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1
|
||||||
) i ON T.IdTipologia = i.IdTipologia
|
) i ON
|
||||||
LEFT JOIN(
|
T.IdTipologia = i.IdTipologia
|
||||||
SELECT l.IdTipoFormato, l.Descrizione as DescrizioneFormato
|
RIGHT JOIN(
|
||||||
|
SELECT l.IdTipoFormato,
|
||||||
|
l.Descrizione as DescrizioneFormato
|
||||||
FROM T_WEB_TipiFormato l
|
FROM T_WEB_TipiFormato l
|
||||||
JOIN(
|
JOIN(
|
||||||
SELECT IdTipoFormato, MAX(DataOra) as data1
|
SELECT IdTipoFormato, MAX(DataOra) as data1
|
||||||
@@ -264,16 +282,18 @@ exports.getTableContentBase = async (options) => {
|
|||||||
GROUP BY IdTipoFormato
|
GROUP BY IdTipoFormato
|
||||||
) m ON l.IdTipoFormato = m.IdTipoFormato AND l.DataOra = m.data1
|
) m ON l.IdTipoFormato = m.IdTipoFormato AND l.DataOra = m.data1
|
||||||
) n ON T.IdTipoFormato = n.IdTipoFormato
|
) n ON T.IdTipoFormato = n.IdTipoFormato
|
||||||
LEFT JOIN(
|
RIGHT JOIN(
|
||||||
SELECT v.IdCollana, v.Descrizione as DescrizioneCollana
|
SELECT v.IdCollana,
|
||||||
|
v.Descrizione as DescrizioneCollana
|
||||||
FROM T_WEB_Collane v
|
FROM T_WEB_Collane v
|
||||||
INNER JOIN(
|
INNER JOIN(
|
||||||
SELECT IdCollana, MAX(ID) as MaxID
|
SELECT IdCollana,
|
||||||
|
MAX(ID) as MaxID
|
||||||
FROM T_WEB_Collane
|
FROM T_WEB_Collane
|
||||||
GROUP BY IdCollana
|
GROUP BY IdCollana
|
||||||
) x ON v.IdCollana = x.IdCollana AND v.ID = x.MaxID
|
) x ON v.IdCollana = x.IdCollana AND v.ID = x.MaxID
|
||||||
) y ON T.IdCollana = y.IdCollana
|
) y ON T.IdCollana = y.IdCollana
|
||||||
LEFT JOIN(
|
RIGHT JOIN(
|
||||||
SELECT g2.IdArgomento, g2.Descrizione as DescrArgomento
|
SELECT g2.IdArgomento, g2.Descrizione as DescrArgomento
|
||||||
FROM T_WEB_Argomenti g2
|
FROM T_WEB_Argomenti g2
|
||||||
INNER JOIN(
|
INNER JOIN(
|
||||||
@@ -282,7 +302,30 @@ exports.getTableContentBase = async (options) => {
|
|||||||
GROUP BY IdArgomento
|
GROUP BY IdArgomento
|
||||||
) h ON g2.IdArgomento = h.IdArgomento AND g2.DataOra = h.data12
|
) h ON g2.IdArgomento = h.IdArgomento AND g2.DataOra = h.data12
|
||||||
) i2 ON T.ListaArgomenti = i2.IdArgomento
|
) i2 ON T.ListaArgomenti = i2.IdArgomento
|
||||||
LEFT JOIN(
|
`+
|
||||||
|
(options.showQtaDisponibile
|
||||||
|
|
||||||
|
? ` RIGHT JOIN(
|
||||||
|
SELECT o.Codice, o.QtaDisponibile
|
||||||
|
FROM T_WEB_Disponibile o
|
||||||
|
JOIN(
|
||||||
|
SELECT Codice, MAX(DataOra) as data1
|
||||||
|
FROM T_WEB_Disponibile
|
||||||
|
GROUP BY Codice
|
||||||
|
) p ON o.Codice = p.Codice AND o.DataOra = p.data1
|
||||||
|
) q ON T.IdArticolo = q.Codice`
|
||||||
|
: ``) +
|
||||||
|
` RIGHT JOIN(
|
||||||
|
SELECT a3.IdMarchioEditoriale, a3.Descrizione as CasaEditrice
|
||||||
|
FROM T_WEB_MarchiEditoriali a3
|
||||||
|
JOIN(
|
||||||
|
SELECT IdMarchioEditoriale, MAX(DataOra) as maxData
|
||||||
|
FROM T_WEB_MarchiEditoriali
|
||||||
|
GROUP BY IdMarchioEditoriale
|
||||||
|
) aa3 ON a3.IdMarchioEditoriale = aa3.IdMarchioEditoriale AND a3.DataOra = aa3.maxData
|
||||||
|
) z3 ON T.IdMarchioEditoriale = z3.IdMarchioEditoriale
|
||||||
|
|
||||||
|
RIGHT JOIN(
|
||||||
SELECT
|
SELECT
|
||||||
T1.IdArticolo,
|
T1.IdArticolo,
|
||||||
STUFF((
|
STUFF((
|
||||||
@@ -297,7 +340,7 @@ exports.getTableContentBase = async (options) => {
|
|||||||
JOIN(
|
JOIN(
|
||||||
SELECT a.IdAutore, CONCAT(a.Nome, ' ', a.Cognome) AS AutoreCompleto
|
SELECT a.IdAutore, CONCAT(a.Nome, ' ', a.Cognome) AS AutoreCompleto
|
||||||
FROM T_WEB_Autori a
|
FROM T_WEB_Autori a
|
||||||
JOIN(
|
RIGHT JOIN(
|
||||||
SELECT IdAutore, MAX(DataOra) AS maxData
|
SELECT IdAutore, MAX(DataOra) AS maxData
|
||||||
FROM T_WEB_Autori
|
FROM T_WEB_Autori
|
||||||
GROUP BY IdAutore
|
GROUP BY IdAutore
|
||||||
@@ -306,28 +349,10 @@ exports.getTableContentBase = async (options) => {
|
|||||||
FOR XML PATH(''), TYPE
|
FOR XML PATH(''), TYPE
|
||||||
).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS AutoriCompleti
|
).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS AutoriCompleti
|
||||||
FROM T_WEB_Articoli T1
|
FROM T_WEB_Articoli T1
|
||||||
GROUP BY T1.IdArticolo, T1.ListaAutori
|
WHERE t1.DataOra = (select max(DataOra) AS DataOra from T_web_articoli As h WHERE h.IdArticolo = T1.IdArticolo)
|
||||||
) z ON T.IdArticolo = z.IdArticolo
|
|
||||||
LEFT JOIN(
|
GROUP BY T1.IdArticolo, T1.ListaAutori ) z ON T.IdArticolo = z.IdArticolo
|
||||||
SELECT a3.IdMarchioEditoriale, a3.Descrizione as CasaEditrice
|
`
|
||||||
FROM T_WEB_MarchiEditoriali a3
|
|
||||||
JOIN(
|
|
||||||
SELECT IdMarchioEditoriale, MAX(DataOra) as maxData
|
|
||||||
FROM T_WEB_MarchiEditoriali
|
|
||||||
GROUP BY IdMarchioEditoriale
|
|
||||||
) aa3 ON a3.IdMarchioEditoriale = aa3.IdMarchioEditoriale AND a3.DataOra = aa3.maxData
|
|
||||||
) z3 ON T.IdMarchioEditoriale = z3.IdMarchioEditoriale `
|
|
||||||
: ``) +
|
|
||||||
(options.showQtaDisponibile
|
|
||||||
? ` LEFT JOIN(
|
|
||||||
SELECT o.Codice, o.QtaDisponibile
|
|
||||||
FROM T_WEB_Disponibile o
|
|
||||||
JOIN(
|
|
||||||
SELECT Codice, MAX(DataOra) as data1
|
|
||||||
FROM T_WEB_Disponibile
|
|
||||||
GROUP BY Codice
|
|
||||||
) p ON o.Codice = p.Codice AND o.DataOra = p.data1
|
|
||||||
) q ON T.IdArticolo = q.Codice`
|
|
||||||
: ``);
|
: ``);
|
||||||
} else {
|
} else {
|
||||||
dataQuery += `
|
dataQuery += `
|
||||||
@@ -937,6 +962,7 @@ exports.mssqlmigrateTables = async (req) => {
|
|||||||
listaTabelle.push({ table: 'T_WOO_Ordini', usaDataOra: false });
|
listaTabelle.push({ table: 'T_WOO_Ordini', usaDataOra: false });
|
||||||
listaTabelle.push({ table: 'T_WEB_Articoli', usaDataOra: true, fieldId: 'IdArticolo' });
|
listaTabelle.push({ table: 'T_WEB_Articoli', usaDataOra: true, fieldId: 'IdArticolo' });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options?.parte2 || options?.tutte) {
|
if (options?.parte2 || options?.tutte) {
|
||||||
listaTabelle.push({ table: 'T_WEB_Disponibile', usaDataOra: true, fieldId: 'Codice' });
|
listaTabelle.push({ table: 'T_WEB_Disponibile', usaDataOra: true, fieldId: 'Codice' });
|
||||||
listaTabelle.push({ table: 'T_WEB_Argomenti', usaDataOra: true, fieldId: 'IdArgomento' });
|
listaTabelle.push({ table: 'T_WEB_Argomenti', usaDataOra: true, fieldId: 'IdArgomento' });
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ CatalogSchema.statics.getCatalogById = async function (id) {
|
|||||||
product.idProductInfo.code &&
|
product.idProductInfo.code &&
|
||||||
product.idProductInfo.code !== '' &&
|
product.idProductInfo.code !== '' &&
|
||||||
product.idProductInfo.imagefile &&
|
product.idProductInfo.imagefile &&
|
||||||
//product.idProductInfo.imagefile !== 'noimg.jpg' &&
|
product.idProductInfo.imagefile !== 'noimg.jpg' &&
|
||||||
!product.delete
|
!product.delete
|
||||||
);
|
);
|
||||||
if (catalog.lista_prodotti.length !== originalLength) {
|
if (catalog.lista_prodotti.length !== originalLength) {
|
||||||
@@ -258,6 +258,7 @@ CatalogSchema.statics.getCatalogById = async function (id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const transformedArrRec = arrrec.map((catalog) => ({
|
const transformedArrRec = arrrec.map((catalog) => ({
|
||||||
...catalog.toObject(), // Converte il documento Mongoose in un oggetto JavaScript puro
|
...catalog.toObject(), // Converte il documento Mongoose in un oggetto JavaScript puro
|
||||||
lista_prodotti: catalog.lista_prodotti.map((product) => ({
|
lista_prodotti: catalog.lista_prodotti.map((product) => ({
|
||||||
|
|||||||
@@ -529,6 +529,23 @@ module.exports.setImgNotFound = async function (id) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// imposta tutti i record con image_not_found: false
|
||||||
|
module.exports.resetImageNotFound = async function () {
|
||||||
|
try {
|
||||||
|
const ProductInfo = this;
|
||||||
|
|
||||||
|
await ProductInfo.updateMany(
|
||||||
|
{ image_not_found: true },
|
||||||
|
{ $set: { image_not_found: false } }
|
||||||
|
);
|
||||||
|
console.log('Flag image_not_found reset to false for all records');
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error resetting image_not_found flag:', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// crea una funzione che mi rimuove il record "product" che utilizza productInfo, nel caso in cui date_updated_fromGM non esista
|
// crea una funzione che mi rimuove il record "product" che utilizza productInfo, nel caso in cui date_updated_fromGM non esista
|
||||||
module.exports.removeProductInfoWithoutDateUpdatedFromGM = async function (idapp) {
|
module.exports.removeProductInfoWithoutDateUpdatedFromGM = async function (idapp) {
|
||||||
const ProductInfo = this;
|
const ProductInfo = this;
|
||||||
|
|||||||
@@ -82,21 +82,18 @@ class CronMod {
|
|||||||
mystr = await AmazonBookScraper.ScraperAzzeraFlagProducts(idapp, mydata.options);
|
mystr = await AmazonBookScraper.ScraperAzzeraFlagProducts(idapp, mydata.options);
|
||||||
ris = { mystr };
|
ris = { mystr };
|
||||||
} else if (mydata.dbop === 'GeneraPdfCatalogo') {
|
} else if (mydata.dbop === 'GeneraPdfCatalogo') {
|
||||||
|
|
||||||
const genPdf = new GenPdf(idapp);
|
const genPdf = new GenPdf(idapp);
|
||||||
|
|
||||||
await genPdf.launch();
|
await genPdf.launch();
|
||||||
|
|
||||||
return await genPdf.generatePdfFromIdCatalog(mydata.options);
|
return await genPdf.generatePdfFromIdCatalog(mydata.options);
|
||||||
} else if (mydata.dbop === 'GeneraPdfRaccolta') {
|
} else if (mydata.dbop === 'GeneraPdfRaccolta') {
|
||||||
|
|
||||||
const genPdf = new GenPdf(idapp);
|
const genPdf = new GenPdf(idapp);
|
||||||
|
|
||||||
await genPdf.launch();
|
await genPdf.launch();
|
||||||
|
|
||||||
return await genPdf.generatePdfFromIdRaccolta(mydata.options);
|
return await genPdf.generatePdfFromIdRaccolta(mydata.options);
|
||||||
} else if (mydata.dbop === 'onlinePdfRaccolta') {
|
} else if (mydata.dbop === 'onlinePdfRaccolta') {
|
||||||
|
|
||||||
const genPdf = new GenPdf(idapp);
|
const genPdf = new GenPdf(idapp);
|
||||||
|
|
||||||
await genPdf.launch();
|
await genPdf.launch();
|
||||||
@@ -113,6 +110,9 @@ class CronMod {
|
|||||||
} else if (mydata.dbop === 'removeProductInfoWithoutDateUpdatedFromGM') {
|
} else if (mydata.dbop === 'removeProductInfoWithoutDateUpdatedFromGM') {
|
||||||
mystr = await ProductInfo.removeProductInfoWithoutDateUpdatedFromGM(idapp);
|
mystr = await ProductInfo.removeProductInfoWithoutDateUpdatedFromGM(idapp);
|
||||||
ris = { mystr };
|
ris = { mystr };
|
||||||
|
} else if (mydata.dbop === 'resetImageNotFound') {
|
||||||
|
mystr = await ProductInfo.resetImageNotFound();
|
||||||
|
ris = { mystr };
|
||||||
} else if (mydata.dbop === 'StatMacro') {
|
} else if (mydata.dbop === 'StatMacro') {
|
||||||
const macro = new Macro(idapp, {});
|
const macro = new Macro(idapp, {});
|
||||||
mystr = await macro.getStat();
|
mystr = await macro.getStat();
|
||||||
|
|||||||
@@ -414,12 +414,15 @@ class GenPdf {
|
|||||||
}
|
}
|
||||||
const raccolta = await RaccoltaCataloghi.findById(options.idRaccolta);
|
const raccolta = await RaccoltaCataloghi.findById(options.idRaccolta);
|
||||||
if (raccolta) {
|
if (raccolta) {
|
||||||
|
console.log('Pubblica ONLINE la Raccolta ' + raccolta.title + ' ...');
|
||||||
for (const catalogo of raccolta.lista_cataloghi) {
|
for (const catalogo of raccolta.lista_cataloghi) {
|
||||||
await this.onlinePdfFromIdCatalog({
|
await this.onlinePdfFromIdCatalog({
|
||||||
...options,
|
...options,
|
||||||
id_catalog: catalogo._id,
|
id_catalog: catalogo._id,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('FINE Pubblicazione ONLINE !');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('err', e);
|
console.error('err', e);
|
||||||
@@ -594,6 +597,9 @@ class GenPdf {
|
|||||||
}
|
}
|
||||||
const fileDest = mydir + (stampa ? myrec.pdf_online_stampa : myrec.pdf_online);
|
const fileDest = mydir + (stampa ? myrec.pdf_online_stampa : myrec.pdf_online);
|
||||||
const fileDestNoDir = stampa ? myrec.pdf_online_stampa : myrec.pdf_online;
|
const fileDestNoDir = stampa ? myrec.pdf_online_stampa : myrec.pdf_online;
|
||||||
|
|
||||||
|
console.log(' Metti online il file ' + fileOrigin);
|
||||||
|
|
||||||
// copia il file
|
// copia il file
|
||||||
await fs.copyFile(fileOrigin, fileDest);
|
await fs.copyFile(fileOrigin, fileDest);
|
||||||
|
|
||||||
|
|||||||
@@ -134,6 +134,8 @@ class Macro {
|
|||||||
DescrizioneTipologia = 'Carte')
|
DescrizioneTipologia = 'Carte')
|
||||||
AND
|
AND
|
||||||
(Ean13 NOT LIKE 'USATO%')
|
(Ean13 NOT LIKE 'USATO%')
|
||||||
|
|
||||||
|
ORDER BY T.IdArticolo DESC, Id DESC
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -635,6 +635,8 @@ async function JoinPDFCatalogs(cataloghi, options, outputFile, stampa) {
|
|||||||
|
|
||||||
const pdfDoc = await PDFDocument.create();
|
const pdfDoc = await PDFDocument.create();
|
||||||
|
|
||||||
|
let numcat = 0;
|
||||||
|
|
||||||
for (let id_catalog of cataloghi) {
|
for (let id_catalog of cataloghi) {
|
||||||
let catalog = await Catalog.findOne({ _id: id_catalog });
|
let catalog = await Catalog.findOne({ _id: id_catalog });
|
||||||
if (catalog) {
|
if (catalog) {
|
||||||
@@ -642,6 +644,11 @@ async function JoinPDFCatalogs(cataloghi, options, outputFile, stampa) {
|
|||||||
if (filename) {
|
if (filename) {
|
||||||
let myfile = tools.fixFilePath(options.mydir + '/' + filename);
|
let myfile = tools.fixFilePath(options.mydir + '/' + filename);
|
||||||
if (await tools.isFileExistsAsync(myfile)) {
|
if (await tools.isFileExistsAsync(myfile)) {
|
||||||
|
const filenameOnly = path.parse(myfile).base;
|
||||||
|
|
||||||
|
numcat++;
|
||||||
|
console.log(' Aggiungo il catalogo [' + numcat + '] ' + filenameOnly + ' ...');
|
||||||
|
|
||||||
const pdfBytes = await fs.promises.readFile(myfile);
|
const pdfBytes = await fs.promises.readFile(myfile);
|
||||||
const pdf = await PDFDocument.load(pdfBytes);
|
const pdf = await PDFDocument.load(pdfBytes);
|
||||||
const pages = pdf.getPages();
|
const pages = pdf.getPages();
|
||||||
|
|||||||
@@ -6060,13 +6060,13 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
aggiornatoimg?.code === 404 ||
|
aggiornatoimg?.code === 404 ||
|
||||||
(aggiornatoimg?.filepath && aggiornatoimg.filepath.includes('noimg.jpg'))
|
(aggiornatoimg?.filepath && aggiornatoimg?.filepath?.includes('noimg.jpg'))
|
||||||
) {
|
) {
|
||||||
// non trovato quindi la prossima volta non richiederlo
|
// non trovato quindi la prossima volta non richiederlo
|
||||||
await ProductInfo.setImgNotFound(productInfo._id);
|
await ProductInfo.setImgNotFound(productInfo._id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aggiornatoimg?.filepath.includes('noimg.jpg')) {
|
if (aggiornatoimg?.filepath?.includes('noimg.jpg')) {
|
||||||
// nascondi il prodotto se non trovo l'immagine !
|
// nascondi il prodotto se non trovo l'immagine !
|
||||||
await Product.updateOne({ idProductInfo: productInfo._id }, { $set: { deleted: true } });
|
await Product.updateOne({ idProductInfo: productInfo._id }, { $set: { deleted: true } });
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.2.56
|
1.2.57
|
||||||
Reference in New Issue
Block a user