From f85b8d06372916eab7c0fa8440339e86a1540443 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Tue, 3 Jun 2025 01:01:46 +0200 Subject: [PATCH] =?UTF-8?q?-=20Corretto=20la=20possibilit=C3=A0=20di=20eff?= =?UTF-8?q?ettuare=20un=20Ordine=20di=20libri,=20sul=20sito=20gruppomacro.?= =?UTF-8?q?app.=20arriver=C3=A0=20una=20email=20a=20"info@gruppomacro.app"?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/basic.css | 3 +- emails/ecommerce/makeorder/it/html.pug | 112 +++++++++++++------------ emails/newsletter/it/html.pug | 3 - src/server/models/product.js | 1 + src/server/modules/Macro.js | 23 ++++- src/server/router/index_router.js | 4 +- src/server/tools/shared_nodejs.js | 1 + 7 files changed, 83 insertions(+), 64 deletions(-) diff --git a/css/basic.css b/css/basic.css index 8f66b3d..01a042e 100755 --- a/css/basic.css +++ b/css/basic.css @@ -80,7 +80,8 @@ p { /* Whitespace (imageless spacer) */ .whitespace { - line-height: 0; } + line-height: 0; +} .firma { font-size: 0.75rem; } diff --git a/emails/ecommerce/makeorder/it/html.pug b/emails/ecommerce/makeorder/it/html.pug index 3b0a92d..8efecf4 100755 --- a/emails/ecommerce/makeorder/it/html.pug +++ b/emails/ecommerce/makeorder/it/html.pug @@ -58,69 +58,73 @@ html td(class="whitespace", height="10") p   - - var totalPrice = orders.totalPrice - - var note = orders.note - - var index = 0 + - var totalPrice = orders.totalPrice + - var note = orders.note + - var index = 0 - each rec in orders.items - - var descr = rec.order.product.productInfo.name - - var img = dirimg + rec.order.product.productInfo.imagefile - - var price = rec.order.price - - var after_price = rec.order.after_price - - var TotalPriceProduct = rec.order.TotalPriceProductstr - if (rec.order.gasordine) - - var gasordine = rec.order.gasordine.name - else - - var gasordine = '' - - - var qty = rec.order.quantity - - var qtypreordered = rec.order.quantitypreordered - if (rec.order.product.productInfo.sfuso && rec.order.product.productInfo.weight) - - qtypreordered = qtypreordered * rec.order.product.productInfo.weight - else if (rec.order.product.productInfo.weight) - - qtypreordered = qtypreordered + ' x ' + rec.order.product.productInfo.weight + each rec in orders.items + - var descr = rec.order.product.productInfo.name + - var code = rec.order.product.productInfo.code + - var img = dirimg + rec.order.product.productInfo.imagefile + - var price = rec.order.price + - var after_price = rec.order.after_price + - var TotalPriceProduct = rec.order.TotalPriceProductstr + if (rec.order.gasordine) + - var gasordine = rec.order.gasordine.name + else + - var gasordine = '' + + - var qty = rec.order.quantity + - var qtypreordered = rec.order.quantitypreordered + if (rec.order.product.productInfo.sfuso && rec.order.product.productInfo.weight) + - qtypreordered = qtypreordered * rec.order.product.productInfo.weight + else if (rec.order.product.productInfo.weight) + - qtypreordered = qtypreordered + ' x ' + rec.order.product.productInfo.weight - - var unit = rec.order.product.productInfo.unitstr - - index = index + 1 + - var unit = rec.order.product.productInfo.unitstr + - index = index + 1 - table(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center") - tr - td(class="column", valign="center" width="40") - p.boldhigh #{index}. + table(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center") + tr + td(class="column", valign="center" width="40") + p.boldhigh #{index}. - td(class="column sectionArticleImage", valign="top" width="150") - table(cellpadding="0", cellspacing="0", summary="", border="0") - tr - td - img(src=baseimg + img, alt="", width="150") - td(class="column", valign="top") + td(class="column sectionArticleImage", valign="top" width="150") + table(cellpadding="0", cellspacing="0", summary="", border="0") + tr + td + img(src=baseimg + img, alt="", width="150") + td(class="column", valign="top") - table(cellpadding="0", cellspacing="0", summary="", border="0") - if (qtypreordered > 0) - tr - td(class="sectionContent", valign="top") - p Gas Ordine: #{gasordine} - p   - tr - td(class="sectionContentTitle boldhigh", valign="top") - p #{descr} + table(cellpadding="0", cellspacing="0", summary="", border="0") + if (qtypreordered > 0) tr td(class="sectionContent", valign="top") - p Prezzo: #{price} € #{after_price} - if (qty > 0) - td(class="sectionContent", valign="top") - p Quantità: #{qty} #{unit} - if (qtypreordered > 0) - td(class="sectionContent", valign="top") - p Quantità Prenotata: #{qtypreordered} #{unit} - tr - td(class="sectionContent", valign="top") - p Totale: #{TotalPriceProduct} € + p Gas Ordine: #{gasordine} + p   + tr + td(class="sectionContentTitle boldhigh", valign="top") + p #{descr} + tr + td(class="sectionContent", valign="top") + p Codice: #{code} + tr + td(class="sectionContent", valign="top") + p Prezzo: #{price} € #{after_price} + if (qty > 0) + td(class="sectionContent", valign="top") + p Quantità: #{qty} #{unit} + if (qtypreordered > 0) + td(class="sectionContent", valign="top") + p Quantità Prenotata: #{qtypreordered} #{unit} + tr + td(class="sectionContent", valign="top") + p Totale: #{TotalPriceProduct} € - if (note) - p Note Aggiuntive: #{note}
+ if (note) + p Note Aggiuntive: #{note}
- p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} € + p.sectionContentTitle.boldhigh.sectionTotal Totale Ordine: #{totalPrice} € tr td(class="whitespace", height="10") diff --git a/emails/newsletter/it/html.pug b/emails/newsletter/it/html.pug index b700e41..684e855 100755 --- a/emails/newsletter/it/html.pug +++ b/emails/newsletter/it/html.pug @@ -156,9 +156,6 @@ html } .whitespace { - line-height:0; - font-size:0; - height:20px; } @media only screen and (max-width:480px) { diff --git a/src/server/models/product.js b/src/server/models/product.js index 9f26da2..4c195c2 100755 --- a/src/server/models/product.js +++ b/src/server/models/product.js @@ -167,6 +167,7 @@ const productSchema = new Schema({ maxbookableGASQty: { // Quantità massima (ancora disponibile) Ordine GAS prenotabile (Complessivamente tra tutti gli ordini) type: Number, + default: -1, }, bookedGASQtyOrdered: { // Quantità Ordine GAS Prenotate Totali diff --git a/src/server/modules/Macro.js b/src/server/modules/Macro.js index 79fffd9..19b9569 100644 --- a/src/server/modules/Macro.js +++ b/src/server/modules/Macro.js @@ -11,6 +11,7 @@ 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 +const Storehouse = require('../models/storehouse'); const { getTableContent } = require('../controllers/articleController'); const T_WEB_ArticoliFatturati = require('../models/t_web_articolifatturati'); @@ -591,7 +592,7 @@ class Macro { if (options.inputdaGM) - product = this.convertiDaCampiGMACampoFDV_ProductInfo(options.idapp, product); + product = await this.convertiDaCampiGMACampoFDV_ProductInfo(options.idapp, product); if (!product.title || !product.sku) importa = false; @@ -710,7 +711,7 @@ class Macro { } } - convertiDaCampiGMACampoFDV_ProductInfo(idapp, productGM) { + async convertiDaCampiGMACampoFDV_ProductInfo(idapp, productGM) { let productFDV = {}; /* productGM CAMPI @@ -759,6 +760,17 @@ class Macro { } */ + const magazzino_macro = 'Gruppo Macro'; + + let recstorehouse = await Storehouse.findOne({ idapp, name: magazzino_macro }).lean(); + if (!recstorehouse) { + // Non esiste questo produttore, quindi lo creo ! + recstorehouse = new Storehouse({ idapp, name: magazzino_macro }); + ris = await recstorehouse.save(); + recstorehouse = await Storehouse.findOne({ idapp, name: prod.magazzino_name }).lean(); + } + + const recproduct = { idapp: idapp, @@ -787,11 +799,12 @@ class Macro { ristampa: productGM.Ristampa, eta: productGM.FasciaEta, // addtocart_link: '', - Quantita: productGM.QtaDisponibile || undefined, + stockQty: productGM.QtaDisponibile || undefined, date_pub: productGM.DataPubblicazione ? tools.getDateFromISOString(productGM.DataPubblicazione) : null, sottotitolo: productGM.Sottotitolo, productTypes: [shared_consts.PRODUCTTYPE.PRODUCT], date_updated_fromGM: new Date(), + idStorehouses: [recstorehouse._id], } let vers = 0; @@ -1007,7 +1020,7 @@ class Macro { ristampa: product.ristampa || '', eta: product.eta || '', addtocart_link: product.addtocart_link || '', - quantita: product.Quantita ? parseInt(product.Quantita) : 0, + quantita: product.stockQty ? parseInt(product.stockQty) : 0, preOrderDate: product.preOrderDate || null, }; } @@ -1100,6 +1113,8 @@ class Macro { const listaCampi = [ 'idapp', 'isbn', + 'price', + 'stockQty', //++FIELD_PRODUCT ] return listaCampi.some((campo) => recordOld[campo] !== recordNew[campo]); diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index dbebd14..9db2bff 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -1953,13 +1953,13 @@ async function load(req, res, version = '0') { calcstat: req.user ? User.calculateStat(idapp, req.user.username) : Promise.resolve(null), calzoom: CalZoom.findAllIdApp(idapp), producers: Producer.findAllIdApp(idapp), - cart: req.user ? Cart.getCartByUserId(req.user.id, idapp) : Promise.resolve(null), + cart: req.user ? Cart.getCartByUserId(userId, idapp) : Promise.resolve(null), storehouses: Storehouse.findAllIdApp(idapp), departments: Department.findAllIdApp(idapp), orderscart: req.user ? User.isManager(req.user.perm) ? OrdersCart.getOrdersCartByUserId('ALL', idapp, 0, false) - : OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0, false) + : OrdersCart.getOrdersCartByUserId(userId, idapp, 0, false) : Promise.resolve(null), groups: Group.findAllIdApp(idapp), resps: User.getusersRespList(idapp), diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 88b5bd2..36f9981 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -1153,6 +1153,7 @@ module.exports = { ], MAX_QTA_PREORD: 5000, + MAX_QTA_NON_IMPOSTATA: -1, STATUSSKILL_DI_PERSONA: 1, STATUSSKILL_ONLINE: 2,