1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
use serde::Deserialize;

use crate::generate_get_response;

/// COMRESULT of a request. Contains information about the status of the request.
#[derive(Deserialize, Debug, Clone)]
pub struct ComResult {
    /// The HTTP status code of the request.
    #[serde(rename = "STATUS")]
    pub status: u32,
    /// The HTTP status message of the request.
    #[serde(rename = "CODE")]
    pub code: String,
    /// Information about the request.
    #[serde(rename = "INFO")]
    pub info: String,
    /// Additional information about the request.
    #[serde(rename = "INFO2")]
    pub info2: Option<String>,
    /// Additional information about the request.
    #[serde(rename = "INFO3")]
    pub info3: Option<String>,
    /// Error number of the request.
    #[serde(rename = "ERRNO")]
    pub errno: Option<String>,
}

/// Response of a REGISTER request.
#[derive(Deserialize, Clone)]
pub struct RegisterResponse {
    /// The COMRESULT of the request. Contains information about the status of the request.
    #[serde(rename = "COMRESULT")]
    pub com_result: ComResult,
    /// The returned service pass.
    #[serde(rename = "SERVICEPASS")]
    pub service_pass: ServicePass,
}

/// Service pass of a REGISTER request.
#[derive(Deserialize, Clone)]
pub struct ServicePass {
    /// The service pass.
    #[serde(rename = "PASSID")]
    pub pass_id: String,
    /// The application ID linked to the service pass.
    #[serde(rename = "APPID")]
    pub app_id: String,
}

generate_get_response!(ArtikelGetResponse, "ARTIKELLISTE", ArtikelListe, "ARTIKEL");
generate_get_response!(AdresseGetResponse, "ADRESSLISTE", AdresseListe, "ADRESSE");
generate_get_response!(BelegGetResponse, "BELEGLISTE", BelegListe, "BELEG");
generate_get_response!(
    BelPosGetResponse,
    "POSITIONSLISTE",
    PositionListe,
    "POSITION"
);
generate_get_response!(ProjektGetResponse, "PROJEKTLISTE", ProjektListe, "PROJEKT");
generate_get_response!(
    SeriennummerGetResponse,
    "SERIENNUMMERNLISTE",
    SeriennummerListe,
    "SERIENNUMMER"
);
generate_get_response!(ChargeGetResponse, "CHARGENLISTE", ChargeListe, "CHARGE");
generate_get_response!(
    AdressArtikelGetResponse,
    "ADRESSARTIKELLISTE",
    AdressArtikelListe,
    "ADRESSARTIKEL"
);
generate_get_response!(
    LieferadresseGetResponse,
    "LIEFERADRESSLISTE",
    LieferadresseListe,
    "LIEFERADRESSE"
);
generate_get_response!(
    AnsprechpartnerGetResponse,
    "ANSPRECHPARTNERLISTE",
    AnsprechpartnerListe,
    "ANSPRECHPARTNER"
);
generate_get_response!(
    VertreterGetResponse,
    "VERTRETERLISTE",
    VertreterListe,
    "VERTRETER"
);
generate_get_response!(TermineGetResponse, "TERMINLISTE", TerminListe, "TERMIN");
generate_get_response!(
    GespraechGetResponse,
    "GESPRAECHELISTE",
    GespraechListe,
    "GESPRAECH"
);
generate_get_response!(
    WiedervorlageGetResponse,
    "WIEDERVORLAGELISTE",
    WiedervorlageListe,
    "WIEDERVORLAGE"
);
generate_get_response!(
    WarengruppeGetResponse,
    "WARENGRUPPENLISTE",
    WarengruppeListe,
    "WARENGRUPPE"
);
generate_get_response!(LagerGetResponse, "LAGERLISTE", LagerListe, "LAGER");
generate_get_response!(
    MPKatalogGetResponse,
    "KATALOGLISTE",
    MPKatalogListe,
    "KATALOG"
);
generate_get_response!(
    MPKategorieGetResponse,
    "KATEGORIENLISTE",
    MPKategorieListe,
    "KATEGORIE"
);
generate_get_response!(EANCodeGetResponse, "EANCODELISTE", EANCodeListe, "EANCODE");