Skip to content

Commit 5cfb694

Browse files
committed
fix: round up to full days for lowstock estimate
1 parent ce07992 commit 5cfb694

4 files changed

Lines changed: 11 additions & 6 deletions

File tree

config/notifications/core.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,13 @@ module.exports = [
9090
buildContext: (task) => {
9191
const context = JSON.parse(task.custom_message);
9292
const estimatedDays = context.trend?.estimatedDaysRemaining;
93+
const estimatedDuration = estimatedDays
94+
? `ca. ${estimatedDays} ${estimatedDays === 1 ? 'Tag' : 'Tage'}`
95+
: 'Trend unbekannt';
9396
return {
9497
...context,
9598
itemName: context.item?.name || '',
96-
estimatedDuration: estimatedDays ? `ca. ${estimatedDays} Tage` : 'Trend unbekannt',
99+
estimatedDuration,
97100
};
98101
},
99102
buildText: (context) => [
@@ -104,7 +107,7 @@ module.exports = [
104107
context.trend?.averagePerDay > 0
105108
? context.t('emails.LowStock.estimateText', {
106109
averagePerDay: context.trend.averagePerDay,
107-
days: context.trend.estimatedDaysRemaining,
110+
estimatedDuration: context.estimatedDuration,
108111
})
109112
: context.t('emails.LowStock.noTrendText'),
110113
'',

config/templates/email/LowStock.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<% if (trend && trend.averagePerDay > 0) { %>
1515
<p><%= t('emails.LowStock.estimate', {
1616
averagePerDay: trend.averagePerDay,
17-
days: trend.estimatedDaysRemaining
17+
estimatedDuration
1818
}) %></p>
1919
<% } else { %>
2020
<p><%= t('emails.LowStock.noTrend') %></p>

config/templates/email/locales/de.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
"body": "Ein Artikel ist unter den konfigurierten Warenbestand gefallen.",
3535
"item": "Artikel",
3636
"stock": "Bestand",
37-
"estimate": "Trend: Ø {{averagePerDay}} Stück pro Tag. Geschätzt reicht der Bestand noch {{days}} Tage.",
38-
"estimateText": "Trend: Ø {{averagePerDay}} Stück pro Tag. Geschätzt noch {{days}} Tage.",
37+
"estimate": "Trend: Ø {{averagePerDay}} Stück pro Tag. Geschätzt reicht der Bestand noch {{estimatedDuration}}.",
38+
"estimateText": "Trend: Ø {{averagePerDay}} Stück pro Tag. Geschätzt noch {{estimatedDuration}}.",
3939
"noTrend": "Noch kein Verkaufs-Trend vorhanden.",
4040
"noTrendText": "Noch kein Verkaufs-Trend vorhanden."
4141
},

lib/sqlite/adminNotifications.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,12 @@ const getItemSalesTrend = (itemUuid, days = 30) => {
7070
LEFT JOIN daily_sales ON daily_sales.sale_date = days.sale_date
7171
`).get(safeDays, safeDays, safeDays, itemUuid, `-${safeDays - 1} days`);
7272

73+
const weightedAveragePerDay = Number(row?.weighted_average_per_day || 0);
74+
7375
return {
7476
days: safeDays,
7577
soldQuantity: Number(row?.sold_quantity || 0),
76-
averagePerDay: Number(Number(row?.weighted_average_per_day || 0).toFixed(2)),
78+
averagePerDay: weightedAveragePerDay > 0 ? Math.ceil(weightedAveragePerDay) : 0,
7779
};
7880
};
7981

0 commit comments

Comments
 (0)