bo4e_core/enums/
surcharge_target.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))]
12#[cfg_attr(feature = "json-schema", schemars(rename = "AufAbschlagsziel"))]
13#[non_exhaustive]
14pub enum SurchargeTarget {
15 #[serde(rename = "ARBEITSPREIS_EINTARIF")]
17 WorkingPriceSingleTariff,
18
19 #[serde(rename = "ARBEITSPREIS_HT")]
21 WorkingPriceHT,
22
23 #[serde(rename = "ARBEITSPREIS_NT")]
25 WorkingPriceNT,
26
27 #[serde(rename = "ARBEITSPREIS_HT_NT")]
29 WorkingPriceHTNT,
30
31 #[serde(rename = "GRUNDPREIS")]
33 BasePrice,
34
35 #[serde(rename = "GESAMTPREIS")]
37 TotalPrice,
38}
39
40impl SurchargeTarget {
41 pub fn german_name(&self) -> &'static str {
43 match self {
44 Self::WorkingPriceSingleTariff => "Auf-/Abschlag auf den Arbeitspreis Eintarif",
45 Self::WorkingPriceHT => "Auf-/Abschlag auf den Arbeitspreis HT",
46 Self::WorkingPriceNT => "Auf-/Abschlag auf den Arbeitspreis NT",
47 Self::WorkingPriceHTNT => "Auf-/Abschlag auf den Arbeitspreis HT und NT",
48 Self::BasePrice => "Auf-/Abschlag auf den Grundpreis",
49 Self::TotalPrice => "Auf-/Abschlag auf den Gesamtpreis",
50 }
51 }
52}
53
54#[cfg(test)]
55mod tests {
56 use super::*;
57
58 #[test]
59 fn test_serialize() {
60 assert_eq!(
61 serde_json::to_string(&SurchargeTarget::BasePrice).unwrap(),
62 r#""GRUNDPREIS""#
63 );
64 assert_eq!(
65 serde_json::to_string(&SurchargeTarget::TotalPrice).unwrap(),
66 r#""GESAMTPREIS""#
67 );
68 }
69
70 #[test]
71 fn test_roundtrip() {
72 for target in [
73 SurchargeTarget::WorkingPriceSingleTariff,
74 SurchargeTarget::WorkingPriceHT,
75 SurchargeTarget::WorkingPriceNT,
76 SurchargeTarget::WorkingPriceHTNT,
77 SurchargeTarget::BasePrice,
78 SurchargeTarget::TotalPrice,
79 ] {
80 let json = serde_json::to_string(&target).unwrap();
81 let parsed: SurchargeTarget = serde_json::from_str(&json).unwrap();
82 assert_eq!(target, parsed);
83 }
84 }
85}