zugferd_code_lists/zugferd_2_3_3/
hybridversion.rs

1#![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    /// The hybrid document is a Factur-X 1.0* compliant document
8    ///
9    /// Default value for current specification
10    TheHybridDocumentIsAFacturX10CompliantDocument,
11    /// The hybrid document is a ZUGFeRD 1p0 compliant document
12    ///
13    /// Legacy use only. A warning is given if used for a document in the validity period of the current specification
14    TheHybridDocumentIsAZugferd1p0CompliantDocument,
15    /// The hybrid document is a ZUGFeRD 2p0 compliant document
16    ///
17    /// Legacy use only. A warning is given if used for a document in the validity period of the current specification
18    TheHybridDocumentIsAZugferd2p0CompliantDocument,
19    /// The hybrid document is a ZUGFeRD 2p1 compliant document
20    ///
21    /// Legacy use only. A warning is given if used for a document in the validity period of the current specification
22    TheHybridDocumentIsAZugferd2p1CompliantDocument,
23    /// The hybrid document is a ZUGFeRD 2p2 compliant document
24    ///
25    /// Legacy use only. A warning is given if used for a document in the validity period of the current specification
26    TheHybridDocumentIsAZugferd2p2CompliantDocument,
27}
28
29impl crate::Code for HybridVersion {
30    fn code(self) -> &'static str {
31        match self {
32            HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument => "1.0",
33            HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument => "1p0",
34            HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument => "2p0",
35            HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument => "2p1",
36            HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument => "2p2",
37        }
38    }
39}
40
41impl crate::Description for HybridVersion {
42    fn description(self) -> &'static str {
43        match self {
44            HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument => {
45                "The hybrid document is a Factur-X 1.0* compliant document"
46            }
47            HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument => {
48                "The hybrid document is a ZUGFeRD 1p0 compliant document"
49            }
50            HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument => {
51                "The hybrid document is a ZUGFeRD 2p0 compliant document"
52            }
53            HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument => {
54                "The hybrid document is a ZUGFeRD 2p1 compliant document"
55            }
56            HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument => {
57                "The hybrid document is a ZUGFeRD 2p2 compliant document"
58            }
59        }
60    }
61}
62
63impl crate::FromCode for HybridVersion {
64    fn from_code(code: &str) -> Option<Self>
65    where
66        Self: Sized,
67    {
68        match code {
69            "1.0" => Some(HybridVersion::TheHybridDocumentIsAFacturX10CompliantDocument),
70            "1p0" => Some(HybridVersion::TheHybridDocumentIsAZugferd1p0CompliantDocument),
71            "2p0" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p0CompliantDocument),
72            "2p1" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p1CompliantDocument),
73            "2p2" => Some(HybridVersion::TheHybridDocumentIsAZugferd2p2CompliantDocument),
74            _ => None,
75        }
76    }
77}