aggiornato stockQta quando l'ordine viene evaso

This commit is contained in:
Surya Paolo
2023-12-14 00:55:07 +01:00
parent fcdd826c54
commit d0bf7e1b6a
3 changed files with 78 additions and 4 deletions

View File

@@ -77,6 +77,13 @@ const orderSchema = new Schema({
date_consegnato: {
type: Date
},
ricevuto: {
type: Boolean,
default: false,
},
date_ricevuto: {
type: Date
},
weight: {
type: Number
},

View File

@@ -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
},
@@ -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 });

View File

@@ -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!
@@ -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) => {
})