41 lines
1.3 KiB
Rust
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(())
|
|
}
|
|
}
|