zugferd_code_lists/zugferd_2_3_3/
filename.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 Filename {
7    /// The hybrid document contains a Factur-X / ZUGFeRD XML-file
8    ///
9    /// The ConformanceLevel MUST not be XRECHNUNG
10    TheHybridDocumentContainsAFacturXZugferdXmlFile,
11    /// The hybrid document contains a XRechnung XML file
12    ///
13    /// The ConformanceLevel MUST be XRECHNUNG
14    TheHybridDocumentContainsAXrechnungXmlFile,
15    /// The hybrid document contains an Order-X XML file
16    TheHybridDocumentContainsAnOrderXXmlFile,
17}
18
19impl crate::Code for Filename {
20    fn code(self) -> &'static str {
21        match self {
22            Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => "factur-x.xml",
23            Filename::TheHybridDocumentContainsAXrechnungXmlFile => "xrechnung.xml",
24            Filename::TheHybridDocumentContainsAnOrderXXmlFile => "order-x.xml",
25        }
26    }
27}
28
29impl crate::Description for Filename {
30    fn description(self) -> &'static str {
31        match self {
32            Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => {
33                "The hybrid document contains a Factur-X / ZUGFeRD XML-file"
34            }
35            Filename::TheHybridDocumentContainsAXrechnungXmlFile => {
36                "The hybrid document contains a XRechnung XML file"
37            }
38            Filename::TheHybridDocumentContainsAnOrderXXmlFile => {
39                "The hybrid document contains an Order-X XML file"
40            }
41        }
42    }
43}
44
45impl crate::FromCode for Filename {
46    fn from_code(code: &str) -> Option<Self>
47    where
48        Self: Sized,
49    {
50        match code {
51            "factur-x.xml" => Some(Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile),
52            "xrechnung.xml" => Some(Filename::TheHybridDocumentContainsAXrechnungXmlFile),
53            "order-x.xml" => Some(Filename::TheHybridDocumentContainsAnOrderXXmlFile),
54            _ => None,
55        }
56    }
57}