diff --git a/src/modules/api/events/update.rs b/src/modules/api/events/update.rs index 8d4eba3..bd6792f 100644 --- a/src/modules/api/events/update.rs +++ b/src/modules/api/events/update.rs @@ -262,7 +262,7 @@ pub async fn approve( }; debug!("Generated CSV: {}", csv); if settings.billing.send_personnel_billing_to_email { - let attachement = Attachment::new(String::from("Einsatzabrechnung.csv")).body(csv, ContentType::parse("text/csv").unwrap()); + let attachement = Attachment::new(String::from("Einsatzabrechnung.txt")).body(csv, ContentType::parse("text/csv").unwrap()); let msg = Message::builder() .from(settings.mail.from.clone().parse().unwrap()) .reply_to(settings.mail.reply_to.clone().parse().unwrap()) diff --git a/src/modules/event_billing/generate_billing_csv.rs b/src/modules/event_billing/generate_billing_csv.rs index be4ae7e..76d1e32 100644 --- a/src/modules/event_billing/generate_billing_csv.rs +++ b/src/modules/event_billing/generate_billing_csv.rs @@ -84,32 +84,32 @@ pub fn generate_billing_csv(settings: &State, event_id: uuid::Uuid) -> let mut res = String::new(); let event_data = get_event(settings, event_id)?; - res.push_str(&format!("{}, {}\n", sanitize(String::from("Einsatz: ")), sanitize(event_data.name.clone()))); + res.push_str(&format!("{},{}\n", sanitize(String::from("Einsatz: ")), sanitize(event_data.name.clone()))); if let Some(related_group) = event_data.related_group { let group = get_group(settings, related_group)?; - res.push_str(&format!("{}, {}\n", sanitize(String::from("Gruppe:")), sanitize(group.name))); + res.push_str(&format!("{},{}\n", sanitize(String::from("Gruppe:")), sanitize(group.name))); } if let Some(member_responsible) = event_data.member_responsible { if let Some(member) = get_member_by_uuid(member_responsible, settings) { - res.push_str(&format!("{}, {}\n", sanitize(String::from("Verantwortliches Mitglied:")), sanitize(format!("{} {}", member.firstname, member.lastname)))) + res.push_str(&format!("{},{}\n", sanitize(String::from("Verantwortliches Mitglied:")), sanitize(format!("{} {}", member.firstname, member.lastname)))) } } - res.push_str("\n"); + res.push('\n'); let instances = get_instances(settings, event_id)?; for instance in instances { - res.push_str(&format!("Einheit:, {}\n", sanitize(instance.name))); + res.push_str(&format!("Einheit:,{}\n", sanitize(instance.name))); if let Some(billing_rate_id) = instance.billing_rate_id { let billing_rate = get_billing_rate(settings, billing_rate_id)?; - res.push_str(&format!("Abrechnungssatz:, {}, {}, Pauschale:, {}, €/Stunde:, {}\n", sanitize(billing_rate.name), sanitize(billing_rate.description.unwrap_or(String::from(""))), sanitize(format!("{} €", billing_rate.lump_sum)), sanitize(format!("{} €", billing_rate.payment_per_hour)))); + res.push_str(&format!("Abrechnungssatz:,{},{},Pauschale:,{},€/Stunde:,{}\n", sanitize(billing_rate.name), sanitize(billing_rate.description.unwrap_or(String::from(""))), sanitize(format!("{} €", billing_rate.lump_sum)), sanitize(format!("{} €", billing_rate.payment_per_hour)))); } - res.push_str(&format!("{}, {}, {}, {}, {}, {}, {}, {}, {}\n", String::from("Personalnummer"), String::from("Vorname"), String::from("Nachname"), String::from("Von"), String::from("Bis"), String::from("Stunden"), String::from("Pauschale"), String::from("Stundengeld"), String::from("Gesamt"))); + res.push_str(&format!("{},{}, {},{},{},{},{},{},{}\n", String::from("Personalnummer"), String::from("Vorname"), String::from("Nachname"), String::from("Von"), String::from("Bis"), String::from("Stunden"), String::from("Pauschale"), String::from("Stundengeld"), String::from("Gesamt"))); let position_instances = get_position_instances(settings, instance.instance_id)?; @@ -127,7 +127,7 @@ pub fn generate_billing_csv(settings: &State, event_id: uuid::Uuid) -> }; - res.push_str(&format!("{}, {}, {}, {}, {}, {}, {}, {}, {}\n", sanitize(member.personnel_number.unwrap_or(0).to_string()), sanitize(member.firstname), sanitize(member.lastname), sanitize(begin), sanitize(end), sanitize(personnel.fulfilled_time.to_string()), sanitize(personnel.money_from_lump_sum.to_string()), sanitize(personnel.money_for_time.to_string()), sanitize(personnel.total_money.to_string()))); + res.push_str(&format!("{},{},{},{},{},{},{},{},{}\n", sanitize(member.personnel_number.unwrap_or(0).to_string()), sanitize(member.firstname), sanitize(member.lastname), sanitize(begin), sanitize(end), sanitize(personnel.fulfilled_time.to_string()), sanitize(personnel.money_from_lump_sum.to_string()), sanitize(personnel.money_for_time.to_string()), sanitize(personnel.total_money.to_string()))); } None => { return Err(CSVGeneratorError::Generator(CSVGeneratorErrorKind::MissingMember)); @@ -135,7 +135,7 @@ pub fn generate_billing_csv(settings: &State, event_id: uuid::Uuid) -> }; } } - res.push_str("\n"); + res.push('\n'); } Ok(res) }