use chrono::prelude::*;
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Debug, PartialEq, Clone)]
pub struct Operacao {
pub horario: Option<DateTime<Utc>>,
pub tipo: TipoOperacao,
pub destino: DestinoOperacao,
pub natureza: String,
pub consumidor: TipoConsumidor,
pub presenca: TipoPresencaComprador,
pub intermediador: Option<TipoIntermediador>,
}
#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
#[repr(u8)]
pub enum TipoOperacao {
Entrada = 0,
Saida = 1,
}
#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
#[repr(u8)]
pub enum DestinoOperacao {
Interna = 1,
Interestadual = 2,
ComExterior = 3,
}
#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
#[repr(u8)]
pub enum TipoConsumidor {
Normal = 0,
Final = 1,
}
#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
#[repr(u8)]
pub enum TipoPresencaComprador {
NaoSeAplica = 0,
Presencial = 1,
ViaInternel = 2,
ViaTeleatendimento = 3,
NfceEmDomicilio = 4,
PresencialForaDoEstabelecimento = 5,
Outros = 9,
}
#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
#[repr(u8)]
pub enum TipoIntermediador {
SemIntermediador = 0,
EmSiteDeTerceiros = 1,
}