Corretto incongruenze OrdersCart
This commit is contained in:
@@ -260,7 +260,7 @@ module.exports.updateTotals = function (order) {
|
||||
let sconti_da_applicare = [];
|
||||
if (order.scontisticas) {
|
||||
|
||||
let qtadascontare = order.quantity
|
||||
let qtadascontare = order.quantity + order.quantitypreordered
|
||||
let qtanonscontata = 0
|
||||
|
||||
while (qtadascontare > 0) {
|
||||
@@ -300,7 +300,7 @@ module.exports.updateTotals = function (order) {
|
||||
}
|
||||
|
||||
} else {
|
||||
mypricecalc = order.price * order.quantity;
|
||||
mypricecalc = (order.price * order.quantity) + (order.price * order.quantitypreordered);
|
||||
}
|
||||
order.TotalPriceProduct += mypricecalc;
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ const OrdersCartSchema = new Schema({
|
||||
numord_pers: { type: Number },
|
||||
userId: { type: Schema.Types.ObjectId, ref: 'User' },
|
||||
totalQty: { type: Number, default: 0 },
|
||||
TotalPriceProduct: { type: Number, default: 0 },
|
||||
totalQtyPreordered: { type: Number, default: 0 },
|
||||
totalPrice: { type: Number, default: 0 },
|
||||
department: {
|
||||
@@ -130,10 +129,10 @@ module.exports.getLastNumOrder = async function (idapp) {
|
||||
module.exports.getLastNumOrdPers = 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);
|
||||
let numorderrec = await OrdersCart.find(query).sort({ numord_pers: -1 }).limit(1);
|
||||
|
||||
if (numorderrec && numorderrec.length > 0)
|
||||
numorder = numorderrec[0].numorder;
|
||||
numorder = numorderrec[0].numord_pers;
|
||||
else
|
||||
numorder = 0;
|
||||
|
||||
@@ -178,7 +177,7 @@ module.exports.getOrdersCartById = async function (id) {
|
||||
|
||||
}
|
||||
|
||||
module.exports.getOrdersCartByQuery = async function (query) {
|
||||
module.exports.getOLDOrdersCartByQuery = async function (query) {
|
||||
|
||||
let myorderscart = await OrdersCart.find(query)
|
||||
.populate('items.order')
|
||||
@@ -252,6 +251,82 @@ module.exports.getOrdersCartByQuery = async function (query) {
|
||||
return myorderscart;
|
||||
|
||||
}
|
||||
|
||||
|
||||
module.exports.getOrdersCartByQuery = async function (query) {
|
||||
|
||||
let myorderscart = await OrdersCart.find(query)
|
||||
.populate('items.order')
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idProduct',
|
||||
model: 'Product'
|
||||
},
|
||||
})
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idProducer',
|
||||
model: 'Producer'
|
||||
},
|
||||
})
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idProvider',
|
||||
model: 'Provider'
|
||||
},
|
||||
})
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idStorehouse',
|
||||
model: 'Storehouse'
|
||||
},
|
||||
})
|
||||
.populate({
|
||||
path: 'items.order',
|
||||
populate: {
|
||||
path: 'idScontisticas',
|
||||
model: 'Scontistica'
|
||||
},
|
||||
})
|
||||
.populate({
|
||||
path: 'userId',
|
||||
model: 'User',
|
||||
select: '_id name surname username profile', // Specify the fields you want to retrieve
|
||||
})
|
||||
.lean();
|
||||
|
||||
myorderscart = myorderscart.map(order => {
|
||||
order.user = order.userId
|
||||
order.userId = order.user._id
|
||||
order.items = order.items.map(item => {
|
||||
if (item.order) {
|
||||
try {
|
||||
item.order.product = item.order.idProduct;
|
||||
item.order.idProduct = item.order.product ? item.order.product._id : '';
|
||||
item.order.producer = item.order.idProducer;
|
||||
item.order.idProducer = item.order.producer ? item.order.producer._id : '';
|
||||
item.order.storehouse = item.order.idStorehouse;
|
||||
item.order.idStorehouse = item.order.storehouse ? item.order.storehouse._id : '';
|
||||
item.order.provider = item.order.idProvider;
|
||||
item.order.idProvider = item.order.provider ? item.order.provider._id : '';
|
||||
item.order.scontisticas = item.order.scontisticas;
|
||||
item.order.idScontisticas = item.order.idScontisticas ? item.order.idScontisticas._id : '';
|
||||
} catch (e) {
|
||||
console.error('Err: ', e);
|
||||
}
|
||||
}
|
||||
return item;
|
||||
});
|
||||
return order;
|
||||
});
|
||||
|
||||
return myorderscart;
|
||||
}
|
||||
|
||||
module.exports.getOrdersCartByUserId = async function (uid, idapp, numorder, filterStatus) {
|
||||
|
||||
try {
|
||||
@@ -306,7 +381,6 @@ module.exports.updateOrdersCartById = function (id, newOrdersCart, callback) {
|
||||
totalQty: newOrdersCart.totalQty,
|
||||
totalQtyPreordered: newOrdersCart.totalQtyPreordered,
|
||||
totalPrice: newOrdersCart.totalPrice,
|
||||
totalPriceProduct: newOrdersCart.totalPriceProduct,
|
||||
userId: userId,
|
||||
status: newOrdersCart.status,
|
||||
numorder: newOrdersCart.numorder,
|
||||
@@ -559,7 +633,7 @@ module.exports.getmsgorderTelegram = async function (ordersCart) {
|
||||
if (ord.order.quantity > 0)
|
||||
qtystr += 'Ordinate: ' + ord.order.quantity
|
||||
if (ord.order.quantitypreordered > 0)
|
||||
qtystr += 'Prenotate: ' + ord.order.quantitypreordered
|
||||
qtystr += ' Pre-Ordinate: ' + ord.order.quantitypreordered
|
||||
msg += '✅ [' + qtystr + '] ' + ord.order.product.name + ' (' + ord.order.price + ' € ' + (ord.order.after_price ? ord.order.after_price : '') + ' Tot=' + ord.order.TotalPriceProduct + '€ )';
|
||||
}
|
||||
|
||||
|
||||
@@ -6,18 +6,25 @@ const { ObjectID } = require('mongodb');
|
||||
const Order = require('../models/order');
|
||||
|
||||
class Cart {
|
||||
constructor(order) {
|
||||
this.items = {};
|
||||
if (!!order) {
|
||||
this.idapp = order.idapp || 0;
|
||||
this.items[order._id] = order;
|
||||
this.userId = order.userId || "";
|
||||
}
|
||||
constructor(order, arrorders) {
|
||||
this.modify_at = new Date();
|
||||
|
||||
this.items = {};
|
||||
if (!!order) {
|
||||
this.initializeFromOrder(order);
|
||||
} else if (!!arrorders) {
|
||||
for (const ord of arrorders) {
|
||||
this.items.push(ord)
|
||||
}
|
||||
}
|
||||
this.updatetotals();
|
||||
}
|
||||
|
||||
initializeFromOrder(order) {
|
||||
this.idapp = order.idapp || 0;
|
||||
this.userId = order.userId || "";
|
||||
this.items[order._id] = order;
|
||||
}
|
||||
static constructByCart(cart) {
|
||||
try {
|
||||
const mynewcart = new Cart(null);
|
||||
|
||||
@@ -90,11 +90,13 @@ router.post('/:userId', authenticate, async function (req, res, next) {
|
||||
myord = await newCart.subqty(order);
|
||||
} else {
|
||||
const ind = newCart.addItem(order);
|
||||
myord = order;
|
||||
const arrord = await Order.getTotalOrderById(order._id);
|
||||
myord = arrord ? arrord[0] : null;
|
||||
}
|
||||
} else {
|
||||
await newCart.updatetotals();
|
||||
myord = order;
|
||||
const arrord = await Order.getTotalOrderById(order._id);
|
||||
myord = arrord ? arrord[0] : null;
|
||||
}
|
||||
cart = await Cart.updateCartByCartId(mycart._id, newCart.generateModel());
|
||||
|
||||
@@ -311,6 +313,15 @@ router.post('/:userId/createorderscart', authenticate, async function (req, res,
|
||||
})
|
||||
}
|
||||
})
|
||||
} else if (status < shared_consts.OrderStatus.CHECKOUT_SENT) {
|
||||
// Aggiorna il carrello !
|
||||
|
||||
/*const cartpao = await Cart.getCartByUserId(userId, idapp);
|
||||
let newCart = CartClass.constructByCart(cartpao);
|
||||
if (newCart)
|
||||
await newCart.updatetotals();
|
||||
newCart;*/
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user