aggiornato stockQta quando l'ordine viene evaso
This commit is contained in:
@@ -77,6 +77,13 @@ const orderSchema = new Schema({
|
|||||||
date_consegnato: {
|
date_consegnato: {
|
||||||
type: Date
|
type: Date
|
||||||
},
|
},
|
||||||
|
ricevuto: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
date_ricevuto: {
|
||||||
|
type: Date
|
||||||
|
},
|
||||||
weight: {
|
weight: {
|
||||||
type: Number
|
type: Number
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ const shared_consts = require('../tools/shared_nodejs');
|
|||||||
const Order = require('../models/order');
|
const Order = require('../models/order');
|
||||||
var { User } = require('../models/user');
|
var { User } = require('../models/user');
|
||||||
|
|
||||||
|
const Product = require('../models/product');
|
||||||
|
|
||||||
const tools = require('../tools/general');
|
const tools = require('../tools/general');
|
||||||
|
|
||||||
const { ObjectID } = require('mongodb');
|
const { ObjectID } = require('mongodb');
|
||||||
@@ -66,6 +68,13 @@ const OrdersCartSchema = new Schema({
|
|||||||
date_consegnato: {
|
date_consegnato: {
|
||||||
type: Date
|
type: Date
|
||||||
},
|
},
|
||||||
|
ricevuto: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
date_ricevuto: {
|
||||||
|
type: Date
|
||||||
|
},
|
||||||
note: {
|
note: {
|
||||||
type: String
|
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) {
|
module.exports.createOrdersCart = async function (newOrdersCart) {
|
||||||
return await newOrdersCart.save()
|
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) {
|
module.exports.updateCmd = async function (idorderscart, cmd, value) {
|
||||||
|
|
||||||
let myOrderCart = await OrdersCart.findOne({ _id: idorderscart });
|
let myOrderCart = await OrdersCart.findOne({ _id: idorderscart });
|
||||||
@@ -378,6 +438,11 @@ module.exports.updateCmd = async function (idorderscart, cmd, value) {
|
|||||||
const id = myOrderCart._id;
|
const id = myOrderCart._id;
|
||||||
if (cmd === shared_consts.OrderStatus.ORDER_CONFIRMED) {
|
if (cmd === shared_consts.OrderStatus.ORDER_CONFIRMED) {
|
||||||
ris = await OrdersCart.setEvasoById(id, value);
|
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) {
|
} else if (cmd === shared_consts.OrderStatus.DELIVERED) {
|
||||||
ris = await OrdersCart.setConsegnatoById(id, value);
|
ris = await OrdersCart.setConsegnatoById(id, value);
|
||||||
} else if (cmd === shared_consts.OrderStatus.SHIPPED) {
|
} 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);
|
ris = await OrdersCart.setPagatoById(id, value);
|
||||||
} else if (cmd === shared_consts.OrderStatus.COMPLETED) {
|
} else if (cmd === shared_consts.OrderStatus.COMPLETED) {
|
||||||
ris = await OrdersCart.setCompletatoById(id, value);
|
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 });
|
// myOrderCart = await OrdersCart.findOne({ _id: idorderscart });
|
||||||
|
|||||||
@@ -281,7 +281,7 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res,
|
|||||||
const user = req.user;
|
const user = req.user;
|
||||||
let status = req.body.status;
|
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)) {
|
if ((userId !== String(req.user._id)) && !User.isManager(req.user.perm)) {
|
||||||
// I'm trying to write something not mine!
|
// I'm trying to write something not mine!
|
||||||
@@ -313,7 +313,7 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ordertype !== '') {
|
if (ordertype !== '') {
|
||||||
sendemail.sendEmail_Order(user.lang, idapp, orderCart[0], user, ordertype)
|
sendemail.sendEmail_Order(user.lang, idapp, orderCart, user, ordertype)
|
||||||
.then((ris) => {
|
.then((ris) => {
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user