From 036551ba39a92b9c21acf29cdb049a8503505e4f Mon Sep 17 00:00:00 2001 From: Simon Goller Date: Wed, 26 Jun 2024 20:44:20 +0200 Subject: [PATCH] Fix total amount of extra hours in report --- dao/src/extra_hours.rs | 1 - dao_impl/src/extra_hours.rs | 4 +--- service_impl/src/reporting.rs | 11 ++++++++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/dao/src/extra_hours.rs b/dao/src/extra_hours.rs index 38a262f..fa397f3 100644 --- a/dao/src/extra_hours.rs +++ b/dao/src/extra_hours.rs @@ -32,7 +32,6 @@ pub trait ExtraHoursDao { &self, sales_person_id: Uuid, year: u32, - until_week: u8, ) -> Result, crate::DaoError>; async fn create(&self, entity: &ExtraHoursEntity, process: &str) -> Result<(), crate::DaoError>; diff --git a/dao_impl/src/extra_hours.rs b/dao_impl/src/extra_hours.rs index 6fe22e9..73d5330 100644 --- a/dao_impl/src/extra_hours.rs +++ b/dao_impl/src/extra_hours.rs @@ -73,15 +73,13 @@ impl ExtraHoursDao for ExtraHoursDaoImpl { &self, sales_person_id: Uuid, year: u32, - until_week: u8, ) -> Result, crate::DaoError> { let id_vec = sales_person_id.as_bytes().to_vec(); Ok(query_as!( ExtraHoursDb, - "SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE sales_person_id = ? AND CAST(strftime('%Y', date_time) AS INTEGER) = ? AND CAST(strftime('%m', date_time) AS INTEGER) <= ?", + "SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE sales_person_id = ? AND CAST(strftime('%Y', date_time) AS INTEGER) = ?", id_vec, year, - until_week, ).fetch_all(self.pool.as_ref()) .await .map_db_error()? diff --git a/service_impl/src/reporting.rs b/service_impl/src/reporting.rs index 14dd26c..6c4a065 100644 --- a/service_impl/src/reporting.rs +++ b/service_impl/src/reporting.rs @@ -178,9 +178,10 @@ where .sum(); let extra_hours = self .extra_hours_dao - .find_by_sales_person_id_and_year(paid_employee.id, year, until_week) + .find_by_sales_person_id_and_year(paid_employee.id, year) .await? .iter() + .filter(|eh| eh.date_time.iso_week() <= until_week) .map(|eh| eh.amount) .sum::(); let balance_hours = shiftplan_hours + extra_hours - planned_hours; @@ -221,7 +222,7 @@ where .await?; let extra_hours = self .extra_hours_dao - .find_by_sales_person_id_and_year(*sales_person_id, year, until_week) + .find_by_sales_person_id_and_year(*sales_person_id, year) .await?; let planned_hours: f32 = (1..=until_week) @@ -232,7 +233,11 @@ where }) .sum(); let shiftplan_hours = shiftplan_report.iter().map(|r| r.hours).sum::() as f32; - let overall_extra_hours = extra_hours.iter().map(|eh| eh.amount).sum::(); + let overall_extra_hours = extra_hours + .iter() + .filter(|eh| eh.date_time.iso_week() <= until_week) + .map(|eh| eh.amount) + .sum::(); let employee_report = EmployeeReport { sales_person: Arc::new(sales_person),