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