BreweryControlSystem/code/src/reports.rs

41 lines
1.3 KiB
Rust

use bigdecimal::ToPrimitive;
use rust_xlsxwriter::{Format, Workbook, XlsxError};
use crate::models::Salary;
pub struct Reporter {}
impl Reporter {
pub fn test_report(&self) -> Result<(), XlsxError> {
let mut workbook = Workbook::new();
let mut worksheet = workbook.add_worksheet();
worksheet.write_string(0, 0, "ZOV");
worksheet.write_formula(0, 1, "=RAND()");
workbook.save("test.xlsx");
Ok(())
}
pub fn payment_report(&self, sal: Salary) -> Result<(), XlsxError> {
let mut wb = Workbook::new();
let mut ws = wb.add_worksheet();
let money_format = Format::new().set_num_format("#,##0.00 ₽");
ws.write_string(0, 0, "ФИО");
ws.write_string(0, 1, "Размер оплаты");
ws.write_string(0, 2, "Дата оплаты");
ws.write_string(0, 3, "Комментарий");
ws.write_string(1, 0, &sal.worker.full_name);
ws.write_with_format(1, 1, sal.salary_size.to_f64().unwrap(), &money_format);
ws.write_datetime(1, 2, sal.salary_date.date_naive());
ws.write_string(1, 3, sal.comment);
ws.autofit();
wb.save(format!(
"report-worker-{}.xlsx",
chrono::Local::now().to_string()
));
Ok(())
}
}