calendario delle consegne (griglia del mese + ordini del giorno) e fedelta' dei dati: gli ordini conservano nota del cliente e origine, la consegna scala le uova dal magazzino come nell'originale

This commit is contained in:
2026-10-09 09:26:58 +02:00
parent 248e0db899
commit 727e7f8d38
6 changed files with 471 additions and 14 deletions
+19
View File
@@ -120,5 +120,24 @@ check("formatDay su stringa vuota", HF.formatDay(""), "");
check("nowIso in formato ISO", /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.000$/.test(HF.nowIso()), true);
check("newId unico", HF.newId() !== HF.newId(), true);
// --- fedelta' dei campi degli ordini (app Android) ------------------------
var withNote = { id: "n1", customerName: "Anna", breedId: "marans", eggsRequested: 2,
createdAt: "2026-04-25T09:00:00.000", deliveryDate: "2026-04-28T00:00:00.000",
isDelivered: false, source: "client", clientNote: "guscio chiaro" };
var kept = HF.refreshDeliveryDates([withNote], {}, BREEDS, CATALOG, TODAY);
check("nota del cliente conservata nel ricalcolo delle date", kept[0].clientNote, "guscio chiaro");
check("origine dell'ordine conservata", kept[0].source, "client");
// --- consegna: le uova escono dal magazzino -------------------------------
var stock0 = { "marans": 10, "araucana": 3 };
var afterDelivery = HF.applyDelivery(stock0, { breedId: "marans", eggsRequested: 4 }, true);
check("consegna: uova scalate dal magazzino della razza", afterDelivery.marans, 6);
check("consegna: le altre razze non si toccano", afterDelivery.araucana, 3);
check("consegna: magazzino di partenza non modificato", stock0.marans, 10);
check("consegna annullata: uova rimesse nel magazzino",
HF.applyDelivery(afterDelivery, { breedId: "marans", eggsRequested: 4 }, false).marans, 10);
check("consegna su razza senza scorte: il magazzino va sotto zero",
HF.applyDelivery({}, { breedId: "olive", eggsRequested: 3 }, true).olive, -3);
console.log(failures === 0 ? "\ntutti i controlli superati" : "\n" + failures + " controlli falliti");
process.exit(failures === 0 ? 0 : 1);