Beruflich Dokumente
Kultur Dokumente
EL WSFEv1 es un nuevo web service de factura electrónica que AFIP, como los otros web services la
interface WSAFIPFE replica todos sus métodos y propiedades incluyendo una planilla de cálculo de test
para poder experimentar.
o El web service permite obtener CAE en forma similar al WSFE y CAE anticipado
(CAEA). Además incluye muchos más datos a informar, entre ellos: alícuotas, comprobantes asociados,
pero no incluye el detalle de una factura (items).
o No usa el argumento "identificador", el reproceso se administra de otra forma.
o Incluye métodos para recuperar todos los datos de un comprobante ya autorizado y también para
las listas de tipo de datos (monedas, tipo de comprobantes, etc).
o Se incluye una planilla de test interactiva WSFEv1Test para experimentar.
Si ya implementó alguno de los web service de factura electrónica de AFIP (WSFE, WSFEX o WSBFE) antes de
comenzar con este servicio debe tener en cuenta que su funcionamiento general es similar a los anteriores pero no
usa el argumento "identificador" ni implementa el "reproceso" y presenta otras particularidades, por lo que se
recomienda leer toda esta documentación desde cero.
o Para obtener CAE en forma similar a los otros web service de factura electrónica.
o Para solicitar CAE anticipado y luego informar en que comprobantes fue utilizado o bien que el CAE
anticipado no tuvo movimientos (estos métodos aunque implementados en la interface no están
operativos en el servidor de AFIP).
La interface WSAFIPFE replica todos los métodos, propiedades y respuestas del web service original de
AFIP. Todos los métodos y propiedades comienzan con las letras f1. No deben usarse propiedades o
métodos que comienzen con otros letras, ya que corresponden a otros servicios AFIP. La unica excepción a
esta regla son el método "iniciar" y las propiedades "ultimonumeroerror" y "ultimomensajeerror", comunes a todos
los servicios web. Además el control no dispone de ningún método para "resetear" o "reiniciar" los datos. En cada
conexión a AFIP deben cargarse todas las propiedades (si es necesario a cero o "vacio") con los datos
correspondientes.
Fundamentos
Como usar
Mecanismo "indiceitem" y listas variables de datos.
Tipos de datos variables.
Tratamiento de errores.
Fallos de conexión.
Documentación
Métodos.
Numeración.
Ejemplos.
Resultados método FECAESolicitar
Validaciones y reglas de AFIP.
Avanzado
XML enviado y recibido
Planilla de calculo interactiva
Errores, motivos y advertencias
Diferencias WSFE y WSFEv1
Alternativamente puede usar la planilla de test WSFEv1Test que implemente este web service para experimentar
el comportamiento y las respuestas del servidor de AFIP.
Al comenzar con el WSFEv1 tener presente que este web service expone un método para obtener el CAE de un
comprobante (como se detalla en lo pasos a continuación) pero también expone otros 2 métodos: para obtener
CAE anticipado y para informar en que documentos se usó ese CAE (en forma quincenal). Para obtener CAE (o
informar en que documento se usó un CAE anticipado) los pasos generales son:
Obtener un certificado digital para emitir facturas eléctronicas. Como se explica en la miniguía de certificados. Si
ya tiene un certificado de prueba habilitado para el WSFE puede usarlo tambien para el WSFEv1 sin ningún
trámite adicional.
Asegurarse que la hora del sistema operativo esté sincronizada con algún servidor de hora oficial. Los servidores
de la AFIP usan el huso horario -3. Para las provincias con diferentes hora asegurarse que la pc esté en el huso
horario local correcto.
Bajar la última versión estándar e instalar. (7.7 o superior).
En un formulario insertar el control ActiveX y llamar al método "iniciar" del control indicando los 4 parámetros:
o "archivo licencia": cadena vacía, no es necesario en el modo prueba. El archivo de licencia solo es
necesario en el modo real o producción.
LLamar al método "f1ObtenerTicketAcceso" o "f1LoginCMS". Si este método se ejecuta y devuelve verdadero
estamos autorizados a obtener CAE o cualquier otro método del Web Service. La autorización generalmente expira
a las 12 horas (una propiedad contiene la hora a la que vence el permiso). En ese caso se debe volver a ejecutar
el método para continuar operando.
Cargar la propiedad "f1CabeceraCantReg" con la cantidad de facturas a registrar (pueden ser varias en un solo
lote). Recomendable establecerla a 1 y autorizar una factura por vez.
Carga la propiedad "indice" a 0 (para cargar los datos de la primera factura).
Cargar las propiedades para indicar los datos de la factura, entre otros:
o "f1CabeceraPtoVta"
o "f1CabeceraCbteTipo"
o "f1DetalleCbteDesde" y "f1DetalleCbteHasta"
o "f1DetaleImpTotal"
o "f1DetalleImpNeto"
o "f1DetalleMonId".
o "f1DetalleCAEA" (solo si no es para obtener CAE sino para informar que el documento que se está
cargando se uso con el CAE anticipado).
o Alícutas de I.V.A.
o Tributos.
o Comprobantes asociados.
o Datos opcionales.
Estos 4 grupos de datos son variables (puede haber 1 o más Alícuotas de I.V.A. en la misma factura, 0 o más
Tributos: nacionales, provinciales, etc. Y así con los otros 2 grupos: Datos Opcionales y Comprobantes Asociados).
LLamar al metodo "f1CAESolicitar" (FECAESolicitar). para obtener el CAE o
bien f1CAERegInformativo (FECAERegInformativo) para informar en que documento(s) se usó el CAE anticipado
Si el método se ejecuta correctamente leer en las propiedades correspondiente los datos devuelve por AFIP
(cargando la propiedad "f1Indice" a 0 para apuntar a la primera factura procesada). Las propiedades se detallan
más adelante, las principales son:
o f1RespuestaResultado.
o f1RespuestaReproceso.
o f1RespuestaErrorMsg1.
o f1RespuestaCantidadReg (y solo si esta propiedad es mayor a 0, indicando que AFIP procesó por lo menos
1 factura):
o f1RespuestaDetalleResultado
o f1RespuestaDetalleCAE (si se llamó al método f1CAESolicitar).
o y otras propiedades adicionales que contiene los errores o eventos devueltos por AFIP si lo hubiere.
o Existe un método para obtener CAE anticipado (se detalle en la documentación). Luego con los mismos
pasos detallados arriba se informa todos los documentos que se emitieron con ese CAE anticipado.
o Algunos datos a cargar (Moneda, tipo de comprobante, código de impuesto, etc) se obtienen de las listas
de AFIP. Estas listas no están en la documentación sino que el propio web service (y la interface WSAFIPFE)
contiene métodos que devuelve estas listas.
o De la misma manera al autorizar un CAE (o informar el uso de CAE anticipado) AFIP puede devolver una
lista variable (0, 1 o más) de errores (excluyentes por los que no se obtuvo CAE) u observaciones (no
excluyentes, se obtuvo CAE pero con alguna advertencia de AFIP). El control contiene propiedades para
leer estas listas de errores y obervaciones.
o En cada llamado AFIP también puede devolver una lista de "eventos" que también deben ser leidos en las
propiedades correspondientes (aunque estos "eventos" son de caracter informativo, no tienen relación
directa con la obtención de CAE).
o Es posible en una sola llamada a AFIP obtener varios CAE para un lote de documentos (o bien informar en
una sola llamada que un lote de documentos usó el CAE anticipada obtenido con anterioridad) aunque esto
puede ser mucho más rápido complica la lógica de implementación.
4WSFEv1 mecanismo "indiceitem"
El mecanismo "indiceitem" es una propiedad especial que permite manejar desde el control ActiveX una lista de
valores variables (como los items correspondientes a las alícuotas de una factura electrónica del WSFEv1 y otros
datos que no son fijos).
Por ejemplo antes de llamar al método "f1CAESolicitar" deben cargarse una serie de datos (fecha, total, etc) en
las propiedades correspondientes y también deben cargarse los datos de las alícuotas de i.v.a. que se aplican al
comprobante en las propiedades:
Propiedad Significado
f1DetalleIvaId El código de la alícuota o tasa (obtenido de una lista de AFIP: 1 para 21% 2 para
10.50%, etc).
f1DetalleIvaBaseImp La base imponible del impuesto.
f1DetalleIvaImporte El importe del impuesto.
Pero en una factura pueden presentarse más de una alícuota a aplicar (productos gravados con el 21% y otros
con el 10%). El control podría agregar propiedades extras como:
f1DetalleIvaId2, f1DetalleBaseImp2, f1DetalleIvaImporte2
f1DetalleIvaId3, f1DetalleBaseImp3, f1DetalleIvaImporte3.
Un esquema asi sería muy engorroso y limitante. Además hay muchos otros datos variables (tributos,
comprobantes asociados, etc) en una factura y todos deberian tener sus propiedades duplicadas, triplicadas o
más.
Una forma más sencilla y genérica para cargar (o leer) estos datos es usar una propiedad "f1IndiceItem" para
indicar a que linea o fila de la lista nos estamos refiriendo. Si en una factura debemos cargar 2 alicuotas de I.V.A.
(21% y 10.5%) con sus importes correspondientes procederiamos asi:
Este procedimiento se aplica a cualquier lista que debamos carga (o leer). Primero se indica en una propiedad
"f1XXXXItemCantidad" la cantidad de filas de la lista y luego usando la propiedad "f1IndiceItem" para referenciar a
cada fila (empezando siempre desde 0 hasta f1XXXXItemCantidad-1).
Si necesitamos leer una lista variable devuelta por AFIP (por ejemplo la lista de errores devueltos al intentar
autorizar un CAE) se procede de igual forma:
Bajo ningún concepto debe confundirse la propiedad "f1IndiceItem", que referencia la fila de una lista
variable, con la propiedad "f1Indice" que referencia a un comprobante en caso que se esté autorizando un
lote de comprobantes para obtener varios CAE en una sola llamada.
5WSFEv1 Listas variables de tipos de datos
Al cargar los datos para autorizar un CAE algunos datos (moneda, tipo de comprobante, tipo de documentos, etc)
corresponden a un código que no se obtiene en la documentación de AFIP, sino que el propio web service (y el
control) contiene un grupo de métodos para recuperar estas listas de datos.
Por ejemplo el método "f1ParamGetTipoMoneda" devuelve una lista (que puede leerse en la propiedades
"f1MonedaId, f1MondaDesc, etc) usando el mecanismo "f1IndiceItem" y la propiedad
"f1TiposMonedaItemCantidad" que contiene la cantidad de monedas en la lista de AFIP.
Hay otros métodos, se detallan en la documentación, que devuelven las otras listas. Estos métodos deben
ejecutarse periódicamente para incorporar estas listas actualizadas a nuestra aplicación. Aunque algunas de estas
listas presentan muy pocos cambios.
6Errores en WSFEv1
Después de llamar a cualquiera de los métodos del WSFEv1, aparte de las propiedades específicas en donde se
leen los resultados, existen un grupo de propiedades comunes a todos que contienen la lista de errores devueltos
por AFIP (si los hubiere) y la lista de eventos (si los hubiere). Además los métodos "FECAESolicitar" y
"FECAERegInformar" contienen propiedades específicas para validaciones propias de cada comprobante que se
autoriza en AFIP.
En cada llamado al servidor del WSFEv1 este puede devolver 0, 1 o más errores que se leen en las propiedades
(código y descripción):
f1ErrorCode1 f1ErrorMsg1
f1ErrorCode2 f1ErrorMsg2
Estas propiedades estarán vacias si no hubo errores. Es importante destacar que el WSFEv1 devuelve una lista
de errores variables (que puede contener 0, 1 o más elementos). Las propiedades "f1ErrorMsg1" y
"f1ErrorMsg2" junto con "f1ErrorCode1" y "f1ErrorCode2" solo son provistas por comodidad. La forma correcta es
obtener la lista de errores devueltos es:
Es decir que las propiedades "f1ErrorMsg1" y "f1ErrorMsg2" apuntan a la primera y a la segunda fila de la lista de
errores (contienen "vacio" si no hubo errores) y son provistas por simplicidad. En caso que "f1ErrorItemCantidad"
muestre valor "1" (o superior) son equivalentes las propiedades:
cargar "f1IndiceItem" a 0.
mostrar el valor de "f1ErrorMsg1" mostrar el valor de "f1ErrorMsg"
Y en caso que "f1ErrorItemCantidad" muestre el valor "2" o superior son equivalentes las propiedades:
cargar "f1IndiceItem" a 0.
mostrar el valor de "f1ErrorMsg2" mostra el valor de "f1ErrorMsg".
Bajo ningún concepto deben confundirse la propiedades "f1ErrorMsg1", que referencia a un valor fijo: el
primero de la lista de errores si lo hubiere, con la propiedad "f1ErrorMsg" que referencia un valor de una lista
variable apuntada por "f1IndiceItem" y cuyo límite (cantidad de filas de la lista) está marcado por
"f1ErrorItemCantidad".
En estos casos debe verificarse si el último comprobante enviado fue o no autorizado (ya que la falla pudo
ocurrir después que el servidor de AFIP envie la respuesta pero antes que se la reciba).
Alternativamente puede usarse el método FECompUltimoAutorizado que devuelve para un punto de venta y tipo
de comprobante el último numero procesado en AFIP. Pero solo devuelve el número y no el CAE asociado que solo
puede ser recuperado por FECompConsulta.
8Eventos en WSFEv1
El WSFEv1, y el OCX, después de llamar a cualquier método e independientemente del resultado del método
puede devolver 0, 1 o más "eventos". Son mensaje de caracter informativo enviados por el servidor de AFIP.
Estos mensajes no guardan relación con los resultados del métodos (correcto o incorrecto) sino que deben mostrar
a modo de aviso.
Despúes de cada método la propiedad "f1EventItemCantidad" contendrá 0 o superior indicando si AFIP devolvió
algun evento. Para recuperar los valores de esta lista variable, los datos se leen en las propiedades:
"f1EventMsg" y "f1EventCode" usando la propiedad "f1IndiceItem" para apuntar a cada fila de la lista, tal como se
explica en "listas variables de datos".
9WSFEv1 Métodos
La interface WSAFIFE replica todos los métodos del web service WSFEv1, en general con el mismo nombre pero
anteponiendo las letras "f1".
El ticket generalmente es válido por 12 horas. La propiedad "f1TicketFechaVencimiento" contiene hasta que hora
el ticket actual es válido. Mientras el ticket esté en vigencia podemos ejecutar cualquier método del web service
como autorizar CAE o solicitar CAE anticipado.
También es posible, antes de ejecutar algún método del WSFEv1, chequear que la propiedad "f1TicketEsValido"
devuelve verdadero indicando que aun tenemos acceso.
El método "f1ObtenerTicketAcceso" no tiene parámetros solo devuelve verdadero o falso. En caso de ser falso
consultar la propiedad "UltimoMensajeError" para obtener la descripción del error generalmente asociado a:
o "Licencia no válida" (solo en el modo real) por faltar el archivo de licencia o no corresponder al CUIT
emisor.
11WSFEv1 f1CAESolicitar
El método f1CAESolicitar (FECAESolicitar) permite obtener el CAE de un comprobante (también puede usarse para
obtener múltiples CAE de un lote de comprobantes pero en esta entrada, por simplicidad, solo se considera el caso
de obtener un CAE a la vez). También puede usarse (con esta misma documentación) para informar un grupo
acumulado de aglunos tipos de comprobantes ( por ej: obtener un único CAE para los comprobante ticket tipo "C"
desde el 1 hasta el 1000, en forma grupal) pero esto último no es lo mismo que el modo "en lote".
Todos los métodos y propiedades aqui descriptos son aplicables también al método FECAEARegInformativo. Con
la salvedad que en este método no se obtiene CAE sino que por el contrario se utiliza para informar el uso de un
CAE anticipado en un comprobante.
o Iniciar la interface y obtener ticket acceso (o validar que el ticket actual aun está en vigencia).
o Cargar en las propiedades correspondientes los datos de cabecera (ver tabla 1).
o Cargar en las propiedades correspondiente los datos de detalle de la factura (ver tabla 2), incluido
número, total, etc.
o Cargar en las propiedades correspondientes los datos variables como alícuotas, tributos, etc (tablas 3A,
3B, 3C y 3D), utilizando el mecanismo "f1IndiceItem".
o Ejecutar el método.
o Leer en las propiedades correspondientes el resultado devuelto por AFIP. teniendo en cuenta que este
método devuelve:
Una descripción de como interpretar los resultados de este método se encuentran en "resultado del método
FECAESolicitar"
o f1RespuestaResultado = "A"
o f1RespuestaReproceso = "N"
o f1RespuestaCantidadReg = 1
o f1RespuestaDetalleCAE distinto de "vacio".
Entonces obtuvimos un CAE válido y original desde AFIP (para el f1CAEARegInformativo solo se consideran las
primera 3 propiedades citadas). En caso que no se cumpla alguna de esos valores debemos analizar el valor de las
otras propiedades (en el orden indicado) para econtrar la causa. Ya que esta puede deberse a:
o Errores genericos o generales (de conexión, servidor ocupado) cuya descripción se recupera
en: f1ErrorCode1 / f1ErrorMsg (o en UltimoMensajeError).
o Errores espécificos por no superar las validaciones de AFIP cuya descripción se recupera
en: f1RespuestaDetalleObervacionCode1 / f1RespuestaDetalleOversvacionMsg1
Además tener en cuenta que aunque se obtuvo CAE válido las propiedades f1RespuestaDetalleObervacionCode1 /
f1RespuestaDetalleOversvacionMsg1 pueden contener una "advertencia u observación" de AFIP.
Y por ultimo. Recordar que las propiedades del tipo f1ErrorMsg1 y f1RespuestaDetalleOversvacionMsg1 fueron
agregadas por simplicidad y solo contienen el primer elemento de la lista. Los errores globales pueden ser
más de 1 y de la misma manera los errores u observaciones específicas de un comprobante pueden ser variables.
Para leer la lista de todos los errores generales debe usar el mecanismo "f1indiceitem" tal como se explica
en errores. Y del mismo modo para leer la lista de observaciones especificas de un comprobante debe recorrerse
la lista de obervaciones.
13WSFEv1 FECAEASolicitar
El método f1CAEASolicitar permite obtener un CAE anticipado, junto con la fecha de vigencia
del código de autorización y la fecha límite para informar los comprobantes vinculados al CAEA. Luego se debe
informar los comprobantes asociados a un CAEA mediante el método FECAEARegInformativo.
Se debe solicitar un único CAE anticipado por C.U.I.T. emisor. Un mismo CAE anticipado luego puede asignarse a
varios puntos de ventas, y en cada punto de venta a 1 o más comprobantes.
(el método f1CAEASolicitarS es equivalente pero acepta parámetros tipo "string" para evitar errores de conversión
en algunos lenguajes).
Este método retorna (además de una lista de errores generales si los hubiere) la respuesta de AFIP en las
propiedades:
Propiedad Tipo Descripción
f1RespuestaCAEA String Código de autorización anticipado.
f1RespuestaCAEAPeriodo Entero Período para el cual es informado el CAEA, cuyo formato es
aaaamm.
f1RespuestaCAEAOrden Entero Orden dentro del período. Hace referencia a:
1-Primera quincena
2-Segunda quincena
f1RespuestaCAEAFchVigH String Fecha hasta de la vigencia del CAEA.
asta
f1RespuestaCAEAFchVigD String Fecha tope para informar a Afip los comprobantes vinculados a un
esde CAEA.
f1RespuestaCAEAFchProc String Fecha de proceso, cuyo formato es aaaammddhhmmss
eso
f1ErrorMsg1 String La descripción del error (si hubo). Puede existir más de un
error. Ver lista general de errores.
f1ErrorCode1 Entero Esta propiedad contiene el código del primer error.
f1EventMsg String Descripción de un evento. Puede existir más de un evento. Ver
lista general de eventos.
f1EventCode Entero Código del evento
Es posible consultar el CAE anticipado asignado por AFIP para un periódo/quincena dado, mediante
el método FECAEAConsultar.
En caso de no asignar el CAE anticipado a ningún comprobante, mediante
el método FECAEASinMovimientoInformar es posible informar a AFIP aquellos códigos de autorización que no
sufrieron movimientos para un determinado punto de venta.
Y mediante el método FECAEASinMovimientoConsultar podremos consultar mediante CAEA los puntos de ventas
informados como sin movimientos.Es decir, éste método permite consultar lo informado por
el método FECAEASinMovimientoInformar.
14WSFEv1 FECompConsultar
Este método permite recuperar íntegramente todos los datos archivados por AFIP para un número de
comprobante dado.
Acepta 3 parámetros:
o Punto de Venta.
o Tipo de Comprobante.
o Número de Comprobante.
Y devuelve verdadero (si el comprobante existe en lo servidores de AFIP) junto con todos los datos asociados al
comprobante. Los datos se leen en:
Por ejemplo la propiedad FEDetalleImpTotal contendrá el importe total usado (y archivdo por AFIP) al autorizar el
comprobante.
En caso de devolver falso el motivo del error puede leerse en la lista general de errores.
15WSFEv1 FECAEARegInformativo
El método f1CAEARegInformativo permite informar (para un CAE anticipado previamente obtenido
con FECAEASolicitar) cada uno de los comprobantes emitidos y asociados a ese CAE anticipado.
Antes de ejecutar este método deben cargarse las propiedades con los datos del comprobante, exactamente de
la misma forma que se cargan los datos en el método FECAESolicitar. Por lo que remitimos a la documentación de
ese método para detallar todas las propiedades a usar. La única diferencia es que a todos los datos del
comprobante que se deben cargar se agrega la propiedad: "FEDetalleCAEA" donde se indica el CAE anticipado
usado en el comprobante.
De la misma forma. Los resultados de este método se leen (e interpretan) en las mismas propiedades del método
FECAESoliciar (obviamente ignorando las propiedades f1RespuestaDetalleCAE y f1RespuestaDetalleCaeFchVto, ya
que esté método no devuelve CAE sino que sirve para informar en que comprobante(s) se usó un CAE anticipado).
Todo lo aplicable al método FECAESolicitar es válido también para este método incluyendo:
Incluso es posible recuperar todos los datos de un comprobante informado con CAE anticipado con el
método FECompConsulta. En este método la propiedad f1RespuestaDetalleTipoEmisión indicará si el comprobante
fue informado con CAE o CAEA y en este último caso el CAEA informado se recupera en la propiedad
FERespuestaDetalleCAEA.
16WSFEv1 FECAEASinMovimientoInformar
En caso que un CAE anticipado (obtenido con FECAEASolicitar) no se use en ningún comprobante, para un punto
de venta. (es decir no se ejecutó el método FECAEARegInformativo) entonces debe usarse esté metodo para
informar que el CAE anticipado no tuvo movimientos.
Paramétros:
17WSFEv1 FECompUltimoAutorizado
Este método devuelve, para un punto de venta y tipo de comprobante, el último número de comprobante
autorizado en AFIP. No usa propiedades ni de entrada ni salida.
Parámetros:
Punto Venta Entero
Tipo de Código según método
Comprobante FEParamGetTiposCbte
Devuelve un resultado tipo entero con el numero archivado en AFIP y deja la lista de errores generales disponible.
18WSFEv1 f1CAEASinMovimientoConsultar
Este método devuelve una lista variable con los puntos de venta que fueron informados como sin movimientos
(con el método f1CAEASinMovimientoInformar). Acepta 2 parámetros:
CAE anticipado El CAE anticipado (obtenido con FECAEASolicitar) del que quiere
consultar los puntos de ventas ya informados como sin
movmiento
Punto de Venta. Ver nota más abajo.
Aparentemente este método debería tener un solo argumento (el CAE anticipado) y no pedir el punto de venta.
Ya que justamente devuelve una lista de puntos de ventas sin movimientos. Como el método no ésta operativo no
hay más información hasta el momento sobre el funcionamiento exacto.
19WSFEv1 Ejemplos
Estos ejemplos usan la versión 7.7 (o superior) del instalador, son provistos para quienes desean tener
una idea general de las propiedades y métodos del WSFEv1.
Para usar la interface y conectar al WSFEv1 es necesario contar con un certificado digital instalado en la pc (Ver
en Como Usar):
Estos ejemplos son para conectarse al WSFEv1 y: obtener CAE con el método FECAESoliciar, solicitar CAE
anticipado y luego informar su uso.
Este primer ejemplo emite una factura tipo A para el punto de venta 4 (en modo entrenamiento) con 2 alícuotas, 1
tributo municipal, sin comprobantes asociados ni datos opcionales.
Si decide implementar el ejemplo debe usar las fechas del día actual para no recibir un error.
Ejemplo WSFEv1 en Visual Basic 6 o superior para obtener CAE.
Ejemplo WSFEv1 en Visual FoxPro 6 o superior para obtener CAE.
Este segundo ejemplo solicita CAE anticipado (valen las consideraciones del parrafo anterior) para usarlo en un
comprobante en el último ejemplo.
En este ejemplo final se informa de un comprobante emitido con el CAE anticipado obtenido anteriormente.
Notar que el último ejemplo es casi igual al primero, solo que no se obtiene CAE sino que informa del CAE
anticipado utilizado y se indica otro punta de venta.
Es totalmente operativo (cuando se publique el instalador) pero es necesario leer toda la documentación del
WSFEv1 para una implementación real.
fe.F1DetalleTributoItemCantidad = 1
fe.f1IndiceItem = 0
fe.F1DetalleTributoId = 3
fe.F1DetalleTributoDesc = "Impuesto Municipal Matanza"
fe.F1DetalleTributoBaseImp = 150
fe.F1DetalleTributoAlic = 5.2
fe.F1DetalleTributoImporte = 7.8
fe.F1DetalleIvaItemCantidad = 2
fe.f1IndiceItem = 0
fe.F1DetalleIvaId = 5
fe.F1DetalleIvaBaseImp = 100
fe.F1DetalleIvaImporte = 21
fe.f1IndiceItem = 1
fe.F1DetalleIvaId = 4
fe.F1DetalleIvaBaseImp = 50
fe.F1DetalleIvaImporte = 5.25
fe.F1DetalleCbtesAsocItemCantidad = 0
fe.F1DetalleOpcionalItemCantidad = 0
fe.ArchivoXMLRecibido = "c:\recibido.xml"
fe.ArchivoXMLEnviado = "c:\enviado.xml"
lResultado = fe.F1CAESolicitar()
If lResultado Then
MsgBox ("resultado método: verdadero")
Else
MsgBox ("resultado método: falso")
End If
MsgBox ("resultado global AFIP: " + fe.F1RespuestaResultado)
MsgBox ("es reproceso? " + fe.F1RespuestaReProceso)
MsgBox ("registros procesados por AFIP: " + Str(fe.F1RespuestaCantidadReg))
MsgBox ("error genérico global:" + fe.f1ErrorMsg1)
If fe.F1RespuestaCantidadReg > 0 Then
fe.f1Indice = 0
MsgBox ("resultado detallado comprobante: " + fe.F1RespuestaDetalleResultado)
MsgBox ("cae comprobante: " + fe.F1RespuestaDetalleCae)
MsgBox ("número comprobante:" + fe.F1RespuestaDetalleCbteDesdeS)
MsgBox ("error detallado comprobante: " + fe.F1RespuestaDetalleObservacionMsg1)
End If
Else
MsgBox ("fallo acceso " + fe.UltimoMensajeError)
End If
Else
MsgBox ("fallo iniciar " + fe.UltimoMensajeError)
End If
21WSFEv1 Obervaciones al solicitar CAE/CAEA
Después de llamar a cualquiera de los métodos para autorizar CAE o CAE anticipado (FECAESolicitar y
FECAERegInformativo), aparte de las propiedades específicas en donde se leen los resultados, existe un grupo de
propiedades que contienen la lista de errores y observaciones devueltos por AFIP (si los hubiere). Nos referimos al
error especifico devuelto por AFIP al intentar autorizar un CAE o CAE anticipado. No a los errores globales
devueltos en la lista de errores.
Estas propiedades estarán vacias si no hubo errores al autorizar CAE o CAE anticipado. Es importante destacar
que el WSFEv1 devuelve una lista de observaciones variables (que puede contener 0, 1 o más elementos). Las
propiedades "f1RespuestaDetalleObervacionMsg1" y "f1RespustaDetalleObervacionCode1" solo son provistas por
comodidad. La forma correcta de obtener la lista de obervaciones devueltos es:
cargar "f1IndiceItem" a 0.
mostrar el valor de mostrar el valor de
"f1RespuestaDetalleObservacionMsg1" "f1RespuestaDetalleObservacionMsg"
La numeración comienza siempre desde 1 (para cada punto de venta y tipo de comprobante). Los Web Services
de AFIP no admiten "huecos" o comprobantes anulados (es posible emitir una nota de crédito para anular una
factura eléctronica).
Si al registrar una factura electrónica esta es rechazada por AFIP (por cualquier motivo) el número no es
asignado. Queda disponible para la próxima emisión válida.
Cada tipo de comprobante (Factura A, Nota Crédito A, Factura B, etc.) está identificado por un código numérico
que se obtiene de una lista variable.
Antes de llamar al método FECAESolicitar para obtener CAE (o FECAEARegInformativo para usar un CAE
anticipado) debemos cargar en las propiedades:
"f1DetalleCbteDesde" y "f1DetalleCbteHasta" el número del comprobante (según las reglas arriba descriptas).
No debe confundirse este grupo de documentos (para el que se envia los totales acumulados y se
obtiene un solo CAE) con el modo "en lote" que se refiere a enviar un lote de documentos (con numeración y
datos individuales) para obtener múltiples CAE (uno para cada documento del lote) en una sola llamada a
FECAESolicitar.
Esta tabla muestra un ejemplo de como se numeran las facturas electrónicas y su correlación:
El WSFEv1 incluye el método f1CompUltimoAutorizado que devuelve el último numero usado para punto de venta
y tipo de comprobante.
23