// 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>,
    pub name: Option<String>,
    pub nummer: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ansprechpartner {
    pub kommunikationsadresse: Option<String>,
    pub kommunikationsadresse2: Option<String>,
    pub kommunikationstyp: Option<String>,
    pub kommunikationstyp2: 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 MarktteilnehmerReferenz {
    pub qualifier: Option<String>,
    pub referenz: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Nachricht {
    pub abschlag_beginn: Option<String>,
    pub abschlag_ende: Option<String>,
    pub beginndatum: Option<String>,
    pub beschreibungsformat: Option<String>,
    pub dokumentennummer: Option<String>,
    pub dokumenttyp: Option<String>,
    pub einspeisung_code: Option<String>,
    pub endedatum: Option<String>,
    pub erstellungsdatum: Option<String>,
    pub freitext_code: Option<String>,
    pub freitext_funktion: Option<String>,
    pub freitext_qualifier: Option<String>,
    pub nachrichtenfunktion: Option<String>,
    pub rechnungstyp: Option<String>,
    pub uns_kennung: Option<String>,
    pub verarbeitungsindikator_code: Option<String>,
    pub verarbeitungsindikator_qualifier: Option<String>,
    pub zahlungszieldatum: Option<String>,
}

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RechnungssummeReferenz {
    pub datum_qualifier: Option<String>,
    pub datum_wert: Option<String>,
    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 datum_qualifier: Option<String>,
    pub datum_wert: Option<String>,
    pub ex_ref_name: Option<String>,
    pub ex_ref_wert: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SteuersatzSumme {
    pub besteuerungsgrundlage: Option<String>,
    pub besteuerungsgrundlage_qualifier: Option<String>,
    pub steuer_code: Option<String>,
    pub steuer_funktion_code: Option<String>,
    pub steuer_kategorie: Option<String>,
    pub steuer_typ_code: Option<String>,
    pub steuerbetrag: Option<String>,
    pub steuerbetrag_qualifier: Option<String>,
    pub steuersatz: Option<String>,
    pub veranlagungsbasis: Option<String>,
    pub veranlagungsbasis_wert: Option<String>,
    pub vorausbezahlt_inkl_ust: Option<String>,
    pub vorausbezahlt_qualifier: Option<String>,
    pub vorausbezahlte_steuern: Option<String>,
    pub vorausbezahlte_steuern_qualifier: Option<String>,
}

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Vorgang {
    pub lieferungszeitraum_bis: Option<String>,
    pub lieferungszeitraum_von: Option<String>,
    pub positionsmenge: Option<String>,
    pub positionsnummer: Option<String>,
    pub zeitbezogene_menge: Option<String>,
    pub zeiteinheit: Option<String>,
    pub produkt_identifikation: Option<VorgangProduktIdentifikation>,
    pub vorgang_edifact: Option<crate::generated::companions::VorgangEdifact>,
}

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VorgangAbschlagBetrag {
    pub wert: Option<String>,
    pub vorgang_abschlag_betrag_edifact: Option<crate::generated::companions::VorgangAbschlagBetragEdifact>,
}

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

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VorgangBetrag {
    pub wert: Option<String>,
    pub vorgang_betrag_edifact: Option<crate::generated::companions::VorgangBetragEdifact>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VorgangPreis {
    pub einzelpreisbasis: Option<String>,
    pub preis_einheit: Option<String>,
    pub preis_spezifikation: Option<String>,
    pub preis_typ: Option<String>,
    pub wert: Option<String>,
    pub vorgang_preis_edifact: Option<crate::generated::companions::VorgangPreisEdifact>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct VorgangSteuersatz {
    pub steuer_code: Option<String>,
    pub steuer_funktion_code: Option<String>,
    pub steuer_kategorie: Option<String>,
    pub steuer_typ_code: Option<String>,
    pub steuersatz: Option<String>,
    pub veranlagungsbasis: Option<String>,
    pub veranlagungsbasis_wert: Option<String>,
}

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

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

#[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>,
}

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

