datev-types-rs

provides the DATEV format types including some serialization.

still work in progress

This crate is still a work in progress and breaking changes will come at any time.

Sample

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" } ] }