// Auto-generated by automapper-generator. Do not edit.

#![allow(unused_imports)]

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AbweichungReferenz {
    pub typ: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Abweichung {
    pub abweichungsreferenz: Option<String>,
    pub ebd_referenz: Option<String>,
    pub freitext1: Option<String>,
    pub freitext2: Option<String>,
    pub freitext3: Option<String>,
    pub freitext4: Option<String>,
    pub freitext5: Option<String>,
    pub hinweisfreitext1: Option<String>,
    pub hinweisfreitext2: Option<String>,
    pub hinweisfreitext3: Option<String>,
    pub hinweisfreitext4: Option<String>,
    pub hinweisfreitext5: Option<String>,
    pub korrekturfreitext1: Option<String>,
    pub korrekturfreitext2: Option<String>,
    pub korrekturfreitext3: Option<String>,
    pub korrekturfreitext4: Option<String>,
    pub korrekturfreitext5: Option<String>,
    pub pruefschritt_code: Option<String>,
    pub text_funktion: Option<String>,
    pub text_funktion_abo: Option<String>,
    pub text_funktion_z14: Option<String>,
    pub text_funktion_z16: Option<String>,
    pub text_qualifier: Option<String>,
    pub text_qualifier_abo: Option<String>,
    pub text_qualifier_z14: Option<String>,
    pub text_qualifier_z16: Option<String>,
    pub text_referenz: Option<String>,
    pub text_referenz_abo: Option<String>,
    pub text_referenz_z14: Option<String>,
    pub text_referenz_z16: Option<String>,
    pub referenz: Option<AbweichungReferenz>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AnsprechpartnerKontakt {
    pub funktion_code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ansprechpartner {
    pub kommunikationsadresse: Option<String>,
    pub kommunikationstyp: Option<String>,
    pub name: Option<String>,
    pub telefonnummer: Option<String>,
    pub kontakt: Option<AnsprechpartnerKontakt>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Dokument {
    pub abrechnungsreferenz: Option<String>,
    pub dokumentdatum: Option<String>,
    pub dokumentennummer: Option<String>,
    pub dokumenttyp: Option<String>,
    pub faelliger_betrag: Option<String>,
    pub ueberweisungsbetrag: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MarktteilnehmerWrapped {
    #[serde(flatten)]
    pub core: Option<bo4e_german::Marktteilnehmer>,
}

impl MarktteilnehmerWrapped {
    /// Create a wrapped entity from a core BO4E type, with companion fields defaulted.
    pub fn with_core(core: bo4e_german::Marktteilnehmer) -> Self {
        Self { core: Some(core) }
    }
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Nachricht {
    pub dokumentennummer: Option<String>,
    pub dokumenttyp: Option<String>,
    pub erstellungsdatum: Option<String>,
    pub pruefidentifikator: Option<String>,
    pub ueberweisungsbetrag: Option<String>,
    pub uns_kennung: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Position {
    pub aktion_code: Option<String>,
    pub positionsnummer: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Positionsabweichung {
    pub abweichungsreferenz: Option<String>,
    pub ebd_referenz: Option<String>,
    pub freitext1: Option<String>,
    pub freitext2: Option<String>,
    pub freitext3: Option<String>,
    pub freitext4: Option<String>,
    pub freitext5: Option<String>,
    pub pruefschritt_code: Option<String>,
    pub text_funktion: Option<String>,
    pub text_qualifier: Option<String>,
    pub text_referenz: Option<String>,
    pub vorgang_referenz_edifact: Option<crate::generated::companions::VorgangReferenzEdifact>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Waehrung {
    pub waehrung_code: Option<String>,
    pub waehrung_qualifier: Option<String>,
    pub waehrungsverwendung: Option<String>,
}

