Implementacion entorno web /java-windows

85 views
Skip to first unread message

Megadata Sistemas

unread,
Nov 7, 2022, 9:16:02 AM11/7/22
to pyaf...@googlegroups.com
Buen día alguien pudo implementar mercado interno en entorno web con java en Windows usando las dll de pyafipws ? O alguna otra recomendacion para este entorno?

Muchas gracias

Marcelo Javier Perales

unread,
Apr 11, 2025, 1:16:11 AM4/11/25
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola. Acá te paso la metodología. Yo no lo probé, porque no uso Java.

/* Ejemplo de Uso de Interfaz PyAfipWs para JAVA (componentes DLL en Windows)
   con Web Service Autenticación / Factura Electrónica AFIP (mercado interno)
   2014 (C) Mariano Reingart <rein...@gmail.com> Licencia: GPLv3
   
   Requerimientos:
    * wsaa.py y wsfev1.py registrados (último instalador PyAfipWs homologación)
   
   Dependencias:
    * JACOB - Java COM Bridge: http://sourceforge.net/projects/jacob-project/
   
   IMPORTANTE:
    * Renombrar jacob-1.18-M2-x64.dll o jacob-1.18-M2-x86.dll -> jacob.dll
    * Mover jacob.dll al directorio windows\system o junto a esta clase
    * Agregar jacob.jar al CLASSPATH, ej SET CLASSPATH=Z:\ruta\jacob.jar;.
   
   Documentacion:
    http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs
    http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs
*/

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.LibraryLoader;
import com.jacob.com.Variant;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FacturaElectronica {

    public static void main(String[] args) {
        try {

            LibraryLoader.loadJacobLibrary();
           
            /* Crear objeto WSAA: Web Service de Autenticación y Autorización */
            ActiveXComponent wsaa = new ActiveXComponent("WSAA");
           
            System.out.println(Dispatch.get(wsaa, "InstallDir").toString() +
                               Dispatch.get(wsaa, "Version").toString()
                              );
                       
            /* Solicitar Ticket de Acceso a AFIP (cambiar URL producción) */
            String wsdl = "https://wsaahomo.afip.gov.ar/ws/services/LoginCms";
            String userdir = System.getProperty("user.dir");
            Dispatch.call(wsaa, "Autenticar",
                                new Variant("wsfe"),
                                new Variant(userdir + "/reingart.crt"),
                                new Variant(userdir + "/reingart.key"),
                                new Variant(wsdl));
            String excepcion =  Dispatch.get(wsaa, "Excepcion").toString();
            System.out.println("Excepcion: " + excepcion);
            String token = Dispatch.get(wsaa, "Token").toString();
            String sign = Dispatch.get(wsaa, "Sign").toString();
            System.out.println("Token: " + token +  "Sign: " + sign);
           
            /* Instanciar WSFEv1: WebService de Factura Electrónica version 1 */

            ActiveXComponent wsfev1 = new ActiveXComponent("WSFEv1");

            /* Establecer parametros de uso: */
            Dispatch.put(wsfev1, "Cuit", new Variant("20267565393"));
            Dispatch.put(wsfev1, "Token", new Variant(token));
            Dispatch.put(wsfev1, "Sign", new Variant(sign));

            /* Conectar al websrvice (cambiar URL para producción) */
            wsdl = "https://wswhomo.afip.gov.ar/wsfev1/service.asmx?WSDL";
            Dispatch.call(wsfev1, "Conectar",
                                  new Variant(""),
                                  new Variant(wsdl));

            /* Consultar último comprobante autorizado en AFIP */
            String tipo_cbte = "1";
            String pto_vta = "1";
            Variant ult = Dispatch.call(wsfev1, "CompUltimoAutorizado",
                                                new Variant(tipo_cbte),
                                                new Variant(pto_vta));
            System.out.println("Ultimo comprobante: " + ult.toString());
            excepcion =  Dispatch.get(wsfev1, "Excepcion").toString();
            System.out.println("Excepcion: " + excepcion);

            /* CAE */            
            String fecha = new SimpleDateFormat("yyyyMMdd").format(new Date());
            String concepto = "1";
            String tipo_doc = "80", nro_doc = "33693450239";
            int cbte_nro = Integer.parseInt(ult.toString()) + 1,
                cbt_desde = cbte_nro,
                cbt_hasta = cbte_nro;
            String imp_total = "124.00";
            String imp_tot_conc = "2.00";
            String imp_neto = "100.00";
            String imp_iva = "21.00", imp_trib = "1.00", imp_op_ex = "0.00";
            String fecha_cbte = fecha, fecha_venc_pago = "";
            /* Fechas período del servicio facturado (solo si concepto> 1) */
            String fecha_serv_desde = "", fecha_serv_hasta = "";
            String moneda_id = "PES", moneda_ctz = "1.000";

            Variant ok = Dispatch.call(wsfev1, "CrearFactura",
                new Variant(concepto), new Variant(tipo_doc),
                new Variant(nro_doc), new Variant(tipo_cbte),
                new Variant(pto_vta),
                new Variant(cbt_desde), new Variant(cbt_hasta),
                new Variant(imp_total), new Variant(imp_tot_conc),
                new Variant(imp_neto), new Variant(imp_iva),
                new Variant(imp_trib), new Variant(imp_op_ex),
                new Variant(fecha_cbte), new Variant(fecha_venc_pago),
                new Variant(fecha_serv_desde), new Variant(fecha_serv_hasta),
                new Variant(moneda_id), new Variant(moneda_ctz));
           
            /* Agrego los comprobantes asociados: */
            if (false) { /* solo nc/nd */
                Variant cbte_asoc_tipo = new Variant("19"),
                        cbte_asoc_pto_vta = new Variant("2"),
                        cbte_asoc_nro = new Variant("1234");
                Dispatch.call(wsfev1, "AgregarCmpAsoc",
                              cbte_asoc_tipo, cbte_asoc_pto_vta, cbte_asoc_nro);
            }
               
            /* Agrego impuestos varios */
            Variant tributo_id = new Variant(4),
                    tributo_desc = new Variant("Impuestos internos"),
                    tributo_base_imp = new Variant("100.00"),
                    tributo_alic = new Variant("1.00"),
                    tributo_importe = new Variant("1.00");
            Dispatch.call(wsfev1, "AgregarTributo",
                          tributo_id, tributo_desc, tributo_base_imp,
                          tributo_alic, tributo_importe);

            /* Agrego tasas de IVA */
            Variant iva_id = new Variant(5), /* 21% */
                    iva_base_imp = new Variant("100.00"),
                    iva_importe = new Variant("21.00");
            Dispatch.call(wsfev1, "AgregarIva",
                          iva_id, iva_base_imp, iva_importe);
           
            /* Habilito reprocesamiento automático (predeterminado): */
            Dispatch.put(wsfev1, "Reprocesar", new Variant(true));

            /* Solicito CAE (llamando al webservice de AFIP): */
            Variant cae = Dispatch.call(wsfev1, "CAESolicitar");

            /* Mostrar mensajes XML enviados y recibidos (depuración) */            
            System.out.println("XmlRequest: " +
                               Dispatch.get(wsfev1, "XmlRequest").toString());
            System.out.println("XmlResponse: " +
                               Dispatch.get(wsfev1, "XmlResponse").toString());

            excepcion =  Dispatch.get(wsfev1, "Excepcion").toString();
            System.out.println("Excepcion: " + excepcion);

            String errmsg =  Dispatch.get(wsfev1, "ErrMsg").toString();
            System.out.println("ErrMsg: " + errmsg);
            String obs =  Dispatch.get(wsfev1, "Obs").toString();
            System.out.println("Obs: " + obs);
           
            /* datos devueltos */
            System.out.println("CAE: " + cae.toString());
            String resultado = Dispatch.get(wsfev1, "Resultado").toString();
            System.out.println("Resultado: " + resultado);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Reply all
Reply to author
Forward
0 new messages