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 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 RFCconst rfc = Rfc.parseOrNull('CACX7605101P8');
// Al proporcionar un rfc inválido, el valor sera nullconst 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 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: 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 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 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: trueconsole.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: falseconsole.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: falseconsole.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: falseconsole.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