#helper #utils #rif

rifven

Venezuelan RIF implementation useful for creating and validating RIF numbers

1 unstable release

0.1.0 Feb 23, 2021

#80 in #util

MIT/Apache

94KB
287 lines

rifven

Venezuelan RIF implementation useful for creating and validating RIF numbers

Crates.io Documentation Build Lint Tests

What are RIF numbers?

RIF (Registro de Informacion Fiscal) in english Fiscal Information Registry is a number provided by a Venezuelan entity SAIME used to identify multiple entities for taxable purposes.

The RIF is composed by a kind which could be:

  • C: Township or Communal Council
  • E: Represents a foreigner natural person and stands for "Extranjera" and "Extranjero"
  • G: Represents a goverment entity and stands for "Gubernamental"
  • J: Used for a legal entity. Could be a natural person or a corporate entity and stands for "Jurídico"
  • P: Used on RIF numbers which belongs to passports
  • V: Represents a person with venezuelan citizenship and stands for "Venezolana" and "Venezolano"

An identifier number followed by a hyphen symbol and finally a checksum digit, as well followed by a hyphen symbol.

Motivation

Implement a crate to help create instances of valid RIF numbers

Usage

Creating a new Rif instance providing each of its parts values such as Kind (J; V; P; G; C), identifier (tax payer ID), check number.

The following code, creates an instance of Rif for a RIF string which looks like J-07013380-5:

use rifven::{Kind, Rif};

let rif = Rif::new(Kind::Legal, 07013380, 5).unwrap();

assert_eq!(rif.kind(), Kind::Legal);
assert_eq!(rif.identifier(), 7013380);
assert_eq!(rif.checksum_digit(), 5);

You can also create instances of Rif from its string representation

use rifven::{Kind, Rif};
use std::str::FromStr;

let myrif = Rif::from_str("J-07013380-5").unwrap();

assert_eq!(Rif::new(Kind::Legal, 07013380, 5).unwrap(), myrif);

License

Licensed under the Apache 2.0 and MIT licenses

Contributions

Every contribution to this project is welcome, feel free to either open a Pull Request or issue

Dependencies

~290–750KB
~18K SLoC