FIX: format all money entries in CSV correctly FEA: allow multiple personnel billing emails

This commit is contained in:
Keanu D?lle 2022-04-21 21:15:28 +02:00
parent 187ccde762
commit ff6fa999e4
4 changed files with 18 additions and 7 deletions

View File

@ -36,4 +36,4 @@ default_pagination_limit = 20
#If set true members don't need billing related permissions if they are member_responsible for specific event
member_responsible_overwrites_permissions = true
send_personnel_billing_to_email = true
personnel_billing_email = "receiver@localhost"
personnel_billing_emails = "receiver@localhost,receiver2@localhost"

View File

@ -37,4 +37,4 @@ default_pagination_limit = 20
#If set true members don't need billing related permissions if they are member_responsible for specific event
member_responsible_overwrites_permissions = true
send_personnel_billing_to_email = true
personnel_billing_email = "receiver@localhost"
personnel_billing_emails = "receiver@localhost,receiver2@localhost"

View File

@ -269,11 +269,22 @@ pub async fn approve(
debug!("Generated CSV: {}", csv);
if settings.billing.send_personnel_billing_to_email {
let attachement = Attachment::new(String::from("Einsatzabrechnung.txt")).body(csv, ContentType::parse("text/csv").unwrap());
let msg = Message::builder()
let mut msg = Message::builder()
.from(settings.mail.from.clone().parse().unwrap())
.reply_to(settings.mail.reply_to.clone().parse().unwrap())
.to(settings.billing.personnel_billing_email.parse().unwrap())
.subject("Einsatzabrechnung")
.reply_to(settings.mail.reply_to.clone().parse().unwrap());
for receiver in settings.billing.personnel_billing_emails.split(","){
match receiver.parse(){
Ok(receiver) => {
msg = msg.to(receiver)
},
Err(e) => {
error!("Couldn't parse settings.billing.personnel_billing_emails email {}: {}", receiver, e);
}
}
}
let event = get_event(settings, event_id).unwrap();
let msg = msg.subject(format!("Einsatzabrechnung: {}", event.name))
.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);
}

View File

@ -128,7 +128,7 @@ pub fn generate_billing_csv(settings: &State<Settings>, event_id: uuid::Uuid) ->
None => return Err(CSVGeneratorError::Generator(CSVGeneratorErrorKind::MissingTimes))
};
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(convert(personnel.money_for_time.clone(), 2, ',', Some('.'))), sanitize(convert(personnel.money_from_lump_sum+personnel.money_for_time, 2, ',', Some('.')))));
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(convert(personnel.money_from_lump_sum.clone(), 2, ',', Some('.'))), sanitize(convert(personnel.money_for_time.clone(), 2, ',', Some('.'))), sanitize(convert(personnel.money_from_lump_sum+personnel.money_for_time, 2, ',', Some('.')))));
}
None => {
return Err(CSVGeneratorError::Generator(CSVGeneratorErrorKind::MissingMember));