| 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 |
 |
| 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
|