Documentación Libreria SIAT Java

Descarga de la libreria

Descarga del Zip de la libreria, dentro del encontrará el archivo con el nombre siat-1-1.jar.

Instalación en el repositorio local

Para poder instalar la libreria en su repositorio local, se debe ejecutar el siguiente comando

mvn install:install-file -Dfile=siat-1-1.jar -DgroupId=net.sinticbolivia.facturacion.siat -DartifactId=siat -Dversion=1.1

Agregar la libreria como dependencia a su proyecto Java

Debe insertar el siguiente bloque dentro de su archivo pom.xml

Inicializar la Configuracion de Facturación



import net.sinticbolivia.facturacion.siat.classes.SiatConfig;

.....  


        SiatConfig config = new SiatConfig();
        config.ambiente         = SiatConfig.AMBIENTE_PRUEBAS;
        config.modalidad        = SiatConfig.MOD_COMPUTARIZADA_ENLINEA;
        config.nit                = 4863532011l;
        config.nombreSistema    = "MonoBusiness";
        config.codigoSistema    = "7251F009A4546SD6546";
        config.razonSocial        = "Sintic Bolivia";
        config.tokenDelegado    = "eyJ0eXAxxxxxxx";

Sincronización de Catalogos y Parametricas SIAT

protected static void testSync()
    {
        int sucursal     = 0;
        int puntoventa     = 0;
        SiatConfig config = getConfig();
        ServiceFacturacionCodigos service = new ServiceFacturacionCodigos();
        service.setConfig(config);
        RespuestaCuis cuis = service.cuis(sucursal, puntoventa);
        //RespuestaCufd cufd = service.cufd(0, 0, cuis);
        //logCufd(cufd, config);
        ServiceFacturacionSincronizacion serviceSync = new ServiceFacturacionSincronizacion();
        serviceSync.setConfig(config);
        serviceSync.setCuis(cuis);
        
        for(int i = 0; i < 50; i++)
        {
            serviceSync.sincronizarActividades(sucursal, puntoventa);
            serviceSync.sincronizarFechaHora(sucursal, puntoventa);
            serviceSync.sincronizarListaActividadesDocumentoSector(sucursal, puntoventa);
            serviceSync.sincronizarListaLeyendasFactura(sucursal, puntoventa);
            serviceSync.sincronizarListaMensajesServicios(sucursal, puntoventa);
            serviceSync.sincronizarListaProductosServicios(sucursal, puntoventa);
            serviceSync.sincronizarParametricaEventosSignificativos(sucursal, puntoventa);
            serviceSync.sincronizarParametricaMotivoAnulacion(sucursal, puntoventa);
            serviceSync.sincronizarParametricaPaisOrigen(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTipoDocumentoIdentidad(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTipoDocumentoSector(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTipoEmision(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTipoHabitacion(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTipoMetodoPago(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTipoMoneda(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTipoPuntoVenta(sucursal, puntoventa);
            serviceSync.sincronizarParametricaTiposFactura(sucursal, puntoventa);
            serviceSync.sincronizarParametricaUnidadMedida(sucursal, puntoventa);
        }
        
    }

Construcción de una Factura

A continuación se muestra un método estatico que contruye una factura y asigna datos de prueba.


public static SiatInvoice buildInvoice(int sucursal, int puntoventa, RespuestaCufd cufd, int documentoSector)
    {
        SiatConfig config = getConfig();
        SiatInvoice invoice = SiatFactory.buildInvoice(documentoSector, config.modalidad);
        InvoiceHeader header = (InvoiceHeader)invoice.getHeader();
        header.setCodigoCliente("C0001");
        header.setCodigoMetodoPago(1);
        header.setCodigoMoneda(1); //BOB
        header.setCodigoPuntoVenta(puntoventa);
        header.setCodigoSucursal(sucursal);
        header.setTipoDocumentoIdentidad(1); //CI
        header.setDireccion("Direccion X");
        header.setFechaEmision(new Date());
        header.setLeyenda("Leyenda");
        header.setMunicipio("La Paz");
        header.setNitEmisor(config.nit);
        header.setRazonSocialEmisor(config.razonSocial);
        header.setNombreRazonSocial("Perez");
        header.setNumeroDocumento("45654981");
        header.setNumeroFactura( SiatUtils.rand(1, 1000) );
        header.setTelefono("77739265");
        header.setTipoCambio(1d);
        header.setUsuario("cajero1");
        header.setCufd( cufd.getCodigo() );
        
        Double subTotal = 0.0;
        for(int i = 0; i < 2; i++)
        {
            InvoiceDetail detalle1         = (InvoiceDetail)invoice.createDetail();
            detalle1.setActividadEconomica( "620000" );
            detalle1.setCantidad(1d);
            detalle1.setCodigoProducto("P001");
            detalle1.setCodigoProductoSin(83131l);
            detalle1.setDescripcion("Producto de prueba 001");
            detalle1.setMontoDescuento( 0d );
            detalle1.setPrecioUnitario( 25.5 );
            detalle1.setSubTotal( detalle1.getPrecioUnitario() * detalle1.getCantidad() );
            detalle1.setUnidadMedida(58);
            if( documentoSector == InvoiceSectors.FACTURA_COMERCIAL_EXPORTACION )
            {
                InvoiceDetailComercialExportacion detalle = (InvoiceDetailComercialExportacion)detalle1;
                detalle.codigoNandina = "0909610000";
            }
            invoice.addDetail(detalle1);
            subTotal += detalle1.getSubTotal();
        }
        header.setMontoTotal(subTotal);
        header.setMontoTotalMoneda(subTotal);
        header.setMontoTotalSujetoIva(subTotal);
        
        SiatCufBuilder cufb = new SiatCufBuilder();
        cufb.documentoSector    = header.getCodigoDocumentoSector();
        cufb.fechaEmision        = header.getFechaEmision();
        cufb.modalidad            = config.modalidad;
        cufb.nitEmisor            = config.nit;
        cufb.numeroFactura        = header.getNumeroFactura();
        cufb.puntoventa            = header.getCodigoPuntoVenta();
        cufb.sucursal            = header.getCodigoSucursal();
        cufb.tipoEmision        = SiatInvoice.TIPO_EMISION_ONLINE;
        cufb.tipoFactura        = SiatInvoice.FACTURA_DERECHO_CREDITO_FISCAL;
        cufb.cufd                = cufd;
        if( documentoSector == InvoiceSectors.FACTURA_COMERCIAL_EXPORTACION )
        {
            
            InvoiceHeaderComercialExportacion exHeader = (InvoiceHeaderComercialExportacion)header;
            exHeader.setCodigoMoneda(2); //USD
            exHeader.tipoCambio = 6.86;
            exHeader.montoDetalle                    = exHeader.montoTotal;
            exHeader.totalGastosNacionalesFob        = exHeader.montoDetalle;
            exHeader.costosGastosInternacionales     = "[]";
            exHeader.costosGastosNacionales         = "[]";
            exHeader.direccionComprador                = "Av. Los Tajibos";
            exHeader.incoterm                        = "CIF";
            exHeader.incotermDetalle                = "CIF-WEBEX";
            exHeader.informacionAdicional            = "NINGUNA";
            exHeader.puertoDestino                    = "Arica";
            exHeader.lugarDestino                    = "Chile";
            exHeader.codigoPais                        = "100";
            exHeader.totalGastosInternacionales        = 0d;
            exHeader.montoTotalSujetoIva             = 0;
            exHeader.numeroDescripcionPaquetesBultos = "NINGUNA";
            exHeader.montoTotalMoneda                = exHeader.montoDetalle + exHeader.totalGastosInternacionales;
            exHeader.montoTotal                        = exHeader.montoTotalMoneda * exHeader.tipoCambio;
            cufb.tipoFactura                        = SiatInvoice.FACTURA_SIN_DERECHO_CREDITO_FISCAL;
        }
        
        header.setCuf( cufb.build() );
        
        
      return invoice;
}

Recepción de la Factura

protected static void testRecepcionFactura()
    {
        int sucursal        = 0;
        int puntoventa         = 0;
        SiatConfig config     = getConfig();
        ServiceFacturacionCodigos service = new ServiceFacturacionCodigos();
        service.setConfig(config);
        RespuestaCuis cuis = service.cuis(sucursal, puntoventa);
        RespuestaCufd cufd = service.cufd(sucursal, puntoventa, cuis);
        logCufd(cufd, config);
        
        try
        {
            ServiceFacturacion serviceFac = SiatFactory.obtenerServiceFacturacion(config, cuis, cufd);
            for(int i = 0; i < 1; i++)
            {
                SiatInvoice invoice = buildInvoice(sucursal, puntoventa, cufd, 
                    InvoiceSectors.FACTURA_COMPRA_VENTA
                    //InvoiceSectors.FACTURA_COMERCIAL_EXPORTACION
                );
                System.out.println(serviceFac.buildInvoiceXml(invoice));
                RespuestaRecepcion res = serviceFac.recepcionFactura(invoice, SiatInvoice.TIPO_EMISION_ONLINE);
                
                if( res.getCodigoEstado() == 908 )
                {
                    RespuestaRecepcion resEstado = serviceFac.verificarEstadoFactura(invoice, SiatInvoice.TIPO_EMISION_ONLINE);
                    serviceFac.anularFactura(invoice, 1, SiatInvoice.TIPO_EMISION_ONLINE);
                }
            }
            
        }
        catch(IOException e)
        {
            System.out.println(e.getMessage());
        } 
        catch (NoSuchAlgorithmException e) 
        {
            e.printStackTrace();
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
Sintic Bolivia Contacto whatsapp