cfdi_use_mx

Crates.iocfdi_use_mx
lib.rscfdi_use_mx
version1.0.0
sourcesrc
created_at2022-07-26 01:24:18.19138
updated_at2023-04-13 20:59:09.751956
descriptionMexican CFDI use
homepagehttps://github.com/jonhteper/cfdi_use_mx
repositoryhttps://github.com/jonhteper/cfdi_use_mx
max_upload_size
id632896
size20,635
JP (jonhteper)

documentation

README

cfdi_use_mx

Crates.io

Bliblioteca para el uso de CFDI en México, según las especificaciones 31 y 4.

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);
}

Footnotes

  1. Actualmente deprecada

Commit count: 10

cargo fmt