Skip to content

Commit 954b526

Browse files
authored
Sorted Nekku orders by delivery date and added excel report export possibility (#7663)
1 parent c2de432 commit 954b526

File tree

3 files changed

+67
-16
lines changed

3 files changed

+67
-16
lines changed

frontend/src/employee-frontend/components/reports/NekkuOrders.tsx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { renderResult } from '../async-rendering'
2626
import { FlexRow } from '../common/styled/containers'
2727
import { daycaresQuery, unitGroupsQuery } from '../unit/queries'
2828

29+
import ReportDownload from './ReportDownload'
2930
import { FilterLabel, FilterRow, TableScrollable } from './common'
3031

3132
const getNekkuOrderReportByUnitResult = wrapResult(getNekkuOrderReportByUnit)
@@ -175,6 +176,54 @@ export default React.memo(function NekkuOrders() {
175176
{tooLongRange && <div>{i18n.reports.nekkuOrders.tooLongRange}</div>}
176177
{renderResult(report, (report) => (
177178
<>
179+
<ReportDownload
180+
data={report}
181+
columns={[
182+
{
183+
label: i18n.reports.common.date,
184+
value: (row) => row.date.toString()
185+
},
186+
{
187+
label: i18n.reports.common.groupName,
188+
value: (row) => row.groupName
189+
},
190+
{
191+
label: i18n.reports.nekkuOrders.sku,
192+
value: (row) => row.sku
193+
},
194+
{
195+
label: i18n.reports.nekkuOrders.quantity,
196+
value: (row) => row.quantity
197+
},
198+
{
199+
label: i18n.reports.nekkuOrders.mealTime,
200+
value: (row) =>
201+
row.mealTime
202+
.map((mealTimeValue) => {
203+
return i18n.reports.nekkuOrders.mealTimeValues[
204+
mealTimeValue as mealTimeOptions
205+
]
206+
})
207+
.join(', ')
208+
},
209+
{
210+
label: i18n.reports.nekkuOrders.mealType,
211+
value: (row) =>
212+
i18n.reports.nekkuOrders.mealTypeValues[
213+
(row.mealType ?? 'DEFAULT') as mealTypeOptions
214+
]
215+
},
216+
{
217+
label: i18n.reports.nekkuOrders.specialDiets,
218+
value: (row) => row.specialDiets
219+
},
220+
{
221+
label: i18n.reports.nekkuOrders.nekkuOrderInfo,
222+
value: (row) => row.nekkuOrderInfo
223+
}
224+
]}
225+
filename={`${i18n.reports.nekkuOrders.title}.csv`}
226+
/>
178227
<TableScrollable data-qa="report-nekkuorders">
179228
<Thead>
180229
<Tr>

service/src/main/kotlin/fi/espoo/evaka/nekku/NekkuQueries.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -736,7 +736,7 @@ fun Database.Read.getNekkuOrderReport(
736736
): List<NekkuOrdersReport> =
737737
createQuery {
738738
sql(
739-
"SELECT delivery_date, daycare_id, group_id, meal_sku, total_quantity, meal_time, meal_type, meals_by_special_diet, nekku_order_info FROM nekku_orders_report WHERE daycare_id = ${bind(daycareId)} AND group_id = (${bind(groupId)}) AND delivery_date = ${bind(date)} "
739+
"SELECT delivery_date, daycare_id, group_id, meal_sku, total_quantity, meal_time, meal_type, meals_by_special_diet, nekku_order_info FROM nekku_orders_report WHERE daycare_id = ${bind(daycareId)} AND group_id = (${bind(groupId)}) AND delivery_date = ${bind(date)} ORDER BY delivery_date"
740740
)
741741
}
742742
.toList<NekkuOrdersReport>()

service/src/main/kotlin/fi/espoo/evaka/reports/NekkuOrderReport.kt

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,23 @@ fun Database.Read.getNekkuReportRows(
9191
return createQuery {
9292
sql(
9393
"""
94-
SELECT nor.delivery_date as date,
95-
nor.meal_sku as sku,
96-
nor.total_quantity as quantity,
97-
dg.name as groupname,
98-
coalesce(nor.meal_time, '{}') as mealtime,
99-
nor.meal_type as mealtype,
100-
nor.meals_by_special_diet as specialdiets,
101-
nor.nekku_order_info as nekkuOrderInfo
102-
FROM nekku_orders_report nor
103-
JOIN daycare_group dg
104-
ON nor.group_id = dg.id
105-
WHERE nor.daycare_id = ${bind(daycareId)}
106-
AND nor.group_id =ANY(${bind ( groupIds)})
107-
AND nor.delivery_date =ANY(${bind ( dates)})
108-
"""
94+
SELECT
95+
nor.delivery_date as date,
96+
nor.meal_sku as sku,
97+
nor.total_quantity as quantity,
98+
dg.name as groupname,
99+
coalesce(nor.meal_time, '{}') as mealtime,
100+
nor.meal_type as mealtype,
101+
nor.meals_by_special_diet as specialdiets,
102+
nor.nekku_order_info as nekkuOrderInfo
103+
FROM nekku_orders_report nor
104+
JOIN daycare_group dg
105+
ON nor.group_id = dg.id
106+
WHERE nor.daycare_id = ${bind(daycareId)}
107+
AND nor.group_id =ANY(${bind ( groupIds)})
108+
AND nor.delivery_date =ANY(${bind ( dates)})
109+
ORDER BY nor.delivery_date
110+
"""
109111
)
110112
}
111113
.toList<NekkuOrderRow>()

0 commit comments

Comments
 (0)