4 releases (1 stable)
1.0.0 | Apr 13, 2023 |
---|---|
0.2.0 | Dec 20, 2022 |
0.1.1 | Nov 18, 2022 |
0.1.0 | Jul 26, 2022 |
#1277 in Encoding
20KB
467 lines
cfdi_use_mx
Bliblioteca para el uso de CFDI en México, según las especificaciones 3[^*] y 4.
[^*]: Actualmente deprecada
Ejemplo de uso
Conversión por código
use cfdi_use_mx::*;
fn main() {
let cfdi_use = v4::CFDIUse::from("G03");
assert_eq!(cfdi_use, v4::CFDIUse::G03);
}
Conversión por descripción
use cfdi_use_mx::*;
fn main() {
let cfdi_use = v4::CFDIUse::from_description("Pagos");
assert_eq!(cfdi_use, v4::CFDIUse::CP01);
assert_eq!("Pagos", v4::CFDIUse::CP01.description());
}
Valor por default
use cfdi_use_mx::*;
fn main() {
let cfdi_use = v4::CFDIUse::from("Strange text");
assert_eq!(cfdi_use, v4::CFDIUse::default());
}
Serde
IMPORTANTE: El soporte de serde
está activo por default. Si no lo necesita, desactive las default-features
Ejemplo
use serde::{Deserialize, Serialize};
use serde_json::json;
use cfdi_use_mx::v4::CFDIUse;
#[derive(Serialize, Deserialize, Debug, PartialEq)]
struct Costumer {
rfc: String,
cfdi_use: CFDIUse,
}
#[test]
fn serialize_works() {
let costumer = Costumer {
rfc: "RFC11DDDF".to_string(),
cfdi_use: CFDIUse::D04,
};
let result = serde_json::to_string(&costumer);
assert!(result.is_ok());
println!("{:?}", result.unwrap());
}
#[test]
fn deserialize_works() {
let costumer_json = json!({
"rfc": "RFC11DDDF",
"cfdi_use": "D03"
});
let costumer = Costumer {
rfc: "RFC11DDDF".to_string(),
cfdi_use: CFDIUse::D03,
};
let deserialize_costumer = serde_json::from_value::<Costumer>(costumer_json).unwrap();
assert_eq!(&deserialize_costumer, &costumer);
println!("{:?}", &deserialize_costumer);
}
Dependencies
~100–330KB