- Sistemato link pdf che ogni volta che si aggiorna prendeva il PDF dalla cache...

- Raccolta Cataloghi, procedura che li AUTO genera in automatico.
This commit is contained in:
Surya Paolo
2025-06-13 17:46:03 +02:00
parent 6b9ddc8986
commit 5668c620da
9 changed files with 223 additions and 109 deletions

View File

@@ -823,7 +823,7 @@ exports.updateLocalDb = async (tableContent, options) => {
}
}
if (!reccateg.idArgomento) {
if (!reccateg?.idArgomento) {
// Se non c'è l'argomento, allora lo cerco nel DB
const recarg = await T_Web_Argomenti.findOne({ Descrizione: reccateg.name }).lean();
reccateg.idArgomento = recarg.IdArgomento;

View File

@@ -6,7 +6,7 @@ const { ObjectId } = require('mongodb');
const Gasordine = require('../models/gasordine');
const Order = require('../models/order');
const OrderClass = require('../modules/orderclass');
const OrderClass = require('../modules/OrderClass');
const Scontistica = require('../models/scontistica');

View File

@@ -88,6 +88,22 @@ class CronMod {
await genPdf.launch();
return await genPdf.generatePdfFromIdCatalog(mydata.options);
} else if (mydata.dbop === 'GeneraPdfRaccolta') {
const genPdf = new GenPdf(idapp);
await genPdf.launch();
return await genPdf.generatePdfFromIdRaccolta(mydata.options);
} else if (mydata.dbop === 'onlinePdfRaccolta') {
const genPdf = new GenPdf(idapp);
await genPdf.launch();
mydata.options.idapp = idapp;
return await genPdf.onlinePdfFromIdRaccolta(mydata.options);
} else if (mydata.dbop === 'ReplaceAllCircuits') {
// ++ Replace All Circuitname with 'Circuito RIS %s'
await Circuit.replaceAllCircuitNames(idapp);

View File

@@ -15,6 +15,7 @@ const tools = require('../tools/general');
const shared_consts = require('../tools/shared_nodejs');
const { compress } = require('compress-pdf');
const { RaccoltaCataloghi } = require('../models/raccoltacataloghi');
class GenPdf {
constructor(idapp) {
@@ -210,7 +211,6 @@ class GenPdf {
// Assicurati che la directory output esista
const outputDir = path.dirname(outputFile);
const fs = require('fs').promises;
try {
await fs.mkdir(outputDir, { recursive: true });
} catch (error) {
@@ -387,6 +387,49 @@ class GenPdf {
return '';
}
async generatePdfFromIdRaccolta(options) {
try {
if (!options) {
console.error('Opzioni non passate !');
return null;
}
const raccolta = await RaccoltaCataloghi.findById(options.idRaccolta);
if (raccolta) {
for (const catalogo of raccolta.lista_cataloghi) {
await this.generatePdfFromIdCatalog({
...options,
idCatalog: catalogo._id,
});
}
}
} catch (e) {
console.error('err', e);
}
}
async onlinePdfFromIdRaccolta(options) {
try {
if (!options) {
console.error('Opzioni non passate !');
return null;
}
const raccolta = await RaccoltaCataloghi.findById(options.idRaccolta);
if (raccolta) {
for (const catalogo of raccolta.lista_cataloghi) {
await this.onlinePdfFromIdCatalog({
...options,
id_catalog: catalogo._id,
});
}
}
} catch (e) {
console.error('err', e);
}
}
async onlinePdfFromIdCatalog(options) {
const risout = await GenPdf.onlinePdf(options);
}
async generatePdfFromIdCatalog(options) {
try {
if (!options) {
@@ -435,13 +478,36 @@ class GenPdf {
}
}
return {
const ris = {
fileout: filenamerelative,
fileout_compressed: filenamerelative_compressed,
filesize: await tools.getSizeFile(fullnamepath),
filesize_compressed: await tools.getSizeFile(fullnamepath_compr),
error: '',
};
if (catalog) {
if (stampa) {
catalog.pdf_generato_stampa = ris.fileout;
catalog.pdf_generato_stampa_compressed = ris.fileout_compressed;
catalog.pdf_generato_stampa_size = ris.filesize;
catalog.pdf_generato_stampa_compr_size = ris.filesize_compressed;
catalog.data_generato_stampa = tools.getDateNow();
} else {
catalog.pdf_generato_compressed = ris.fileout_compressed;
catalog.pdf_generato = ris.fileout;
catalog.pdf_generato_size = ris.filesize;
catalog.pdf_generato_compr_size = ris.filesize_compressed;
catalog.data_generato = tools.getDateNow();
}
await catalog.save();
}
return ris;
} catch (error) {
console.error('Errore durante la generazione del PDF dal catalogo ID:', error);
return {
@@ -481,6 +547,81 @@ class GenPdf {
});
});
}
static async onlinePdf(options) {
const idapp = options.idapp;
const id_catalog = options.id_catalog;
const id_raccolta = options.id_raccolta;
const stampa = options.stampa;
const compresso = options.compresso;
let mydir = '';
let risout = {};
try {
let myrec = null;
// Aggiorna il PDF OnLine, copiando il file da Generato a OnLine
if (id_catalog) {
myrec = await Catalog.findOne({ _id: id_catalog });
} else if (id_raccolta) {
myrec = await RaccoltaCataloghi.findOne({ _id: id_raccolta });
}
if (myrec) {
mydir = tools.getdirByIdApp(idapp) + '/';
// const baseurl = this.getHostByIdApp(idapp);
if (stampa) {
myrec.pdf_online_stampa = myrec.pdf_generato_stampa?.replace('_generato', '');
} else {
myrec.pdf_online = myrec.pdf_generato?.replace('_generato', '');
}
const myfile = stampa ? myrec.pdf_generato_stampa : myrec.pdf_generato;
if (myfile && (await tools.isFileExistsAsync(mydir + myfile))) {
// Aggiorna il PDF OnLine, copiando il file da Generato a OnLine
let fileOrigin = mydir + (stampa ? myrec.pdf_generato_stampa : myrec.pdf_generato);
if (compresso) {
let fileInCompressed = tools.removeFileExtension(fileOrigin) + `_compressed.pdf`;
// Se esiste allora prende questo COmpresso !
if (await tools.isFileExistsAsync(fileInCompressed)) {
fileOrigin = fileInCompressed;
} else {
}
}
const fileDest = mydir + (stampa ? myrec.pdf_online_stampa : myrec.pdf_online);
const fileDestNoDir = stampa ? myrec.pdf_online_stampa : myrec.pdf_online;
// copia il file
await fs.copyFile(fileOrigin, fileDest);
if (stampa) {
myrec.pdf_online_stampa_size = await tools.getSizeFile(fileDest);
} else {
myrec.pdf_online_size = await tools.getSizeFile(fileDest);
}
if (stampa) {
myrec.data_online_stampa = myrec.data_generato_stampa;
} else {
myrec.data_online = myrec.data_generato;
}
// Aggiorna il record
await myrec.save();
}
risout = { record: myrec._doc };
}
return risout;
} catch (e) {
console.error('Err Online-pdf', e.message);
return null;
}
}
}
module.exports = GenPdf;

View File

@@ -436,7 +436,6 @@ class Macro {
console.log('numrec', numrec);
}
let rimuoviTabellePerIniziare = false;
let count = 0;
@@ -467,16 +466,16 @@ class Macro {
.filter(([isbn, products]) => products.length > 1)
.map(([isbn]) => isbn);
recproducts = recproducts.filter(product => isbnConMultipliRecord.includes(product.Ean13));
console.log(`Trovati ${isbnConMultipliRecord.length} record con ISBN duplicati: ${isbnConMultipliRecord.join(', ')}`);
recproducts = recproducts.filter((product) => isbnConMultipliRecord.includes(product.Ean13));
console.log(
`Trovati ${isbnConMultipliRecord.length} record con ISBN duplicati: ${isbnConMultipliRecord.join(', ')}`
);
}
for (const recproduct of recproducts) {
await this.elaboraProdotto(recproduct, opt);
const sku = recproduct.IdArticolo;
if (sku) {
@@ -859,44 +858,52 @@ class Macro {
* Gestisce le categorie e sottocategorie del prodotto.
*/
async gestisciCategorie(productInfo, product) {
if (product.DescrArgomento) {
productInfo.idCatProds = [];
const reccateg = await CatProd.findOne({ idapp: this.idapp, name: product.DescrArgomento });
let nuovaCategoria = null;
if (!reccateg) {
nuovaCategoria = new CatProd({ idapp: this.idapp, name: product.DescrArgomento });
await nuovaCategoria.save();
}
if (!reccateg.idArgomento) {
// Se non c'è l'argomento, allora lo cerco nel DB
const recarg = await T_Web_Argomenti.findOne({ Descrizione: product.DescrArgomento }).lean();
reccateg.idArgomento = recarg.IdArgomento;
await reccateg.save();
}
const myriscat = reccateg?._id || (nuovaCategoria ? nuovaCategoria._id : null);
if (myriscat) productInfo.idCatProds.push(myriscat);
} else {
if (product.categories) {
// const arrcat = product.categories.trim().split(',');
const arrcat = product.categories.trim().split(',');
try {
if (product.DescrArgomento) {
productInfo.idCatProds = [];
const reccateg = await CatProd.findOne({ idapp: this.idapp, name: product.DescrArgomento });
let nuovaCategoria = null;
if (!reccateg) {
nuovaCategoria = new CatProd({ idapp: this.idapp, name: product.DescrArgomento });
await nuovaCategoria.save();
}
for (const mycat of arrcat) {
const mycatstr = mycat.trim();
const reccateg = await CatProd.findOne({ idapp: this.idapp, name: mycatstr }).lean();
let nuovaCategoria = null;
if (!reccateg) {
nuovaCategoria = new CatProd({ idapp: this.idapp, name: mycatstr });
await nuovaCategoria.save();
if (!reccateg?.idArgomento && product.DescrArgomento) {
// Se non c'è l'argomento, allora lo cerco nel DB
const recarg = await T_Web_Argomenti.findOne({ Descrizione: product.DescrArgomento }).lean();
if (recarg) {
reccateg.idArgomento = recarg.IdArgomento;
await reccateg.save();
}
}
const myriscat = reccateg?._id || (nuovaCategoria ? nuovaCategoria._id : null);
if (myriscat) productInfo.idCatProds.push(myriscat);
const myriscat = reccateg?._id || (nuovaCategoria ? nuovaCategoria._id : null);
if (myriscat) productInfo.idCatProds.push(myriscat);
} else {
if (product.categories) {
// const arrcat = product.categories.trim().split(',');
const arrcat = product.categories.trim().split(',');
productInfo.idCatProds = [];
for (const mycat of arrcat) {
const mycatstr = mycat.trim();
const reccateg = await CatProd.findOne({ idapp: this.idapp, name: mycatstr }).lean();
let nuovaCategoria = null;
if (!reccateg) {
nuovaCategoria = new CatProd({ idapp: this.idapp, name: mycatstr });
await nuovaCategoria.save();
}
const myriscat = reccateg?._id || (nuovaCategoria ? nuovaCategoria._id : null);
if (myriscat) productInfo.idCatProds.push(myriscat);
}
}
}
} catch (error) {
console.error('Errore gestisciCategorie:', error);
}
}

View File

@@ -513,7 +513,7 @@ async function ConvertPDF_Generatore(options, instampa) {
let marginLeft = instampa ? parseFloat(options.print_left) : 0;
if (instampa) {
suffisso_filename = '-stampabile_generato';
suffisso_filename = '_stampabile_generato';
} else {
suffisso_filename = '_generato';
}
@@ -614,72 +614,13 @@ async function ConvertPDF_Generatore(options, instampa) {
};
}
router.post('/online-pdf', authenticate, async (req, res) => {
console.log('/online-pdf');
idapp = req.body.idapp;
id_catalog = req.body.id_catalog;
id_raccolta = req.body.id_raccolta;
stampa = req.body.stampa;
compresso = req.body.compresso;
let mydir = '';
let risout = {};
try {
let myrec = null;
// Aggiorna il PDF OnLine, copiando il file da Generato a OnLine
if (id_catalog) {
myrec = await Catalog.findOne({ _id: id_catalog });
} else if (id_raccolta) {
myrec = await RaccoltaCataloghi.findOne({ _id: id_raccolta });
}
if (myrec) {
mydir = tools.getdirByIdApp(idapp) + '/';
// const baseurl = this.getHostByIdApp(idapp);
if (stampa) {
myrec.pdf_online_stampa = myrec.pdf_generato_stampa.replace('_generato', '');
} else {
myrec.pdf_online = myrec.pdf_generato?.replace('_generato', '');
}
// Aggiorna il PDF OnLine, copiando il file da Generato a OnLine
let fileOrigin = mydir + (stampa ? myrec.pdf_generato_stampa : myrec.pdf_generato);
if (compresso) {
let fileInCompressed = tools.removeFileExtension(fileOrigin) + `_compressed.pdf`;
// Se esiste allora prende questo COmpresso !
if (await tools.isFileExistsAsync(fileInCompressed)) {
fileOrigin = fileInCompressed;
} else {
}
}
const fileDest = mydir + (stampa ? myrec.pdf_online_stampa : myrec.pdf_online);
const fileDestNoDir = stampa ? myrec.pdf_online_stampa : myrec.pdf_online;
// copia il file
await fs.promises.copyFile(fileOrigin, fileDest);
if (stampa) {
myrec.pdf_online_stampa_size = await tools.getSizeFile(fileDest);
} else {
myrec.pdf_online_size = await tools.getSizeFile(fileDest);
}
if (stampa) {
myrec.data_online_stampa = myrec.data_generato_stampa;
} else {
myrec.data_online = myrec.data_generato;
}
// Aggiorna il record
await myrec.save();
risout = { record: myrec._doc };
}
// risout
const risout = await GenPdf.onlinePdf(req.body);
return res.status(200).send(risout);
} catch (e) {
@@ -687,6 +628,7 @@ router.post('/online-pdf', authenticate, async (req, res) => {
}
});
async function JoinPDFCatalogs(cataloghi, options, outputFile, stampa) {
try {
// Per ogni catalogo prendi il suo PDF Generato
@@ -769,7 +711,7 @@ router.post('/join-pdf', authenticate, async (req, res) => {
if (options.stampa) {
outputFileStampa =
path.join(full_dir_out, path.basename(tools.removeFileExtension(outputFile))) + '-stampabile.pdf';
path.join(full_dir_out, path.basename(tools.removeFileExtension(outputFile))) + '_stampabile.pdf';
// Creazione file per STAMPA
const ris_stampa = await JoinPDFCatalogs(cataloghi, options, outputFileStampa, true);
if (ris_stampa) {
@@ -805,7 +747,7 @@ router.post('/join-pdf', authenticate, async (req, res) => {
}
}
raccolta.save();
await raccolta.save();
risout = { raccolta: raccolta._doc };
}
@@ -1978,7 +1920,6 @@ async function importaCatalogo(data) {
let nontrovati = 0;
for (const product of dataObjects) {
let isnuovo = false;
let setta = false;

View File

@@ -6206,4 +6206,10 @@ module.exports = {
fixFilePath(myfilepath) {
return myfilepath.replace(/\\/g, '/');
},
getDateNow() {
const mydate = new Date();
return mydate;
},
};

View File

@@ -1070,9 +1070,12 @@ module.exports = {
// modifiche ai campi se necessario, per esempio:
path: newpath,
title: title || newpath,
subtitle: '',
inmenu: false,
active: true,
date_updated: new Date(),
isTemplate: false,
author_username: '',
});
// Salva il nuovo record di Page
@@ -1112,7 +1115,7 @@ module.exports = {
const newElems = await MyElem.find({ idPage: newPage._id }).lean();
console.log('Duplicazione completata con successo.');
// console.log('Duplicazione completata con successo.');
const newPageOut = await MyPage.findById(newPage._id).lean();
return { newPage: newPageOut, newElems };

View File

@@ -1 +1 @@
1.2.54
1.2.56