Skip to main content

nfe_parser/base/ide/
operacao.rs

1//! Dados da operação da NF-e
2
3use chrono::prelude::*;
4use serde_repr::{Deserialize_repr, Serialize_repr};
5
6/// Dados referentes a operação da nota
7#[derive(Debug, PartialEq, Clone)]
8pub struct Operacao {
9    pub horario: Option<DateTime<Utc>>,
10    pub tipo: TipoOperacao,
11    pub destino: DestinoOperacao,
12    pub natureza: String,
13    pub consumidor: TipoConsumidor,
14    pub presenca: TipoPresencaComprador,
15    pub intermediador: Option<TipoIntermediador>,
16}
17
18/// Tipo de operação da nota
19#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
20#[repr(u8)]
21pub enum TipoOperacao {
22    Entrada = 0,
23    Saida = 1,
24}
25
26/// Destino da operação da nota
27#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
28#[repr(u8)]
29pub enum DestinoOperacao {
30    Interna = 1,
31    Interestadual = 2,
32    ComExterior = 3,
33}
34
35/// Tipo do consumidor da NF-e
36#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
37#[repr(u8)]
38pub enum TipoConsumidor {
39    Normal = 0,
40    Final = 1,
41}
42
43/// Tipo da presença do comprador
44#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
45#[repr(u8)]
46pub enum TipoPresencaComprador {
47    /// Não se aplica. Ex.: Nota complementar ou de ajuste
48    NaoSeAplica = 0,
49    /// Operação presencial
50    Presencial = 1,
51    /// Operação não presencial, via internet
52    ViaInternel = 2,
53    /// Operação não presencial, via teleatendimento
54    ViaTeleatendimento = 3,
55    /// NFC-e em operação com entrega a domicílio
56    NfceEmDomicilio = 4,
57    /// Operação presencial, fora do estabelecimento
58    PresencialForaDoEstabelecimento = 5,
59    /// Operação não presencial
60    Outros = 9,
61}
62
63/// Tipo do intermediador
64#[derive(Debug, Eq, PartialEq, Copy, Clone, Deserialize_repr, Serialize_repr)]
65#[repr(u8)]
66pub enum TipoIntermediador {
67    /// Operação sem intermediador (em site ou plataforma própria)
68    SemIntermediador = 0,
69    /// Operação em site ou plataforma de terceiros (intermediadores/marketplace)
70    EmSiteDeTerceiros = 1,
71}