zugferd_code_lists/zugferd_2_3_2/
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 = ();
37 fn from_str(s: &str) -> Result<Self, Self::Err> {
38 <Self as crate::FromCode>::from_code(s).ok_or(())
39 }
40}
41
42impl crate::Code for HybridVersion {
43 fn code(self) -> &'static str {
44 match self {
45 HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument => "1.0",
46 HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument => "1p0",
47 HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument => "2p0",
48 HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument => "2p1",
49 HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument => "2p2",
50 }
51 }
52}
53
54impl crate::Description for HybridVersion {
55 fn description(self) -> &'static str {
56 match self {
57 HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument => {
58 "The hybrid document is a Factur-X 1.0* compliant document"
59 }
60 HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument => {
61 "The hybrid document is a ZUGFeRD 1p0 compliant document"
62 }
63 HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument => {
64 "The hybrid document is a ZUGFeRD 2p0 compliant document"
65 }
66 HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument => {
67 "The hybrid document is a ZUGFeRD 2p1 compliant document"
68 }
69 HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument => {
70 "The hybrid document is a ZUGFeRD 2p2 compliant document"
71 }
72 }
73 }
74}
75
76impl crate::FromCode for HybridVersion {
77 fn from_code(code: &str) -> Option<Self>
78 where
79 Self: Sized,
80 {
81 match code {
82 "1.0" => Some(HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument),
83 "1p0" => Some(HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument),
84 "2p0" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument),
85 "2p1" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument),
86 "2p2" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument),
87 _ => None,
88 }
89 }
90}