// 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 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 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 MerkmalMerkmal {
    pub code: Option<String>,
    pub qualifier: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Merkmal {
    pub codepflege_code2: Option<String>,
    pub merkmal_text: Option<String>,
    pub merkmal_text2: Option<String>,
    pub merkmal_wert: Option<String>,
    pub merkmal_wert2: Option<String>,
    pub messgroesse: Option<String>,
    pub merkmal: Option<MerkmalMerkmal>,
}

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MerkmalZ35 {
    pub codepflege_code2: Option<String>,
    pub merkmal_text: Option<String>,
    pub merkmal_text2: Option<String>,
    pub merkmal_wert: Option<String>,
    pub merkmal_wert2: Option<String>,
    pub merkmal: Option<MerkmalZ35Merkmal>,
}

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

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

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MerkmalZ39 {
    pub merkmal_wert: Option<String>,
    pub messgroesse: Option<String>,
    pub merkmal: Option<MerkmalZ39Merkmal>,
}

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

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

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

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

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MerkmalZ54 {
    pub merkmal_beschreibung: Option<String>,
    pub merkmal_beschreibung2: Option<String>,
    pub messgroesse: Option<String>,
    pub merkmal: Option<MerkmalZ54Merkmal>,
}

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MerkmalZ60 {
    pub merkmal_beschreibung: Option<String>,
    pub merkmal_beschreibung2: Option<String>,
    pub messgroesse: Option<String>,
    pub merkmal: Option<MerkmalZ60Merkmal>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Nachricht {
    pub abonnement: Option<String>,
    pub auftragsdatum: Option<String>,
    pub beschreibungsformat: Option<String>,
    pub dokumentennummer: Option<String>,
    pub dokumenttyp: Option<String>,
    pub erstellungsdatum: Option<String>,
    pub freitext_hinweis1: Option<String>,
    pub freitext_hinweis2: Option<String>,
    pub freitext_hinweis3: Option<String>,
    pub ftx_funktion: Option<String>,
    pub ftx_referenz: Option<String>,
    pub ftx_referenz_code_liste: Option<String>,
    pub sperrdatum: Option<String>,
    pub uns_kennung: Option<String>,
}

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Position {
    pub artikeltyp: Option<String>,
    pub beginn_zeitraum: Option<String>,
    pub beschreibung: Option<String>,
    pub beschreibungsformat: Option<String>,
    pub einheit: Option<String>,
    pub ende_zeitraum: Option<String>,
    pub freitext: Option<String>,
    pub freitext1: Option<String>,
    pub freitext2: Option<String>,
    pub freitext3: Option<String>,
    pub freitext4: Option<String>,
    pub freitext5: Option<String>,
    pub freitext_z17: Option<String>,
    pub freitext_z17_2: Option<String>,
    pub freitext_z17_3: Option<String>,
    pub freitext_z17_4: Option<String>,
    pub freitext_z17_5: Option<String>,
    pub freitext_z23: Option<String>,
    pub freitext_z23_2: Option<String>,
    pub freitext_z23_3: Option<String>,
    pub freitext_z23_4: Option<String>,
    pub freitext_z23_5: Option<String>,
    pub freitext_z24: Option<String>,
    pub freitext_z24_2: Option<String>,
    pub freitext_z24_3: Option<String>,
    pub freitext_z24_4: Option<String>,
    pub freitext_z24_5: Option<String>,
    pub gueltigkeitsdatum: Option<String>,
    pub handlung_code: Option<String>,
    pub handlungscode: Option<String>,
    pub menge: Option<String>,
    pub mengen_qualifier: Option<String>,
    pub positionsnummer: Option<String>,
    pub reklamationsgrund: Option<String>,
    pub text_funktion: Option<String>,
    pub text_referenz: Option<String>,
    pub text_referenz_code: Option<String>,
    pub text_referenz_z17: Option<String>,
    pub text_referenz_z23: Option<String>,
    pub text_referenz_z24: Option<String>,
    pub textbezug: Option<String>,
    pub textfunktion: Option<String>,
    pub textfunktion_z17: Option<String>,
    pub textfunktion_z23: Option<String>,
    pub textfunktion_z24: Option<String>,
    pub produkt_identifikation: Option<PositionProduktIdentifikation>,
}

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

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

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

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

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

