aggiornamento ordini
This commit is contained in:
@@ -18,9 +18,7 @@ const orderSchema = new Schema({
|
||||
idapp: {
|
||||
type: String,
|
||||
},
|
||||
userId: {
|
||||
type: String,
|
||||
},
|
||||
userId: { type: Schema.Types.ObjectId, ref: 'User' },
|
||||
status: {
|
||||
type: Number,
|
||||
},
|
||||
@@ -63,11 +61,11 @@ const orderSchema = new Schema({
|
||||
date_spedito: {
|
||||
type: Date
|
||||
},
|
||||
completed: {
|
||||
completato: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
date_completed: {
|
||||
date_completato: {
|
||||
type: Date
|
||||
},
|
||||
consegnato: {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -3,6 +3,8 @@ const Schema = mongoose.Schema;
|
||||
|
||||
const tools = require('../tools/general');
|
||||
|
||||
const Producer = require('../models/producer');
|
||||
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
|
||||
mongoose.Promise = global.Promise;
|
||||
@@ -58,6 +60,10 @@ const productSchema = new Schema({
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
price_acquistato: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
after_price: {
|
||||
type: String
|
||||
},
|
||||
@@ -113,6 +119,9 @@ const productSchema = new Schema({
|
||||
img: {
|
||||
type: String,
|
||||
},
|
||||
link: {
|
||||
type: String,
|
||||
},
|
||||
img2: {
|
||||
type: String,
|
||||
},
|
||||
@@ -128,6 +137,9 @@ const productSchema = new Schema({
|
||||
note: {
|
||||
type: String,
|
||||
},
|
||||
producer_name: {
|
||||
type: String,
|
||||
}
|
||||
});
|
||||
|
||||
var Product = module.exports = mongoose.model('Product', productSchema);
|
||||
@@ -198,7 +210,7 @@ module.exports.findAllIdApp = async function (idapp, code) {
|
||||
},
|
||||
{
|
||||
$addFields: {
|
||||
totalQty: {
|
||||
QuantitaOrdinateInAttesa: {
|
||||
$cond: {
|
||||
if: { $isArray: '$productOrders' },
|
||||
then: { $arrayElemAt: ['$productOrders.totalQty', 0] },
|
||||
@@ -266,6 +278,25 @@ module.exports.createIndexes((err) => {
|
||||
if (err) throw err;
|
||||
});
|
||||
|
||||
module.exports.convertAfterImport = async function () {
|
||||
|
||||
const arrprod = await Product.find({}).lean();
|
||||
for (const prod of arrprod) {
|
||||
if (prod.producer_name) {
|
||||
|
||||
// Cerca il produttore
|
||||
const recproducer = await Producer.findOne({ name: prod.producer_name }).lean();
|
||||
|
||||
const campodarimuovere = 'producer_name';
|
||||
|
||||
if (recproducer) {
|
||||
await Product.findOneAndUpdate({ _id: prod._id }, { $set: { idProducer: recproducer._id } })
|
||||
await Product.findOneAndUpdate({ _id: prod._id }, { $unset: { [campodarimuovere]: 1 } })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// const Product = mongoose.model('Product', ProductSchema);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user