aggiornamento ordini
This commit is contained in:
@@ -6,6 +6,7 @@ const shared_consts = require('../tools/shared_nodejs');
|
||||
const Order = require('../models/order');
|
||||
var { User } = require('../models/user');
|
||||
|
||||
const Storehouse = require('../models/storehouse');
|
||||
const Product = require('../models/product');
|
||||
|
||||
const tools = require('../tools/general');
|
||||
@@ -54,11 +55,11 @@ const OrdersCartSchema = new Schema({
|
||||
date_spedito: {
|
||||
type: Date
|
||||
},
|
||||
completed: {
|
||||
completato: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
date_completed: {
|
||||
date_completato: {
|
||||
type: Date
|
||||
},
|
||||
consegnato: {
|
||||
@@ -84,9 +85,6 @@ const OrdersCartSchema = new Schema({
|
||||
created_at: {
|
||||
type: Date
|
||||
},
|
||||
completed_at: {
|
||||
type: Date
|
||||
},
|
||||
deleted: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
@@ -171,9 +169,62 @@ module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) {
|
||||
query.userId = uid;
|
||||
}
|
||||
|
||||
myorderscart = await OrdersCart.find(query).lean();
|
||||
myorderscart = await OrdersCart.find(query).populate('items.order')
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idProduct',
|
||||
model: 'Product'
|
||||
},
|
||||
/*transform: function(doc, populated) {
|
||||
// Rinomina 'idProduct' a 'product' nei risultati della popolazione
|
||||
populated.product = populated.idProduct;
|
||||
delete populated.idProduct;
|
||||
return populated;
|
||||
},*/
|
||||
})
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idProducer',
|
||||
model: 'Producer'
|
||||
},
|
||||
/* transform: function(doc, populated) {
|
||||
// Rinomina 'idProduct' a 'product' nei risultati della popolazione
|
||||
populated.producer = populated.idProducer;
|
||||
delete populated.idProducer;
|
||||
return populated;
|
||||
}, */
|
||||
})
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idStorehouse',
|
||||
model: 'Storehouse'
|
||||
},
|
||||
/*transform: function(doc, populated) {
|
||||
// Rinomina 'idProduct' a 'product' nei risultati della popolazione
|
||||
populated.storehouse = populated.idStorehouse;
|
||||
delete populated.idStorehouse;
|
||||
return populated;
|
||||
},*/
|
||||
})
|
||||
.populate('userId').lean();
|
||||
|
||||
for (let ind = 0; ind < myorderscart.length; ind++) {
|
||||
myorderscart = myorderscart.map(order => {
|
||||
order.items = order.items.map(item => {
|
||||
item.order.product = item.order.idProduct;
|
||||
delete item.order.idProduct;
|
||||
item.order.producer = item.order.idProducer;
|
||||
delete item.order.idProducer;
|
||||
item.order.storehouse = item.order.idStorehouse;
|
||||
delete item.order.idStorehouse;
|
||||
return item;
|
||||
});
|
||||
return order;
|
||||
});
|
||||
|
||||
/*for (let ind = 0; ind < myorderscart.length; ind++) {
|
||||
for (const idkey in myorderscart[ind].items) {
|
||||
try {
|
||||
let idorder = myorderscart[ind].items[idkey]._id.toString();
|
||||
@@ -181,16 +232,16 @@ module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder) {
|
||||
if (!!myorder) {
|
||||
idorder = myorderscart[ind].items[idkey].order._id.toString();
|
||||
}
|
||||
myorderscart[ind].nameSurname = await User.getNameSurnameById(idapp, myorderscart[ind].userId);
|
||||
const myord = await Order.getTotalOrderById(idorder);
|
||||
if (myord.length > 0) {
|
||||
myorderscart[ind].items[idkey].order = myord[0];
|
||||
}
|
||||
// myorderscart[ind].nameSurname = await User.getNameSurnameById(idapp, myorderscart[ind].userId);
|
||||
// const myord = await Order.getTotalOrderById(idorder);
|
||||
// if (myord.length > 0) {
|
||||
// myorderscart[ind].items[idkey].order = myord[0];
|
||||
// }
|
||||
} catch (e) {
|
||||
console.log('err', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/* if (!!mycart) {
|
||||
for (const idkey in mycart.items) {
|
||||
@@ -305,88 +356,96 @@ module.exports.updateOrdersCartById = function (id, newOrdersCart, callback) {
|
||||
})
|
||||
}
|
||||
|
||||
module.exports.setEvasoById = async function (id, evaso) {
|
||||
module.exports.setFieldInOrdersById = async function (objtoset, myOrderCart) {
|
||||
|
||||
return await OrdersCart.findOneAndUpdate(
|
||||
{ _id: id },
|
||||
const ris = await OrdersCart.findOneAndUpdate(
|
||||
{ _id: myOrderCart._id },
|
||||
{
|
||||
$set: {
|
||||
evaso,
|
||||
date_evaso: new Date(),
|
||||
}
|
||||
$set: objtoset
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
|
||||
// Imposta su tutti i singoli prodotti ordinati (Order)
|
||||
for (const order of myOrderCart.items) {
|
||||
await Order.findOneAndUpdate(
|
||||
{ _id: order._id },
|
||||
{
|
||||
$set: objtoset
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module.exports.setConsegnatoById = async function (id, consegnato) {
|
||||
module.exports.setConsegnatoById = async function (value, myOrderCart) {
|
||||
|
||||
let objtoset = {
|
||||
consegnato: value,
|
||||
date_consegnato: new Date(),
|
||||
};
|
||||
|
||||
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
|
||||
|
||||
return await OrdersCart.findOneAndUpdate(
|
||||
{ _id: id },
|
||||
{
|
||||
$set: {
|
||||
consegnato,
|
||||
date_consegnato: new Date(),
|
||||
}
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
}
|
||||
|
||||
module.exports.setSpeditoById = async function (id, spedito) {
|
||||
module.exports.setSpeditoById = async function (value, myOrderCart) {
|
||||
|
||||
let objtoset = {
|
||||
spedito: value,
|
||||
date_spedito: new Date(),
|
||||
};
|
||||
|
||||
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
|
||||
|
||||
return await OrdersCart.findOneAndUpdate(
|
||||
{ _id: id },
|
||||
{
|
||||
$set: {
|
||||
spedito,
|
||||
date_spedito: new Date(),
|
||||
}
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
}
|
||||
|
||||
module.exports.setPagatoById = async function (id, pagato) {
|
||||
module.exports.setPagatoById = async function (value, myOrderCart) {
|
||||
|
||||
let objtoset = {
|
||||
pagato: value,
|
||||
date_pagato: new Date(),
|
||||
};
|
||||
|
||||
if (!value) {
|
||||
objtoset.date_pagato = null;
|
||||
}
|
||||
|
||||
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
|
||||
|
||||
return await OrdersCart.findOneAndUpdate(
|
||||
{ _id: id },
|
||||
{
|
||||
$set: {
|
||||
pagato,
|
||||
date_pagato: new Date(),
|
||||
}
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
}
|
||||
|
||||
module.exports.setCompletatoById = async function (id, completato) {
|
||||
module.exports.setCompletatoById = async function (value, myOrderCart) {
|
||||
|
||||
let objtoset = {
|
||||
completato: value,
|
||||
date_completato: new Date(),
|
||||
};
|
||||
|
||||
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
|
||||
|
||||
return await OrdersCart.findOneAndUpdate(
|
||||
{ _id: id },
|
||||
{
|
||||
$set: {
|
||||
completato,
|
||||
date_completato: new Date(),
|
||||
}
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
}
|
||||
|
||||
module.exports.setRicevutoById = async function (id, completato) {
|
||||
module.exports.setEvasoById = async function (value, myOrderCart) {
|
||||
|
||||
return await OrdersCart.findOneAndUpdate(
|
||||
{ _id: id },
|
||||
{
|
||||
$set: {
|
||||
ricevuto,
|
||||
date_ricevuto: new Date(),
|
||||
}
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
let objtoset = {
|
||||
evaso: value,
|
||||
date_evaso: new Date(),
|
||||
};
|
||||
|
||||
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
|
||||
|
||||
}
|
||||
|
||||
module.exports.setRicevutoById = async function (value, myOrderCart) {
|
||||
|
||||
let objtoset = {
|
||||
ricevuto: value,
|
||||
date_ricevuto: new Date(),
|
||||
};
|
||||
|
||||
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
|
||||
}
|
||||
|
||||
module.exports.createOrdersCart = async function (newOrdersCart) {
|
||||
@@ -403,23 +462,14 @@ module.exports.updateStockQtaDalMagazzino = async function (idorderscart) {
|
||||
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(),
|
||||
if (!order.evaso) {
|
||||
const update = {
|
||||
$inc: {
|
||||
stockQty: -order.quantity
|
||||
}
|
||||
},
|
||||
{ new: false }
|
||||
)
|
||||
|
||||
const update = {
|
||||
$inc: {
|
||||
stockQty: -order.quantity
|
||||
}
|
||||
};
|
||||
await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false });
|
||||
};
|
||||
await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false });
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -429,34 +479,41 @@ module.exports.updateStockQtaDalMagazzino = async function (idorderscart) {
|
||||
|
||||
}
|
||||
|
||||
module.exports.updateCmd = async function (idorderscart, cmd, value) {
|
||||
module.exports.updateCmd = async function (ordersCart, status, value) {
|
||||
|
||||
let myOrderCart = await OrdersCart.findOne({ _id: idorderscart });
|
||||
|
||||
let myOrderCart = await OrdersCart.findOne({ _id: ordersCart._id }).populate('items.order').lean();
|
||||
|
||||
try {
|
||||
if (!!myOrderCart) {
|
||||
|
||||
const id = myOrderCart._id;
|
||||
if (cmd === shared_consts.OrderStatus.ORDER_CONFIRMED) {
|
||||
ris = await OrdersCart.setEvasoById(id, value);
|
||||
if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) {
|
||||
|
||||
// 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) {
|
||||
ris = await OrdersCart.setSpeditoById(id, value);
|
||||
} else if (cmd === shared_consts.OrderStatus.PAYED) {
|
||||
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);
|
||||
ris = await OrdersCart.setEvasoById(value, myOrderCart);
|
||||
|
||||
} else if (status === shared_consts.OrderStatus.DELIVERED) {
|
||||
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);
|
||||
}
|
||||
|
||||
await OrdersCart.setFieldInOrdersById({ status }, myOrderCart);
|
||||
|
||||
myOrderCart = await OrdersCart.findOne({ _id: ordersCart._id }).populate('items.order').lean();
|
||||
// myOrderCart = await OrdersCart.findOne({ _id: idorderscart });
|
||||
|
||||
return myOrderCart;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Err:', e)
|
||||
|
||||
Reference in New Issue
Block a user