zugferd_code_lists/zugferd_2_3_3/
hybridconformance.rs1#![allow(non_camel_case_types)]
2
3#[cfg_attr(feature = "specta", derive(specta::Type))]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
6pub enum HybridConformance {
7 TheIncludedDocumentUsesAMinimumProfile,
13 TheIncludedDocumentUsesABasicWithoutLinesProfile,
19 TheIncludedDocumentUsesABasicProfile,
23 TheIncludedDocumentUsesAComfortProfile,
27 TheIncludedDocumentUsesAEn16931Profile,
31 TheIncludedDocumentUsesAComfortProfile_Dup,
35 TheIncludedDocumentUsesAnXrechnungProfile,
41}
42
43impl std::fmt::Display for HybridConformance {
44 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
45 write!(f, "{}", <Self as crate::Code>::code(*self))
46 }
47}
48
49impl std::str::FromStr for HybridConformance {
50 type Err = ();
51 fn from_str(s: &str) -> Result<Self, Self::Err> {
52 <Self as crate::FromCode>::from_code(s).ok_or(())
53 }
54}
55
56impl crate::Code for HybridConformance {
57 fn code(self) -> &'static str {
58 match self {
59 HybridConformance::TheIncludedDocumentUsesAMinimumProfile => "MINIMUM",
60 HybridConformance::TheIncludedDocumentUsesABasicWithoutLinesProfile => "BASIC WL",
61 HybridConformance::TheIncludedDocumentUsesABasicProfile => "BASIC",
62 HybridConformance::TheIncludedDocumentUsesAComfortProfile => "COMFORT",
63 HybridConformance::TheIncludedDocumentUsesAEn16931Profile => "EN 16931",
64 HybridConformance::TheIncludedDocumentUsesAComfortProfile_Dup => "EXTENDED",
65 HybridConformance::TheIncludedDocumentUsesAnXrechnungProfile => "XRECHNUNG",
66 }
67 }
68}
69
70impl crate::Description for HybridConformance {
71 fn description(self) -> &'static str {
72 match self {
73 HybridConformance::TheIncludedDocumentUsesAMinimumProfile => {
74 "The included document uses a MINIMUM profile"
75 }
76 HybridConformance::TheIncludedDocumentUsesABasicWithoutLinesProfile => {
77 "The included document uses a Basic Without Lines profile"
78 }
79 HybridConformance::TheIncludedDocumentUsesABasicProfile => {
80 "The included document uses a Basic profile"
81 }
82 HybridConformance::TheIncludedDocumentUsesAComfortProfile => {
83 "The included document uses a Comfort profile"
84 }
85 HybridConformance::TheIncludedDocumentUsesAEn16931Profile => {
86 "The included document uses a EN 16931 profile"
87 }
88 HybridConformance::TheIncludedDocumentUsesAComfortProfile_Dup => {
89 "The included document uses a Comfort profile"
90 }
91 HybridConformance::TheIncludedDocumentUsesAnXrechnungProfile => {
92 "The included document uses an XRECHNUNG profile"
93 }
94 }
95 }
96}
97
98impl crate::FromCode for HybridConformance {
99 fn from_code(code: &str) -> Option<Self>
100 where
101 Self: Sized,
102 {
103 match code {
104 "MINIMUM" => Some(HybridConformance::TheIncludedDocumentUsesAMinimumProfile),
105 "BASIC WL" => Some(HybridConformance::TheIncludedDocumentUsesABasicWithoutLinesProfile),
106 "BASIC" => Some(HybridConformance::TheIncludedDocumentUsesABasicProfile),
107 "COMFORT" => Some(HybridConformance::TheIncludedDocumentUsesAComfortProfile),
108 "EN 16931" => Some(HybridConformance::TheIncludedDocumentUsesAEn16931Profile),
109 "EXTENDED" => Some(HybridConformance::TheIncludedDocumentUsesAComfortProfile_Dup),
110 "XRECHNUNG" => Some(HybridConformance::TheIncludedDocumentUsesAnXrechnungProfile),
111 _ => None,
112 }
113 }
114}