diff --git a/emails/ecommerce/order_completed/it/html.pug b/emails/ecommerce/order_completed/it/html.pug index 5f4a874..9e767b4 100755 --- a/emails/ecommerce/order_completed/it/html.pug +++ b/emails/ecommerce/order_completed/it/html.pug @@ -1,7 +1,7 @@ doctype html html head - title Ordine Completato + title Ordine consegnato //- import css/scss stylesheets //- these file names will be replace by gulp with proper css file paths @@ -29,7 +29,7 @@ html td(class="emailContainer", valign="top") p Ciao #{name}, - p L'ordine n. #{ordernumber} è stato Completato correttamente ! + p L'ordine n. #{ordernumber} è stato Consegnato correttamente ! p Grazie Mille per aver contribuito a far crescere la Comunità table.footer(cellpadding="0", cellspacing="0", width="100%", summary="", border="0", align="center") diff --git a/emails/ecommerce/order_completed/it/subject.pug b/emails/ecommerce/order_completed/it/subject.pug index 8cb2fc2..1ff901a 100755 --- a/emails/ecommerce/order_completed/it/subject.pug +++ b/emails/ecommerce/order_completed/it/subject.pug @@ -1 +1 @@ -=`Ordine n. ${ordernumber} Completato` +=`Ordine n. ${ordernumber} Consegnato` diff --git a/src/server/models/order.js b/src/server/models/order.js index 04f16d3..badef60 100755 --- a/src/server/models/order.js +++ b/src/server/models/order.js @@ -61,6 +61,13 @@ const orderSchema = new Schema({ date_evaso: { type: Date }, + consegnato: { + type: Boolean, + default: false, + }, + date_consegnato: { + type: Date + }, pagato: { type: Boolean, default: false, @@ -75,13 +82,6 @@ const orderSchema = new Schema({ date_spedito: { type: Date }, - completato: { - type: Boolean, - default: false, - }, - date_completato: { - type: Date - }, consegnato: { type: Boolean, default: false, diff --git a/src/server/models/orderscart.js b/src/server/models/orderscart.js index 7179166..8ec9ddd 100755 --- a/src/server/models/orderscart.js +++ b/src/server/models/orderscart.js @@ -39,7 +39,7 @@ const OrdersCartSchema = new Schema({ type: Number, Default: 0, }, - evaso: { // e quindi è stato tolto dal magazzino (aggiornando il campo stockQty) + evaso: { // e quindi è stato tolto dal magazzino (aggiornando il campo stockBloccatiQty) type: Boolean, default: false, }, @@ -60,11 +60,11 @@ const OrdersCartSchema = new Schema({ date_spedito: { type: Date }, - completato: { + consegnato: { // e quindi è stato tolto dal magazzino (aggiornando il campo stockQty e stockBloccatiQty) type: Boolean, default: false, }, - date_completato: { + date_consegnato: { type: Date }, consegnato: { @@ -244,10 +244,10 @@ module.exports.getOrdersCartByQuery = async function (query) { if (item.order) { try { if (item.order.idProduct) { - item.order.idProduct.productInfo = item.order.idProduct.productInfo ? item.order.idProduct.productInfo : {...item.order.idProduct.idProductInfo}; + item.order.idProduct.productInfo = item.order.idProduct.productInfo ? item.order.idProduct.productInfo : { ...item.order.idProduct.idProductInfo }; item.order.idProduct.idProductInfo = item.order.idProduct.productInfo ? item.order.idProduct.productInfo._id : ''; } - item.order.product = {...item.order.idProduct}; + item.order.product = { ...item.order.idProduct }; item.order.idProduct = item.order.product ? item.order.product._id : ''; item.order.producer = item.order.idProducer; item.order.idProducer = item.order.producer ? item.order.producer._id : ''; @@ -374,6 +374,23 @@ module.exports.setFieldInOrdersById = async function (objtoset, myOrderCart) { } +module.exports.deleteRecsInOrdersById = async function (myOrderCart) { + + try { + let ris2 = null; + // Imposta su tutti i singoli prodotti ordinati (Order) + for (const recitem of myOrderCart.items) { + ris2 = await Order.findOneAndRemove({ _id: recitem.order._id }) + } + + const ris = await OrdersCart.findOneAndRemove({ _id: myOrderCart._id }) + + } catch (e) { + console.log('Err', e); + } + +} + module.exports.setConsegnatoById = async function (value, myOrderCart) { let objtoset = { @@ -411,11 +428,11 @@ module.exports.setPagatoById = async function (value, myOrderCart) { } -module.exports.setCompletatoById = async function (value, myOrderCart) { +module.exports.setConsegnatoById = async function (value, myOrderCart) { let objtoset = { - completato: value, - date_completato: new Date(), + consegnato: value, + date_consegnato: new Date(), }; return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); @@ -443,9 +460,15 @@ module.exports.setRicevutoById = async function (value, myOrderCart) { return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart); } +module.exports.deleteReally = async function (value, myOrderCart) { + + return await OrdersCart.deleteRecsInOrdersById(myOrderCart); +} + module.exports.createOrdersCart = async function (newOrdersCart) { return await newOrdersCart.save() } + module.exports.updateStockQtaDalMagazzino = async function (idorderscart) { try { @@ -459,13 +482,48 @@ module.exports.updateStockQtaDalMagazzino = async function (idorderscart) { if (!order.evaso) { let update = { $inc: { - stockQty: -order.quantity + stockQty: -order.quantity, + stockBloccatiQty: order.quantity + } + }; + await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false }); + + update = { + $inc: { + bookableQty: -order.quantitypreordered, + bookableBloccatiQty: order.quantitypreordered + } + }; + await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false }); + } + + } + } + } catch (e) { + console.error('Err', e); + } + +} +module.exports.updateStockBloccatiQtaDalMagazzino = async function (idorderscart) { + + try { + + const myorderscart = await OrdersCart.findOne({ _id: idorderscart }).populate('items.order').lean(); + + if (myorderscart) { + for (const idkey in myorderscart.items) { + let order = myorderscart.items[idkey].order; + + if (!order.consegnato) { + let update = { + $inc: { + stockBloccatiQty: -order.quantity } }; await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false }); update = { $inc: { - bookableQty: -order.quantitypreordered + bookableBloccatiQty: -order.quantitypreordered } }; await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false }); @@ -491,27 +549,34 @@ module.exports.updateCmd = async function (ordersCart, status, value) { const id = myOrderCart._id; if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) { - // Aggiorna anche il Magazzino, togliendo le quantità in Stock + // Aggiorna anche il Magazzino, togliendo le quantità in Stock e aggiungendole su quelle bloccate if (value) { await OrdersCart.updateStockQtaDalMagazzino(id); } ris = await OrdersCart.setEvasoById(value, myOrderCart); - } else if (status === shared_consts.OrderStatus.DELIVERED) { + } else if (status === shared_consts.OrderStatus.PAYED) { + ris = await OrdersCart.setPagatoById(value, myOrderCart); + } else if (status === shared_consts.OrderStatus.DELIVERED) { // Consegnato + if (value) { + await OrdersCart.updateStockBloccatiQtaDalMagazzino(id); + } ris = await OrdersCart.setConsegnatoById(value, myOrderCart); } else if (status === shared_consts.OrderStatus.SHIPPED) { ris = await OrdersCart.setSpeditoById(value, myOrderCart); - } else if (status === shared_consts.OrderStatus.PAYED) { - ris = await OrdersCart.setPagatoById(value, myOrderCart); - } else if (status === shared_consts.OrderStatus.COMPLETED) { - ris = await OrdersCart.setCompletatoById(value, myOrderCart); } else if (status === shared_consts.OrderStatus.RECEIVED) { ris = await OrdersCart.setRicevutoById(value, myOrderCart); + } else if (status === shared_consts.OrderStatus.DELETE_REALLY) { + ris = await OrdersCart.deleteReally(value, myOrderCart); } - await OrdersCart.setFieldInOrdersById({ status }, myOrderCart); + if (status !== shared_consts.OrderStatus.DELETE_REALLY) { - myOrderCart = await OrdersCart.getOrdersCartById(ordersCart._id) + await OrdersCart.setFieldInOrdersById({ status }, myOrderCart); + + + myOrderCart = await OrdersCart.getOrdersCartById(ordersCart._id) + } // myOrderCart = await OrdersCart.findOne({ _id: idorderscart }); return myOrderCart; diff --git a/src/server/models/product.js b/src/server/models/product.js index f8e4d06..164ee7b 100755 --- a/src/server/models/product.js +++ b/src/server/models/product.js @@ -83,6 +83,14 @@ const productSchema = new Schema({ type: Number, default: 0, }, + stockBloccatiQty: { // Prenotati + type: Number, + default: 0, + }, + bookableBloccatiQty: { // Quantità Prenotati e prenotabili + type: Number, + default: 0, + }, quantityLow: { //Soglia disponibilità bassa type: Number, default: 0, @@ -124,6 +132,9 @@ const productSchema = new Schema({ sconto2: { type: String, }, + gas_name: { + type: String, + }, }); var Product = module.exports = mongoose.model('Product', productSchema); @@ -507,6 +518,7 @@ module.exports.singlerecconvert_AfterImport = async function (idapp, prod, isnuo try { let objtoset = {} + let rec = null // Impostazioni Base: if (isnuovo) { @@ -574,6 +586,24 @@ module.exports.singlerecconvert_AfterImport = async function (idapp, prod, isnuo setta = true; } } + if (prod.gas_name) { + // Cerca il GAS + rec = await Gasordine.findOne({ idapp, name: prod.gas_name }).lean(); + if (!rec) { + rec = new Gasordine({ idapp, name: prod.gas_name, active: true }); + // Non esiste questo GAS, quindi lo creo ! + ris = await rec.save(); + rec = await Gasordine.findOne({ idapp, name: prod.gas_name }).lean(); + } + + if (rec) { + objtoset = { + ...objtoset, + idGasordines: [rec._id], + } + setta = true; + } + } let arrsconti = [] @@ -638,6 +668,7 @@ module.exports.singlerecconvert_AfterImport = async function (idapp, prod, isnuo magazzino_name: 1, sconto1: 1, sconto2: 1, + gas_name: 1, }; ris = await Product.updateOne({ _id: ObjectID(prod._id) }, { $unset: objDelete }) diff --git a/src/server/models/storehouse.js b/src/server/models/storehouse.js index 4955a9b..c602b61 100755 --- a/src/server/models/storehouse.js +++ b/src/server/models/storehouse.js @@ -56,6 +56,10 @@ const storehouseSchema = new Schema({ type: String, default: '', }, + email_html_order_consegnato: { + type: String, + default: '', + }, }); var Storehouse = module.exports = mongoose.model('Storehouse', storehouseSchema); diff --git a/src/server/modules/Cart.js b/src/server/modules/Cart.js index 19657ac..ea85cb5 100755 --- a/src/server/modules/Cart.js +++ b/src/server/modules/Cart.js @@ -69,7 +69,7 @@ class Cart { async addqty(itemorder) { const myitem = this.items.find((rec) => rec.order._id.toString() === itemorder._id) if (!!myitem) { - let stepmin = myitem.order.product.minStepQty | 1; + let stepmin = myitem.order.product.minStepQty; let step = stepmin; if (this.isAvailableByOrder(myitem.order)) { if (myitem.order.quantity === 0) @@ -100,8 +100,8 @@ class Cart { } qtaNextSub(myorder, myproduct) { - let step = myproduct.minStepQty | 1 - let minqta = myproduct.minBuyQty | 1 + let step = myproduct.minStepQty + let minqta = myproduct.minBuyQty if (myproduct.quantityAvailable > 0) { if (myorder.quantity === minqta) step = minqta diff --git a/src/server/router/admin_router.js b/src/server/router/admin_router.js index e8167f4..a646e69 100755 --- a/src/server/router/admin_router.js +++ b/src/server/router/admin_router.js @@ -123,7 +123,7 @@ router.post('/import', authenticate, async (req, res) => { isnuovo = true; } - if (!options.aggiornaStockQta && esisteindb) { + if (!options.aggiornaStockQty && esisteindb) { delete product.stockQty; delete product.bookableQty; } diff --git a/src/server/router/cart_router.js b/src/server/router/cart_router.js index 66e5fbc..91166fe 100755 --- a/src/server/router/cart_router.js +++ b/src/server/router/cart_router.js @@ -377,8 +377,8 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res, if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) { ordertype = 'order_confirmed'; - } else if (status === shared_consts.OrderStatus.COMPLETED) { - ordertype = 'order_completed'; + } else if (status === shared_consts.OrderStatus.DELIVERED) { + ordertype = 'order_consegnato'; } else if (status === shared_consts.OrderStatus.CANCELED) { ordertype = 'order_canceled'; } diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 9d08bf0..f8a155e 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -36,6 +36,7 @@ const { authenticate, authenticate_noerror } = require('../middleware/authentica const Cart = require('../models/cart'); const CartClass = require('../modules/Cart'); const Product = require('../models/product'); +const ProductInfo = require('../models/productInfo'); const Order = require('../models/order'); const OrdersCart = require('../models/orderscart'); const Variant = require('../models/variant'); @@ -1307,8 +1308,8 @@ async function eseguiDbOp(idapp, mydata, locale, req, res) { } else if (mydata.dbop === 'dropProducts') { - ris = Product.collection.drop(); - ris = ProductInfo.collection.drop(); + await Product.collection.drop(); + ris = await ProductInfo.collection.drop(); } else if (mydata.dbop === 'dropAllOrders') { diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js index 8a666a1..f00613f 100755 --- a/src/server/tools/shared_nodejs.js +++ b/src/server/tools/shared_nodejs.js @@ -401,8 +401,8 @@ module.exports = { DELIVERED: 5, // Consegnato SHIPPED: 6, //Spedito RECEIVED: 7, - COMPLETED: 6, CANCELED: 10, + DELETE_REALLY: 20, }, OrderStat: { @@ -450,10 +450,6 @@ module.exports = { label: 'Ricevuto', value: 7, }, - { - label: 'Completato', - value: 8, - }, { label: 'Cancellato', value: 10,