Biblioteca Clarion para integración con servicios web de AFIP (Administración Federal de Ingresos Públicos) de Argentina.
Esta biblioteca proporciona una clase completa en Clarion para la integración con los servicios web de AFIP, incluyendo:
- Facturación Electrónica (WSFE)
- Factura Electrónica de Crédito (WSFECred)
- Consulta de Padrones (A5, A13)
- Autenticación y gestión de tokens (WSAA)
- ✅ Autenticación automática con WSAA usando certificados digitales
- ✅ Gestión inteligente de tokens con caché y renovación automática
- ✅ Soporte para ambientes de Producción y Homologación
- ✅ Comunicación SOAP con servicios AFIP
- ✅ Generación y parseo de XML automático
- ✅ Manejo robusto de errores
- ✅ Integración con OpenSSL para firma de certificados
AJEImpositivoApiClass (extends AJEBaseApiClass)
│
├── Autenticación
│ └── LoginTicket() - Gestión de tokens y firma con OpenSSL
│
├── Consultas
│ ├── ConsultarA5() - Datos de contribuyentes
│ ├── ConsultarUltimoNumero() - Último comprobante autorizado
│ └── ConsultarMontoObligadoRecepcion() - Validación FCE
│
├── Facturación Electrónica
│ └── SolicitarCAE() - Solicitud de CAE para facturas
│
└── Gestión XML
├── CrearXML() - Generación de SOAP requests
├── ProcesarRespuesta() - Parseo de respuestas
└── ProcesarErrores() - Manejo de errores SOAP
| Archivo | Descripción |
|---|---|
AJEImpositivoAPIClass.clw |
Implementación de la clase (métodos) |
AJEImpositivoAPIClass.INC |
Definiciones de tipos, grupos y queues |
AJEImpositivoAPIClass.DEF |
Estructura del archivo VTokenSignImpositivo |
CLAUDE.md |
Guía técnica para desarrollo con Claude Code |
ImpositivoAPI AJEImpositivoApiClass
CODE
ImpositivoAPI.Construct()
ImpositivoAPI.Modo = True ! Production (False = Homologacion)
ImpositivoAPI.PathCertificado = 'C:\Certificados\'
! Obtener Token y Sign
ImpositivoAPI.LoginTicket('FE', CodigoConfiguracion)
IF ImpositivoAPI.ErrorG.ErrorSOAP
Message('Error: ' & ImpositivoAPI.ErrorG.ErrorSOAPMessage)
ENDCUIT STRING(11)
CODE
CUIT = '20123456789'
ImpositivoAPI.ConsultarA5(CUIT)
! Acceder a datos
Message('Razón Social: ' & ImpositivoAPI.A5DatosGeneralesG.razonSocial)
Message('Domicilio: ' & ImpositivoAPI.A5DomicilioFiscalG.direccion)CODE
! Configurar datos de factura
ImpositivoAPI.FacturaElectronicaG.FeCAEReqG.FeCabReqG.CantidadRegistros = 1
ImpositivoAPI.FacturaElectronicaG.FeCAEReqG.FeCabReqG.PuntoVenta = 1
ImpositivoAPI.FacturaElectronicaG.FeCAEReqG.FeCabReqG.ComprobanteTipo = 6
! Configurar detalle del comprobante
ImpositivoAPI.FacturaElectronicaG.FeCAEReqG.FeDetReqG.FECAEDetRequestG.Concepto = 1
ImpositivoAPI.FacturaElectronicaG.FeCAEReqG.FeDetReqG.FECAEDetRequestG.DocumentoTipo = 80
ImpositivoAPI.FacturaElectronicaG.FeCAEReqG.FeDetReqG.FECAEDetRequestG.Documento = '20123456789'
! ... más campos ...
! Agregar alícuotas de IVA
CLEAR(ImpositivoAPI.AlicuotasIVAQ)
ImpositivoAPI.AlicuotasIVAQ.Id = 5 ! IVA 21%
ImpositivoAPI.AlicuotasIVAQ.BaseImp = 1000.00
ImpositivoAPI.AlicuotasIVAQ.Importe = 210.00
ADD(ImpositivoAPI.AlicuotasIVAQ)
! Solicitar CAE
ImpositivoAPI.SolicitarCAE()
! Verificar resultado
IF ImpositivoAPI.FacturaElectronicaResponseG.FECAESolicitarResultG.FeCabRespG.Resultado = 'A'
Message('CAE: ' & ImpositivoAPI.FacturaElectronicaResponseG.FECAESolicitarResultG.FeDetRespG.FEDetResponseG.CAE)
ELSE
Message('Error en solicitud de CAE')
END- Clarion 6.0 o superior
- OpenSSL (openssl.exe debe estar accesible en el PATH)
- Bibliotecas requeridas:
StringTheoryxFilesjFilesOddJobUltimateDebugAJEBaseApiClass
Necesitas obtener certificados digitales de AFIP:
- Generar clave privada (.key)
- Crear CSR (.csr)
- Solicitar certificado en AFIP
- Descargar certificado (.crt)
Más información: Guía de certificados AFIP
La clase soporta dos ambientes:
-
Producción (
Modo = True)- URLs: wsaa.afip.gov.ar, servicios1.afip.gov.ar, etc.
-
Homologación (
Modo = False)- URLs: wsaahomo.afip.gov.ar, wswhomo.afip.gov.ar, etc.
Los tokens se almacenan en el archivo VTokenSignImpositivo.TPS con:
- Token y Sign (credenciales)
- Fecha y hora de expiración
- Configuración de certificados
- CUIT del contribuyente
Este proyecto sigue convenciones específicas de Clarion. Ver CLAUDE.md para detalles completos:
- Variables globales:
GLO:prefix - Variables locales:
LOC:prefix - Parámetros:
pprefix (ejemplo:pData,pCuit) - Groups TYPE: sufijo
GT - Queues TYPE: sufijo
QT - StringTheory variables: prefijo
s(ejemplo:sResponse)
Este proyecto utiliza Pull Requests con las siguientes reglas:
- ✅ 2 aprobaciones requeridas antes de merge
- ✅ Historial lineal (solo rebase merge)
- ✅ No push directo a main (branch protegida)
Ver WORKFLOW.md para el proceso completo de contribución.
-
Crear rama desde
main:git checkout -b feature/nueva-funcionalidad
-
Realizar cambios siguiendo las convenciones
-
Commit con mensaje descriptivo:
git commit -m "Descripción del cambio" -
Push y crear PR:
git push -u origin feature/nueva-funcionalidad gh pr create
-
Esperar 2 aprobaciones y hacer merge
- CLAUDE.md - Guía técnica completa para desarrollo
- WORKFLOW.md - Proceso de Git y Pull Requests
- Documentación AFIP - Web Services AFIP
Para reportar bugs o solicitar features:
- Verificar que no exista un issue similar
- Crear un nuevo issue con:
- Descripción clara del problema
- Pasos para reproducir
- Versión de Clarion
- Ambiente (Producción/Homologación)
Copyright © 2025 DeveloperTeam Software Solutions Todos los derechos reservados.
Alejandro J. Elías Director - DeveloperTeam Software Solutions
- Website: www.developerteam.com.ar
- Email: aje.elias@gmail.com
- AFIP por la documentación de web services
- Comunidad Clarion por las bibliotecas de soporte
Nota: Esta biblioteca es para uso con servicios AFIP de Argentina. Se requiere estar registrado en AFIP y tener certificados digitales válidos para utilizar los servicios.