- aggiornato scheda e rigenera lista

- corretto filtro sulla Collana
This commit is contained in:
Surya Paolo
2025-04-29 02:30:19 +02:00
parent 95793fd73f
commit 3d4f8b0d04
12 changed files with 318 additions and 44 deletions

View File

@@ -6,6 +6,7 @@ const CatProd = require('../models/catprod');
const SubCatProd = require('../models/subcatprod');
const Author = require('../models/author');
const Publisher = require('../models/publisher');
const Collana = require('../models/collana');
const Gasordine = require('../models/gasordine');
const tools = require('../tools/general'); // Assicurati di avere il file delle utility
const shared_consts = require('../tools/shared_nodejs'); // Assicurati di avere le costanti condivise
@@ -62,10 +63,21 @@ class Macro {
miomatch2 = {
$or: [
{ DescrizioneStatoProdotto: 'In commercio' },
{ DescrizioneStatoProdotto: '2023 in commercio' },
{ DescrizioneStatoProdotto: 'Vendita sito' },
{ DescrizioneStatoProdotto: 'Ristampa' },
{ DescrizioneStatoProdotto: 'Prossima uscita/pubblicazione' },
{ DescrizioneStatoProdotto: 'In promozione' },
{ DescrizioneStatoProdotto: 'In fase di valutazione' },
{ DescrizioneStatoProdotto: 'Titolo in esaurimento (in attesa Nuova Edizione)' },
{ DescrizioneStatoProdotto: 'Titolo in esaurimento' },
{ DescrizioneStatoProdotto: 'Titolo in esaurimento (in att N.E Ricopertinata)' },
{ DescrizioneStatoProdotto: 'Titolo in Esaurimento (disponibile N.E.)' },
{ DescrizioneStatoProdotto: 'In commercio (digitale)' },
{ DescrizioneStatoProdotto: 'In prevendita' },
{ DescrizioneStatoProdotto: 'Prossima uscita' }
{ DescrizioneStatoProdotto: 'Vendita sito' },
{ DescrizioneStatoProdotto: '2023 in commercio' },
{ DescrizioneStatoProdotto: 'Assoluto NO Reso' },
{ DescrizioneStatoProdotto: 'Titolo esaurito' },
{ DescrizioneStatoProdotto: 'Prossima uscita' },
]
};
@@ -93,12 +105,27 @@ class Macro {
} else {
options.where = `
(DescrizioneStatoProdotto = 'In commercio' OR
DescrizioneStatoProdotto = 'Ristampa' OR
DescrizioneStatoProdotto = 'Prossima uscita/pubblicazione' OR
DescrizioneStatoProdotto = 'In promozione' OR
DescrizioneStatoProdotto = 'In fase di valutazione' OR
DescrizioneStatoProdotto = 'Titolo in esaurimento (in attesa Nuova Edizione)' OR
DescrizioneStatoProdotto = 'Titolo in esaurimento' OR
DescrizioneStatoProdotto = 'Titolo in esaurimento (in att N.E Ricopertinata)' OR
DescrizioneStatoProdotto = 'Titolo in Esaurimento (disponibile N.E.)' OR
DescrizioneStatoProdotto = 'In commercio (digitale)' OR
DescrizioneStatoProdotto = 'In prevendita' OR
DescrizioneStatoProdotto = 'Vendita sito' OR
DescrizioneStatoProdotto = '2023 in commercio' OR
DescrizioneStatoProdotto = 'Assoluto NO Reso' OR
DescrizioneStatoProdotto = 'Titolo esaurito'
DescrizioneStatoProdotto = '2023 in commercio' OR
DescrizioneStatoProdotto = 'Vendita sito' OR
DescrizioneStatoProdotto = 'In prevendita' OR
DescrizioneStatoProdotto = 'Prossima uscita') AND
(DescrizioneTipologia = 'Libri' OR
DescrizioneTipologia = 'Cartonato')
DescrizioneTipologia = 'Cartolibro' OR
DescrizioneTipologia = 'Carte')
`;
}
@@ -116,7 +143,7 @@ class Macro {
if (true) {
filtroTipologia = {
$match: {
DescrizioneTipologia: { $in: ['Libri', 'Cartolibro'] },
DescrizioneTipologia: { $in: ['Libri', 'Cartolibro', 'Carte'] },
}
};
}
@@ -200,8 +227,8 @@ class Macro {
{
$lookup: {
from: 't_web_tipiformatos',
localField: 'idFormato',
foreignField: 'idFormato',
localField: 'IdTipoFormato',
foreignField: 'IdTipoFormato',
as: 'DescrizioneFormato',
}
},
@@ -214,8 +241,8 @@ class Macro {
{
$lookup: {
from: 't_web_collanes',
localField: 'idCollana',
foreignField: 'idCollana',
localField: 'IdCollana',
foreignField: 'IdCollana',
as: 'DescrizioneCollana',
}
},
@@ -564,6 +591,8 @@ class Macro {
await this.gestisciCategorie(productInfo, product);
await this.gestisciAutori(productInfo, product);
await this.gestisciEditore(productInfo, product);
await this.gestisciCollana(productInfo, product);
const risrecInfo = await ProductInfo.findOneAndUpdate(
{ code: productInfo.code },
@@ -625,7 +654,9 @@ class Macro {
description: product.description,
short_descr: product.short_descr,
publisher: product.editore,
collezione: product.Collezione,
collezione: product.collezione,
idCollana: product.idCollana,
numCollana: product.numCollana,
link: product.link || undefined,
idCatProds: [],
idSubCatProds: [],
@@ -706,6 +737,7 @@ class Macro {
}
*/
const recproduct = {
idapp: idapp,
isbn: productGM.Ean13,
@@ -714,8 +746,8 @@ class Macro {
title: productGM.Titolo, // productInfo.name.replace(/ - Usato$| - Nuovo$| - Epub$| - Ebook$| - Mobi$| - DVD$| - Streaming$| - Download$/, "");
description: '',
short_descr: '',
editore: productGM.CasaEditrice,
collezione: productGM.DescrizioneCollana,
numCollana: productGM.IdCollana,
editore: productGM.CasaEditrice,
Autore: productGM.AutoriCompleti,
DescrArgomento: productGM.DescrArgomento,
@@ -727,10 +759,9 @@ class Macro {
Tipologia: productGM.DescrizioneTipologia,
idTipologia: productGM.IdTipologia,
idTipoFormato: productGM.IdTipoFormato,
Edizione: productGM.Edizione,
Pagine: productGM.Pagine,
misure: productGM.Misure,
edizione: productGM.Edizione,
Edizione: productGM.Edizione,
ristampa: productGM.Ristampa,
eta: productGM.FasciaEta,
// addtocart_link: '',
@@ -743,9 +774,9 @@ class Macro {
let vers = 0;
//if (productGM.DescrizioneTipologia === 'Usato')
// vers = shared_consts.PRODUCTTYPE.USATO;
/*
if (productGM.DescrizioneTipologia === 'Usato')
vers = shared_consts.PRODUCTTYPE.USATO;
if (productGM.DescrizioneTipologia === 'Download')
vers = shared_consts.PRODUCTTYPE.DOWNLOAD;
else if (productGM.DescrizioneTipologia === 'DVD')
@@ -761,9 +792,7 @@ class Macro {
else
vers = shared_consts.PRODUCTTYPE.NUOVO;
recproduct.Versione = vers;
*/
recproduct.Versione = vers;
return recproduct
}
@@ -904,6 +933,29 @@ class Macro {
}
}
/**
* Gestisce la collana del prodotto.
*/
async gestisciCollana(productInfo, product) {
if (product.collezione && product.numCollana) {
const collana = product.collezione.trim();
const reccollana = await Collana.findOne({ idapp: this.idapp, title: collana }).lean();
let nuovaCollana = null;
if (!reccollana) {
nuovaCollana = new Collana({ idapp: this.idapp, idCollana: product.numCollana, title: collana });
await nuovaCollana.save();
if (!nuovaCollana._id) {
console.error('Errore gestisciCollana: nuovaCollana non ha id');
return;
}
}
if (reccollana?._id || nuovaCollana?._id)
productInfo.idCollana = reccollana?._id || nuovaCollana._id;
}
}
/**
* Aggiorna l'immagine se necessario.
*/
@@ -920,7 +972,7 @@ class Macro {
preparaVariazione(product) {
return {
active: true,
// versione: product.Versione,
versione: product.Versione,
status: product.Stato || null,
price: product.price ? parseFloat(tools.convertPriceEurToValue(product.price)) : null,
sale_price: product.sale_price ? parseFloat(tools.convertPriceEurToValue(product.sale_price)) : null,
@@ -931,7 +983,6 @@ class Macro {
edizione: product.Edizione || '',
pagine: tools.isValidNumber(product.Pagine) ? tools.convstrToInt(product.Pagine) : 0,
misure: product.misure || '',
edizione: product.edizione || '',
ristampa: product.ristampa || '',
eta: product.eta || '',
addtocart_link: product.addtocart_link || '',