Librería de Facturación Electrónica ARCA

Interfaz simple y eficiente para la facturación electrónica y generación del CAE mediante los Web Services de ARCA, desarrollada en Visual FoxPro 9.

Comenzar ahora

Características Principales

Compatible con Visual FoxPro 9

Integración nativa con aplicaciones desarrolladas en Visual FoxPro 9, sin necesidad de middleware adicional.

Generación de CAE

Obtén el Código de Autorización Electrónica (CAE) directamente desde los servidores de ARCA de manera rápida y segura.

Facturación por Lotes

Procesa múltiples facturas en una sola operación, optimizando el rendimiento y reduciendo los tiempos de respuesta.

Gestión de Certificados

Manejo simplificado de certificados digitales para autenticación segura con los Web Services de ARCA.

Diagnóstico de Errores

Sistema integrado de diagnóstico y solución de problemas comunes en la facturación electrónica.

Expandible

Arquitectura diseñada para incorporar nuevas funcionalidades y métodos de forma sencilla.

Comenzando con FeARCA Librería

1

Descarga la librería

Descarga la última versión de la librería desde nuestra página de descargas.

Descargar
2

Descargar el .app

Descomprime el archivo FeARCALib_v0.99b.rar y copia el archivo FeARCALib.app en el directorio de tu proyecto.

FeARCALib.app
3

Verifica la instalación

Comprueba que la instalación ha sido exitosa mediante el siguiente código en Visual FoxPro:

oWSFEV1 = NEWOBJECT("FeArcaLib","FeArcaLib.APP")
IF TYPE("oWSFEV1") = "O"
  ? "Instalación exitosa"
ELSE
  ? "Error en la instalación"
ENDIF
1

Descarga e instala OpenSSL

Descarga e instala OpenSSL desde slproweb.com

2

Configuración de variables de entorno

Configura la variable de entorno para OpenSSL:

set OPENSSL_CONF=[RUTA AL DIRECTORIO BIN DE OPENSSL]\openssl.cfg
3

Generar archivo privada

Genera el archivo de clave privada:

openssl genrsa -out privada 2048
4

Copia de archivo privada

Copia el archivo "privada" como "clave.key" (no renombrar, hacer una copia).

5

Generar archivo de solicitud CSR

Genera el archivo CSR para solicitar el certificado a ARCA:

openssl req -new -key privada -subj "/C=AR/O=subj_o/CN=subj_cn/serialNumber=CUIT subj_cuit" -out pedido

Reemplaza los siguientes valores:

  • subj_o: Nombre de la Empresa que emitirá las facturas
  • subj_cn: Un alias cualquiera
  • subj_cuit: CUIT de la Empresa que emitirá las facturas
1

Incorporar la librería en tu proyecto

Crea una instancia de la librería en tu proyecto de Visual FoxPro:

oWSFEV1 = NEWOBJECT("FeARCALib","FeARCALib.app")
2

Configurar CUIT, Token y Ambiente

Configura el CUIT del vendedor, el Token del programador y el ambiente del Web Services:

oWSFEV1.CUIT = 20228065464 && CUIT del vendedor
oWSFEV1.UUID = 'ef43e08c-c181-4c91-b6b4-2ce4179d816f' &&Identificacion del programador.
oWSFEV1.Ambiente = 'HOMOLOGACION' && 'PRODUCCION'
3

Consumir servicios

Realiza el login utilizando los certificados generados:

MonId = "DOL"
Fecha = DATE()-1
IF NOT oWSFEV1.Cotizacion(MonId, Fecha) THEN
   MESSAGEBOX(oWSFEV1.ErrorDesc)
ELSE
   lnCotizacion = oWSFEV1.MonCotiz &&Devolucion el ultimo comprobante
   MESSAGEBOX('Cotización de Moneda: '+TRANSFORM(MonId)+ CHR(13)+;
   'a la Fecha: '+TRANSFORM(Fecha)+ CHR(13)+;
   ' ' +TRANSFORM(lnCotizacion) ,
   64,'Resultado del estado de Servidores de ARCA')
ENDIF

Para producción, solo basta con cambiar:
oWSFEV1.Ambiente = 'PRODUCCION'

1

Generar certificado de producción

Sigue los pasos para generar un certificado de producción según lo indicado en la sección "Generación de Certificados".

2

Administrador de Certificados Digitales

Agrega en la web de ARCA, en el Administrador de Relaciones de Clave Fiscal, el "Administrador de Certificados Digitales".

3

Subir certificado

Sube el archivo "pedido" al Administrador de Certificados Digitales y descarga el certificado. El archivo "privada" generado con OpenSSL será la clave.key del proyecto.

4

Agregar Web Service

Agrega en el Administrador de Relaciones el Web Service de factura electrónica.

5

Configurar punto de venta

Entra al módulo "Regímenes de Facturación y Registración" y agrega un punto de venta de tipo Web Services.

Documentación de la Libreria FEARCA_lib

Ver documentación

Ejemplos de uso

Emisión de Facturas Electrónicas

A continuación se muestra el proceso básico para emitir una factura electrónica:

* Crear instancia de la librería
oWSFEV1 = NEWOBJECT("FeArcaLib","FeArcaLib.APP")
oWSFEV1.CUIT = 20228065464 && CUIT del vendedor

* Propiedades FeArcaLib
oWSFEV1.UUID = 'ef43e08c-c181-4c91-b6b4-2ce4179d816f' &&Identificacion del programador.
oWSFEV1.Ambiente = 'HOMOLOGACION' && 'PRODUCCION'

* Recuperar último número de comprobante nPtoVta = 1 && Punto de venta
nTipoComp = 1 && Tipo de comprobante (1 = Factura A)
nUltimoNumero = 0

IF oWSFEV1.RecuperaLastCMP(nPtoVta, nTipoComp, @nUltimoNumero)
  nUltimoNumero = nUltimoNumero + 1 &&Incrementar número de comprobante
  oWSFEV1.RESET() &&Resetear PARA nueva factura

  * Agregar factura (ejemplo factura A)
  * Parámetros: Concepto, TipoDoc, NroDoc, TipoComp, PtoVta, NroComp, FechaComp,
  * ImporteNeto, ImporteTotal, Importe_Exento, FechaVencimiento, FechaServDesde, FechaServHasta, Moneda, Cotizacion,
  * CanMisMonEx, CondicionDeIva
  oWSFEV1.AgregaFactura(1, 80, 30707219072, 1, nPtoVta, nUltimoNumero, DATE(),;
  1000, 1210, 0, "", "", "", "PES", 1,;
  .F., 1)

  * Agregar IVA (alícuota 21%)
  * Parámetros: ID (5 = 21%), BaseImp, Importe
  oWSFEV1.AgregaIVA(5, 1000, 210)

  * Autorizar la factura
  IF oWSFEV1.Autorizar(nPtoVta, nTipoComp)
    * Obtener el CAE Y fecha de vencimiento
    oWSFEV1.AutorizarRespuesta(0, @cCAE, @cVencimiento, @cResultado, @lReproceso)

    IF cResultado = "A"
      ? "Factura autorizada con éxito!"
      ? "CAE: " + cCAE
      ? "Vencimiento: " + cVencimiento
    ELSE
      ? "Error en autorización: " + oWSFEV1.AutorizarRespuestaObs(0)
    ENDIF
  ELSE
    ? "Error: " + oWSFEV1.ErrorDesc
  ENDIF
ELSE
  ? "Error recuperando último número: " + oWSFEV1.ErrorDesc
ENDIF

Consultar Comprobantes

A continuación se muestra el proceso para consultar comprobantes:

oWSFEv1= NEWOBJECT("FeARCALib", "FeArcaLib.APP")
oWSFEv1.CUIT= 20228065464
oWSFEv1.UUID='ef43e08c-c181-4c91-b6b4-2ce4179d816f'
oWSFEv1.Ambiente = 'HOMOLOGACION' && 'PRODUCCION'

nTcomp = 1
Ptovta = 115
nNrocomp = 1

cCae = SPACE(14)
cVto = SPACE(10)

IF NOT oWSFEv1.cmpConsultar(nTcomp, Ptovta, nNrocomp, @cCae, @cVto) THEN
  MESSAGEBOX(oWSFEv1.ErrorDesc)
ELSE
  loData = oWSFEv1.oResultado.data
  cConcepto = loData.Get("Concepto")
  cConceptoE= oWSFEv1.tipoconcepto(cConcepto)
  cEmitida = loData.Get("FchProceso")
  cDoc = loData.Get("DocNro")
  cFecha = loData.Get("CbteFch")
  cImporte = loData.Get("ImpTotal")
  cMoneda = loData.Get("MonId")
  cMonedaCotiz= loData.Get("MonCotiz")
  cResultado = loData.Get("Resultado")
  cCae = loData.Get("CodAutorizacion")
  cVtoCae = loData.Get("FchVto")

TEXT TO lcMensaje TEXTMERGE NOSHOW PRETEXT 7
    Emitida: <<cEmitida>>
    Concepto: <<cConcepto>>
    Concepto - Detalle: <<cConceptoE>>
    Doc/CUIT: <<cDoc>>
    Fecha Comp.: <<cFecha>>
    Importe: <<cImporte>>
    Moneda: <<cMoneda>>
    Cotización: <<cMonedaCotiz>>
    Resultado: <<cResultado>>
    CAE: <<cCae>>
    Vto.: <<cVtoCae>>
ENDTEXT

  MESSAGEBOX(lcMensaje, 0+64,"Resultado")
ENDIF

Cotización en Moneda Extranjera

La cotización en moneda extranjera permite obtener la cotización de una moneda extranjera en pesos:

* Crear instancia de la librería
oWSFEV1 = NEWOBJECT("FeArcaLib","FeArcaLib.APP")
oWSFEV1.CUIT = 20228065464 && CUIT del vendedor

* Propiedades FeArcaLib
oWSFEV1.UUID = 'ef43e08c-c181-4c91-b6b4-2ce4179d816f' &&Identificacion del programador.
oWSFEV1.Ambiente = 'HOMOLOGACION' && 'PRODUCCION'

MonId = "DOL"
Fecha = DATE()-1

IF NOT oWSFEV1.Cotizacion(MonId, Fecha) THEN
  MESSAGEBOX(oWSFEV1.ErrorDesc)
ELSE
  lnCotizacion = oWSFEV1.MonCotiz
  MESSAGEBOX('Cotización de Moneda: '+TRANSFORM(MonId)+ CHR(13)+;
  'a la Fecha: '+TRANSFORM(Fecha)+ CHR(13)+;
  ' ' +TRANSFORM(lnCotizacion) ,;
  64,'Resultado del estado de Servidores de ARCA')
ENDIF