Saltearse al contenido

Clase Rfc

El objeto clase Rfc es el core principal de la libreria y principalmente usarás está clase

Creación de objetos

El objeto Rfc se puede crear a partir de cuatro formas. Y adicional a ellos existen dos metodos más para RFC generico y foraneo

parse

Al crear por medio del método parse se validan los datos de entrada y surge una excepción si son inválidos.

import { Rfc } from '@nodecfdi/rfc';
// Al proporcionar un rfc válido se crea el objeto RFC
const rfc = Rfc.parse('CACX7605101P8');
// Al proporcionar un rfc inválido se lanzara una excepción
const rfcInvalid = Rfc.parse('COSC800113-7NA');
// Error: The RFC expression does not contain the valid parts

parseOrNull

Si se requiere crear sin arrojar un error, se puede hacer mediante el método parseOrNull, al igual que con el método parse se validan los datos de entrada pero si son inválidos retorna null.

import { Rfc } from '@nodecfdi/rfc';
// Al proporcionar un rfc válido se crea el objeto RFC
const rfc = Rfc.parseOrNull('CACX7605101P8');
// Al proporcionar un rfc inválido, el valor sera null
const rfcInvalid = Rfc.parseOrNull('COSC800113-7NA');
// rfcInvalid: null

unparsed

Con el método unparsed no se validan los datos de entrada y se creará el objeto con la cadena de caracteres proporcionada como Rfc.

import { Rfc } from '@nodecfdi/rfc';
// Se crea la instancia rfc
const rfc = Rfc.unparsed('CACX7605101P8');
console.info(rfc.toString()); // Output: 'CACX7605101P8'
// Aún siendo incorrecto el RFC se crea una instancia de objeto RFC
const rfcInvalid = Rfc.unparsed('COSC800113-7NA');
console.info(rfcInvalid.toString()); // Output: 'COSC800113-7NA'

fromSerial

El método fromSerial convierte el número de serie del RFC a su representación de cadena de caracteres.

import { Rfc } from '@nodecfdi/rfc';
// Se crea la instancia rfc
const rfc = Rfc.fromSerial(1348025748541);
console.info(rfc.toString()); // Output: 'DIM8701081LA'

newGeneric

Método estatico que obtiene una instancia de Rfc del RFC generico “XAXX010101000”.

import { Rfc } from '@nodecfdi/rfc';
const rfcGenerico = Rfc.newGeneric();
console.info(rfcGenerico.toString()); // Output: 'XAXX010101000'

newForaign

Método estatico que obtiene una instancia de Rfc del RFC foraneo “XEXX010101000”.

import { Rfc } from '@nodecfdi/rfc';
const rfcForaneo = Rfc.newForaign();
console.info(rfcForaneo.toString()); // Output: 'XEXX010101000'

Métodos y propiedades

isValid

Método estatico que valida el RFC ingresado y retorna si es válido o no. Opcional se puede pasar flags para deshabilitar rfc generico y/o foraneo

import { Rfc } from '@nodecfdi/rfc';
const rfc = 'DIM8701081LA';
console.info(Rfc.isValid(rfc)); // Output: true
console.info(Rfc.isValid(Rfc.RFC_GENERIC)); // Output: true
console.info(Rfc.isValid(Rfc.RFC_FOREIGN)); // Output: true
console.info(Rfc.isValid(Rfc.RFC_GENERIC, Rfc.DISALLOW_GENERIC)); // Output: false
console.info(Rfc.isValid(Rfc.RFC_FOREIGN, Rfc.DISALLOW_FOREIGN)); // Output: false
console.info(Rfc.isValid(rfc, Rfc.DISALLOW_GENERIC | Rfc.DISALLOW_FOREIGN)); // Output: true
console.info(Rfc.isValid(Rfc.RFC_GENERIC, Rfc.DISALLOW_GENERIC | Rfc.DISALLOW_FOREIGN)); // Output: false
console.info(Rfc.isValid(Rfc.RFC_FOREIGN, Rfc.DISALLOW_GENERIC | Rfc.DISALLOW_FOREIGN)); // Output: false

checkIsValid

Método estatico que valida el RFC ingresado y lanza un error en caso de no ser válido. Opcional se puede pasar flags para deshabilitar rfc generico y/o foraneo

import { Rfc } from '@nodecfdi/rfc';
const rfc = 'DIM8701081LA';
Rfc.checkIsValid(rfc); // No regresa nada pero no lanza error, por lo tanto es válido el RFC ingresado
Rfc.checkIsValid(Rfc.RFC_GENERIC, Rfc.DISALLOW_GENERIC); // Error: No se permite el RFC genérico para público en general
Rfc.checkIsValid(Rfc.RFC_FOREIGN, Rfc.DISALLOW_FOREIGN); // Error: No se permite el RFC genérico para operaciones con extranjeros
Rfc.checkIsValid('COSC800113-7NA'); // Error: The RFC expression does not contain the valid parts

obtainDate

Método estatico que obtiene la fecha en milisegundos dado un RFC válido.

import { Rfc } from '@nodecfdi/rfc';
const rfc = 'DIM8701081LA';
// La fecha para este rfc es año: 87, mes: 01, dia: 08
// La libreria parte la fecha desde 2000-01-01 por lo que la fecha para el rfc es:
// 2087-01-08
const dateInMilis = Rfc.obtainDate(rfc);
console.info(dateInMilis); // Output: 3692844000000

getRfc

Método que regresa el contenido de RFC, un string multibyte.

import { Rfc } from '@nodecfdi/rfc';
const rfc = Rfc.parse('CACX7605101P8');
console.info(rfc.getRfc()); // Output: CACX7605101P8

isFisica

Método que checa si el RFC es persona fisica.

import { Rfc } from '@nodecfdi/rfc';
const rfcFisica = Rfc.parse('COSC8001137NA');
const rfcMoral = Rfc.parse('EKU9003173C9');
console.info(rfcFisica.isFisica()); // Output: true
console.info(rfcMoral.isFisica()); // Output: false

isMoral

Método que checa si el RFC es persona moral.

import { Rfc } from '@nodecfdi/rfc';
const rfcFisica = Rfc.parse('COSC8001137NA');
const rfcMoral = Rfc.parse('EKU9003173C9');
console.info(rfcFisica.isMoral()); // Output: false
console.info(rfcMoral.isMoral()); // Output: true

isGeneric

Método que checa si el RFC es un RFC Generico Local.

import { Rfc } from '@nodecfdi/rfc';
const rfc = Rfc.parse('COSC8001137NA');
const rfcGenerico = Rfc.newGeneric();
console.info(rfc.isGeneric()); // Output: false
console.info(rfcGenerico.isGeneric()); // Output: true

isForeign

Método que checa si el RFC es un RFC Generico Foraneo.

import { Rfc } from '@nodecfdi/rfc';
const rfc = Rfc.parse('COSC8001137NA');
const rfcForaneo = Rfc.newForaign();
console.info(rfc.isForeign()); // Output: false
console.info(rfcForaneo.isForeign()); // Output: true

calculateChecksum

Método que calcula el digito verificador o checksum del RFC.

import { Rfc } from '@nodecfdi/rfc';
const rfc = Rfc.parse('COSC8001137NA');
console.info(rfc.calculateChecksum()); // Output: 'A'

doesCheckSumMatch

Método que comprueba si el último caracter del RFC es el mismo que el calculado con el método calculateChecksum().

import { Rfc } from '@nodecfdi/rfc';
const rfc = Rfc.parse('COSC8001137NA');
console.info(rfc.doesCheckSumMatch()); // Output: true

calculateSerial

Método que calcula el número serial (representación en número entero) del RFC.

import { Rfc } from '@nodecfdi/rfc';
const rfc = Rfc.parse('COSC8001137NA');
console.info(rfc.calculateSerial()); // Output: 40270344269627