From d0bf7e1b6adf26dbbda6ccc3aae61b0f77274b49 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Thu, 14 Dec 2023 00:55:07 +0100 Subject: [PATCH] aggiornato stockQta quando l'ordine viene evaso --- src/server/models/order.js | 7 ++++ src/server/models/orderscart.js | 69 +++++++++++++++++++++++++++++++- src/server/router/cart_router.js | 6 +-- 3 files changed, 78 insertions(+), 4 deletions(-) diff --git a/src/server/models/order.js b/src/server/models/order.js index 82d409c..482a44b 100755 --- a/src/server/models/order.js +++ b/src/server/models/order.js @@ -77,6 +77,13 @@ const orderSchema = new Schema({ date_consegnato: { type: Date }, + ricevuto: { + type: Boolean, + default: false, + }, + date_ricevuto: { + type: Date + }, weight: { type: Number }, diff --git a/src/server/models/orderscart.js b/src/server/models/orderscart.js index 2ce31b2..d21b7c7 100755 --- a/src/server/models/orderscart.js +++ b/src/server/models/orderscart.js @@ -6,6 +6,8 @@ const shared_consts = require('../tools/shared_nodejs'); const Order = require('../models/order'); var { User } = require('../models/user'); +const Product = require('../models/product'); + const tools = require('../tools/general'); const { ObjectID } = require('mongodb'); @@ -66,6 +68,13 @@ const OrdersCartSchema = new Schema({ date_consegnato: { type: Date }, + ricevuto: { + type: Boolean, + default: false, + }, + date_ricevuto: { + type: Date + }, note: { type: String }, @@ -106,7 +115,7 @@ module.exports.getLastNumOrder = async function (uid, idapp) { let query = { userId: uid, idapp, deleted: false } let numorder = 1; let numorderrec = await OrdersCart.find(query).sort({ numorder: -1 }).limit(1); - + if (numorderrec && numorderrec.length > 0) numorder = numorderrec[0].numorder; else @@ -366,9 +375,60 @@ module.exports.setCompletatoById = async function (id, completato) { ) } +module.exports.setRicevutoById = async function (id, completato) { + + return await OrdersCart.findOneAndUpdate( + { _id: id }, + { + $set: { + ricevuto, + date_ricevuto: new Date(), + } + }, + { new: false } + ) +} + module.exports.createOrdersCart = async function (newOrdersCart) { return await newOrdersCart.save() } +module.exports.updateStockQtaDalMagazzino = async function (idorderscart) { + + try { + + const myorderscart = await OrdersCart.findOne({ _id: idorderscart }).populate('items.order').lean(); + + if (myorderscart) { + for (const idkey in myorderscart.items) { + let idorder = myorderscart.items[idkey]._id; + let order = myorderscart.items[idkey].order; + + const ris = await Order.findOneAndUpdate( + { _id: idorder }, + { + $set: { + completato: true, + date_completato: new Date(), + } + }, + { new: false } + ) + + const update = { + $inc: { + stockQty: -order.quantity + } + }; + await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false }); + + } + } + } catch (e) { + console.error('Err', e); + } + +} + module.exports.updateCmd = async function (idorderscart, cmd, value) { let myOrderCart = await OrdersCart.findOne({ _id: idorderscart }); @@ -378,6 +438,11 @@ module.exports.updateCmd = async function (idorderscart, cmd, value) { const id = myOrderCart._id; if (cmd === shared_consts.OrderStatus.ORDER_CONFIRMED) { ris = await OrdersCart.setEvasoById(id, value); + + // Aggiorna anche il Magazzino, togliendo le quantità in Stock + if (value) { + OrdersCart.updateStockQtaDalMagazzino(id); + } } else if (cmd === shared_consts.OrderStatus.DELIVERED) { ris = await OrdersCart.setConsegnatoById(id, value); } else if (cmd === shared_consts.OrderStatus.SHIPPED) { @@ -386,6 +451,8 @@ module.exports.updateCmd = async function (idorderscart, cmd, value) { ris = await OrdersCart.setPagatoById(id, value); } else if (cmd === shared_consts.OrderStatus.COMPLETED) { ris = await OrdersCart.setCompletatoById(id, value); + } else if (cmd === shared_consts.OrderStatus.RECEIVED) { + ris = await OrdersCart.setRicevutoById(id, value); } // myOrderCart = await OrdersCart.findOne({ _id: idorderscart }); diff --git a/src/server/router/cart_router.js b/src/server/router/cart_router.js index c799e64..ecfb8d4 100755 --- a/src/server/router/cart_router.js +++ b/src/server/router/cart_router.js @@ -281,7 +281,7 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res, const user = req.user; let status = req.body.status; - const orderCart = await OrdersCart.find({ idapp, _id: order_id }); + const orderCart = await OrdersCart.findOne({ idapp, _id: order_id }).lean(); if ((userId !== String(req.user._id)) && !User.isManager(req.user.perm)) { // I'm trying to write something not mine! @@ -303,7 +303,7 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res, await OrdersCart.updateCmd(orderCart, status, true); let ordertype = ''; - + if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) { ordertype = 'order_confirmed'; } else if (status === shared_consts.OrderStatus.COMPLETED) { @@ -313,7 +313,7 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res, } if (ordertype !== '') { - sendemail.sendEmail_Order(user.lang, idapp, orderCart[0], user, ordertype) + sendemail.sendEmail_Order(user.lang, idapp, orderCart, user, ordertype) .then((ris) => { })