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