zugferd_code_lists/zugferd_2_3_3/
date.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 Date {
6    /// CCYYMMDD
7    ///
8    /// Calendar date: C = Century ; Y = Year ; M = Month ; D = Day.
9    Ccyymmdd,
10    /// CCYYMMDDHHMMZHHMM
11    ///
12    /// Calendar date including time and time zone expressed in hours and minutes. ZHHMM = time zone given as offset from Coordinated Universal Time (UTC).
13    Ccyymmddhhmmzhhmm,
14}
15
16impl crate::Code for Date {
17    fn code(self) -> &'static str {
18        match self {
19            Date::Ccyymmdd => "102",
20            Date::Ccyymmddhhmmzhhmm => "205",
21        }
22    }
23}
24
25impl crate::Description for Date {
26    fn description(self) -> &'static str {
27        match self {
28            Date::Ccyymmdd => "CCYYMMDD",
29            Date::Ccyymmddhhmmzhhmm => "CCYYMMDDHHMMZHHMM",
30        }
31    }
32}
33
34impl crate::FromCode for Date {
35    fn from_code(code: &str) -> Option<Self>
36    where
37        Self: Sized,
38    {
39        match code {
40            "102" => Some(Date::Ccyymmdd),
41            "205" => Some(Date::Ccyymmddhhmmzhhmm),
42            _ => None,
43        }
44    }
45}