zugferd_code_lists/zugferd_2_3_3/
filename.rs

1#![allow(non_camel_case_types)]
2
3#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
4pub enum Filename {
5    /// The hybrid document contains a Factur-X / ZUGFeRD XML-file
6    ///
7    /// The ConformanceLevel MUST not be XRECHNUNG
8    TheHybridDocumentContainsAFacturXZugferdXmlFile,
9    /// The hybrid document contains a XRechnung XML file
10    ///
11    /// The ConformanceLevel MUST be XRECHNUNG
12    TheHybridDocumentContainsAXrechnungXmlFile,
13    /// The hybrid document contains an Order-X XML file
14    TheHybridDocumentContainsAnOrderXXmlFile,
15}
16
17impl crate::Code for Filename {
18    fn code(self) -> &'static str {
19        match self {
20            Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => "factur-x.xml",
21            Filename::TheHybridDocumentContainsAXrechnungXmlFile => "xrechnung.xml",
22            Filename::TheHybridDocumentContainsAnOrderXXmlFile => "order-x.xml",
23        }
24    }
25}
26
27impl crate::Description for Filename {
28    fn description(self) -> &'static str {
29        match self {
30            Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile => {
31                "The hybrid document contains a Factur-X / ZUGFeRD XML-file"
32            }
33            Filename::TheHybridDocumentContainsAXrechnungXmlFile => {
34                "The hybrid document contains a XRechnung XML file"
35            }
36            Filename::TheHybridDocumentContainsAnOrderXXmlFile => {
37                "The hybrid document contains an Order-X XML file"
38            }
39        }
40    }
41}
42
43impl crate::FromCode for Filename {
44    fn from_code(code: &str) -> Option<Self>
45    where
46        Self: Sized,
47    {
48        match code {
49            "factur-x.xml" => Some(Filename::TheHybridDocumentContainsAFacturXZugferdXmlFile),
50            "xrechnung.xml" => Some(Filename::TheHybridDocumentContainsAXrechnungXmlFile),
51            "order-x.xml" => Some(Filename::TheHybridDocumentContainsAnOrderXXmlFile),
52            _ => None,
53        }
54    }
55}