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 RFCconst rfc = Rfc.parse('CACX7605101P8');
// Al proporcionar un rfc inválido se lanzara una excepciónconst rfcInvalid = Rfc.parse('COSC800113-7NA');// Error: The RFC expression does not contain the valid partsparseOrNull
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 RFCconst rfc = Rfc.parseOrNull('CACX7605101P8');
// Al proporcionar un rfc inválido, el valor sera nullconst rfcInvalid = Rfc.parseOrNull('COSC800113-7NA');// rfcInvalid: nullunparsed
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 rfcconst rfc = Rfc.unparsed('CACX7605101P8');console.info(rfc.toString()); // Output: 'CACX7605101P8'
// Aún siendo incorrecto el RFC se crea una instancia de objeto RFCconst 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 rfcconst 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: trueconsole.info(Rfc.isValid(Rfc.RFC_GENERIC)); // Output: trueconsole.info(Rfc.isValid(Rfc.RFC_FOREIGN)); // Output: true
console.info(Rfc.isValid(Rfc.RFC_GENERIC, Rfc.DISALLOW_GENERIC)); // Output: falseconsole.info(Rfc.isValid(Rfc.RFC_FOREIGN, Rfc.DISALLOW_FOREIGN)); // Output: false
console.info(Rfc.isValid(rfc, Rfc.DISALLOW_GENERIC | Rfc.DISALLOW_FOREIGN)); // Output: trueconsole.info(Rfc.isValid(Rfc.RFC_GENERIC, Rfc.DISALLOW_GENERIC | Rfc.DISALLOW_FOREIGN)); // Output: falseconsole.info(Rfc.isValid(Rfc.RFC_FOREIGN, Rfc.DISALLOW_GENERIC | Rfc.DISALLOW_FOREIGN)); // Output: falsecheckIsValid
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 ingresadoRfc.checkIsValid(Rfc.RFC_GENERIC, Rfc.DISALLOW_GENERIC); // Error: No se permite el RFC genérico para público en generalRfc.checkIsValid(Rfc.RFC_FOREIGN, Rfc.DISALLOW_FOREIGN); // Error: No se permite el RFC genérico para operaciones con extranjerosRfc.checkIsValid('COSC800113-7NA'); // Error: The RFC expression does not contain the valid partsobtainDate
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: 3692844000000getRfc
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: CACX7605101P8isFisica
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: trueconsole.info(rfcMoral.isFisica()); // Output: falseisMoral
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: falseconsole.info(rfcMoral.isMoral()); // Output: trueisGeneric
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: falseconsole.info(rfcGenerico.isGeneric()); // Output: trueisForeign
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: falseconsole.info(rfcForaneo.isForeign()); // Output: truecalculateChecksum
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: truecalculateSerial
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