provides the DATEV format types including some serialization.
This crate is still a work in progress and breaking changes will come at any time.
render datev csv
```rust use datevtypes::header::Header; use datevtypes::buchung::Buchung; use datevtypes::buchung::SollHabenKennzeichen; use datevtypes::Buchungsstapel; use chrono::NaiveDate;
fn main() { let header = Header{ formatname: "Buchungsstapel".tostring(), erzeugtam: chrono::Local::now().naivelocal(), beraternummer: 1000, mandantennummer: 1, wjbeginn: NaiveDate::fromymd(2019,01,01), sachkontenlänge: 4, datumvon: NaiveDate::fromymd(2019,01,01), datumbis: NaiveDate::fromymd(2019,12,31), ..Default::default() }; let buchung = Buchung{ sollhabenkennzeichen: SollHabenKennzeichen::Soll, umsatz: 100.0, belegdatum: NaiveDate::fromymd(2021, 2, 28), konto: 1800, gegenkonto: 1420, buchungstext: Some("zahlung 123".tostring()), ..Default::default() }; let stapel = Buchungsstapel{ header: header, buchungen: vec![buchung], }; let str = format!("{}", stapel); println!("{}", str); let jsonstr = serdejson::tostringpretty(&stapel).unwrap(); println!("{}", jsonstr); } ```
produces the following output
csv
"EXTF";700;21;"Buchungsstapel";12;20211127230309532;;;;;1000;1;20190101;4;20190101;20191231;;;;;;;;;;;;;;;
100;S;EUR;;;;1800;1420;;2802;;;;zahlung 123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
json
{
"header": {
"Kennzeichen": "EXTF",
"Versionsnummer": 700,
"FormatKategorie": 21,
"FormatName": "Buchungsstapel",
"FormatVersion": 12,
"ErzeugtAm": "2021-11-27T23:03:09.532227",
"Beraternummer": 1000,
"Mandantennummer": 1,
"WjBeginn": "2019-01-01",
"Sachkontenlänge": 4,
"DatumVon": "2019-01-01",
"DatumBis": "2019-12-31"
},
"buchungen": [
{
"umsatz": 100.0,
"sollHabenKennzeichen": "Soll",
"wkzUmsatz": "EUR",
"konto": 1800,
"gegenkonto": 1420,
"belegDatum": "2021-02-28",
"buchungstext": "zahlung 123"
}
]
}