WSMTXCA 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 los productos de una factura electrónica del WSMTXCA y otros datos que no son fijos).
Por ejemplo antes de llamar al método "AutorizarComprobante" deben cargarse una serie de datos (fecha, total, etc) en las propiedades correspondientes y también deben cargarse los productos incluidos en el comprobante:
Pero en una factura pueden presentarse más de un producto . El control podría agregar propiedades extras como:
fxItemCantidad2, fxItemCodigo2, fxitemDescripcion2
fxItemCantidad3, fxItemCodigo3, fxItemDescripcion3.
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 "fxIndiceItem" para indicar a que linea o fila de la lista nos estamos refiriendo. Si en una factura debemos cargar 2 productos procederiamos asi:
En la propiedad "fxItemItemCantidad" cargamos el valor 2 (2 productos o items).
Cargamos la propiedad "fxindiceitem" a 0 (para indicar que nos estamos refiriendo a la primera fila).
Cargamos en la propiedades "fxitemCantidad", "fxItemCodigo" y "fxItemDescripcion" los datos de la primera fila.
Cargamos la propiedad "fxindiceitem" a 1 (para indicar que nos estamos refiriendo a la segunda fila).
Cargamos en la propiedades "fxitemCantidad", "fxItemCodigo" y "fxItemDescripcion" los datos de la segunda fila.
Este procedimiento se aplica a cualquier lista que debamos carga (o leer). Primero se indica en una propiedad "fxXXXXItemCantidad" la cantidad de filas de la lista y luego usando la propiedad "fxIndiceItem" para referenciar a cada fila (empezando siempre desde 0 hasta fxXXXXItemCantidad-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:
En la propiedad "fxRespuestaObservacionItemCantidad" contendrá la cantidad de filas (errores) en la lista que puede ser 0 o más.
Cargamos la propiedad "fxIndiceitem" a 0 y leemos en las propiedades correspondientes los datos de la primera fila (FxRespuestaObservacionDescripcion, FxRespuestaObservacionCodigo).
Continuamos cargando la propiedad "fxIndiceItem" a 1, 2, etc hasta "fxRespuestaObservacionItemCantidad-1".
En la documentación de métodos y propiedades se detalle específicamente que métodos devuelven listas variables y en que propiedades se leen. Solo la propiedad "fxIndiceItem" es común a todas las listas.
Bajo ningún concepto debe confundirse la propiedad "fxIndiceItem", que referencia la fila de una lista variable, con la propiedad "Indice" que referencia a un comprobante en caso que se esté autorizando un lote de comprobantes para obtener varios CAE en una sola llamada (no admitido en el WSMTXCA)