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