DGIIFacturaElectronica 1.0.9

dotnet add package DGIIFacturaElectronica --version 1.0.9
NuGet\Install-Package DGIIFacturaElectronica -Version 1.0.9
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DGIIFacturaElectronica" Version="1.0.9" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DGIIFacturaElectronica --version 1.0.9
#r "nuget: DGIIFacturaElectronica, 1.0.9"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DGIIFacturaElectronica as a Cake Addin
#addin nuget:?package=DGIIFacturaElectronica&version=1.0.9

// Install DGIIFacturaElectronica as a Cake Tool
#tool nuget:?package=DGIIFacturaElectronica&version=1.0.9

DGII Facturacion Electronica

Libreria de uso comun para hacer que los sistemas actuales se conviertan muy facilmente en emisores electronicos de DGII consumiendo los servicios en la nube para esos fines.

Requisitos

Para usar esta libreria es necesario contar con un certificado digital personal para fines tributarios, nombre de usuario y una contraseNa que puedes obtener gratis en el sitio web del sistema, estos pasos son necesarios para obtener las URL's disponibles como son:

  1. Autenticacion con DGII https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/Autenticacion
  2. Recepcion de comprobantes https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/Recepcion/api/ecf
  3. Aprobacion comercial https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/AprobacionComercial/api/ecf *Debes sustituir 'TU_RNC_SIN_ESPACIOS_NI_GUIONES' por tu RNC o cedula que subiras al cargar tu certificado por primera vez.

Como uso la libreria?

Luego de instalar el paquete en un proyecto .NET pasamos a comentarte que esta libreria se compone de varios metodos que usaremos para consumir los servicios de facturacion Electronica, estos metodos son:

  • UploadCertificate
    • Este metodo recibe dos parametros de cadena de texto, uno es la ruta fisica de tu certificado, y el otro es la clave de tu certificado digital, ya tambien tu rnc o cedula que DGII ha autorizado a emitir comprobantes. Esta informacion la usaremos para cargar el certificado la primera vez unicamente. Este metodo se encarga de subir el certificado necesario para realizar las operaciones. Asegurate de validar y verificar el certificado antes de continuar con las siguientes operaciones.
  • EnviarFactura
    • Con este metodo enviaremos las facturas a DGII, recibe un parametro de la factura en cuestion a enviar. Esta funcion envia una factura a traves del servicio. Utiliza la objeto FacturaElectronica que contiene la factura a enviar.
  • ConsultarTrackId
    • Realiza la consulta del numero de seguimiento o TrackId, recibe como parametros el RNC del emisor y el numero de NCF. Este metodo consulta el estado de una factura utilizando el RNC del emisor y el numero de comprobante fiscal (NCF). Implementa la logica necesaria para conectarte al servicio o API de consulta correspondiente y realizar la consulta utilizando los parametros proporcionados. Procesa la respuesta y extrae la informacion necesaria.
  • ConsultarEstatus
    • Realiza la consulta del estado del documento en los sevidores electronicos de DGII, recibe el TrackId o numero de seguimiento. Esta funcion consulta el estado de una factura utilizando un ID de seguimiento proporcionado. Procesa la respuesta y extrae la informacion necesaria.
  • ConsultarTimbre
    • Realiza la consulta para generar el codigo QR de consultar el documento en los sevidores de DGII, recibe como parametros fecha del documento, RNC de comprador y el numero de comprobante electronico.
  • EnviarNCFAComprador
    • Envia el comprobante al comprador, recibe como parametros la factura, URl de Autenticacion y la URl de Recepcion.
  • NCFRecibidos
    • Consulta los NCF recibidos desde nuestros suplidores en un rango de fecha.
  • EnviarAprobacionComercialAComprador
    • Envia al suplidor una aprobacion o rechazo comercial
  • AprobacionesComerciales
    • Consulta las aprobaciones comerciales recibidas en un rango de fechas.
  • InformacionDeCertificado
    • Consulta la informacion relacionada con tu certificado digital.
  • InformacionDelToken
    • Retorna el objeto Token con los valores que usa para los servicios.
  • ConsultarDirectorio
    • Responsable de retornar el listado de los contribuyentes con la URLs de sus servicios. Este ejemplo ha sido probado con la version 4.8 de .NET Framework y NET 6 con su respectiva version de Visual Studio.
//Declaramos las variables
private static readonly string usuario = "NombreDeUsuario";
private static readonly string clave = "ClaveSecreta";
private static readonly string uRlAutenticacion = "https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/Autenticacion";
private static readonly string uRlRecepcion = "https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/Recepcion/api/ecf";
private static readonly string uRlAprobacionComercial = "https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/AprobacionComercial/api/ecf";
private static readonly string rncEmisor = "TU_RNC";
private static readonly string rncComprador = "RNC_COMPRADOR";
private static readonly string ncf = "E-COMPROBANTE";
private static readonly string fechaEmision = "DD-MM-YYYY";
//Instanciamos la clase para consumir los metodos
DocumentosElectronicos documentosElectronicos = new DocumentosElectronicos(usuario, clave, Ambientes.TesteCF);
//Subimos el certificado digital (solo la primera vez, luego ya no es necesario.)
documentosElectronicos.UploadCertificate("RUTA COMPLETA DE TU CERTIFICADO DIGITAL", "CLAVE DEL CERTIFICADO", "TU_RNC_SIN_ESPACIOS_NI_GUIONES");
//Preparamos el documento a enviar
List<Detalle> detalles = new List<Detalle>
{
    new Detalle(1, 100, "Producto test 1", "11", 10),
    new Detalle(1, 200, "Producto test 2", "12", 10)
};
FacturaElectronica facturaElectronica = new FacturaElectronica(detalles.ToArray(), ncf, "31-12-2025", TipoDeIngresos.Ingresos_por_operaciones_No_financieros, rncEmisor, "TU RAZON SOCIAL", "Mi direccion", fechaEmision, rncComprador, "NOMBRE DEL CLIENTE", TipoDePago.Contado, IndicadorMontoGravado.Con_ITBIS_INCLUIDO, ProvinciaMunicipio.MUNICIPIO_SANTO_DOMINGO_DE_GUZMAN_010100, ProvinciaMunicipio.MUNICIPIO_SANTO_DOMINGO_DE_GUZMAN_010100, ProvinciaMunicipio.DISTRITO_NACIONAL_010000, ProvinciaMunicipio.DISTRITO_NACIONAL_010000);

//Enviamos el documento o factura
documentosElectronicos.EnviarFactura(facturaElectronica);
//Consultamos el numero de seguimiento de cada en envio del documento
List<TrackId> resultado = await documentosElectronicos.ConsultarTrackId(rncEmisor, eNcf);
foreach (var item in resultado)
    Console.WriteLine($"TrackId: {item.trackId}\nMensaje: {item.mensaje}\nEstado: {item.estado}\nFecha Recepcion: {item.fechaRecepcion}");
//Consultamos el estatus mediante su numero de seguimiento o TrackId
string resultado = await documentosElectronicos.ConsultarEstatus(trackId);
//Consultamo el Timbre para generar el codigo QR
Timbre resultado = await documentosElectronicos.ConsultarTimbre(fecha, rnc, ncf);
Console.WriteLine($"Fecha de Firma: {resultado.fechaFirma}\nfechaEmision: {resultado.fechaEmision}\nencf: {resultado.encf}\nRNC Comprador: {resultado.rncComprador}\nCodigo de Seguridad: {resultado.codigoSeguridad}\nMonto Total: {resultado.montoTotal}\nRrl Image: {resultado.urlImage}\nRNC Emisor: {resultado.rncEmisor}");
//Enviamos la Factura Al Comprador
ARECF resultado = await documentosElectronicos.EnviarNCFAComprador(facturaElectronica, uRlAutenticacion, uRlRecepcion);
Console.WriteLine($"Detalle de Acuse de Recibo: {resultado.detalleAcusedeRecibo}\nAny: {resultado.any}");
//Consultamos los NCF Recibidos
List<eNCFRecibido> resultado = await documentosElectronicos.NCFRecibidos(fecha1, fecha2);
foreach (var item in resultado)
{
    Console.WriteLine($"Cedula: {item.cedula}\n{item.nombre_Completo}\nFecha: {item.fecha}\nTotal: {item.total}\nSubtotal: {item.subtotal}\nSecuencia_Gobierno: {item.secuencia_Gobierno}\nNombre_Completo: {item.nombre_Completo}\nImpuestos: {item.impuestos}");
    Console.WriteLine("\n");
}
//Enviar Aprobacion Comercial Al Comprador
string resultado = await documentosElectronicos.EnviarAprobacionComercialAComprador(uRlAprobacionComercial, uRlAutenticacion, rncEmisor, rncComprador, ncf, fechaEmision, montoTotal, aprobado, comentarios);
Console.WriteLine(resultado);
//Consultamos las Aprobaciones Comerciales recibidas
List<AprobacionComercial> resultado = await documentosElectronicos.AprobacionesComerciales(fecha1, fecha2);
foreach (var item in resultado)
    Console.WriteLine(item.rncComprador);

Todo el codigo junto a continuacion en un proyecto de consola en C#

private static readonly string usuario = "NombreDeUsuario";
private static readonly string clave = "ClaveSecreta";
private static readonly string url = "https://api.aslan.com.do/TesteCF/";
private static readonly string uRlAutenticacion = "https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/Autenticacion";
private static readonly string uRlRecepcion = "https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/Recepcion/api/ecf";
private static readonly string uRlAprobacionComercial = "https://api.aslan.com.do/ecf/TU_RNC_SIN_ESPACIOS_NI_GUIONES/fe/AprobacionComercial/api/ecf";
private static readonly string rncEmisor = "TU_RNC";
private static readonly string rncComprador = "RNC_COMPRADOR";
private static readonly string ncf = "E-COMPROBANTE";
private static readonly string fechaEmision = "DD-MM-YYYY";
private static DocumentosElectronicos documentosElectronicos;
static void Main(string[] args)
{
    documentosElectronicos = new DocumentosElectronicos(usuario, clave, url);
    
    //Para el manejo de las excepciones, nos suscribimos en el evento `Excepcion` para capturar los errores de forma centralizada.
    documentosElectronicos.Excepcion += DocumentosElectronicos_Excepcion;
    List<Detalle> detalles = new List<Detalle>
    {
        new Detalle(1, 100, "Producto test 1", "11", 10),
        new Detalle(1, 200, "Producto test 2", "12", 10)
    };
    FacturaElectronica facturaElectronica = new FacturaElectronica(detalles.ToArray(), ncf, "31-12-2025", "01", rncEmisor, "TU RAZON SOCIAL", "TU DIRECCION", fechaEmision, rncComprador, "NOMBRE DEL CLIENTE", 1, 1, "010100", "010100", "010000", "010000");
    _ = SubirCertificado();
    _ = EnviarFactura(facturaElectronica);
    _ = ConsultarTrackId(rncEmisor, ncf);
    _ = ConsultarEstatus("954e3d5c-1cc8-4726-84a7-3ceec1599a2b");
    _ = ConsultarTimbre(fechaEmision, rncEmisor, ncf);
    _ = EnviarFacturaAComprador(facturaElectronica, uRlAutenticacion, uRlRecepcion);
    _ = NCFRecibidos(new DateTime(2023, 1, 1), new DateTime(2023, 12, 31));
    _ = EnviarAprobacionComercialAComprador(uRlAprobacionComercial, uRlAutenticacion, rncEmisor, rncComprador, ncf, fechaEmision, 3000.01m, true, "Hemos aprobado el comprobante.");
    _ = AprobacionesComerciales(new DateTime(2023, 1, 1), new DateTime(2023, 12, 31));
    _ = InformacionDeCertificado();
    _ = InformacionDelToken();
    _ = ConsultarDirectorio();

    //Al conluir el uso del componente, eliminamos la suscripcion al evento `Excepcion`.
    documentosElectronicos.Excepcion -= DocumentosElectronicos_Excepcion;
    Console.WriteLine("Listo!");
    Console.ReadLine();
}
private static async Task<Directorio> ConsultarDirectorio()
{
    Directorio Resultado = await documentosElectronicos.ConsultaDirectorio("999999999");

    return Resultado;
}
private static async Task<Token> InformacionDelToken()
{
    Token Resultado = await documentosElectronicos.InformacionDelToken();

    return Resultado;
}
private static async Task<CertInfo> InformacionDeCertificado()
{
    CertInfo Resultado = await documentosElectronicos.InformacionDeCertificado();

    return Resultado;
}
private static void DocumentosElectronicos_Excepcion(object sender, ExceptionEventArgs e)
{
    Console.WriteLine(e.Exception.Message);
}
private static async Task<string> SubirCertificado()
{
    string resultado = await documentosElectronicos.UploadCertificate("RUTA COMPLETA DE TU CERTIFICADO DIGITAL", "CLAVE DEL CERTIFICADO", "TU_RNC_SIN_ESPACIOS_NI_GUIONES");
    Console.WriteLine(resultado);
    return resultado;
}
private static async Task<string> EnviarFactura(FacturaElectronica facturaElectronica)
{
    string resultado = await documentosElectronicos.EnviarFactura(facturaElectronica);
    Console.WriteLine(resultado);
    return resultado;
}
private static async Task<List<TrackId>> ConsultarTrackId(string rncEmisor, string eNcf)
{
    List<TrackId> resultado = await documentosElectronicos.ConsultarTrackId(rncEmisor, eNcf);
    foreach (var item in resultado)
        Console.WriteLine($"TrackId: {item.trackId}\nMensaje: {item.mensaje}\nEstado: {item.estado}\nFecha Recepcion: {item.fechaRecepcion}");
    return resultado;
}
private static async Task<string> ConsultarEstatus(string trackId)
{
    string resultado = await documentosElectronicos.ConsultarEstatus(trackId);
    Console.WriteLine(resultado);
    return resultado;
}
private static async Task<Timbre> ConsultarTimbre(string fecha, string rnc, string ncf)
{
    Timbre resultado = await documentosElectronicos.ConsultarTimbre(fecha, rnc, ncf);
    Console.WriteLine($"Fecha de Firma: {resultado.fechaFirma}\nfechaEmision: {resultado.fechaEmision}\nencf: {resultado.encf}\nRNC Comprador: {resultado.rncComprador}\nCodigo de Seguridad: {resultado.codigoSeguridad}\nMonto Total: {resultado.montoTotal}\nRrl Image: {resultado.urlImage}\nRNC Emisor: {resultado.rncEmisor}");
    return resultado;
}
private static async Task<ARECF> EnviarFacturaAComprador(FacturaElectronica facturaElectronica, string uRlAutenticacion, string uRlRecepcion)
{
    ARECF resultado = await documentosElectronicos.EnviarNCFAComprador(facturaElectronica, uRlAutenticacion, uRlRecepcion);
    Console.WriteLine($"Detalle de Acuse de Recibo: {resultado.detalleAcusedeRecibo}\nAny: {resultado.any}");
    return resultado;
}
private static async Task<List<eNCFRecibido>> NCFRecibidos(DateTime fecha1, DateTime fecha2)
{
    List<eNCFRecibido> resultado = await documentosElectronicos.NCFRecibidos(fecha1, fecha2);
    foreach (var item in resultado)
    {
        Console.WriteLine($"Cedula: {item.cedula}\n{item.nombre_Completo}\nFecha: {item.fecha}\nTotal: {item.total}\nSubtotal: {item.subtotal}\nSecuencia_Gobierno: {item.secuencia_Gobierno}\nNombre_Completo: {item.nombre_Completo}\nImpuestos: {item.impuestos}");
        Console.WriteLine("\n");
    }
    return resultado;
}
private static async Task<string> EnviarAprobacionComercialAComprador(string uRlAprobacionComercial, string uRlAutenticacion, string rncEmisor, string rncComprador, string ncf, string fechaEmision, decimal montoTotal, bool aprobado, string comentarios)
{
    string resultado = await documentosElectronicos.EnviarAprobacionComercialAComprador(uRlAprobacionComercial, uRlAutenticacion, rncEmisor, rncComprador, ncf, fechaEmision, montoTotal, aprobado, comentarios);
    Console.WriteLine(resultado);
    return resultado;
}
private static async Task<List<AprobacionComercial>> AprobacionesComerciales(DateTime fecha1, DateTime fecha2)
{
    List<AprobacionComercial> resultado = await documentosElectronicos.AprobacionesComerciales(fecha1, fecha2);
    foreach (var item in resultado)
        Console.WriteLine(item.rncComprador);
    return resultado;
}

Tabla de provincias y municipios utilizados para enviar el objeto FacturaElectronica |Codigo|Nombre|| | - | - | - | |010000|DISTRITO NACIONAL|| |010100|MUNICIPIO SANTO DOMINGO DE GUZMaN|| |010101|SANTO DOMINGO DE GUZMaN (D. M.).|| |020000|PROVINCIA AZUA|| |020100|MUNICIPIO AZUA|| |020101|AZUA (D. M.).|| |020102|BARRO ARRIBA (D. M.).|| |020103|LAS BARiAS-LA ESTANCIA (D. M.).|| |020104|LOS JOVILLOS (D. M.).|| |020105|PUERTO VIEJO (D. M.).|| |020106|BARRERAS (D. M.).|| |020107|DONA EMMA BALAGUER VIUDA VALLEJO (D. M.).|| |020108|CLAVELLINA (D. M.).|| |020109|LAS LOMAS (D. M.).|| |020200|MUNICIPIO LAS CHARCAS|| |020201|LAS CHARCAS (D. M.).|| |020202|PALMAR DE OCOA (D. M.).|| |020300|MUNICIPIO LAS YAYAS DE VIAJAMA|| |020301|LAS YAYAS DE VIAJAMA (D. M.).|| |020302|VILLARPANDO (D. M.).|| |020303|HATO NUEVO CORTeS (D. M.).|| |020400|MUNICIPIO PADRE LAS CASAS|| |020401|PADRE LAS CASAS (D. M.).|| |020402|LAS LAGUNAS (D. M.).|| |020403|LA SIEMBRA (D. M.).|| |020404|MONTE BONITO (D. M.).|| |020405|LOS FRiOS (D. M.).|| |020500|MUNICIPIO PERALTA|| |020501|PERALTA (D. M.).|| |020600|MUNICIPIO SABANA YEGUA|| |020601|SABANA YEGUA (D. M.).|| |020602|PROYECTO 4 (D. M.).|| |020603|GANADERO (D. M.).|| |020604|PROYECTO 2-C (D. M.).|| |020700|MUNICIPIO PUEBLO VIEJO|| |020701|PUEBLO VIEJO (D. M.).|| |020702|EL ROSARIO (D. M.).|| |020800|MUNICIPIO TaBARA ARRIBA|| |020801|TaBARA ARRIBA (D. M.).|| |020802|TaBARA ABAJO (D. M.).|| |020803|AMIAMA GoMEZ (D. M.).|| |020804|LOS TOROS (D. M.).|| |020900|MUNICIPIO GUAYABAL|| |020901|GUAYABAL (D. M.).|| |021000|MUNICIPIO ESTEBANiA|| |021001|ESTEBANiA (D. M.).|| |030000|PROVINCIA BAHORUCO|| |030001|MUNICIPIO NEIBA|| |030101|NEIBA (D. M.).|| |030102|EL PALMAR (D. M.).|| |030200|MUNICIPIO GALVaN|| |030201|GALVaN (D. M.).|| |030202|EL SALADO (D. M.).|| |030300|MUNICIPIO TAMAYO|| |030301|TAMAYO (D. M.).|| |030302|UVILLA (D. M.).|| |030303|SANTANA (D. M.).|| |030304|MONSERRATE (MONTSERRAT) (D. M.).|| |030305|CABEZA DE TORO (D. M.).|| |030306|MENA (D. M.).|| |030307|SANTA BaRBARA EL 6 (D. M.).|| |030400|MUNICIPIO VILLA JARAGUA|| |030401|VILLA JARAGUA (D. M.).|| |030500|MUNICIPIO LOS RiOS|| |030501|LOS RiOS (D. M.).|| |030502|LAS CLAVELLINAS (D. M.).|| |040000|PROVINCIA BARAHONA|| |040100|MUNICIPIO BARAHONA|| |040101|BARAHONA (D. M.).|| |040102|EL CACHoN (D. M.).|| |040103|LA GUaZARA (D. M.).|| |040104|VILLA CENTRAL (D. M.).|| |040200|MUNICIPIO CABRAL|| |040201|CABRAL (D. M.).|| |040300|MUNICIPIO ENRIQUILLO|| |040301|ENRIQUILLO (D. M.).|| |040302|ARROYO DULCE (D. M.).|| |040400|MUNICIPIO PARAiSO|| |040401|PARAiSO (D. M.).|| |040402|LOS PATOS (D. M.).|| |040500|MUNICIPIO VICENTE NOBLE|| |040501|VICENTE NOBLE (D. M.).|| |040502|CANOA (D. M.).|| |040503|QUITA CORAZA (D. M.).|| |040504|FONDO NEGRO (D. M.).|| |040600|MUNICIPIO EL PENoN|| |040601|EL PENoN (D. M.).|| |040700|MUNICIPIO LA CIeNAGA|| |040701|LA CIeNAGA (D. M.).|| |040702|BAHORUCO (D. M.).|| |040800|MUNICIPIO FUNDACIoN|| |040801|FUNDACIoN (D. M.).|| |040802|PESCADERiA (D. M.).|| |040900|MUNICIPIO LAS SALINAS|| |040901|LAS SALINAS (D. M.).|| |041000|MUNICIPIO POLO|| |041001|POLO (D. M.).|| |041100|MUNICIPIO JAQUIMEYES|| |041101|JAQUIMEYES (D. M.).|| |041102|PALO ALTO (D. M.).|| |050000|PROVINCIA DAJABoN|| |050100|MUNICIPIO DAJABoN|| |050101|DAJABoN (D. M.).|| |050102|CANONGO (D. M.).|| |050200|MUNICIPIO LOMA DE CABRERA|| |050201|LOMA DE CABRERA (D. M.).|| |050202|CAPOTILLO (D. M.).|| |050203|SANTIAGO DE LA CRUZ (D. M.).|| |050300|MUNICIPIO PARTIDO|| |050301|PARTIDO (D. M.).|| |050400|MUNICIPIO RESTAURACIoN|| |050401|RESTAURACIoN (D. M.).|| |050500|MUNICIPIO EL PINO|| |050501|EL PINO (D. M.).|| |050502|MANUEL BUENO (D. M.).|| |060000|PROVINCIA DUARTE|| |060100|MUNICIPIO SAN FRANCISCO DE MACORiS|| |060101|SAN FRANCISCO DE MACORiS (D. M.).|| |060102|LA PENA (D. M.).|| |060103|CENOVi (D. M.).|| |060104|JAYA (D. M.).|| |060105|PRESIDENTE DON ANTONIO GUZMaN FERNaNDEZ (D. M.).| |060200|MUNICIPIO ARENOSO|| |060201|ARENOSO (D. M.).|| |060202|LAS COLES (D. M.).|| |060203|EL AGUACATE (D. M.).|| |060300|MUNICIPIO CASTILLO|| |060301|CASTILLO (D. M.).|| |060400|MUNICIPIO PIMENTEL|| |060401|PIMENTEL (D. M.).|| |060500|MUNICIPIO VILLA RIVA|| |060501|VILLA RIVA (D. M.).|| |060502|AGUA SANTA DEL YUNA (D. M.).|| |060503|CRISTO REY DE GUARAGUAO (D. M.).|| |060504|LAS TARANAS (D. M.).|| |060505|BARRAQUITO (D. M.).|| |060600|MUNICIPIO LAS GUaRANAS|| |060601|LAS GUaRANAS (D. M.).|| |060700|MUNICIPIO EUGENIO MARiA DE HOSTOS|| |060701|EUGENIO MARiA DE HOSTOS (D. M.).|| |060702|SABANA GRANDE (D. M.).|| |070000|PROVINCIA ELiAS PINA|| |070100|MUNICIPIO COMENDADOR|| |070101|COMENDADOR (D. M.).|| |070102|SABANA LARGA (D. M.).|| |070103|GUAYABO (D. M.).|| |070200|MUNICIPIO BaNICA|| |070201|BaNICA (D. M.).|| |070202|SABANA CRUZ (D. M.).|| |070203|SABANA HIGUERO (D. M.).|| |070300|MUNICIPIO EL LLANO|| |070301|EL LLANO (D. M.).|| |070302|GUANITO (D. M.).|| |070400|MUNICIPIO HONDO VALLE|| |070401|HONDO VALLE (D. M.).|| |070402|RANCHO DE LA GUARDIA (D. M.).|| |070500|MUNICIPIO PEDRO SANTANA|| |070501|PEDRO SANTANA (D. M.).|| |070502|RiO LIMPIO (D. M.).|| |070600|MUNICIPIO JUAN SANTIAGO|| |070601|JUAN SANTIAGO (D. M.).|| |080000|PROVINCIA EL SEIBO|| |080100|MUNICIPIO EL SEIBO|| |080101|EL SEIBO (D. M.).|| |080102|PEDRO SaNCHEZ (D. M.).|| |080103|SAN FRANCISCO-VICENTILLO (D. M.).|| |080104|SANTA LUCiA (D. M.).|| |080200|MUNICIPIO MICHES|| |080201|MICHES (D. M.).|| |080202|EL CEDRO (D. M.).|| |080203|LA GINA (D. M.).|| |090000|PROVINCIA ESPAILLAT|| |090100|MUNICIPIO MOCA|| |090101|MOCA (D. M.).|| |090102|JOSe CONTRERAS (D. M.).|| |090103|SAN ViCTOR (D. M.).|| |090104|JUAN LoPEZ (D. M.).|| |090105|LAS LAGUNAS (D. M.).|| |090106|CANCA LA REYNA (D. M.).|| |090107|EL HIGUERITO (D. M.).|| |090108|MONTE DE LA JAGUA (D. M.).|| |090109|LA ORTEGA (D. M.).|| |090200|MUNICIPIO CAYETANO GERMOSeN|| |090201|CAYETANO GERMOSeN (D. M.).|| |090300|MUNICIPIO GASPAR HERNaNDEZ|| |090301|GASPAR HERNaNDEZ (D. M.).|| |090302|JOBA ARRIBA (D. M.).|| |090303|VERAGUA (D. M.).|| |090304|VILLA MAGANTE (D. M.).|| |090400|MUNICIPIO JAMAO AL NORTE|| |090401|JAMAO AL NORTE (D. M.).|| |100000|PROVINCIA INDEPENDENCIA|| |100100|MUNICIPIO JIMANi|| |100101|JIMANi (D. M.).|| |100102|EL LIMoN (D. M.).|| |100103|BOCA DE CACHoN (D. M.).|| |100200|MUNICIPIO DUVERGe|| |100201|DUVERGe (D. M.).|| |100202|VENGAN A VER (D. M.).|| |100300|MUNICIPIO LA DESCUBIERTA|| |100301|LA DESCUBIERTA (D. M.).|| |100400|MUNICIPIO POSTRER RiO|| |100401|POSTRER RiO (D. M.).||

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.9 104 3/12/2024
1.0.8 138 8/22/2023
1.0.7 146 7/15/2023
1.0.6 140 7/15/2023
1.0.5 148 7/8/2023
1.0.4 128 7/4/2023
1.0.3 132 7/4/2023
1.0.2 143 7/1/2023
1.0.1 134 6/28/2023

Componente creado para consumir el servicio de facturación electrónica de DGII.

## Version 1.0.9
Se corrige el acceso de aplicaciones de terceros

## Version 1.0.8
Se agrega nuevo método para la descarga de los archivos .xml firmados.
Se agrega nuevo campo RNC al momento de subir el certificado digital.

## Version 1.0.7
Se actualiza la URL del proyecto en Github.

## Version 1.0.6
Se incluye método para consultar información del certificado digital.
Se incluye método para consultar token de acceso.
Se incluye método para consultar el directorio de empresas certificadas y sus url's.

## Version 1.0.5
Se incluyen comentarios en cada uno de los tipos y sus miembros
Se crea la interfaz IDocumentosElectronicos para extender su funcionalidad.

## Version 1.0.4
Correcion de errores

## Version 1.0.3
Se crea un nuevo conjunto de Ambientes para agrupar las url's de los distintos ambientes al momento de crear
la instancia del objeto `DocumentosElectronicos`.

## Version 1.0.2
Habilitado para compatibilidad con net standard 2.0 (netstandard2.0)
Este cambio habilita la libreria para usar las versiones de .net Core y .net Framework

## Version 1.0.1
Comentarios
Se agrean comentarios para las instancias de los componentes.

Nuevo conjunto de Provincia Municipio con los valores de cada uno como cadana

Nuevo conjunto de tipo de ingresos con los valores de cada uno como cadana

Nuevo conjunto de Tipo De Pago con los valores de cada uno como cadana

Nuevo conjunto de Indicador Monto Gravado con los valores de cada uno como cadana

Se agrega la validación de los RNC o Cédulas al momento de crear el objeto `FacturaElectrónica`
Esta validación solo se hace cuando estos campos tienen algún valor, ya que cuando son Pasaportes no se aplica la validación.