- preordinabili corretti + altro

This commit is contained in:
Surya Paolo
2023-12-29 21:17:17 +01:00
parent 633b9a2d8c
commit ade9c149c5
11 changed files with 138 additions and 41 deletions

View File

@@ -61,6 +61,13 @@ const orderSchema = new Schema({
date_evaso: {
type: Date
},
consegnato: {
type: Boolean,
default: false,
},
date_consegnato: {
type: Date
},
pagato: {
type: Boolean,
default: false,
@@ -75,13 +82,6 @@ const orderSchema = new Schema({
date_spedito: {
type: Date
},
completato: {
type: Boolean,
default: false,
},
date_completato: {
type: Date
},
consegnato: {
type: Boolean,
default: false,

View File

@@ -39,7 +39,7 @@ const OrdersCartSchema = new Schema({
type: Number,
Default: 0,
},
evaso: { // e quindi è stato tolto dal magazzino (aggiornando il campo stockQty)
evaso: { // e quindi è stato tolto dal magazzino (aggiornando il campo stockBloccatiQty)
type: Boolean,
default: false,
},
@@ -60,11 +60,11 @@ const OrdersCartSchema = new Schema({
date_spedito: {
type: Date
},
completato: {
consegnato: { // e quindi è stato tolto dal magazzino (aggiornando il campo stockQty e stockBloccatiQty)
type: Boolean,
default: false,
},
date_completato: {
date_consegnato: {
type: Date
},
consegnato: {
@@ -244,10 +244,10 @@ module.exports.getOrdersCartByQuery = async function (query) {
if (item.order) {
try {
if (item.order.idProduct) {
item.order.idProduct.productInfo = item.order.idProduct.productInfo ? item.order.idProduct.productInfo : {...item.order.idProduct.idProductInfo};
item.order.idProduct.productInfo = item.order.idProduct.productInfo ? item.order.idProduct.productInfo : { ...item.order.idProduct.idProductInfo };
item.order.idProduct.idProductInfo = item.order.idProduct.productInfo ? item.order.idProduct.productInfo._id : '';
}
item.order.product = {...item.order.idProduct};
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 : '';
@@ -374,6 +374,23 @@ module.exports.setFieldInOrdersById = async function (objtoset, myOrderCart) {
}
module.exports.deleteRecsInOrdersById = async function (myOrderCart) {
try {
let ris2 = null;
// Imposta su tutti i singoli prodotti ordinati (Order)
for (const recitem of myOrderCart.items) {
ris2 = await Order.findOneAndRemove({ _id: recitem.order._id })
}
const ris = await OrdersCart.findOneAndRemove({ _id: myOrderCart._id })
} catch (e) {
console.log('Err', e);
}
}
module.exports.setConsegnatoById = async function (value, myOrderCart) {
let objtoset = {
@@ -411,11 +428,11 @@ module.exports.setPagatoById = async function (value, myOrderCart) {
}
module.exports.setCompletatoById = async function (value, myOrderCart) {
module.exports.setConsegnatoById = async function (value, myOrderCart) {
let objtoset = {
completato: value,
date_completato: new Date(),
consegnato: value,
date_consegnato: new Date(),
};
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
@@ -443,9 +460,15 @@ module.exports.setRicevutoById = async function (value, myOrderCart) {
return await OrdersCart.setFieldInOrdersById(objtoset, myOrderCart);
}
module.exports.deleteReally = async function (value, myOrderCart) {
return await OrdersCart.deleteRecsInOrdersById(myOrderCart);
}
module.exports.createOrdersCart = async function (newOrdersCart) {
return await newOrdersCart.save()
}
module.exports.updateStockQtaDalMagazzino = async function (idorderscart) {
try {
@@ -459,13 +482,48 @@ module.exports.updateStockQtaDalMagazzino = async function (idorderscart) {
if (!order.evaso) {
let update = {
$inc: {
stockQty: -order.quantity
stockQty: -order.quantity,
stockBloccatiQty: order.quantity
}
};
await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false });
update = {
$inc: {
bookableQty: -order.quantitypreordered,
bookableBloccatiQty: order.quantitypreordered
}
};
await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false });
}
}
}
} catch (e) {
console.error('Err', e);
}
}
module.exports.updateStockBloccatiQtaDalMagazzino = async function (idorderscart) {
try {
const myorderscart = await OrdersCart.findOne({ _id: idorderscart }).populate('items.order').lean();
if (myorderscart) {
for (const idkey in myorderscart.items) {
let order = myorderscart.items[idkey].order;
if (!order.consegnato) {
let update = {
$inc: {
stockBloccatiQty: -order.quantity
}
};
await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false });
update = {
$inc: {
bookableQty: -order.quantitypreordered
bookableBloccatiQty: -order.quantitypreordered
}
};
await Product.findOneAndUpdate({ _id: order.idProduct }, update, { new: false });
@@ -491,27 +549,34 @@ module.exports.updateCmd = async function (ordersCart, status, value) {
const id = myOrderCart._id;
if (status === shared_consts.OrderStatus.ORDER_CONFIRMED) {
// Aggiorna anche il Magazzino, togliendo le quantità in Stock
// Aggiorna anche il Magazzino, togliendo le quantità in Stock e aggiungendole su quelle bloccate
if (value) {
await OrdersCart.updateStockQtaDalMagazzino(id);
}
ris = await OrdersCart.setEvasoById(value, myOrderCart);
} else if (status === shared_consts.OrderStatus.DELIVERED) {
} else if (status === shared_consts.OrderStatus.PAYED) {
ris = await OrdersCart.setPagatoById(value, myOrderCart);
} else if (status === shared_consts.OrderStatus.DELIVERED) { // Consegnato
if (value) {
await OrdersCart.updateStockBloccatiQtaDalMagazzino(id);
}
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);
} else if (status === shared_consts.OrderStatus.DELETE_REALLY) {
ris = await OrdersCart.deleteReally(value, myOrderCart);
}
await OrdersCart.setFieldInOrdersById({ status }, myOrderCart);
if (status !== shared_consts.OrderStatus.DELETE_REALLY) {
myOrderCart = await OrdersCart.getOrdersCartById(ordersCart._id)
await OrdersCart.setFieldInOrdersById({ status }, myOrderCart);
myOrderCart = await OrdersCart.getOrdersCartById(ordersCart._id)
}
// myOrderCart = await OrdersCart.findOne({ _id: idorderscart });
return myOrderCart;

View File

@@ -83,6 +83,14 @@ const productSchema = new Schema({
type: Number,
default: 0,
},
stockBloccatiQty: { // Prenotati
type: Number,
default: 0,
},
bookableBloccatiQty: { // Quantità Prenotati e prenotabili
type: Number,
default: 0,
},
quantityLow: { //Soglia disponibilità bassa
type: Number,
default: 0,
@@ -124,6 +132,9 @@ const productSchema = new Schema({
sconto2: {
type: String,
},
gas_name: {
type: String,
},
});
var Product = module.exports = mongoose.model('Product', productSchema);
@@ -507,6 +518,7 @@ module.exports.singlerecconvert_AfterImport = async function (idapp, prod, isnuo
try {
let objtoset = {}
let rec = null
// Impostazioni Base:
if (isnuovo) {
@@ -574,6 +586,24 @@ module.exports.singlerecconvert_AfterImport = async function (idapp, prod, isnuo
setta = true;
}
}
if (prod.gas_name) {
// Cerca il GAS
rec = await Gasordine.findOne({ idapp, name: prod.gas_name }).lean();
if (!rec) {
rec = new Gasordine({ idapp, name: prod.gas_name, active: true });
// Non esiste questo GAS, quindi lo creo !
ris = await rec.save();
rec = await Gasordine.findOne({ idapp, name: prod.gas_name }).lean();
}
if (rec) {
objtoset = {
...objtoset,
idGasordines: [rec._id],
}
setta = true;
}
}
let arrsconti = []
@@ -638,6 +668,7 @@ module.exports.singlerecconvert_AfterImport = async function (idapp, prod, isnuo
magazzino_name: 1,
sconto1: 1,
sconto2: 1,
gas_name: 1,
};
ris = await Product.updateOne({ _id: ObjectID(prod._id) }, { $unset: objDelete })

View File

@@ -56,6 +56,10 @@ const storehouseSchema = new Schema({
type: String,
default: '',
},
email_html_order_consegnato: {
type: String,
default: '',
},
});
var Storehouse = module.exports = mongoose.model('Storehouse', storehouseSchema);