FIX: removed whitespaces from generated csv files to improve Excel compability
This commit is contained in:
parent
f02c963e62
commit
78109686f2
|
@ -262,7 +262,7 @@ pub async fn approve(
|
||||||
};
|
};
|
||||||
debug!("Generated CSV: {}", csv);
|
debug!("Generated CSV: {}", csv);
|
||||||
if settings.billing.send_personnel_billing_to_email {
|
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()
|
let msg = Message::builder()
|
||||||
.from(settings.mail.from.clone().parse().unwrap())
|
.from(settings.mail.from.clone().parse().unwrap())
|
||||||
.reply_to(settings.mail.reply_to.clone().parse().unwrap())
|
.reply_to(settings.mail.reply_to.clone().parse().unwrap())
|
||||||
|
|
|
@ -84,32 +84,32 @@ pub fn generate_billing_csv(settings: &State<Settings>, event_id: uuid::Uuid) ->
|
||||||
let mut res = String::new();
|
let mut res = String::new();
|
||||||
|
|
||||||
let event_data = get_event(settings, event_id)?;
|
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 {
|
if let Some(related_group) = event_data.related_group {
|
||||||
let group = get_group(settings, 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_responsible) = event_data.member_responsible {
|
||||||
if let Some(member) = get_member_by_uuid(member_responsible, settings) {
|
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)?;
|
let instances = get_instances(settings, event_id)?;
|
||||||
|
|
||||||
for instance in instances {
|
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 {
|
if let Some(billing_rate_id) = instance.billing_rate_id {
|
||||||
let billing_rate = get_billing_rate(settings, 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)?;
|
let position_instances = get_position_instances(settings, instance.instance_id)?;
|
||||||
|
@ -127,7 +127,7 @@ pub fn generate_billing_csv(settings: &State<Settings>, 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 => {
|
None => {
|
||||||
return Err(CSVGeneratorError::Generator(CSVGeneratorErrorKind::MissingMember));
|
return Err(CSVGeneratorError::Generator(CSVGeneratorErrorKind::MissingMember));
|
||||||
|
@ -135,7 +135,7 @@ pub fn generate_billing_csv(settings: &State<Settings>, event_id: uuid::Uuid) ->
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res.push_str("\n");
|
res.push('\n');
|
||||||
}
|
}
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue