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
El usuario inicia el proceso desde un listado de documentos de compra (tipo "L").
Se invoca el evento del sistema
LPG_Proceso1(xnum)
.El sistema evalúa si es el último paso, y si es así, programa la ejecución de
LPG_Proceso2
.La función
LPG_Proceso2
recorre los documentos seleccionados, valida si son liquidaciones primarias (tipo "33") y si requieren corredor.Si no requiere corredor, llama a
LPG_Config_Proceso
.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
Se invoca la función
LPG_LOGIN()
.Se crea un objeto de conexión con AFIP (
FEAFIP.WSLPG
) y se configura.Se intenta recuperar credenciales existentes con
LPG_RecuperoDatosDoc()
.Si se encuentran credenciales válidas y no expiradas, se usan.
Se realiza el login con AFIP.
Si el login es exitoso, las nuevas credenciales (
token
,sign
,expirationtime
, etc.) se guardan conLPG_GuardoDatosDoc
.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 objetoFEAFIP.WSLPG
, lo configura para el modo de homologación y recupera eltoken
ysign
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 tablaspromovi
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 aLPG_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ónValidarYProcesarLiquidacion
al evento de guardar.ValidarYProcesarLiquidacion(formulario)
: Valida campos obligatorios como el código de grado y el factor antes de llamar aLPG_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 tablasstock_co
,docsenbaseitems
ymovmer
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 aVistaRetenciones()
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 objetoFEAFIP.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 variableerrores
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 aLPG_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
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo