zugferd_code_lists/zugferd_2_3_2/
hybridversion.rs

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