Documentacion Libreria Siat .NET

Documentacion de Desarrollador Libreria Siat V2 .NET

Para una mejor compresión de nuestra documentación, es necesario que el desarrollador tenga conocimiento del Anexo técnico Siat de Impuestos Nacionales de Bolivia.

Requerimientos

  • Version .NET Framework 4.0 o superior

Carga de dependencias


La libreria o ensamblado libSiatNet.dll debe ser referenciada en su proyecto


Inicializacion de configuracion

Para la modalidad electronica, los formatos de archivos soportados por la libreria para las firmas digitales, es el formato PEM


var config = new SiatConfig()
{
  ambiente = (int)Ambientes.AMBIENTE_PRUEBAS,
  modalidad = (int)ModalidadFacturacion.COMPUTARIZADA_ENLINEA,
  codigoSistema = "6D32E2B9FBF0FE7B3BADFDG",
  nit = 12454656,
  nombreSistema = "SAGE",
  razonSocial = "DESARROLLANDO TE",
  tipo = "",
tokenDelegado = "eyJ0eXAiOQ",
certFilename = BASEPATH + "/certs/certificado.pem";
  certPrivateKeyFilename = BASEPATH + "/certs/llave_privada.pem";
  ciudad = "COCHABAMBA",
telefono = "32543543"
};


Servicio de Codigos


Obtención de codigo CUIS

int codigoPuntoVenta = 0;
int codigoSucursal = 0;
var config = obtenerConfiguracion();
var serviceCodigos = new ServiceFacturacionCodigos();
serviceCodigos.setConfig(config);
var resCuis = serviceCodigos.ObtenerCuis(codigoPuntoVenta, codigoSucursal);


Obtención de código CUFD


Para poder obtener el CUFD, es necesario antes obtener el CUIS y asignarlo al servicio de obtencion de codigos


var config = obtenerConfiguracion();
var serviceCodigos = new ServiceFacturacionCodigos();
serviceCodigos.setConfig(config);
serviceCodigos.cuis = resCuis.codigo;
var resCufd = serviceCodigos.ObtenerCufd();

Servicio de Sincronizacion

El servicio de sincronización obtiene parametricas e información importante para poder construir una factura

Para la utilización de este servicio, es necesario obtener el codigo CUIS antes de realizar cualquier operación

Ejemplo de obtención de listado de eventos significativos


var config = obtenerConfiguracion(); //funcion a implementar por el dev
var resCuis = obtenerCUIS(config); //funcion a implementar por el dev
//##obtener listado de eventos
var serviceSync = new ServiceFacturacionSincronizacion();
serviceSync.setConfig(config);
serviceSync.cuis = resCuis.codigo;
var eventsList = serviceSync.sincronizarParametricaEventosSignificativos();

Servicio de Operaciones


El servicio de operaciones nos permite registrar puntos de venta, eventos de contingencia, etc.


Registro de un evento


Para poder registrar un evento es necesario obtener el CUIS antes, y en algunos casos es necesario el CUFD (revisar documentacion SIAT, anexo tecnico).

Tambien se debe obtener el codigo del evento que se quiere registrar (este evento se debe obtener utilizando el servicio de sincronizacion)


var config = obternetConfiguracion();
var resCuis = obtenerCUIS($config);
var resCufd = obtenerCUFD($config);
var event = obtenerEvento(config, resCuis, resCufd);
var serviceOps = new ServiceOperaciones();
serviceOps.cuis = resCuis.codigo;
serviceOps.cufd = resCufd.codigo;
serviceOps.SetConfig(config);
var fechaInicio     = DateTime.Now.Subtract(TimeSpan.FromDays(3)); //fecha anterior del evento
var fechaFin         = DateTime.Now.Subtract(TimeSpan.FromDays(1)); //fecha anterior del evento
//##este cufd es cuando paso el evento
string cufdAntiguo    = "";
var resEvent = serviceOps.registroEventoSignificativo(event.codigoClasificador, event.descripcion, cufdAntiguo, fechaInicio, fechaFin);

Obtener el Servicio de Facturación

El servicio de facturación, se obtiene utilizando la modalidad asignada en la configuración, ya sea computarizada o electrónica

 

var config = GetConfig();
var cuis = obtenerCuis(sucursal, puntoventa);
var cufd = obtenerCufd(sucursal, puntoventa);

ServiceFacturacion service = SiatFactory.ObtenerServicioFacturacion(config,
  cuis.codigo,
  cufd.codigo,
  cufd.codigoControl
);
//asignar true en caso de habilitar la depuracion e impresion de datos por consola               
service.debug = true;

Envio/Recepciónde la Factura

var res = await service.recepcionFactura(invoice, (int)tipoEmision, (int)tipoFactura);
string invoiceXml = service.buildInvoiceXml(invoice);
Console.WriteLine("RESPUESTAn{0}", res.ToXml().ToString());
Console.WriteLine("INVOICE URL: {0}", invoice.GetUrl());
if ( int.Parse(res.codigoEstado) == 908 )
{
      //TODO: Generar el pdf de la factura y enviar por email
}
Sintic Bolivia Contacto whatsapp