#format #type #serialization #datev

datev-types

提供 DATEV 格式类型,包括一些序列化功能

4 个版本 (破坏性更新)

0.4.0 2021 年 12 月 9 日
0.3.0 2021 年 11 月 28 日
0.2.0 2021 年 11 月 27 日
0.1.0 2021 年 11 月 23 日

#256#types

MIT 许可证

155KB
3K SLoC

datev-types-rs

提供 DATEV 格式类型,包括一些序列化功能。

仍在开发中

此包仍在开发中,任何时间都可能发生破坏性更改。

示例

渲染 datev csv

use datev_types::header::Header;
use datev_types::buchung::Buchung;
use datev_types::buchung::SollHabenKennzeichen;
use datev_types::Buchungsstapel;
use chrono::NaiveDate;

fn main() {
    let header = Header{
        format_name: "Buchungsstapel".to_string(),
        erzeugt_am: chrono::Local::now().naive_local(),
        beraternummer: 1000,
        mandantennummer: 1,
        wj_beginn: NaiveDate::from_ymd(2019,01,01),
        sachkontenlänge: 4,
        datum_von: NaiveDate::from_ymd(2019,01,01),
        datum_bis: NaiveDate::from_ymd(2019,12,31),
        ..Default::default()
    };
    let buchung = Buchung{
        soll_haben_kennzeichen: SollHabenKennzeichen::Soll,
        umsatz: 100.0,
        beleg_datum: NaiveDate::from_ymd(2021, 2, 28),
        konto: 1800,
        gegenkonto: 1420,
        buchungstext: Some("zahlung 123".to_string()),
        ..Default::default()
    };
    let stapel = Buchungsstapel{
        header: header,
        buchungen: vec![buchung],
    };
    let str = format!("{}", stapel);
    println!("{}", str);
    let json_str = serde_json::to_string_pretty(&stapel).unwrap();
    println!("{}", json_str);
}

产生以下输出

"EXTF";700;21;"Buchungsstapel";12;20211127230309532;;;;;1000;1;20190101;4;20190101;20191231;;;;;;;;;;;;;;;
100;S;EUR;;;;1800;1420;;2802;;;;zahlung 123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
{
  "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"
    }
  ]
}

依赖项

~6–8.5MB
~165K SLoC