Bliblioteca para el uso de CFDI en México, según las especificaciones 3[^*] y 4.
Conversión por código
```rust use cfdiusemx::*;
fn main() { let cfdiuse = v4::CFDIUse::from("G03"); asserteq!(cfdi_use, v4::CFDIUse::G03); } ```
Conversión por descripción
```rust use cfdiusemx::*;
fn main() { let cfdiuse = v4::CFDIUse::fromdescription("Pagos"); asserteq!(cfdiuse, v4::CFDIUse::CP01); assert_eq!("Pagos", v4::CFDIUse::CP01.description()); } ```
Valor por default
```rust use cfdiusemx::*;
fn main() { let cfdiuse = v4::CFDIUse::from("Strange text"); asserteq!(cfdi_use, v4::CFDIUse::default()); } ```
IMPORTANTE: El soporte de serde
está activo por default. Si no lo necesita, desactive las default-features
```rust use serde::{Deserialize, Serialize}; use serde_json::json;
use cfdiusemx::v4::CFDIUse;
struct Costumer { rfc: String, cfdi_use: CFDIUse, }
fn serializeworks() { let costumer = Costumer { rfc: "RFC11DDDF".tostring(), cfdi_use: CFDIUse::D04, };
let result = serde_json::to_string(&costumer);
assert!(result.is_ok());
println!("{:?}", result.unwrap());
}
fn deserializeworks() { let costumerjson = 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);
} ```