zugferd_code_lists/zugferd_2_3_2/
hybriddocument.rs1#![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 TheHybridDocumentContainsAnInvoiceOrCreditNote,
11 TheHybridDocumentContainsAnOrder,
15 TheHybridDocumentContainsAnOrderResponse,
19 ThyHybridDocumentContainsAnOrderChange,
23}
24
25impl std::fmt::Display for HybridDocument {
26 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27 write!(f, "{}", <Self as crate::Code>::code(*self))
28 }
29}
30
31impl std::str::FromStr for HybridDocument {
32 type Err = ();
33 fn from_str(s: &str) -> Result<Self, Self::Err> {
34 <Self as crate::FromCode>::from_code(s).ok_or(())
35 }
36}
37
38impl crate::Code for HybridDocument {
39 fn code(self) -> &'static str {
40 match self {
41 HybridDocument::TheHybridDocumentContainsAnInvoiceOrCreditNote => "INVOICE",
42 HybridDocument::TheHybridDocumentContainsAnOrder => "ORDER",
43 HybridDocument::TheHybridDocumentContainsAnOrderResponse => "ORDER_RESPONSE",
44 HybridDocument::ThyHybridDocumentContainsAnOrderChange => "ORDER_CHANGE",
45 }
46 }
47}
48
49impl crate::Description for HybridDocument {
50 fn description(self) -> &'static str {
51 match self {
52 HybridDocument::TheHybridDocumentContainsAnInvoiceOrCreditNote => {
53 "The hybrid document contains an invoice or credit note"
54 }
55 HybridDocument::TheHybridDocumentContainsAnOrder => {
56 "The hybrid document contains an order"
57 }
58 HybridDocument::TheHybridDocumentContainsAnOrderResponse => {
59 "The hybrid document contains an order response"
60 }
61 HybridDocument::ThyHybridDocumentContainsAnOrderChange => {
62 "Thy hybrid document contains an order change"
63 }
64 }
65 }
66}
67
68impl crate::FromCode for HybridDocument {
69 fn from_code(code: &str) -> Option<Self>
70 where
71 Self: Sized,
72 {
73 match code {
74 "INVOICE" => Some(HybridDocument::TheHybridDocumentContainsAnInvoiceOrCreditNote),
75 "ORDER" => Some(HybridDocument::TheHybridDocumentContainsAnOrder),
76 "ORDER_RESPONSE" => Some(HybridDocument::TheHybridDocumentContainsAnOrderResponse),
77 "ORDER_CHANGE" => Some(HybridDocument::ThyHybridDocumentContainsAnOrderChange),
78 _ => None,
79 }
80 }
81}