aggiornamento ordini
This commit is contained in:
1
docs/prova.txt
Normal file
1
docs/prova.txt
Normal file
File diff suppressed because one or more lines are too long
@@ -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);
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const mongoose = require('mongoose').set('debug', false);
|
||||
const {CfgServer} = require('../models/cfgserver');
|
||||
const { CfgServer } = require('../models/cfgserver');
|
||||
|
||||
const shared_consts = require('../tools/shared_nodejs');
|
||||
|
||||
const tools = require('../tools/general');
|
||||
|
||||
const {City} = require('../models/city');
|
||||
const { City } = require('../models/city');
|
||||
const Product = require('../models/product');
|
||||
|
||||
var {authenticate} = require('../middleware/authenticate');
|
||||
var { authenticate } = require('../middleware/authenticate');
|
||||
|
||||
router.post('/updateval', authenticate, async (req, res) => {
|
||||
console.log('/updateval', req.body.pairval);
|
||||
@@ -17,24 +18,24 @@ router.post('/updateval', authenticate, async (req, res) => {
|
||||
pair = req.body.pairval;
|
||||
|
||||
return await CfgServer.findOneAndUpdate(
|
||||
{chiave: pair.chiave, idapp, userId: pair.userId}, {$set: pair},
|
||||
{new: false}).then((item) => {
|
||||
// CfgServer.find({ chiave: pair.chiave }, (err, item) => {
|
||||
if (!!item) {
|
||||
res.status(200).send();
|
||||
} else {
|
||||
{ chiave: pair.chiave, idapp, userId: pair.userId }, { $set: pair },
|
||||
{ new: false }).then((item) => {
|
||||
// CfgServer.find({ chiave: pair.chiave }, (err, item) => {
|
||||
if (!!item) {
|
||||
res.status(200).send();
|
||||
} else {
|
||||
res.status(400).send();
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log('ERR:', err);
|
||||
res.status(400).send();
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log('ERR:', err);
|
||||
res.status(400).send();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.post('/import', authenticate, async (req, res) => {
|
||||
const cmd = req.body.cmd;
|
||||
const data = [];
|
||||
const data = req.body.data;
|
||||
|
||||
try {
|
||||
const liste = require('../data/liste');
|
||||
@@ -44,8 +45,21 @@ router.post('/import', authenticate, async (req, res) => {
|
||||
return res.status(200).send(true);
|
||||
});
|
||||
|
||||
} else if (cmd === shared_consts.Cmd.PRODUCTS) {
|
||||
|
||||
let dataObjects = JSON.parse(`[${data}]`);
|
||||
|
||||
return await Product.insertMany(dataObjects).then((ris) => {
|
||||
|
||||
Product.convertAfterImport().then((ris) => {
|
||||
return res.status(200).send(true);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}catch (e) {
|
||||
} catch (e) {
|
||||
console.error('e', e);
|
||||
res.status(400).send();
|
||||
}
|
||||
|
||||
@@ -281,7 +281,9 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res,
|
||||
const user = req.user;
|
||||
let status = req.body.status;
|
||||
|
||||
const orderCart = await OrdersCart.findOne({ idapp, _id: order_id }).lean();
|
||||
const { User } = require('../models/user');
|
||||
|
||||
let 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!
|
||||
@@ -300,7 +302,7 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res,
|
||||
if (ris) {
|
||||
|
||||
// Aggiorna gli Stati Interni !
|
||||
await OrdersCart.updateCmd(orderCart, status, true);
|
||||
orderCart = await OrdersCart.updateCmd(orderCart, status, true);
|
||||
|
||||
let ordertype = '';
|
||||
|
||||
@@ -321,8 +323,16 @@ router.post('/:userId/ordercartstatus', authenticate, async function (req, res,
|
||||
}
|
||||
|
||||
})
|
||||
let orderscart = null;
|
||||
|
||||
return res.send({ code: server_constants.RIS_CODE_OK, status });
|
||||
if (User.isManager(user.perm)) {
|
||||
// Prende Tutti gli Ordini !
|
||||
orderscart = await OrdersCart.getOrdersCartByUserId('ALL', idapp, 0);
|
||||
} else {
|
||||
orderscart = await OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0);
|
||||
}
|
||||
|
||||
return res.send({ code: server_constants.RIS_CODE_OK, status, orders: orderscart });
|
||||
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -277,10 +277,15 @@ module.exports = {
|
||||
Outcoming: 2,
|
||||
},
|
||||
|
||||
|
||||
Cmd: {
|
||||
PROVINCE: 1,
|
||||
COMUNI: 2,
|
||||
CITIES_SERVER: 3,
|
||||
CAT_SKILL_TXT: 4,
|
||||
CAT_NO_SPAZI: 5,
|
||||
CAT_GOODS_TXT: 10,
|
||||
PRODUCTS: 20,
|
||||
},
|
||||
|
||||
WalletFinalStatusType: {
|
||||
|
||||
Reference in New Issue
Block a user