Comunidad Cobol - www.cobol.com.ar    

.
    
    
    
    

.


Registrarse

.

?


Facturación Electrónica AFIP

Para los que están investigando sobre la nueva factura electrónica de la AFIP Argentina, unos colegas han desarrollado un control ActiveX que permite emitir una factura electrónica desde Cobol  sin lidiar con WebServices, XML, criptografía, archivos temporales, formatos de registro, clases NET y demás. 

EJEMPLO MICROFOCUS COBOL - NETEXPRESS 3.X 4.X 5.X
AFIP_Demo_Carga_Datos.PNG (15901 bytes)
Descargar AFIP-Run.cbl 
$set ooctrl(+p)                                                   
       identification division.                                         
       program-id.  "AFIP_Run".                                         
                                                                        
      *> Factura Electronica AFIP                                       
      *> Instrucciones antes de ejecutar, leer Readme.txt               
      *> Registrar el ActiveX                                           
      *> Operar con un Certificado AFIP TEST (Para demostracion)        
                                                                        
      *>----------------------------------------------------------------
      *> Autores del ACTIVEX:                                           
      *> http://sites.google.com/site/facturaelectronicax/              
      *> Sergio Camusso - SergioCamusso@gmail.com                       
      *>                                                                
      *> Adaptacion a MICROFOCUS COBOL:                                 
      *> NetExpress 5.1                                                 
      *> http://www.cobol.com.ar (Factura Electronica AFIP)             
      *> Agustin Zabala - Azabala@cobol.com.ar                          
      *>----------------------------------------------------------------
                                                                        
      *> Como usarlo al Activex                                         
      *> http://sites.google.com/site/facturaelectronicax/
                                                                        
       environment division.                                            
       class-control.                                                   
                                                                        
           FACTURA is class "$OLE$SCFE9DEMO.FACTURA".                   
                                                                        
       configuration section.                                           
       special-names.                                                   
           decimal-point is comma,                                      
           call-convention 8 is llnk.                                   
                                                                        
       input-output section.                                            
       file-control.                                                    
                                                                        
       data division.                                                   
       working-storage section.                                         
       1 w-variables-locales.                                           
         3 FE                          object reference.                
         3 wl-NumeroEntero             PIC  S9(9) COMP.                 
         3 wl-NumeroEntero2            PIC  S9(9) COMP.                 
                                                                        
      *-----------------------------------------------------------------
      *>   Variables Navegan EXTERNAL entre el Programa Cobol           
      *>   que llama a este proceso, y este proceso.                    
      *>   Devuelve el Status Error del llamado al Activex y            
      *>   devuelve el Resultado y el Cogigo de Error de AFIP           
                                                                        
           copy "we-FacturaElectronica.wrk".                            
                                                                        
      *-----------------------------------------------------------------
                                                                        
       PROCEDURE DIVISION.                                              
       Main-Process SECTION.                                            
       000.                                                             
           perform init                                                 
           perform procesar                                             
           goback                                                       
           .                                                            
                                                                        
       Init section.                                                    
       001.                                                             
           initialize w-variables-locales                               
                      we-AFIP-error-Invoke                              
                      we-AFIP-Devuelve                                  
           continue                                                     
           .                                                            
                                                                        
       Procesar Section.                                                
       002.                                                             
      *    -------------------------------------------------------------
      *    Capturar el Object Reference FE                              
           move 'new' to we-AFIP-Invoke-accion                          
           invoke  FACTURA "new"       returning FE                     
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Iniciar el proceso                                           
      *    Llamar al método "iniciar" indicando los 3 parámetros        
           move 'iniciar' to we-AFIP-Invoke-accion                      
           invoke  FE "iniciar"        using                            
                                       we-AFIP-modo                     
                                       we-AFIP-cuit-empresa             
                                       we-AFIP-ruta-certificado         
           perform Analizar-Error                                       
                                                                        
                                                                        
      *    -------------------------------------------------------------
      *    Ticket                                                       
      *    LLamar al método "ObtenerTicketAcceso" o "LoginCMS".         
      *    Si este método se ejecuta correctamente estamos autorizados  
      *    a emitir un lote de facturas o cualquier otro método         
      *    de los WebServices.                                          
           move 'ticket' to we-AFIP-Invoke-accion                       
           invoke  FE "ObtenerTicketAcceso"                             
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Puntero                                                      
      *    Configurar la propiedad "indice" a 0                         
      *    (para cargar los datos de la primera factura)                
           move 'Indice' to we-AFIP-Invoke-accion                       
           move 0 to wl-numeroEntero                                    
           invoke  FE "setIndice"      using wl-numeroEntero            
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Cantidad de Cabecera                                         
      *    Configurar la propiedad "FECabeceraCantReg" con la cantidad  
      *    de facturas a registrar (pueden ser varias en un solo lote). 
           move 'CantReg(lote)' to we-AFIP-Invoke-accion                
           move 1 to wl-numeroEntero                                    
           invoke  FE "setFECabeceraCantReg"                            
                                       using  wl-numeroEntero           
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Procesar una Factura hacia la AFIP                           
           perform Una-Factura                                          
                                                                        
      *    -------------------------------------------------------------
      *    Finalizar el Objeto Reference                                
           move 'CantReg(lote)' to we-AFIP-Invoke-accion                
           invoke  FE "Finalize" returning FE                           
           perform Analizar-Error                                       
                                                                        
           continue                                                     
           .                                                            
                                                                        
                                                                        
       Una-Factura Section.                                             
       002-1.                                                           
      *    -------------------------------------------------------------
      *    Prestadora del Servicio                                      
           move 'Prestadora' to we-AFIP-Invoke-accion                   
           move 1 to wl-numeroEntero                                    
           invoke  FE "setFECabeceraPresta_serv"                        
                                       using wl-numeroEntero            
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Vencimiento de Pago                                          
           move 'Fecha Pago' to we-AFIP-Invoke-accion                   
           invoke  FE "setFEDetalleFecha_vence_pago"                    
                                       using we-AFIP-fecha-vence-pago   
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Servicio desde                                               
           move 'Fecha Serv Desde' to we-AFIP-Invoke-accion             
           invoke  FE "setFEDetalleFecha_serv_desde"                    
                                       using we-AFIP-fecha-serv-desde   
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Servicio hasta                                               
           move 'Fecha Serv Hasta' to we-AFIP-Invoke-accion             
           invoke  FE "setFEDetalleFecha_serv_hasta"                    
                                       using we-AFIP-fecha-serv-hasta   
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Importe Neto sujeto a Impuesto                               
           move 'Neto' to we-AFIP-Invoke-accion                         
           invoke  FE "setFEDetalleImp_neto"                            
                                       using we-AFIP-importe-neto       
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Importe Total de la factura                                  
           move 'Total' to we-AFIP-Invoke-accion                        
           invoke  FE "setFEDetalleImp_total"                           
                                       using we-AFIP-importe-total      
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Fecha del Comprobante                                        
           move 'Fecha del Comprobante' to we-AFIP-Invoke-accion        
           invoke  FE "setFEDetalleFecha_cbte"                          
                                       using we-AFIP-fecha-comprobante  
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Cuit del Cliente                                             
           move 'Cuit Cliente' to we-AFIP-Invoke-accion                 
           invoke  FE "setFEDetalleNro_doc"                             
                                       using we-AFIP-cuit-cliente       
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Tipo de Documento segun AFIP                                 
           move 'Tipo de Doc.' to we-AFIP-Invoke-accion                 
           invoke  FE "setFEDetalleTipo_doc"                            
                                       using we-AFIP-tipo-comprobante   
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Registrarlo                                                  
      *    LLamar al metodo "registrar" o "FEAuthRequest"               
      *    indicando como parámetro el punto de venta y                 
      *    el tipo de comprobante(s)                                    
           move 'Punto Vta. y Cpbte' to we-AFIP-Invoke-accion           
           invoke  FE "registrar"      using we-AFIP-punto-de-venta     
                                             we-AFIP-tipo-comprobante   
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    Retorna el resultado                                         
      *    Leer las siguiente propiedades para recuperar                
      *    los datos de la factura (ver documentación AFIP en           
      *    http://wswhomo.afip.gov.ar/wsfedocs/WSFE-GuiaAdicionalParaElP
      *    "FERespuestaDetalleCae"                                      
      *    "FERespuestaDetalleMotivo"                                   
      *    "FERespuestaReproceso"                                       
      *    "FERespuestaDetalleCbt_desde"                                
                                                                        
           move 'Detalle CAE' to we-AFIP-Invoke-accion                  
           invoke  FE "getFERespuestaDetalleCae"                        
                                       returning we-AFIP-resultado      
           perform Analizar-Error                                       
                                                                        
           move 'Detalle Cbt-Desde' to we-AFIP-Invoke-accion            
           invoke  FE "getFERespuestaDetalleCbt_desde"                  
                                       returning we-AFIP-numero         
                                                                        
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
      *    El indice                                                    
      *    Configurar la propiedad "indice" a 1 para cargar los datos   
      *    de las siguientes facturas si la hubiere.                    
           move 'Indice +1' to we-AFIP-Invoke-accion                    
           move 1 to wl-numeroEntero                                    
           invoke  FE "setIndice"                                       
                                       using wl-numeroEntero            
           perform Analizar-Error                                       
                                                                        
      *    -------------------------------------------------------------
           continue                                                     
           .                                                            
                                                                        
                                                                        
       Analizar-Error Section.                                          
       003.                                                             
      *    En cualquier momento puede consultar las propiedades         
      *    para rastrear el origen del error, al invoke ...             
           invoke FE "getUltimoNumeroError"                             
                     returning we-AFIP-Invoke-error-cgo                 
           invoke FE "getUltimoMensajeError"                            
                     returning we-AFIP-Invoke-error-txt                 
                                                                        
           if we-AFIP-Invoke-error-cgo not = zero                       
      *       Ha encontrado un error de Invoke                          
      *       Salir del programa                                        
              exit program                                              
           end-if                                                       
           continue                                                     
           .                                                            
                                                                        
Descargar el Activex:
Descargar Demostración formato zip
  • Requiere tener instalado el NetExpress version 3.x o superior
  • Decargar Factura_Electronica_AFIP.ZIP 
  • Incluye Factura_Electronica_AFIP.APP, AFIP_Demo.cbl y AFIP_Run.cbl, Readme.txt, etc..
  • Microfocus Cobol Net-Express 5.x
  • Publicado el 10 de Febrero de 2009


©1996-2009 Arq. Agustín Zabala 
Todos los derechos reservados.
Buenos Aires - Argentina

Free counter and web stats