zugferd_code_lists/zugferd_2_3_3/
hybridversion.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 HybridVersion {
7 TheHybridDocumentIsAFacturX10CompliantDocument,
11 TheHybridDocumentIsAZugferd1p0CompliantDocument,
15 TheHybridDocumentIsAZugferd2p0CompliantDocument,
19 TheHybridDocumentIsAZugferd2p1CompliantDocument,
23 TheHybridDocumentIsAZugferd2p2CompliantDocument,
27}
28
29impl std::fmt::Display for HybridVersion {
30 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
31 write!(f, "{}", <Self as crate::Code>::code(*self))
32 }
33}
34
35impl std::str::FromStr for HybridVersion {
36 type Err = crate::ParseError<Self>;
37 fn from_str(s: &str) -> Result<Self, Self::Err> {
38 <Self as crate::FromCode>::from_code(s)
39 .ok_or_else(|| crate::ParseError::<Self>::new(s.to_owned()))
40 }
41}
42
43impl crate::Code for HybridVersion {
44 fn code(self) -> &'static str {
45 match self {
46 HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument => "1.0",
47 HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument => "1p0",
48 HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument => "2p0",
49 HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument => "2p1",
50 HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument => "2p2",
51 }
52 }
53}
54
55impl crate::Description for HybridVersion {
56 fn description(self) -> &'static str {
57 match self {
58 HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument => {
59 "The hybrid document is a Factur-X 1.0* compliant document"
60 }
61 HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument => {
62 "The hybrid document is a ZUGFeRD 1p0 compliant document"
63 }
64 HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument => {
65 "The hybrid document is a ZUGFeRD 2p0 compliant document"
66 }
67 HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument => {
68 "The hybrid document is a ZUGFeRD 2p1 compliant document"
69 }
70 HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument => {
71 "The hybrid document is a ZUGFeRD 2p2 compliant document"
72 }
73 }
74 }
75}
76
77impl crate::FromCode for HybridVersion {
78 fn from_code(code: &str) -> Option<Self>
79 where
80 Self: Sized,
81 {
82 match code {
83 "1.0" => Some(HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument),
84 "1p0" => Some(HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument),
85 "2p0" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument),
86 "2p1" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument),
87 "2p2" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument),
88 _ => None,
89 }
90 }
91}