zugferd_code_lists/zugferd_2_3_3/
hybriddocument.rs

1#![allow(non_camel_case_types)]
2
3#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
4pub enum HybridDocument {
5    /// The hybrid document contains an invoice or credit note
6    ///
7    /// Only applicable in Factur-X / ZUGFeRD
8    TheHybridDocumentContainsAnInvoiceOrCreditNote,
9    /// The hybrid document contains an order
10    ///
11    /// Only applicable in Order-X
12    TheHybridDocumentContainsAnOrder,
13    /// The hybrid document contains an order response
14    ///
15    /// Only applicable in Order-X
16    TheHybridDocumentContainsAnOrderResponse,
17    /// Thy hybrid document contains an order change
18    ///
19    /// Only applicable in Order-X
20    ThyHybridDocumentContainsAnOrderChange,
21}
22
23impl crate::Code for HybridDocument {
24    fn code(self) -> &'static str {
25        match self {
26            HybridDocument::TheHybridDocumentContainsAnInvoiceOrCreditNote => "INVOICE",
27            HybridDocument::TheHybridDocumentContainsAnOrder => "ORDER",
28            HybridDocument::TheHybridDocumentContainsAnOrderResponse => "ORDER_RESPONSE",
29            HybridDocument::ThyHybridDocumentContainsAnOrderChange => "ORDER_CHANGE",
30        }
31    }
32}
33
34impl crate::Description for HybridDocument {
35    fn description(self) -> &'static str {
36        match self {
37            HybridDocument::TheHybridDocumentContainsAnInvoiceOrCreditNote => {
38                "The hybrid document contains an invoice or credit note"
39            }
40            HybridDocument::TheHybridDocumentContainsAnOrder => {
41                "The hybrid document contains an order"
42            }
43            HybridDocument::TheHybridDocumentContainsAnOrderResponse => {
44                "The hybrid document contains an order response"
45            }
46            HybridDocument::ThyHybridDocumentContainsAnOrderChange => {
47                "Thy hybrid document contains an order change"
48            }
49        }
50    }
51}
52
53impl crate::FromCode for HybridDocument {
54    fn from_code(code: &str) -> Option<Self>
55    where
56        Self: Sized,
57    {
58        match code {
59            "INVOICE" => Some(HybridDocument::TheHybridDocumentContainsAnInvoiceOrCreditNote),
60            "ORDER" => Some(HybridDocument::TheHybridDocumentContainsAnOrder),
61            "ORDER_RESPONSE" => Some(HybridDocument::TheHybridDocumentContainsAnOrderResponse),
62            "ORDER_CHANGE" => Some(HybridDocument::ThyHybridDocumentContainsAnOrderChange),
63            _ => None,
64        }
65    }
66}