zugferd_code_lists/zugferd_2_3_3/
date.rs

1#![allow(non_camel_case_types)]
2
3#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
4pub enum Date {
5    /// CCYYMMDD
6    ///
7    /// Calendar date: C = Century ; Y = Year ; M = Month ; D = Day.
8    Ccyymmdd,
9    /// CCYYMMDDHHMMZHHMM
10    ///
11    /// Calendar date including time and time zone expressed in hours and minutes. ZHHMM = time zone given as offset from Coordinated Universal Time (UTC).
12    Ccyymmddhhmmzhhmm,
13}
14
15impl crate::Code for Date {
16    fn code(&self) -> &str {
17        match self {
18            Date::Ccyymmdd => "102",
19            Date::Ccyymmddhhmmzhhmm => "205",
20        }
21    }
22}
23
24impl crate::Description for Date {
25    fn description(&self) -> &str {
26        match self {
27            Date::Ccyymmdd => "CCYYMMDD",
28            Date::Ccyymmddhhmmzhhmm => "CCYYMMDDHHMMZHHMM",
29        }
30    }
31}
32
33impl crate::FromCode for Date {
34    fn from_code(code: &str) -> Option<Self>
35    where
36        Self: Sized,
37    {
38        match code {
39            "102" => Some(Date::Ccyymmdd),
40            "205" => Some(Date::Ccyymmddhhmmzhhmm),
41            _ => None,
42        }
43    }
44}