From 813aa0faf96b77ac875a7327e254cf521e0d782b Mon Sep 17 00:00:00 2001 From: Daniel Volz Date: Sun, 18 Jan 2026 14:19:26 +0100 Subject: [PATCH] fix: show package size instead of adjusted total in medications list and modal (#48) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 'Total' display should show the base package capacity (packs × blisters × pills + loose), not the corrected stock amount. This is the fixed capacity of a full package. - Add getPackageSize() helper to calculate base total without stockAdjustment - Use packageSize in medications list 'Total: X pills' - Use packageSize in medication detail modal 'Current Stock: X / Y' - getMedTotal() still includes stockAdjustment for coverage calculations --- frontend/src/App.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 7fb5b9a..cd632e1 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -34,6 +34,11 @@ function getMedTotal(med: Medication): number { return med.packCount * med.blistersPerPack * med.pillsPerBlister + med.looseTablets + (med.stockAdjustment ?? 0); } +// Helper to get the base package size (without stockAdjustment) +function getPackageSize(med: Medication): number { + return med.packCount * med.blistersPerPack * med.pillsPerBlister + med.looseTablets; +} + type PlannerRow = { medicationId: number; medicationName: string; @@ -2206,7 +2211,7 @@ function AppContent() { {t('medications.details.pillsPerBlister')}: {med.pillsPerBlister} {t('medications.details.loose')}: {med.looseTablets} -
{t('medications.details.total')}: {getMedTotal(med)} {t('common.pills')}
+
{t('medications.details.total')}: {getPackageSize(med)} {t('common.pills')}
@@ -3327,15 +3332,15 @@ function AppContent() {

{t('modal.stockInfo')}

{(() => { const medCoverage = coverage.all.find(c => c.name === selectedMed.name); - const totalStock = getMedTotal(selectedMed); - const currentStock = medCoverage ? Math.round(medCoverage.medsLeft) : totalStock; + const packageSize = getPackageSize(selectedMed); + const currentStock = medCoverage ? Math.round(medCoverage.medsLeft) : getMedTotal(selectedMed); const status = medCoverage ? getStockStatus(medCoverage.daysLeft, medCoverage.medsLeft, settings) : null; const textClass = status?.className === "danger" ? "danger-text" : status?.className === "warning" ? "warning-text" : "success-text"; const stock = getBlisterStock( currentStock, selectedMed.pillsPerBlister, selectedMed.looseTablets, - totalStock + packageSize ); return (
@@ -3349,7 +3354,7 @@ function AppContent() {
{t('modal.currentStock')} - {currentStock} / {totalStock} + {currentStock} / {packageSize}
);