feat: implement header parsing
This commit is contained in:
parent
f8449250ec
commit
19b23b51ec
12 changed files with 728 additions and 14 deletions
159
Cargo.lock
generated
Normal file
159
Cargo.lock
generated
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "csv"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe"
|
||||||
|
dependencies = [
|
||||||
|
"csv-core",
|
||||||
|
"itoa",
|
||||||
|
"ryu",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "csv-core"
|
||||||
|
version = "0.1.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "datev-rs"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"csv",
|
||||||
|
"serde",
|
||||||
|
"time",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "deranged"
|
||||||
|
version = "0.3.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
|
||||||
|
dependencies = [
|
||||||
|
"powerfmt",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itoa"
|
||||||
|
version = "1.0.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-conv"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "powerfmt"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.86"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.36"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ryu"
|
||||||
|
version = "1.0.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.205"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e33aedb1a7135da52b7c21791455563facbbcc43d0f0f66165b42c21b3dfb150"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.205"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.72"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time"
|
||||||
|
version = "0.3.36"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
|
||||||
|
dependencies = [
|
||||||
|
"deranged",
|
||||||
|
"itoa",
|
||||||
|
"num-conv",
|
||||||
|
"powerfmt",
|
||||||
|
"serde",
|
||||||
|
"time-core",
|
||||||
|
"time-macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time-core"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time-macros"
|
||||||
|
version = "0.2.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
|
||||||
|
dependencies = [
|
||||||
|
"num-conv",
|
||||||
|
"time-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|
@ -4,3 +4,6 @@ version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
csv = "1.3.0"
|
||||||
|
serde = { version = "1.0.205", features = ["derive"] }
|
||||||
|
time = { version = "0.3.36", features = ["formatting", "parsing", "serde"] }
|
||||||
|
|
427
src/header.rs
Normal file
427
src/header.rs
Normal file
|
@ -0,0 +1,427 @@
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use time::{format_description, Date, PrimitiveDateTime};
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize, PartialEq)]
|
||||||
|
pub enum Kennzeichen {
|
||||||
|
EXTF,
|
||||||
|
DTVF,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize, PartialEq)]
|
||||||
|
pub enum Format {
|
||||||
|
DebitorenKreditoren,
|
||||||
|
Sachkontenbeschriftungen,
|
||||||
|
Buchungsstapel,
|
||||||
|
Zahlungsbedingungen,
|
||||||
|
DiverseAdressen,
|
||||||
|
WiederkehrendeBuchungen,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Format {
|
||||||
|
pub fn get_kategorie(&self) -> u8 {
|
||||||
|
match self {
|
||||||
|
Format::DebitorenKreditoren => 16,
|
||||||
|
Format::Sachkontenbeschriftungen => 20,
|
||||||
|
Format::Buchungsstapel => 21,
|
||||||
|
Format::Zahlungsbedingungen => 46,
|
||||||
|
Format::DiverseAdressen => 48,
|
||||||
|
Format::WiederkehrendeBuchungen => 65,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_name(&self) -> &'static str {
|
||||||
|
match self {
|
||||||
|
Format::DebitorenKreditoren => "Debitoren/Kreditoren",
|
||||||
|
Format::Sachkontenbeschriftungen => "Sachkontenbeschriftungen",
|
||||||
|
Format::Buchungsstapel => "Buchungsstapel",
|
||||||
|
Format::Zahlungsbedingungen => "Zahlungsbedingungen",
|
||||||
|
Format::DiverseAdressen => "Diverse Adressen",
|
||||||
|
Format::WiederkehrendeBuchungen => "Wiederkehrende Buchungen",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_version(&self) -> u8 {
|
||||||
|
match self {
|
||||||
|
Format::DebitorenKreditoren => 5,
|
||||||
|
Format::Sachkontenbeschriftungen => 3,
|
||||||
|
Format::Buchungsstapel => 13,
|
||||||
|
Format::Zahlungsbedingungen => 2,
|
||||||
|
Format::DiverseAdressen => 2,
|
||||||
|
Format::WiederkehrendeBuchungen => 4,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<u8> for Format {
|
||||||
|
type Error = &'static str;
|
||||||
|
|
||||||
|
fn try_from(value: u8) -> Result<Self, Self::Error> {
|
||||||
|
match value {
|
||||||
|
16 => Ok(Format::DebitorenKreditoren),
|
||||||
|
20 => Ok(Format::Sachkontenbeschriftungen),
|
||||||
|
21 => Ok(Format::Buchungsstapel),
|
||||||
|
46 => Ok(Format::Zahlungsbedingungen),
|
||||||
|
48 => Ok(Format::DiverseAdressen),
|
||||||
|
65 => Ok(Format::WiederkehrendeBuchungen),
|
||||||
|
_ => Err("Invalid format category"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<String> for Format {
|
||||||
|
type Error = &'static str;
|
||||||
|
|
||||||
|
fn try_from(value: String) -> Result<Self, Self::Error> {
|
||||||
|
match value.as_str() {
|
||||||
|
"Debitoren/Kreditoren" => Ok(Format::DebitorenKreditoren),
|
||||||
|
// Name laut Spec
|
||||||
|
"Sachkontenbeschriftungen" => Ok(Format::Sachkontenbeschriftungen),
|
||||||
|
// Name laut Musterdaten
|
||||||
|
"Kontenbeschriftungen" => Ok(Format::Sachkontenbeschriftungen),
|
||||||
|
"Buchungsstapel" => Ok(Format::Buchungsstapel),
|
||||||
|
"Zahlungsbedingungen" => Ok(Format::Zahlungsbedingungen),
|
||||||
|
"Diverse Adressen" => Ok(Format::DiverseAdressen),
|
||||||
|
"Wiederkehrende Buchungen" => Ok(Format::WiederkehrendeBuchungen),
|
||||||
|
_ => Err("Invalid format name"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
pub enum Buchungstyp {
|
||||||
|
Finanzbuchfuehrung = 1,
|
||||||
|
Jahresabschluss = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<u8> for Buchungstyp {
|
||||||
|
type Error = &'static str;
|
||||||
|
|
||||||
|
fn try_from(value: u8) -> Result<Self, Self::Error> {
|
||||||
|
match value {
|
||||||
|
1 => Ok(Buchungstyp::Finanzbuchfuehrung),
|
||||||
|
2 => Ok(Buchungstyp::Jahresabschluss),
|
||||||
|
_ => Err("Invalid value for Buchungstyp"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
pub enum Rechnungslegungszweck {
|
||||||
|
Unabhaengig = 0,
|
||||||
|
Steuerrecht = 30,
|
||||||
|
Kalkulatorik = 40,
|
||||||
|
Handelsrecht = 50,
|
||||||
|
IFRS = 64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<u8> for Rechnungslegungszweck {
|
||||||
|
type Error = &'static str;
|
||||||
|
|
||||||
|
fn try_from(value: u8) -> Result<Self, Self::Error> {
|
||||||
|
match value {
|
||||||
|
0 => Ok(Rechnungslegungszweck::Unabhaengig),
|
||||||
|
30 => Ok(Rechnungslegungszweck::Steuerrecht),
|
||||||
|
40 => Ok(Rechnungslegungszweck::Kalkulatorik),
|
||||||
|
50 => Ok(Rechnungslegungszweck::Handelsrecht),
|
||||||
|
64 => Ok(Rechnungslegungszweck::IFRS),
|
||||||
|
_ => Err("Invalid value for Rechnungslegungszweck"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
pub enum Festschreibung {
|
||||||
|
KeineFestschreibung = 0,
|
||||||
|
Festschreibung = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<u8> for Festschreibung {
|
||||||
|
type Error = &'static str;
|
||||||
|
|
||||||
|
fn try_from(value: u8) -> Result<Self, Self::Error> {
|
||||||
|
match value {
|
||||||
|
0 => Ok(Festschreibung::KeineFestschreibung),
|
||||||
|
1 => Ok(Festschreibung::Festschreibung),
|
||||||
|
_ => Err("Invalid value for Festschreibung"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Benutzerfreundliche Struktur für den DatevHeader
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
pub struct DatevHeader {
|
||||||
|
pub kennzeichen: Kennzeichen, // EXTF oder DTVF
|
||||||
|
pub format: Format, // Formatkategorie, -name, -version
|
||||||
|
pub erzeugt_am: PrimitiveDateTime, // Zeitstempel YYYYMMDDHHMMSSFFF
|
||||||
|
pub herkunft: Option<String>, // Herkunft, z.B. RE
|
||||||
|
pub exportiert_von: Option<String>, // Beispiel: Max Mustermann
|
||||||
|
pub importiert_von: Option<String>, // Beispiel: Admin
|
||||||
|
pub beraternummer: u32, // Bereich 1001-9999999
|
||||||
|
pub mandantennummer: u32, // Bereich 1-99999
|
||||||
|
pub wj_beginn: Date, // Wirtschafts-Jahresbeginn YYYYMMDD
|
||||||
|
pub sachkontenlaenge: u8, // 4-8
|
||||||
|
pub datum_von: Option<Date>, // Beginn der Periode YYYYMMDD
|
||||||
|
pub datum_bis: Option<Date>, // Ende der Periode YYYYMMDD
|
||||||
|
pub bezeichnung: Option<String>, // Beispiel: Rechnungsausgang 02/2024
|
||||||
|
pub diktatkuerzel: Option<String>, // Beispiel: MM
|
||||||
|
pub buchungstyp: Option<Buchungstyp>, // 1 = Finanzbuchführung, 2 = Jahresabschluss
|
||||||
|
pub rechnungslegungszweck: Option<Rechnungslegungszweck>, // 0, 30, 40, 50, 64
|
||||||
|
pub festschreibung: Option<Festschreibung>, // 0 = keine Festschreibung, 1 = Festschreibung
|
||||||
|
pub wkz: String, // Währungscode, z.B. EUR
|
||||||
|
pub sachkontenrahmen: Option<String>, // z.B. "03"
|
||||||
|
pub id_der_branchenloesung: Option<u16>, // max 4-stellige Zahl
|
||||||
|
pub anwendungsinformation: Option<String>, // z.B. 02/2024
|
||||||
|
}
|
||||||
|
|
||||||
|
// Struktur für die deserialisierte Darstellung des Headers (entspricht exakt dem CSV-Format)
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
pub struct DatevHeaderRaw {
|
||||||
|
pub kennzeichen: String, // EXTF oder DTVF als String
|
||||||
|
pub versionsnummer: u16, // 700
|
||||||
|
pub formatkategorie: u8, // z.B. 21
|
||||||
|
pub formatname: String, // z.B. "Buchungsstapel"
|
||||||
|
pub formatversion: u8, // z.B. 13
|
||||||
|
pub erzeugt_am: String, // YYYYMMDDHHMMSSFFF als String
|
||||||
|
pub importiert: Option<String>, // Leer
|
||||||
|
pub herkunft: Option<String>, // Herkunft, z.B. RE
|
||||||
|
pub exportiert_von: Option<String>, // Beispiel: Max Mustermann
|
||||||
|
pub importiert_von: Option<String>, // Beispiel: Admin
|
||||||
|
pub beraternummer: u32, // Bereich 1001-9999999
|
||||||
|
pub mandantennummer: u32, // Bereich 1-99999
|
||||||
|
pub wj_beginn: String, // YYYYMMDD als String
|
||||||
|
pub sachkontenlaenge: u8, // 4-8
|
||||||
|
pub datum_von: String, // YYYYMMDD als String
|
||||||
|
pub datum_bis: String, // YYYYMMDD als String
|
||||||
|
pub bezeichnung: Option<String>, // Beispiel: Rechnungsausgang 02/2024
|
||||||
|
pub diktatkuerzel: Option<String>, // Beispiel: MM
|
||||||
|
pub buchungstyp: Option<u8>, // 1 = Finanzbuchführung, 2 = Jahresabschluss
|
||||||
|
pub rechnungslegungszweck: Option<u8>, // 0, 30, 40, 50, 64
|
||||||
|
pub festschreibung: Option<u8>, // 0 = keine Festschreibung, 1 = Festschreibung
|
||||||
|
pub wkz: String, // Währungscode, z.B. EUR
|
||||||
|
pub reserviert_0: String,
|
||||||
|
pub derivatskennzeichen: String,
|
||||||
|
pub reserviert_1: String,
|
||||||
|
pub reserviert_2: String,
|
||||||
|
pub sachkontenrahmen: Option<String>, // z.B. "03"
|
||||||
|
pub id_der_branchenloesung: Option<u16>, // max 4-stellige Zahl
|
||||||
|
pub reserviert_3: String,
|
||||||
|
pub reserviert_4: String,
|
||||||
|
pub anwendungsinformation: Option<String>, // z.B. 02/2024
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implementierung der Konvertierung von DatevHeader nach DatevHeaderRaw
|
||||||
|
impl From<DatevHeader> for DatevHeaderRaw {
|
||||||
|
fn from(header: DatevHeader) -> Self {
|
||||||
|
let datetime_format =
|
||||||
|
format_description::parse("[year][month][day][hour][minute][second][subsecond]")
|
||||||
|
.unwrap();
|
||||||
|
let date_format = format_description::parse("[year][month][day]").unwrap();
|
||||||
|
|
||||||
|
DatevHeaderRaw {
|
||||||
|
kennzeichen: match header.kennzeichen {
|
||||||
|
Kennzeichen::EXTF => "EXTF".to_string(),
|
||||||
|
Kennzeichen::DTVF => "DTVF".to_string(),
|
||||||
|
},
|
||||||
|
versionsnummer: 700, // Feststehender Wert
|
||||||
|
formatkategorie: header.format.get_kategorie(),
|
||||||
|
formatname: header.format.get_name().to_string(),
|
||||||
|
formatversion: header.format.get_version(),
|
||||||
|
erzeugt_am: header.erzeugt_am.format(&datetime_format).unwrap(),
|
||||||
|
importiert: None, // Entspricht der CSV-Spec
|
||||||
|
herkunft: header.herkunft,
|
||||||
|
exportiert_von: header.exportiert_von,
|
||||||
|
importiert_von: header.importiert_von,
|
||||||
|
beraternummer: header.beraternummer,
|
||||||
|
mandantennummer: header.mandantennummer,
|
||||||
|
wj_beginn: header.wj_beginn.format(&date_format).unwrap(),
|
||||||
|
sachkontenlaenge: header.sachkontenlaenge,
|
||||||
|
datum_von: header
|
||||||
|
.datum_von
|
||||||
|
.map(|val| val.format(&date_format).unwrap())
|
||||||
|
.unwrap_or_else(|| String::new()),
|
||||||
|
datum_bis: header
|
||||||
|
.datum_bis
|
||||||
|
.map(|val| val.format(&date_format).unwrap())
|
||||||
|
.unwrap_or_else(|| String::new()),
|
||||||
|
bezeichnung: header.bezeichnung,
|
||||||
|
diktatkuerzel: header.diktatkuerzel,
|
||||||
|
buchungstyp: header.buchungstyp.map(|val| val as u8),
|
||||||
|
rechnungslegungszweck: header.rechnungslegungszweck.map(|val| val as u8),
|
||||||
|
festschreibung: header.festschreibung.map(|val| val as u8),
|
||||||
|
wkz: header.wkz,
|
||||||
|
reserviert_0: String::new(),
|
||||||
|
derivatskennzeichen: String::new(),
|
||||||
|
reserviert_1: String::new(),
|
||||||
|
reserviert_2: String::new(),
|
||||||
|
sachkontenrahmen: header.sachkontenrahmen,
|
||||||
|
id_der_branchenloesung: header.id_der_branchenloesung,
|
||||||
|
reserviert_3: String::new(),
|
||||||
|
reserviert_4: String::new(),
|
||||||
|
anwendungsinformation: header.anwendungsinformation,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<DatevHeaderRaw> for DatevHeader {
|
||||||
|
type Error = String;
|
||||||
|
|
||||||
|
fn try_from(raw: DatevHeaderRaw) -> Result<Self, Self::Error> {
|
||||||
|
let datetime_format =
|
||||||
|
format_description::parse("[year][month][day][hour][minute][second][subsecond]")
|
||||||
|
.unwrap();
|
||||||
|
let date_format = format_description::parse("[year][month][day]").unwrap();
|
||||||
|
|
||||||
|
let parse_date =
|
||||||
|
|date_string: &str, date_name: &'static str| -> Result<Option<Date>, String> {
|
||||||
|
Ok(if !date_string.is_empty() {
|
||||||
|
Some(Date::parse(date_string, &date_format).map_err(|_| {
|
||||||
|
format!("Invalid date format for {date_name}: {date_string}")
|
||||||
|
})?)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
let erzeugt_am = PrimitiveDateTime::parse(&raw.erzeugt_am, &datetime_format)
|
||||||
|
.map_err(|_| "Invalid date format for erzeugt_am")?;
|
||||||
|
let wj_beginn = Date::parse(&raw.wj_beginn, &date_format)
|
||||||
|
.map_err(|_| format!("Invalid date format for wj_beginn"))?;
|
||||||
|
let datum_von = parse_date(&raw.datum_von, "datum_von")?;
|
||||||
|
let datum_bis = parse_date(&raw.datum_bis, "datum_bis")?;
|
||||||
|
|
||||||
|
let format = Format::try_from(raw.formatkategorie).and_then(|kategorie| {
|
||||||
|
Format::try_from(raw.formatname).and_then(|name| {
|
||||||
|
if kategorie == name {
|
||||||
|
Ok(kategorie)
|
||||||
|
} else {
|
||||||
|
Err("Mismatch between format category and name")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
Ok(DatevHeader {
|
||||||
|
kennzeichen: match raw.kennzeichen.as_str() {
|
||||||
|
"EXTF" => Kennzeichen::EXTF,
|
||||||
|
"DTVF" => Kennzeichen::DTVF,
|
||||||
|
_ => return Err("Invalid value for kennzeichen".to_string()),
|
||||||
|
},
|
||||||
|
format,
|
||||||
|
erzeugt_am,
|
||||||
|
herkunft: raw.herkunft,
|
||||||
|
exportiert_von: raw.exportiert_von,
|
||||||
|
importiert_von: raw.importiert_von,
|
||||||
|
beraternummer: raw.beraternummer,
|
||||||
|
mandantennummer: raw.mandantennummer,
|
||||||
|
wj_beginn,
|
||||||
|
sachkontenlaenge: raw.sachkontenlaenge,
|
||||||
|
datum_von,
|
||||||
|
datum_bis,
|
||||||
|
bezeichnung: raw.bezeichnung,
|
||||||
|
diktatkuerzel: raw.diktatkuerzel,
|
||||||
|
buchungstyp: if let Some(buchungstyp) = raw.buchungstyp {
|
||||||
|
Some(
|
||||||
|
Buchungstyp::try_from(buchungstyp)
|
||||||
|
.map_err(|_| "Invalid value for buchungstyp")?,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
},
|
||||||
|
rechnungslegungszweck: if let Some(rechnungslegungszweck) = raw.rechnungslegungszweck {
|
||||||
|
Some(
|
||||||
|
Rechnungslegungszweck::try_from(rechnungslegungszweck)
|
||||||
|
.map_err(|_| "Invalid value for rechnungslegungszweck")?,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
},
|
||||||
|
festschreibung: if let Some(festschreibung) = raw.festschreibung {
|
||||||
|
Some(
|
||||||
|
Festschreibung::try_from(festschreibung)
|
||||||
|
.map_err(|_| "Invalid value for festschreibung")?,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
},
|
||||||
|
wkz: raw.wkz,
|
||||||
|
sachkontenrahmen: raw.sachkontenrahmen,
|
||||||
|
id_der_branchenloesung: raw.id_der_branchenloesung,
|
||||||
|
anwendungsinformation: raw.anwendungsinformation,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use csv::ReaderBuilder;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
fn read_first_row_from_csv(file_path: PathBuf) -> Result<DatevHeaderRaw, csv::Error> {
|
||||||
|
let mut rdr = ReaderBuilder::new()
|
||||||
|
.delimiter(b';')
|
||||||
|
.has_headers(false)
|
||||||
|
.from_path(file_path)?;
|
||||||
|
rdr.deserialize().next().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_debitoren_kreditoren_stamm_conversion() {
|
||||||
|
let file_path = PathBuf::from("tests/data/EXTF_DebKred_Stamm.csv");
|
||||||
|
let raw_header: DatevHeaderRaw =
|
||||||
|
read_first_row_from_csv(file_path).expect("Failed to read CSV");
|
||||||
|
let header: DatevHeader =
|
||||||
|
DatevHeader::try_from(raw_header).expect("Conversion to DatevHeader failed");
|
||||||
|
assert_eq!(header.format, Format::DebitorenKreditoren);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_sachkontobeschriftungen_conversion() {
|
||||||
|
let file_path = PathBuf::from("tests/data/EXTF_Sachkontobeschriftungen.csv");
|
||||||
|
let raw_header: DatevHeaderRaw =
|
||||||
|
read_first_row_from_csv(file_path).expect("Failed to read CSV");
|
||||||
|
let header: DatevHeader =
|
||||||
|
DatevHeader::try_from(raw_header).expect("Conversion to DatevHeader failed");
|
||||||
|
assert_eq!(header.format, Format::Sachkontenbeschriftungen);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_buchungsstapel_conversion() {
|
||||||
|
let file_path = PathBuf::from("tests/data/EXTF_Buchungsstapel.csv");
|
||||||
|
let raw_header: DatevHeaderRaw =
|
||||||
|
read_first_row_from_csv(file_path).expect("Failed to read CSV");
|
||||||
|
let header: DatevHeader =
|
||||||
|
DatevHeader::try_from(raw_header).expect("Conversion to DatevHeader failed");
|
||||||
|
assert_eq!(header.format, Format::Buchungsstapel);
|
||||||
|
assert_eq!(header.kennzeichen, Kennzeichen::EXTF);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_div_adressen_conversion() {
|
||||||
|
let file_path = PathBuf::from("tests/data/EXTF_Div-Adressen.csv");
|
||||||
|
let raw_header: DatevHeaderRaw =
|
||||||
|
read_first_row_from_csv(file_path).expect("Failed to read CSV");
|
||||||
|
let header: DatevHeader =
|
||||||
|
DatevHeader::try_from(raw_header).expect("Conversion to DatevHeader failed");
|
||||||
|
assert_eq!(header.format, Format::DiverseAdressen);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_wiederkehrende_buchungen_conversion() {
|
||||||
|
let file_path = PathBuf::from("tests/data/EXTF_Wiederkehrende-Buchungen.csv");
|
||||||
|
let raw_header: DatevHeaderRaw =
|
||||||
|
read_first_row_from_csv(file_path).expect("Failed to read CSV");
|
||||||
|
let header: DatevHeader =
|
||||||
|
DatevHeader::try_from(raw_header).expect("Conversion to DatevHeader failed");
|
||||||
|
assert_eq!(header.format, Format::WiederkehrendeBuchungen);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_zahlungsbedingungen_conversion() {
|
||||||
|
let file_path = PathBuf::from("tests/data/EXTF_Zahlungsbedingungen.csv");
|
||||||
|
let raw_header: DatevHeaderRaw =
|
||||||
|
read_first_row_from_csv(file_path).expect("Failed to read CSV");
|
||||||
|
let header: DatevHeader =
|
||||||
|
DatevHeader::try_from(raw_header).expect("Conversion to DatevHeader failed");
|
||||||
|
assert_eq!(header.format, Format::Zahlungsbedingungen);
|
||||||
|
}
|
||||||
|
}
|
15
src/lib.rs
15
src/lib.rs
|
@ -1,14 +1 @@
|
||||||
pub fn add(left: u64, right: u64) -> u64 {
|
mod header;
|
||||||
left + right
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn it_works() {
|
|
||||||
let result = add(2, 2);
|
|
||||||
assert_eq!(result, 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
56
tests/data/EXTF_Buchungsstapel.csv
Normal file
56
tests/data/EXTF_Buchungsstapel.csv
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
"EXTF";700;21;"Buchungsstapel";13;20240130140440439;;"RE";"";"";29098;55003;20240101;4;20240101;20240831;"Buchungsstapel";"WD";1;0;0;"EUR";;"";;;"03";;;"";""
|
||||||
|
Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;WKZ Umsatz;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;Konto;Gegenkonto (ohne BU-Schlüssel);BU-Schlüssel;Belegdatum;Belegfeld 1;Belegfeld 2;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Geschäftspartnerbank;Sachverhalt;Zinssperre;Beleglink;Beleginfo - Art 1;Beleginfo - Inhalt 1;Beleginfo - Art 2;Beleginfo - Inhalt 2;Beleginfo - Art 3;Beleginfo - Inhalt 3;Beleginfo - Art 4;Beleginfo - Inhalt 4;Beleginfo - Art 5;Beleginfo - Inhalt 5;Beleginfo - Art 6;Beleginfo - Inhalt 6;Beleginfo - Art 7;Beleginfo - Inhalt 7;Beleginfo - Art 8;Beleginfo - Inhalt 8;KOST1 - Kostenstelle;KOST2 - Kostenstelle;Kost-Menge;EU-Land u. UStID (Bestimmung);EU-Steuersatz (Bestimmung);Abw. Versteuerungsart;Sachverhalt L+L;Funktionsergänzung L+L;BU 49 Hauptfunktionstyp;BU 49 Hauptfunktionsnummer;BU 49 Funktionsergänzung;Zusatzinformation - Art 1;Zusatzinformation- Inhalt 1;Zusatzinformation - Art 2;Zusatzinformation- Inhalt 2;Zusatzinformation - Art 3;Zusatzinformation- Inhalt 3;Zusatzinformation - Art 4;Zusatzinformation- Inhalt 4;Zusatzinformation - Art 5;Zusatzinformation- Inhalt 5;Zusatzinformation - Art 6;Zusatzinformation- Inhalt 6;Zusatzinformation - Art 7;Zusatzinformation- Inhalt 7;Zusatzinformation - Art 8;Zusatzinformation- Inhalt 8;Zusatzinformation - Art 9;Zusatzinformation- Inhalt 9;Zusatzinformation - Art 10;Zusatzinformation- Inhalt 10;Zusatzinformation - Art 11;Zusatzinformation- Inhalt 11;Zusatzinformation - Art 12;Zusatzinformation- Inhalt 12;Zusatzinformation - Art 13;Zusatzinformation- Inhalt 13;Zusatzinformation - Art 14;Zusatzinformation- Inhalt 14;Zusatzinformation - Art 15;Zusatzinformation- Inhalt 15;Zusatzinformation - Art 16;Zusatzinformation- Inhalt 16;Zusatzinformation - Art 17;Zusatzinformation- Inhalt 17;Zusatzinformation - Art 18;Zusatzinformation- Inhalt 18;Zusatzinformation - Art 19;Zusatzinformation- Inhalt 19;Zusatzinformation - Art 20;Zusatzinformation- Inhalt 20;Stück;Gewicht;Zahlweise;Forderungsart;Veranlagungsjahr;Zugeordnete Fälligkeit;Skontotyp;Auftragsnummer;Buchungstyp;USt-Schlüssel (Anzahlungen);EU-Land (Anzahlungen);Sachverhalt L+L (Anzahlungen);EU-Steuersatz (Anzahlungen);Erlöskonto (Anzahlungen);Herkunft-Kz;Buchungs GUID;KOST-Datum;SEPA-Mandatsreferenz;Skontosperre;Gesellschaftername;Beteiligtennummer;Identifikationsnummer;Zeichnernummer;Postensperre bis;Bezeichnung SoBil-Sachverhalt;Kennzeichen SoBil-Buchung;Festschreibung;Leistungsdatum;Datum Zuord. Steuerperiode;Fälligkeit;Generalumkehr (GU);Steuersatz;Land;Abrechnungsreferenz;BVV-Position;EU-Land u. UStID (Ursprung);EU-Steuersatz (Ursprung);Abw. Skontokonto
|
||||||
|
100,18;"S";"";;;"";48400;8401;"";3101;"";"";;"Test Anzahlung";;"";1;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"50";"";;"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";2012;;1;"Projekt 4711";"AG";3;"";;;8070;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
10,00;"S";"";;;"";48220;8400;"";3103;"";"";;" "Normalabschr. immater. VermG" ";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"90";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
64083;"S";"";;;"";4400;85;"";3101;"";"";;"Normalabschreibung Gebäude";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"50";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
531,16;"S";"";;;"";4832;320;"";3101;"";"";;"Normalabschreibung Kfz";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
4979,65;"H";"";;;"";8400;30200;"";0902;"201802010";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"202";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
11687,62;"H";"";;;"";8120;40000;"";0902;"201802011";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
13968,83;"H";"";;;"";8125;40100;"";1602;"201802023";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"889";5;"DE133546770";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
11807,63;"H";"";;;"";8125;40100;"";1702;"201802024";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"";;"DE133546770";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
4120,51;"H";"";;;"";8405;30100;"";1702;"201802025";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"201";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
16585,28;"H";"";;;"";8405;10200;"";1702;"201802026";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"202";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
15301,67;"H";"";;;"";8400;10300;"";2002;"201802027";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"201";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
7404,94;"H";"";;;"";8400;60391;"";2102;"201802028";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"199";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
66976,12;"H";"";;;"";8407;10400;"";2202;"201802029";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"201";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
118,55;"H";"";;;"";1000;1369;"";0202;"4";"";;"Test-Shop";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"Beleg fehlt";"Post";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
26,87;"H";"";;;"";1000;4930;"9";0102;"";"";;"Schreibwaren";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"90";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
460,00;"S";"";;;"";1000;1360;"";0702;"";"";;"Kasseneinlage";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
124,00;"H";"CHF";1,240402;100,00;"EUR";8120;20050;"";2702;"";"";;"Umsatz Schweiz";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
70,96;"H";"";;;"";1100;4530;"9";2702;"";"";;"Diesel";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
17107,00;"S";"";;;"";31100;8125;"";2702;"201202007";"";;"Ausland EU";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"520";"45";30;"ATU52409200";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
5856,00;"H";"";;;"";1100;980;"";2802;"";"";;"Gebäudeversicherung 03/12-02/13";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
70,27;"H";"";;;"";1100;4530;"9";2802;"";"";;"Benzin";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
1763,58;"H";"";;;"";1100;4580;"9";2802;"";"";;"Leasing Van";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
1190,00;"H";"";;;"";8050;10100;"3";1403;"AR1234";"";;"Aufteilung AR ohne Automatikkonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
700,00;"S";"";;;"";8050;8060;"";1403;"AR1234";"";;"Aufteilung auf Erlöskonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
300,00;"S";"";;;"";8050;8070;"";1403;"AR1234";"";;"Aufteilung auf Erlöskonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
1190,00;"H";"";;;"";8400;10100;"";1403;"AR2345";"";;"Aufteilung AR mit Automatikkonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
600,00;"S";"";;;"";8400;8401;"40";1403;"AR2345";"";;"Auftreilung auf Erlöskonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
400,00;"S";"";;;"";8400;8405;"40";1403;"AR2345";"";;"Auftreilung auf Erlöskonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
2500,00;"S";"";;;"";10100;8400;"";0103;"AR-78/13";"160318";;"Holzlieferung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
2500,00;"S";"";;;"";1200;10100;"";0103;"AR-78/13";"";;"Bezahlung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
119,00;"S";"";;;"";10100;8400;"";0103;"AR-456/13";"";;"Rechnung mit Skontogewährung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
116,62;"S";"";;;"";1200;10100;"";0103;"AR-456/13";"";2,38;"Zahlung mit 2% Skonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
35,00;"S";"";;;"";10001;8400;"";0103;"AR-2013";"";;"falscher Debitor";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
35,00;"H";"";;;"";10001;8400;"20";0103;"AR-2013";"";;"Berichtigung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
35,00;"S";"";;;"";10100;8400;"";0103;"AR-2013";"";;"richtiger Debitor";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
488,00;"H";"";;;"";980;4360;"";0101;"";"";;"Gebäudeversicherung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"10";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;;;"";;"";"";;"";;
|
||||||
|
102,80;"H";"GBP";0,830000;123,86;"EUR";1225;71000;"";0603;"659832";"";;"Duncen Test Ltd.";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
1,51;"H";"";;;"";2661;71000;"";0603;"659832";"";;"Währungsumrechnungsdifferenz";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"99";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
343,65;"H";"GBP";0,830000;414,04;"EUR";1225;71000;"";0603;"659833";"";;"Duncen Test Ltd.";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
2,51;"H";"";;;"";2661;71000;"";0603;"659833";"";;"Währungsumrechnungsdifferenz";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"99";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
2685,69;"H";"CHF";1,076000;2495,99;"EUR";8120;20200;"";1303;"20JJ03069";"";;"Schweizertest";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
2847,33;"H";"CHF";1,072300;2655,35;"EUR";8120;20203;"";1403;"20JJ03070";"";;"Exempel Uhrmacher";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
1612,12;"H";"CHF";1,069900;1506,80;"EUR";8120;20202;"";1603;"20JJ03071";"";;"Rübli-Test";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
119,00;"H";"";;;"";10001;8400;"";3005;"2345";"";;"Testleistungsdatum Ausgangsrechn. buchen nach Rechnungsdatum";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"30";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"";"";;"";0;"";"";"";"";;"";;0;10052018;;;"";;"";"";;"";;
|
||||||
|
357,00;"H";"";;;"";70000;3400;"";2505;"ER234";"";;"Testleistungsdatum Eingangsrechn. buchen nach Rechnungsdatum";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"30";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"";"";;"";0;"";"";"";"";;"";;0;12052018;25052018;;"";;"";"";;"";;
|
||||||
|
55,55;"H";"";;;"";10500;8050;"3";0203;"ar1111";"";;"Generalumkehr";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"1";0,00;"";"";;"";;
|
||||||
|
100,00;"H";"";;;"";70010;4900;"501";3101;"363";"";;"501";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;190;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
100,00;"S";"";;;"";70010;4900;"501";3101;"363";"";;"501 GU";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;190;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"1";0,00;"";"";;"";;
|
||||||
|
100,00;"H";"";;;"";70020;4900;"502";3101;"364";"";;"502";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
100,00;"S";"";;;"";70020;4900;"502";3101;"364";"";;"502 GU";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"1";0,00;"";"";;"";;
|
||||||
|
100,00;"H";"";;;"";70030;4900;"6501";3101;"365";"";;"6501";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;190;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
100,00;"S";"";;;"";70030;4900;"6501";3101;"365";"";;"6501 GU";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;190;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"1";0,00;"";"";;"";;
|
||||||
|
100,00;"H";"";;;"";70040;4900;"6502";3101;"366";"";;"6502";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"0";0,00;"";"";;"";;
|
||||||
|
100,00;"S";"";;;"";70040;4900;"6502";3101;"366";"";;"6502 GU";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";1;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"RE";"";;"";0;"";"";"";"";;"";;0;;;;"1";0,00;"";"";;"";;
|
Can't render this file because it has a wrong number of fields in line 2.
|
6
tests/data/EXTF_DebKred_Stamm.csv
Normal file
6
tests/data/EXTF_DebKred_Stamm.csv
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
"EXTF";700;16;"Debitoren/Kreditoren";5;20240130140659583;;"RE";"";"";29098;55003;20240101;4;;;"";"";;;;"";;"";;;"03";;;"";""
|
||||||
|
Konto;Name (Adressattyp Unternehmen);Unternehmensgegenstand;Name (Adressattyp natürl. Person);Vorname (Adressattyp natürl. Person);Name (Adressattyp keine Angabe);Adressattyp;Kurzbezeichnung;EU-Land;EU-UStID;Anrede;Titel/Akad. Grad;Adelstitel;Namensvorsatz;Adressart;Straße;Postfach;Postleitzahl;Ort;Land;Versandzusatz;Adresszusatz;Abweichende Anrede;Abw. Zustellbezeichnung 1;Abw. Zustellbezeichnung 2;Kennz. Korrespondenzadresse;Adresse Gültig von;Adresse Gültig bis;Telefon;Bemerkung (Telefon);Telefon GL;Bemerkung (Telefon GL);E-Mail;Bemerkung (E-Mail);Internet;Bemerkung (Internet);Fax;Bemerkung (Fax);Sonstige;Bemerkung (Sonstige);Bankleitzahl 1;Bankbezeichnung 1;Bank-Kontonummer 1;Länderkennzeichen 1;IBAN-Nr. 1;Leerfeld;SWIFT-Code 1;Abw. Kontoinhaber 1;Kennz. Hauptbankverb. 1;Bankverb 1 Gültig von;Bankverb 1 Gültig bis;Bankleitzahl 2;Bankbezeichnung 2;Bank-Kontonummer 2;Länderkennzeichen 2;IBAN-Nr. 2;Leerfeld;SWIFT-Code 2;Abw. Kontoinhaber 2;Kennz. Hauptbankverb. 2;Bankverb 2 Gültig von;Bankverb 2 Gültig bis;Bankleitzahl 3;Bankbezeichnung 3;Bank-Kontonummer 3;Länderkennzeichen 3;IBAN-Nr. 3;Leerfeld;SWIFT-Code 3;Abw. Kontoinhaber 3;Kennz. Hauptbankverb. 3;Bankverb 3 Gültig von;Bankverb 3 Gültig bis;Bankleitzahl 4;Bankbezeichnung 4;Bank-Kontonummer 4;Länderkennzeichen 4;IBAN-Nr. 4;Leerfeld;SWIFT-Code 4;Abw. Kontoinhaber 4;Kennz. Hauptbankverb. 4;Bankverb 4 Gültig von;Bankverb 4 Gültig bis;Bankleitzahl 5;Bankbezeichnung 5;Bank-Kontonummer 5;Länderkennzeichen 5;IBAN-Nr. 5;Leerfeld;SWIFT-Code 5;Abw. Kontoinhaber 5;Kennz. Hauptbankverb. 5;Bankverb 5 Gültig von;Bankverb 5 Gültig bis;Leerfeld;Briefanrede;Grußformel;Kunden-/Lief.-Nr.;Steuernummer;Sprache;Ansprechpartner;Vertreter;Sachbearbeiter;Diverse-Konto;Ausgabeziel;Währungssteuerung;Kreditlimit (Debitor);Zahlungsbedingung;Fälligkeit in Tagen (Debitor);Skonto in Prozent (Debitor);Kreditoren-Ziel 1 Tg.;Kreditoren-Skonto 1 %;Kreditoren-Ziel 2 Tg.;Kreditoren-Skonto 2 %;Kreditoren-Ziel 3 Brutto Tg.;Kreditoren-Ziel 4 Tg.;Kreditoren-Skonto 4 %;Kreditoren-Ziel 5 Tg.;Kreditoren-Skonto 5 %;Mahnung;Kontoauszug;Mahntext 1;Mahntext 2;Mahntext 3;Kontoauszugstext;Mahnlimit Betrag;Mahnlimit %;Zinsberechnung;Mahnzinssatz 1;Mahnzinssatz 2;Mahnzinssatz 3;Lastschrift;Leerfeld;Mandantenbank;Zahlungsträger;Indiv. Feld 1;Indiv. Feld 2;Indiv. Feld 3;Indiv. Feld 4;Indiv. Feld 5;Indiv. Feld 6;Indiv. Feld 7;Indiv. Feld 8;Indiv. Feld 9;Indiv. Feld 10;Indiv. Feld 11;Indiv. Feld 12;Indiv. Feld 13;Indiv. Feld 14;Indiv. Feld 15;Abweichende Anrede (Rechnungsadresse);Adressart (Rechnungsadresse);Straße (Rechnungsadresse);Postfach (Rechnungsadresse);Postleitzahl (Rechnungsadresse);Ort (Rechnungsadresse);Land (Rechnungsadresse);Versandzusatz (Rechnungsadresse);Adresszusatz (Rechnungsadresse);Abw. Zustellbezeichnung 1 (Rechnungsadresse);Abw. Zustellbezeichnung 2 (Rechnungsadresse);Adresse Gültig von (Rechnungsadresse);Adresse Gültig bis (Rechnungsadresse);Bankleitzahl 6;Bankbezeichnung 6;Bank-Kontonummer 6;Länderkennzeichen 6;IBAN-Nr. 6;Leerfeld;SWIFT-Code 6;Abw. Kontoinhaber 6;Kennz. Hauptbankverb. 6;Bankverb 6 Gültig von;Bankverb 6 Gültig bis;Bankleitzahl 7;Bankbezeichnung 7;Bank-Kontonummer 7;Länderkennzeichen 7;IBAN-Nr. 7;Leerfeld;SWIFT-Code 7;Abw. Kontoinhaber 7;Kennz. Hauptbankverb. 7;Bankverb 7 Gültig von;Bankverb 7 Gültig bis;Bankleitzahl 8;Bankbezeichnung 8;Bank-Kontonummer 8;Länderkennzeichen 8;IBAN-Nr. 8;Leerfeld;SWIFT-Code 8;Abw. Kontoinhaber 8;Kennz. Hauptbankverb. 8;Bankverb 8 Gültig von;Bankverb 8 Gültig bis;Bankleitzahl 9;Bankbezeichnung 9;Bank-Kontonummer 9;Länderkennzeichen 9;IBAN-Nr. 9;Leerfeld;SWIFT-Code 9;Abw. Kontoinhaber 9;Kennz. Hauptbankverb. 9;Bankverb 9 Gültig von;Bankverb 9 Gültig bis;Bankleitzahl 10;Bankbezeichnung 10;Bank-Kontonummer 10;Länderkennzeichen 10;IBAN-Nr. 10;Leerfeld;SWIFT-Code 10;Abw. Kontoinhaber 10;Kennz. Hauptbankverb. 10;Bankverb 10 Gültig von;Bankverb 10 Gültig bis;Nummer Fremdsystem;Insolvent;SEPA-Mandatsreferenz 1;SEPA-Mandatsreferenz 2;SEPA-Mandatsreferenz 3;SEPA-Mandatsreferenz 4;SEPA-Mandatsreferenz 5;SEPA-Mandatsreferenz 6;SEPA-Mandatsreferenz 7;SEPA-Mandatsreferenz 8;SEPA-Mandatsreferenz 9;SEPA-Mandatsreferenz 10;Verknüpftes OPOS-Konto;Mahnsperre bis;Lastschriftsperre bis;Zahlungssperre bis;Gebührenberechnung;Mahngebühr 1;Mahngebühr 2;Mahngebühr 3;Pauschalenberechnung;Verzugspauschale 1;Verzugspauschale 2;Verzugspauschale 3;Alternativer Suchname;Status;Anschrift manuell geändert (Korrespondenzadresse);Anschrift individuell (Korrespondenzadresse);Anschrift manuell geändert (Rechnungsadresse);Anschrift individuell (Rechnungsadresse);Fristberechnung bei Debitor;Mahnfrist 1;Mahnfrist 2;Mahnfrist 3;Letzte Frist
|
||||||
|
10000;"Möbel Testgruber";"Schreinerei";"";"";"";"2";"Möbel Testgrube";"DE";"133546770";"Firma";"";"";"";"STR";"Nelkenteststraße 125";"";"90482";"Nürnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"1";01012012;01012022;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012020;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012020;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012020;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012020;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"1";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;20,25;1;10,50;11,11;12,12;"7";"1";1;"9";"ind. Feld";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";0;"1234-AB-56787";"";"";"";"";"";"";"";"";"778259637";;03122018;02122018;01122018;1;5,1;5,2;5,3;1;0,9;0,2;0,5;"";1;0;"";1;"";;;;;
|
||||||
|
20000;"Einrichtungshaus Muster";"Möbelhaus";"";"";"";"2";"Muster";"";"";"Firma";"";"";"";"STR";"Feldgasse 15";"";"90409";"Nürnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"1";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"1";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;;;;;;"";"";0;"";"";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";0;"";"";"";"";"";"";"";"";"";"";;03122018;02122018;01122018;1;5,1;5,2;5,3;1;0,9;0,2;0,5;"";;;"";;"";;;;;
|
||||||
|
30000;"";"";"Mustermeier";"Hans";"";"1";"";"";"";"Herr";"";"";"";"STR";"Musterweg 14b";"";"90489";"Nürnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"1";01012012;01012024;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"1";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;;;;;;"";"";0;"";"";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";0;"";"";"";"";"";"";"";"";"";"";;;;;1;5,1;5,2;5,3;1;0,9;0,2;0,5;"";;;"";;"";;;;;
|
||||||
|
40000;"";"";"Testhuber";"Susanne";"";"1";"";"";"";"Frau";"";"";"";"STR";"Beispielstr. 56";"";"90512";"Nürnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"1";01012012;01012025;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testmüller";"0";01012012;01012023;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"1";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;;;;;;"";"";0;"";"";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";0;"";"";"";"";"";"";"";"";"";"";;;;;1;5,1;5,2;5,3;1;0,9;0,2;0,5;"";;;"";;"";;;;;
|
Can't render this file because it has a wrong number of fields in line 2.
|
5
tests/data/EXTF_Div-Adressen.csv
Normal file
5
tests/data/EXTF_Div-Adressen.csv
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
"EXTF";700;48;"Diverse Adressen";2;20240118132115652;;"RE";"Admin";"";29098;55003;20240101;4;;;"";"";;;;"";;"AW";;"";03;;"";"";
|
||||||
|
Adressnummer;Konto;Anrede;Name (Adressattyp Unternehmen);Unternehmensgegenstand;Kurzbezeichnung;Name (Adressattyp natürl. Person);Vorname (Adressattyp natürl. Person);Name (Adressattyp keine Angabe);Adressattyp;Titel/Akad. Grad;Adelstitel;Namensvorsatz;Abweichende Anrede;Adressart;Straße;Postfach;Postleitzahl;Ort;Land;Versandzusatz;Adresszusatz;Abw. Zustellbezeichnung 1;Abw. Zustellbezeichnung 2;Kennz. Korrespondenzadresse;Adresse Gültig von;Adresse Gültig bis;Abweichende Anrede (Rechnungsadresse);Adressart (Rechnungsadresse);Straße (Rechnungsadresse);Postfach (Rechnungsadresse);Postleitzahl (Rechnungsadresse);Ort (Rechnungsadresse);Land (Rechnungsadresse);Versandzusatz (Rechnungsadresse);Adresszusatz (Rechnungsadresse);Abw. Zustellbezeichnung 1 (Rechnungsadresse);Abw. Zustellbezeichnung 2 (Rechnungsadresse);Adresse Gültig von (Rechnungsadresse);Adresse Gültig bis (Rechnungsadresse);Telefon;Bemerkung (Telefon);Telefon GL;Bemerkung (Telefon GL);E-Mail;Bemerkung (E-Mail);Internet;Bemerkung (Internet);Fax;Bemerkung (Fax);Sonstige;Bemerkung (Sonstige);Bankleitzahl 1;Bankbezeichnung 1;Bank-Kontonummer 1;Länderkennzeichen 1;IBAN-Nr. 1;Leerfeld;SWIFT-Code 1;Abw. Kontoinhaber 1;Kennz. Hauptbankverb. 1;Bankverb 1 Gültig von;Bankverb 1 Gültig bis;Bankleitzahl 2;Bankbezeichnung 2;Bank-Kontonummer 2;Länderkennzeichen 2;IBAN-Nr. 2;Leerfeld;SWIFT-Code 2;Abw. Kontoinhaber 2;Kennz. Hauptbankverb. 2;Bankverb 2 Gültig von;Bankverb 2 Gültig bis;Bankleitzahl 3;Bankbezeichnung 3;Bank-Kontonummer 3;Länderkennzeichen 3;IBAN-Nr. 3;Leerfeld;SWIFT-Code 3;Abw. Kontoinhaber 3;Kennz. Hauptbankverb. 3;Bankverb 3 Gültig von;Bankverb 3 Gültig bis;Bankleitzahl 4;Bankbezeichnung 4;Bank-Kontonummer 4;Länderkennzeichen 4;IBAN-Nr. 4;Leerfeld;SWIFT-Code 4;Abw. Kontoinhaber 4;Kennz. Hauptbankverb. 4;Bankverb 4 Gültig von;Bankverb 4 Gültig bis;Bankleitzahl 5;Bankbezeichnung 5;Bank-Kontonummer 5;Länderkennzeichen 5;IBAN-Nr. 5;Leerfeld;SWIFT-Code 5;Abw. Kontoinhaber 5;Kennz. Hauptbankverb. 5;Bankverb 5 Gültig von;Bankverb 5 Gültig bis;Bankleitzahl 6;Bankbezeichnung 6;Bank-Kontonummer 6;Länderkennzeichen 6;IBAN-Nr. 6;Leerfeld;SWIFT-Code 6;Abw. Kontoinhaber 6;Kennz. Hauptbankverb. 6;Bankverb 6 Gültig von;Bankverb 6 Gültig bis;Bankleitzahl 7;Bankbezeichnung 7;Bank-Kontonummer 7;Länderkennzeichen 7;IBAN-Nr. 7;Leerfeld;SWIFT-Code 7;Abw. Kontoinhaber 7;Kennz. Hauptbankverb. 7;Bankverb 7 Gültig von;Bankverb 7 Gültig bis;Bankleitzahl 8;Bankbezeichnung 8;Bank-Kontonummer 8;Länderkennzeichen 8;IBAN-Nr. 8;Leerfeld;SWIFT-Code 8;Abw. Kontoinhaber 8;Kennz. Hauptbankverb. 8;Bankverb 8 Gültig von;Bankverb 8 Gültig bis;Bankleitzahl 9;Bankbezeichnung 9;Bank-Kontonummer 9;Länderkennzeichen 9;IBAN-Nr. 9;Leerfeld;SWIFT-Code 9;Abw. Kontoinhaber 9;Kennz. Hauptbankverb. 9;Bankverb 9 Gültig von;Bankverb 9 Gültig bis;Bankleitzahl 10;Bankbezeichnung 10;Bank-Kontonummer 10;Länderkennzeichen 10;IBAN-Nr. 10;Leerfeld;SWIFT-Code 10;Abw. Kontoinhaber 10;Kennz. Hauptbankverb. 10;Bankverb 10 Gültig von;Bankverb 10 Gültig bis;Kundennummer;Ansprechpartner;Vertreter;Sachbearbeiter;Briefanrede;Grußformel;Sprache;Ausgabeziel;Indiv. Feld 1;Indiv. Feld 2;Indiv. Feld 3;Indiv. Feld 4;Indiv. Feld 5;Indiv. Feld 6;Indiv. Feld 7;Indiv. Feld 8;Indiv. Feld 9;Indiv. Feld 10;Mandatsreferenz 1;Mandatsreferenz 2;Mandatsreferenz 3;Mandatsreferenz 4;Mandatsreferenz 5;Mandatsreferenz 6;Mandatsreferenz 7;Mandatsreferenz 8;Mandatsreferenz 9;Mandatsreferenz 10;Nummer Fremdsystem
|
||||||
|
"DIV500";30000;"Firma";"Testmöbel GmbH";"";"Testmöbel GmbH";"";"";"";"2";"";"";"";"";"STR";"Feldweg 28";"";"90409";"Nürnberg";"DE";"";"";"";"";1;;;"";"";"";"";"";"";"";"";"";"";"";;;"+49 911 12345678";"";"+49 911 12345678";"";"test@testmöbel.de";"";"www.testmöbel.de";"";"+49 911 987654321";"";"";"";"76069512";"Raiffbk Knoblauchsland";"1122334455";"DE";"";"0";"GENODEF1N08";"Herr Muster";"1";01012013;31122023;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"KDN 75";"Herr Müllermuster";"Frau Mustermann";"Herr Testmann";"";"Mit freundlichen Grüßen";1;3;"kein Muster";"Beispiel";"Testeingabe";"";"";"";"";"";"";"Muster vorhanden";"";"";"";"";"";"";"";"";"";"";""
|
||||||
|
"DIV600";30000;"Herrn";"";"";"Mustermann";"Mustermann";"";"";"1";"Dr.";"Baron";"zu";"";"STR";"Musterweg 5";"";"90000";"Nürnberg";"DE";"Nicht nachsenden";"";"";"";1;;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""
|
||||||
|
"DIV700";30000;"Frau";"";"";"Testmann, Elke";"Testmann";"Elke";"";"1";"";"Landgräfin";"von und zu";"";"STR";"Wiesenweg 125";"";"90600";"Fürth";"DE";"Bei Umzug bitte mit neuer Anschrift zurück";"";"";"";1;;;"";"";"";"";"";"";"";"";"";"";"";;;"+49 911 505050";"immer erreichbar";"+49 911 505050";"immer erreichbar";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"76000000";"BBk Nürnberg";"998877";"DE";"DE83760000000000998877";"1";"MARKDEF1760";"Frau Beispiel";"1";01012013;12122023;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"Mit den besten Empfehlungen";4;1;"nur zum Test";"nur als Beispiel";"";"nur als Beispiel";"";"nur als Beispiel";"nur zum Test";"nur zum Test";"";"nur als Beispiel";"";"";"";"";"";"";"";"";"";"";""
|
Can't render this file because it has a wrong number of fields in line 2.
|
3
tests/data/EXTF_Naturalstapel.csv
Normal file
3
tests/data/EXTF_Naturalstapel.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
"EXTF";700;66;"Natural-Stapel";2;20210511085305999;;"NA";"t03995a";"";29098;55314;20210101;7;;;"";"";;;0;"";;"KP";;;"14";1401;;"";""
|
||||||
|
Textschlüssel;Art;Stück;Gewicht;Beleg;Datum;An/für Textschlüssel;Text;Entnahmekonto;Gesellschaftername;Beteiligtennummer;Identifikationsnummer;Zeichnernummer;Herkunft-Kz;Abschlussnummer
|
||||||
|
339;2;0;450,00;"";2802;0;"Milch";0;"";"";"";"";"NA";0
|
Can't render this file because it has a wrong number of fields in line 2.
|
54
tests/data/EXTF_Sachkontobeschriftungen.csv
Normal file
54
tests/data/EXTF_Sachkontobeschriftungen.csv
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
"EXTF";700;20;"Kontenbeschriftungen";3;20240729103107277;;"RE";"Admin";"";29098;55003;20240101;4;;;"";"";;;;"";;"";;"";;;"";"";
|
||||||
|
Konto;Kontobeschriftung;SprachId;Kontenbeschriftung lang
|
||||||
|
691;"Teilzahlungskredit Citan Kastenwagen";"de-DE";"Teilzahlungskredit Citan Kastenwagen"
|
||||||
|
692;"Darlehen Masterwood CNC";"de-DE";"Darlehen Masterwood CNC"
|
||||||
|
694;"Teilzahlungskredit VW Crafter";"de-DE";"Teilzahlungskredit VW Crafter"
|
||||||
|
695;"Ratenkredit Tesla Elektrofahrzeug";"de-DE";"Ratenkredit Tesla Elektrofahrzeug"
|
||||||
|
696;"Darlehen Schleifmustermühle 25";"de-DE";"Darlehen Schleifmustermühle 25"
|
||||||
|
697;"Darlehen Finanzierung Verleimpresse";"de-DE";"Darlehen Finanzierung Verleimpresse"
|
||||||
|
1010;"Kasse Werkstatt";"de-DE";"Kasse Werkstatt"
|
||||||
|
1100;"Aareal Bank München";"de-DE";"Aareal Bank München"
|
||||||
|
1200;"Aareal Bank Frankfurt";"de-DE";"Aareal Bank Frankfurt"
|
||||||
|
1201;"Bayern LB Nürnberg";"de-DE";"Bayern LB Nürnberg"
|
||||||
|
1205;"Deutsche Bank Nürnberg CHF";"de-DE";"Deutsche Bank Nürnberg CHF"
|
||||||
|
1206;"Deutsche Bank ZV";"de-DE";""
|
||||||
|
1225;"Kanadische Dollar Bank";"de-DE";"Kanadische Dollar Bank"
|
||||||
|
1230;"Evenord-Bank Nürnberg";"de-DE";"Evenord-Bank Nürnberg"
|
||||||
|
1250;"Deutsche Bank";"de-DE";"Deutsche Bank"
|
||||||
|
1290;"Tagesgeldkonto Noris Bank";"de-DE";"Tagesgeldkonto Noris Bank"
|
||||||
|
1361;"Nachträglicher OP-Ausgleich";"de-DE";"Nachträglicher OP-Ausgleich"
|
||||||
|
1369;"Unklare Posten";"de-DE";"Unklare Posten"
|
||||||
|
1591;"Abziehbare VorSt. aus innerg. Verbringen";"de-DE";""
|
||||||
|
1726;"USt aus innerg. Verbringen";"de-DE";""
|
||||||
|
3030;"Einkauf Holz/Furniere 19% VSt";"de-DE";"Einkauf Holz/Furniere 19% VSt"
|
||||||
|
3031;"Einkauf Spanplatten 19% VSt";"de-DE";"Einkauf Spanplatten 19% VSt"
|
||||||
|
3032;"Einkauf Farben und Lacke 19% VSt";"de-DE";"Einkauf Farben und Lacke 19% VSt"
|
||||||
|
3033;"Einkauf beschichtete Platten 19% VSt";"de-DE";"Einkauf beschichtete Platten 19% VSt"
|
||||||
|
3039;"Einkauf sonstige RHB-Stoffe 19% VSt";"de-DE";"Einkauf sonstige RHB-Stoffe 19% VSt"
|
||||||
|
3400;"Wareneingang Edelholz 19% VSt";"de-DE";"Wareneingang Edelholz 19% VSt"
|
||||||
|
3401;"Wareneingang Sonstiges 19% VSt";"de-DE";"Wareneingang Sonstiges 19% VSt"
|
||||||
|
3570;"Verrechnungskonto EU-Verbringung";"de-DE";""
|
||||||
|
3571;"Stfreie innerg. Verbringung Ursprung D";"de-DE";""
|
||||||
|
3572;"Innerg. Verbringungserwerb (Polen)";"de-DE";""
|
||||||
|
3955;"Bestandsveränderungen";"de-DE";"Bestandsveränderungen"
|
||||||
|
3961;"Bestandsveränd. Furniere";"de-DE";"Bestandsveränd. Furniere"
|
||||||
|
3962;"Bestandsveränd. Spanplatten";"de-DE";"Bestandsveränd. Spanplatten"
|
||||||
|
3963;"Bestandsveränd. Farben und Lacke";"de-DE";"Bestandsveränd. Farben und Lacke"
|
||||||
|
3964;"Bestandsveränd. beschichtete Platten";"de-DE";"Bestandsveränd. beschichtete Platten"
|
||||||
|
3971;"Bestand Holz/Furniere";"de-DE";"Bestand Holz/Furniere"
|
||||||
|
3972;"Bestand Spanplatten";"de-DE";"Bestand Spanplatten"
|
||||||
|
3973;"Bestand Farben und Lacke";"de-DE";"Bestand Farben und Lacke"
|
||||||
|
3974;"Bestand beschichtete Platten";"de-DE";"Bestand beschichtete Platten"
|
||||||
|
3975;"Sonstiger Bestand";"de-DE";"Sonstiger Bestand"
|
||||||
|
3976;"Bestand Roh-, Hilfs-und Betriebsstoffe";"de-DE";"Bestand Roh-, Hilfs-und Betriebsstoffe"
|
||||||
|
4901;"Getränke für Getränkeautomat";"de-DE";"Getränke für Getränkeautomat"
|
||||||
|
4921;"Mobilfunk";"de-DE";"Mobilfunk"
|
||||||
|
8400;"Erlöse Küchen 19% USt";"de-DE";"Erlöse Küchen 19% USt"
|
||||||
|
8401;"Erlöse Dächer 19% USt";"de-DE";"Erlöse Dächer 19% USt"
|
||||||
|
8402;"Erlöse Projekt Bautester 19% USt";"de-DE";"Erlöse Projekt Bautester 19% USt"
|
||||||
|
8403;"Erlöse Außenanlagen 19% USt";"de-DE";"Erlöse Außenanlagen 19% USt"
|
||||||
|
8405;"Erlöse Fenster/Türen/Böden 19% USt";"de-DE";"Erlöse Fenster/Türen/Böden 19% USt"
|
||||||
|
8406;"Erlöse Sonstiges 19% USt";"de-DE";"Erlöse Sonstiges 19% USt"
|
||||||
|
8407;"Erlöse Edelhölzer 19% USt";"de-DE";"Erlöse Edelhölzer 19% USt"
|
||||||
|
8601;"Geldwerter Vorteil 50% Elektrofahrzeug";"de-DE";"Geldwerter Vorteil 50% Elektrofahrzeug"
|
||||||
|
8602;"Erlöskorrektur 8601";"de-DE";"Erlöskorrektur 8601"
|
Can't render this file because it has a wrong number of fields in line 2.
|
4
tests/data/EXTF_Wiederkehrende-Buchungen.csv
Normal file
4
tests/data/EXTF_Wiederkehrende-Buchungen.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
"EXTF";700;65;"Wiederkehrende Buchungen";4;20240118094256087;;"WK";"Admin";"";29098;55003;20240101;4;;;"";"";;;;"";;"KP";"";;3;"";"";;
|
||||||
|
B1;WKZ (Umsatz);Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;BU-Schlüssel;Gegenkonto (ohne BU-Schlüssel);Belegfeld1;Belegfeld2;Beginndatum;Kontonummer;Stück;Gewicht;KOST1-Kostenstelle;KOST2-Kostenstelle;KOST-Menge;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Geschäftspartnerbank;Sachverhalt;Zinssperre;Beleglink;EU-Land u. UStId (Bestimmung);EU-Steuersatz (Bestimmung);Leerfeld;Sachverhalt L+L;BU 49 Hauptfunktionstyp;BU 49 Hauptfunktionsnummer;BU 49 Funktionsergänzung;Zusatzinformation - Art 1;Zusatzinformation- Inhalt 1;Zusatzinformation - Art 2;Zusatzinformation- Inhalt 2;Zusatzinformation - Art 3;Zusatzinformation- Inhalt 3;Zusatzinformation - Art 4;Zusatzinformation- Inhalt 4;Zusatzinformation - Art 5;Zusatzinformation- Inhalt 5;Zusatzinformation - Art 6;Zusatzinformation- Inhalt 6;Zusatzinformation - Art 7;Zusatzinformation- Inhalt 7;Zusatzinformation - Art 8;Zusatzinformation- Inhalt 8;Zusatzinformation - Art 9;Zusatzinformation- Inhalt 9;Zusatzinformation - Art 10;Zusatzinformation- Inhalt 10;Zusatzinformation - Art 11;Zusatzinformation- Inhalt 11;Zusatzinformation - Art 12;Zusatzinformation- Inhalt 12;Zusatzinformation - Art 13;Zusatzinformation- Inhalt 13;Zusatzinformation - Art 14;Zusatzinformation- Inhalt 14;Zusatzinformation - Art 15;Zusatzinformation- Inhalt 15;Zusatzinformation - Art 16;Zusatzinformation- Inhalt 16;Zusatzinformation - Art 17;Zusatzinformation- Inhalt 17;Zusatzinformation - Art 18;Zusatzinformation- Inhalt 18;Zusatzinformation - Art 19;Zusatzinformation- Inhalt 19;Zusatzinformation - Art 20;Zusatzinformation- Inhalt 20;Zahlweise;Forderungsart;Veranlagungsjahr;Zugeordnete Fälligkeit;Zuletzt per;Nächste Fälligkeit;Enddatum;Zeitintervallart;Zeitabstand;Wochentag;Monat;Ordnungszahl Tag im Monat;Ordnungszahl Wochentag;EndeTyp;Gesellschaftername;Beteiligtennummer;Identifikationsnummer;Zeichnernummer;SEPA-Mandatsreferenz;Postensperre bis;KOST-Datum;Bezeichnung SoBil-Sachverhalt;Kennzeichen SoBil-Buchung;Generalumkehr (GU);Steuersatz;Land;EU-Land u. UStID (Ursprung);EU-Steuersatz (Ursprung)
|
||||||
|
2;"";488,00;"H";;;"";"";4360;"";"";01032020;980;;;"10";"";;;"Gebäudeversicherung";;"";;;;"";"";;"";;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;;01032020;01042020;01022025;"MON";1;;;1;;2;"";;"";"";"";;;"";;"";;"";"";
|
||||||
|
2;"";333,52;"H";;;"";"";4360;"";"";31082019;980;;;"10";"";;;"Brandversicherung";;"";;;;"";"";;"";;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;;01032019;01042019;01082024;"MON";1;;;1;;2;"";;"";"";"";;;"";;"";;"DE";"";
|
Can't render this file because it has a wrong number of fields in line 2.
|
7
tests/data/EXTF_Zahlungsbedingungen.csv
Normal file
7
tests/data/EXTF_Zahlungsbedingungen.csv
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
"EXTF";700;46;"Zahlungsbedingungen";2;20240118092951894;;"RE";"";"";29098;55003;20240101;4;;;"";"";;;;"";;"";;;"04";;;"";""
|
||||||
|
Nummer;Bezeichnung;Fälligkeitstyp;Skonto 1%;Skonto 1 Tage;Skonto 2 %;Skonto 2 Tage;Fällig Tage;Rechnung bis / Zeitraum 1;Skonto1 Datum / Zeitraum 1;Skonto 1 Monat / Zeitraum 1;Skonto 2 Datum / Zeitraum 1;Skonto 2 Monat / Zeitraum 1;Fällig Datum / Zeitraum 1;Fällig Monat / Zeitraum 1;Rechnung bis / Zeitraum 2;Skonto1 Datum / Zeitraum 2;Skonto 1 Monat / Zeitraum 2;Skonto 2 Datum / Zeitraum 2;Skonto 2 Monat / Zeitraum 2;Fällig Datum / Zeitraum 2;Fällig Monat / Zeitraum 2;Rechnung bis / Zeitraum 3;Skonto1 Datum / Zeitraum 3;Skonto1 Monat / Zeitraum 3;Skonto 2 Datum / Zeitraum 3;Skonto 2 Monat / Zeitraum 3;Fällig Datum / Zeitraum 3;Fällig Monat / Zeitraum 3;Leerfeld;Verwendung
|
||||||
|
10;"30 Tage 2,0%; 60 Tage netto";1;2200;30;;0;60;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";0
|
||||||
|
11;"5 Tage 3,0%; 10 Tage 2,0%; 30 Tage netto";1;300;5;200;10;30;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";0
|
||||||
|
12;"10 Tage 3,0%; 20 Tage netto";1;300;10;000;0;20;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";0
|
||||||
|
13;"14 Tage netto";1;000;0;000;0;14;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";0
|
||||||
|
14;"mit 3 Fälligkeitszeiträumen";2;300;0;000;0;0;10;20;0;;0;31;0;20;31;0;;0;10;1;31;10;1;;0;20;1;"";0
|
|
3
tests/data/README.md
Normal file
3
tests/data/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Test Data Sources
|
||||||
|
|
||||||
|
Test files are taken from https://developer.datev.de/datev/platform/de/dtvf/samplefiles.
|
Loading…
Reference in a new issue