- aggiornato carrello e bottoni sul catalogo

This commit is contained in:
Surya Paolo
2025-06-12 10:08:13 +02:00
parent 25377090c1
commit 133dc6a502
7 changed files with 102 additions and 117 deletions

View File

@@ -6,6 +6,7 @@ const { ObjectId } = require('mongodb');
const Gasordine = require('../models/gasordine');
const Order = require('../models/order');
const OrderClass = require('../modules/orderclass');
const Scontistica = require('../models/scontistica');
@@ -264,47 +265,9 @@ class Cart {
return order.price * qtyTotale;
}
let scontiApplicati = [];
let qtaRimanente = qtyTotale;
let qtaNonScontata = 0;
const { sconti_da_applicare, qtanonscontata } = OrderClass.applyNonCumulativeDiscounts(order, sconti);
// Applica sconti non cumulativi
while (qtaRimanente > 0) {
let scontoScelto = null;
let scontoVantaggioso = 0;
for (const sconto of sconti.filter((s) => !s.cumulativo)) {
if (qtaRimanente >= sconto.qta) {
const scontoApplicato =
sconto.perc_sconto > 0 ? qtaRimanente * order.price * (1 - sconto.perc_sconto / 100) : sconto.price;
if (scontoApplicato > scontoVantaggioso) {
scontoVantaggioso = scontoApplicato;
scontoScelto = { ...sconto, qtadascontare: qtaRimanente };
}
}
}
if (scontoScelto) {
scontiApplicati.push(scontoScelto);
qtaRimanente -= scontoScelto.qtadascontare;
} else {
qtaNonScontata = qtaRimanente;
qtaRimanente = 0;
}
}
let prezzoTotale = 0;
for (const sconto of scontiApplicati) {
if (sconto.perc_sconto > 0) {
prezzoTotale += sconto.qtadascontare * order.price * (1 - sconto.perc_sconto / 100);
} else if (sconto.price > 0) {
prezzoTotale += sconto.price;
}
}
if (qtaNonScontata > 0) {
prezzoTotale += qtaNonScontata * order.price;
}
const prezzoTotale = OrderClass.calculateDiscountedPrice(order, sconti_da_applicare, qtanonscontata);
return prezzoTotale;
}