aggiornato stockQta quando l'ordine viene evaso
This commit is contained in:
@@ -77,6 +77,13 @@ const orderSchema = new Schema({
|
||||
date_consegnato: {
|
||||
type: Date
|
||||
},
|
||||
ricevuto: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
date_ricevuto: {
|
||||
type: Date
|
||||
},
|
||||
weight: {
|
||||
type: Number
|
||||
},
|
||||
|
||||
@@ -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 });
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user