Anexo: Ejemplos de Uso - Cereales LPG

Modificado el Mar, 5 Ago a 10:24 A. M.

Introduccion


Este documento detalla el uso y los flujos de trabajo del módulo Cereales LPG, complementando la documentación principal.

1. Relación entre funciones utilitarias y operacionales

Las funciones utilitarias proporcionan servicios generales que son usados por las funciones operacionales.

1.1 Utilidades para manejo de datos y conexión

  • LPG_GuardoDatosDoc(valores): Almacena los tokens y credenciales de autenticación para la conexión con AFIP.

  • LPG_RecuperoDatosDoc(valores): Recupera las credenciales almacenadas para evitar autenticaciones redundantes.

  • LPG_ValidaLiquidacion(xid): Valida si una liquidación cumple con los requisitos para ser procesada.

  • LPG_OBJMetodos_Datos(xcampo): Obtiene datos específicos de campos para la configuración de formularios.

  • BuscoCartaPorte(xgestionid): Busca la carta de porte relacionada con una liquidación específica.

1.2 Utilidades para configuración de formularios

  • Config_form_Liquidacion_OcultoCampos(xobjeto): Oculta campos no relevantes en el formulario de liquidación.

  • CPE_FiltroVistaRelacion(xdato): Crea expresiones de filtro para relacionar cartas de porte con liquidaciones.

  • LPG_BuscoNroLIQ(pedidoid, numero): Genera un número secuencial para liquidaciones basado en el contrato.


2. Flujos completos de trabajo

2.1 Flujo de procesamiento de una Liquidación Primaria de Granos

  1. El usuario inicia el proceso desde un listado de documentos de compra (tipo "L").

  2. Se invoca el evento del sistema LPG_Proceso1(xnum).

  3. El sistema evalúa si es el último paso, y si es así, programa la ejecución de LPG_Proceso2.

  4. La función LPG_Proceso2 recorre los documentos seleccionados, valida si son liquidaciones primarias (tipo "33") y si requieren corredor.

  5. Si no requiere corredor, llama a LPG_Config_Proceso.

  6. La función LPG_Config_Proceso realiza las siguientes acciones:

    • Autenticación con AFIP usando LPG_LOGIN2().

    • Búsqueda de la carta de porte asociada.

    • Recuperación de datos de retenciones.

    • Configuración de los datos para el servicio web.

    • Llamada al método fe.liquidacionAutorizar().

    • Procesamiento de la respuesta y actualización de la base de datos.

2.2 Flujo de autenticación con AFIP para liquidaciones

  1. Se invoca la función LPG_LOGIN().

  2. Se crea un objeto de conexión con AFIP (FEAFIP.WSLPG) y se configura.

  3. Se intenta recuperar credenciales existentes con LPG_RecuperoDatosDoc().

  4. Si se encuentran credenciales válidas y no expiradas, se usan.

  5. Se realiza el login con AFIP.

  6. Si el login es exitoso, las nuevas credenciales (token, sign, expirationtime, etc.) se guardan con LPG_GuardoDatosDoc.

  7. Se devuelve el objeto de conexión configurado.


3. Ejemplos de código para casos de uso comunes

3.1 Autenticación y preparación del servicio web

  • La función LPG_LOGIN2() crea el objeto FEAFIP.WSLPG, lo configura para el modo de homologación y recupera el token y sign de una tabla auxiliar (tablaaux21) para realizar el login.

3.2 Procesamiento de una Liquidación Primaria de Granos

  • ProcesarLiquidacionPrimariaGranos(...) es un ejemplo simplificado que obtiene datos del documento, stock, contrato y carta de porte.

  • Se autentica con LPG_LOGIN2() y configura los datos de la liquidación, incluyendo precios, pesos y datos de grano.

  • Llama a fe.liquidacionAutorizar() y, si no hay errores, actualiza las tablas promovi con el COE recibido.

3.3 Configuración de formulario de liquidación

  • ConfigurarFormularioLiquidacion(xobjeto, idContrato): Configura un formulario de liquidación.

  • Establece el número de liquidación (numLiq) basado en el contrato.

  • Configura la visibilidad de los campos, los valores predeterminados de grado y factor, y los precios.

  • Oculta los campos no necesarios con Config_form_Liquidacion_OcultoCampos().


4. Integración con eventos del sistema

4.1 Integración con sistema de procesamiento por lotes

  • LPG_Proceso1(xnum): Es el primer paso del procesamiento por lotes que programa el segundo paso.

  • LPG_Proceso2(xnum): Itera sobre los documentos seleccionados y llama a LPG_Config_Proceso si el documento es una liquidación primaria y no requiere un corredor.

4.2 Integración con sistema de formularios

  • ModificarFormularioLiquidacion(formulario): Configura campos específicos para la liquidación y asigna la función ValidarYProcesarLiquidacion al evento de guardar.

  • ValidarYProcesarLiquidacion(formulario): Valida campos obligatorios como el código de grado y el factor antes de llamar a LPG_Config_Proceso.


5. Ejemplos de uso de funciones para manejo de datos

5.1 Búsqueda de cartas de porte relacionadas

  • BuscarCartasPorteParaContrato(idContrato): Consulta las tablas stock_co, docsenbaseitems y movmer para encontrar las cartas de porte relacionadas con un contrato.

  • Devuelve un objeto con la información de las cartas de porte encontradas.

5.2 Consulta de retenciones para liquidación

  • ObtenerRetencionesLiquidacion(numOperacion, comprobante): Llama a VistaRetenciones() para obtener las retenciones aplicables.

  • Procesa las retenciones (RI, RG, IB02, IB21) y almacena su información en un objeto para su uso posterior.


6. Patrones de manejo de errores

6.1 Validación de login y conexión con AFIP

  • ValidarConexionAFIP(): Intenta crear el objeto FEAFIP.WSLPG, recuperar las credenciales y verificar su validez y expiración.

  • Devuelve un objeto con un estado de éxito (exito) y un mensaje detallado sobre el estado de la conexión.

6.2 Manejo de errores en procesamiento de liquidaciones

  • ProcesarLiquidacionConValidacion(gestionId): Acumula errores en una variable errores durante el proceso de validación.

  • Valida el ID de gestión, el tipo de documento, la existencia de detalles y la carta de porte.

  • Si hay errores, los muestra al usuario y cancela el proceso; si no, procede a procesar la liquidación.

  • Maneja los errores devueltos por la respuesta de AFIP (respuesta.hayerrores).


7. Casos de uso avanzados

7.1 Procesamiento por lotes de liquidaciones

  • ProcesarLoteLiquidaciones(listaGestionIds): Procesa múltiples liquidaciones en un solo flujo.

  • Establece una única conexión con AFIP para todas las liquidaciones.

  • Recorre una lista de IDs de gestión, valida cada liquidación y llama a LPG_Config_Proceso para procesarla.

  • Genera un resumen de resultados y registra los eventos en el log del sistema.

7.2 Integración entre CPE y LPG

  • ProcesarLPGDesdeCPEs(): Busca CPEs en estado "Confirmado Definitivo" (CN) que no tengan una liquidación asociada.

  • Para cada CPE encontrada, busca un contrato relacionado, crea un objeto de liquidación (LP), lo configura con los datos de la CPE y llama a LPG_Config_Proceso para procesarla.

  • Maneja contadores para CPEs procesadas, fallidas y ya liquidadas.


8. Integración con otros módulos del sistema

8.1 Relación con Cereales CPE

  • GenerarLPGDesdeCPE(nroCTG): Obtiene los datos de una CPE específica.

  • Verifica que la CPE esté en estado "Confirmado Definitivo" (CN) y que exista un contrato relacionado.

  • Crea un objeto de liquidación (LP), lo configura con los datos de la CPE y ofrece al usuario la opción de procesarla con AFIP.

8.2 Integración con el flujo general del sistema

  • FlujoCompletoOperacionCereales(idContrato): Muestra un flujo que integra ambos módulos.

  • Verifica la existencia del contrato, las CPEs asociadas y su estado.

  • Permite al usuario crear una nueva CPE si no existen y una nueva liquidación si es necesario.

  • Crea un objeto de liquidación y muestra el formulario para que el usuario complete los datos y procese la liquidación.

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo