use chrono::NaiveDate; use rust_decimal::Decimal; /// Representa uma nota fiscal com seus campos lógicos. /// `numero + serie + documento_tipo` é o identificador único de cada nota. #[derive(Debug, Clone)] pub struct Nota { /// Número incremental da nota. Armazenado como u64. pub numero: u64, /// Série da nota (1–3 dígitos numéricos). Ex: "001", "1". pub serie: String, /// Tipo de documento (ex: "NFE", "NFCE"). None quando não mapeado. pub documento_tipo: Option, /// Valor monetário da nota (opcional). pub valor: Option, /// Data de emissão da nota (opcional, exibida no PDF mas não usada em regras). pub data: Option, } impl Nota { pub fn new( numero: u64, serie: String, documento_tipo: Option, valor: Option, data: Option, ) -> Self { Self { numero, serie, documento_tipo, valor, data, } } }