diff --git a/resources/templates/versiontag.hbs b/resources/templates/versiontag.hbs index a96d841..b82a92a 100644 --- a/resources/templates/versiontag.hbs +++ b/resources/templates/versiontag.hbs @@ -1 +1 @@ -v0.2-96-g136781c +v0.2-133-gd4fbc1f diff --git a/src/database/controller/billing/states.rs b/src/database/controller/billing/states.rs index 3cc5890..a4a7571 100644 --- a/src/database/controller/billing/states.rs +++ b/src/database/controller/billing/states.rs @@ -1,4 +1,4 @@ -use diesel::{debug_query, ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, sql_query}; +use diesel::{ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, sql_query}; use diesel::pg::types::sql_types::Uuid; use rocket::State; diff --git a/src/database/controller/password_resets.rs b/src/database/controller/password_resets.rs index d4cdbec..5860185 100644 --- a/src/database/controller/password_resets.rs +++ b/src/database/controller/password_resets.rs @@ -12,7 +12,7 @@ use rocket::State; use crate::database::controller::connector::establish_connection; use crate::helper::settings::Settings; use crate::logger::{add_entry, LogActions}; -use crate::logger::entries::{InsertableLogEntry, LogEntry}; +use crate::logger::entries::InsertableLogEntry; use crate::schema::password_resets::dsl::password_resets; use crate::schema::users::dsl::users; diff --git a/src/helper/bigdecimal_to_string.rs b/src/helper/bigdecimal_to_string.rs index 8dcffb1..6ec612d 100644 --- a/src/helper/bigdecimal_to_string.rs +++ b/src/helper/bigdecimal_to_string.rs @@ -1,97 +1,4 @@ -use std::borrow::BorrowMut; - use bigdecimal::BigDecimal; -use num_bigint::Sign; - -pub fn convert_old(val: BigDecimal, decimal_places: u8, separator: char, thousands_separator: Option) -> String{ - let mut res = String::new(); - - let (base, exponent) = val.as_bigint_and_exponent(); - let mut base = base.to_str_radix(10); - - let mut base= base.chars(); - let mut exp = exponent; - let mut res_base : Vec = Vec::new(); - let mut res_decimal_places: Vec = Vec::new(); - let mut thousands_counter = 0; - - if exponent > 0{ - - let mut iter = base.rev().peekable(); - //-10^exponent - loop{ - match iter.next(){ - Some(num) => { - println!("num: {}", num); - if exp > 0{ - //There are decimal places left - exp = exp-1; - res_decimal_places.push(num); - }else{ - if let Some(thsep) = thousands_separator{ - if thousands_counter == 3 && iter.peek().is_some(){ //Add thousands separator if there are chars left - res_base.push(thsep); - thousands_counter = 0; - } - thousands_counter = thousands_counter +1; - } - res_base.push(num); - } - }, - None => { - if exp > 0{ - exp = exp-1; - res_decimal_places.push('0'); - }else{ - break; - } - } - } - } - - //First add all non decimal places: - res.push_str(&res_base.iter().rev().collect::()); - - if decimal_places > 0{ - //There are decimal places, add saperator and add decimal places - res.push(separator); - - let mut decimal_places_used = 0; - - let res_decimal_places = res_decimal_places.iter().rev(); - - for place in res_decimal_places{ - if decimal_places_used < decimal_places { - res.push(*place) - }else{ - break; - } - } - }else{ - if res.is_empty(){ - res = "0".to_string(); - } - } - }else if exponent < 0{ - //10^exponent - res = String::from("test123"); - }else{ - let mut iter = base.rev().peekable(); - while let Some(num) = iter.next(){ - if let Some(thsep) = thousands_separator{ - if thousands_counter == 3 && iter.peek().is_some(){ //Add thousands separator if there are chars left - res_base.push(thsep); - thousands_counter = 0; - } - thousands_counter = thousands_counter +1; - } - res_base.push(num); - } - res.push_str(&res_base.into_iter().rev().collect::()); - } - res -} - pub fn convert(val: BigDecimal, decimal_places: u8, seperator: char, thousands_seperator: Option) -> String{ let (base, mut exponent) = val.as_bigint_and_exponent(); diff --git a/src/modules/api/events/update.rs b/src/modules/api/events/update.rs index 6845d20..2ba044c 100644 --- a/src/modules/api/events/update.rs +++ b/src/modules/api/events/update.rs @@ -13,6 +13,7 @@ use crate::database::controller::members::check_access_to_resource; use crate::database::model::events::Event; use crate::helper::session_cookies::model::SessionCookie; use crate::helper::settings::Settings; +use crate::helper::time::get_timezone; use crate::helper::translate_diesel_error::translate_diesel; use crate::logger::{add_entry, LogActions}; use crate::logger::entries::{EventBillingStateApproveLogEntry, InsertableLogEntry, LogEntry}; @@ -284,7 +285,7 @@ pub async fn approve( } let event = get_event(settings, event_id).unwrap(); - let msg = msg.subject(format!("Einsatzabrechnung: {}", event.name)) + let msg = msg.subject(format!("Einsatzabrechnung: {} - {}", event.name, event.start.format("%d.%m.%Y").to_string())) .multipart(MultiPart::mixed().singlepart(attachement).singlepart(SinglePart::plain(String::from("Es wurde eine Einsatzabrechnung freigegeben. Sie befindet sich im Anhang dieser E-Mail.")))).unwrap(); mq.add_mail(msg); } diff --git a/src/modules/event_billing/generate_billing_csv.rs b/src/modules/event_billing/generate_billing_csv.rs index 0c80273..b789803 100644 --- a/src/modules/event_billing/generate_billing_csv.rs +++ b/src/modules/event_billing/generate_billing_csv.rs @@ -148,10 +148,7 @@ pub fn generate_billing_csv(settings: &State, event_id: uuid::Uuid) -> } sum_total = sum_lump_sum.clone()+sum_money_for_time.clone(); res.push('\n'); - res.push_str("SUMME:\n"); - res.push_str(&format!("{},{},Gesamt\n", settings.billing.lump_sum_name, settings.billing.money_for_time_name)); - res.push_str(&format!("{},{},{}\n", convert(sum_lump_sum.clone(), 2, ',', Some('.')), convert(sum_money_for_time.clone(), 2, ',', Some('.')), convert(sum_total, 2, ',', Some('.')))); - res.push('\n'); + res.push_str(&format!(",,,,,SUMME,{},{},{}\n", sanitize(convert(sum_lump_sum.clone(), 2, ',', Some('.'))), sanitize(convert(sum_money_for_time.clone(), 2, ',', Some('.'))), sanitize(convert(sum_total, 2, ',', Some('.'))))); let billing_states = get_billing_states(settings)?; res.push_str("Freigaben:\n");