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