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

#1217 in Encoding

MIT license

20KB
467 lines

cfdi_use_mx

Crates.io

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

~110–335KB