Introducción
Este documento detalla el uso y los flujos de trabajo del módulo Cereales CPE.
1. Relación entre funciones utilitarias y operacionales
Las funciones utilitarias proporcionan servicios generales que son usados por las funciones operacionales.
1.1 Funciones de utilidad para formato de datos
SacoGuiones(xvalor)
: Formatea CUITs sin guiones para envíos a AFIP.Uso en:
AltaCPEEnAfip
,CTG_Config_Proceso_Alta
.
CTG_CambioCuit(xcuit)
: Formatea CUITs con guiones para visualización (XX-XXXXXXXX-X).Uso en:
CTG_Config_form_Alta
,CTG_Config_form_ConfDef
.
SeparaLocalidadProvincia(xdato, sel)
: Separa datos compuestos de localidad y provincia.Uso en:
CTG_Config_form_Alta
,CTG_Config_form_ModifCP
.
CTG_Cancelaproceso(xerrores)
: Cancela un proceso y muestra mensajes de error.Uso en: Todas las funciones
CTG_Config_Proceso_*
.
2. Flujos completos de trabajo
2.1 Flujo de alta de una CPE
El usuario inicia el proceso desde un formulario seleccionando "Alta de CPE".
Se invoca el evento
appcontext_makeformfinal(p, xobjeto)
en Cereales eventos.vb.El evento llama a la función de configuración
CTG_Config_form_Alta(xobjeto)
.El usuario completa los campos y guarda el formulario.
Se dispara el evento
appcontext_saveform(p, o)
.El evento llama a la función de procesamiento
CTG_Config_Proceso_Alta(xobjeto)
.La función de procesamiento realiza las siguientes acciones:
Validación de datos.
CTG_LOGIN()
para autenticar con AFIP.Preparación de datos para el webservice.
Llamada a
fe.AutorizarCPEAutomotor()
.Procesamiento de la respuesta.
Actualización de la base de datos con
CPE_GuardoDatos_confirmacion()
.Registro en el log con
CTG_Save_logEstados()
.
2.2 Flujo de confirmación definitiva de una CPE
El usuario selecciona una CPE de una lista y elige "Confirmar Definitivo".
Se invoca el evento
appcontext_makeformfinal(p, xobjeto)
en Cereales eventos.vb.El evento llama a la función de configuración
CTG_Config_form_ConfDef(xobjeto)
.El usuario ajusta los datos y guarda el formulario.
Se dispara el evento
appcontext_saveform(p, o)
.El evento llama a la función de procesamiento
CTG_Config_Proceso_ConfDef(xobjeto)
.La función de procesamiento realiza las siguientes acciones:
Validación de datos.
CTG_LOGIN()
para autenticar con AFIP.Preparación de datos para el webservice.
Llamada a
fe.ConfirmarDefinitivo()
.Procesamiento de la respuesta.
Actualización de la base de datos con
CPE_GuardoDatos_confirmacion_Def()
.Registro en el log con
CTG_Save_logEstados()
.
3. Ejemplos de código para casos de uso comunes
3.1 Autenticación y preparación del servicio web
La función
CTG_LOGIN()
configura la conexión con AFIP.Utiliza el objeto
FEAFIP.WSCPE
y el certificado digital.Devuelve el objeto
fe
configurado y autenticado.
3.2 Alta de una Carta de Porte desde un CTG existente
GenerarCPEDesdeCtg(nroCtg)
: Subrutina que llama a la función de alta.CTG_Alta_CPE_Homo(xnroCTG)
: Valida el número de CTG y llama aAltaCPEEnAfip
con la fecha actual.
3.3 Configuración y procesamiento de un formulario
CTG_Config_form_Alta(xobjeto)
:Define el tamaño y título del formulario.
Agrega campos comunes.
Establece valores predeterminados (
CUIT
,TIPO_CPE
).Configura campos obligatorios y eventos de cambio (
onchange
).
CTG_Config_Proceso_Alta(xobjeto)
:Realiza validaciones adicionales.
Autentica con
CTG_LOGIN()
.Obtiene el número de orden de AFIP.
Configura los datos de cabecera, origen, carga, destino y transporte.
Llama a
fe.AutorizarCPEAutomotor()
y procesa la respuesta.
4. Integración con eventos del sistema
4.1 Integración con Cereales eventos.vb
appcontext_objectinit(p, o)
:Se dispara al inicializar un formulario de tipo
CTG_FORM
.Configura propiedades básicas como seguridad, tamaño y pestañas (
tabs
).
appcontext_makeformfinal(p, xobjeto)
:Se dispara al finalizar la creación del formulario.
Invoca la función de configuración (
CTG_Config_form_Alta
,CTG_Config_form_ConfDef
, etc.) según el parámetromp
(modo de proceso).
appcontext_saveform(p, o)
:Se dispara al guardar el formulario.
Invoca la función de procesamiento (
CTG_Config_Proceso_Alta
,CTG_Config_Proceso_ConfDef
, etc.) según el parámetromp
.
4.2 Ejemplo de uso desde la interfaz de usuario
ConfigurarBotonAltaCPE(xform)
: Agrega un botón a un formulario.GenerarAltaCPE()
: Función asociada al eventoonclick
del botón. Valida que se haya seleccionado un CTG y llama a la función de alta.
5. Ejemplos de uso de funciones para manejo de datos
5.1 Guardar datos de una confirmación de CPE
CPE_GuardoDatos_confirmacion(xrespuesta, xnroCTG)
:Verifica si la respuesta de AFIP es válida.
Crea un objeto para la base de datos (
f.newdbclass
).Actualiza los campos de la tabla
O_CTG_TRANSITO
con los datos de la respuesta (nro_carta_porte
,estado
,fe_emi
, etc.).Establece el estado interno (
estInt
) basado en el estado de AFIP (AC
,CN
, etc.).
5.2 Registrar en el log de estados
CTG_Save_logEstados(...)
:Crea un objeto para la base de datos y selecciona la tabla
O_CTG_LOG
.Inserta un nuevo registro con la información del evento (
nro_ctg
,nro_CartaPorte
,observacion
,detalle
, etc.).Registra el mismo evento en el log del sistema con
f.AddSystemEvent
.
6. Patrones de manejo de errores
6.1 Manejo de errores en llamadas a AFIP
ProcesarRespuestaAFIP(xresp, nroCTG)
:Verifica la propiedad
xresp.hayerrores
.Si hay errores, registra el evento, muestra un mensaje al usuario y llama a
CTG_Save_logEstados
con el código de operación "ERROR".Si no hay errores, llama a
CPE_GuardoDatos_confirmacion
y aCTG_Save_logEstados
con el código de operación "EXITO".
6.2 Validación de datos antes de procesar
ValidarDatosFormulario(xobjeto)
:Crea una variable
errores
.Verifica que los campos obligatorios (
CUIT
,TIPO_CPE
,DOMINIO
,PESO_BRUTO
) no estén vacíos.Valida formatos de datos (por ejemplo, que
KM_RECORRER
sea numérico).Si encuentra errores, los muestra al usuario con
CTG_Cancelaproceso
y devuelveFalse
.Si no hay errores, devuelve
True
.
7. Casos de uso avanzados
7.1 Modificación de una CPE existente
ModificarCPEExistente(nroCTG, nuevoPesoBruto, nuevaFechaLlegada)
:Valida el
nroCTG
y el estado de la CPE (debe serAC = Activa
).Autentica con
CTG_LOGIN()
.Prepara los datos de modificación (
nroOrden
,pesoBrutoDescarga
, etc.).Llama a
fe.ModificarCPEAutomotor()
.Actualiza la base de datos local y el log.
7.2 Consulta de estado de CPE y actualización local
ConsultarEstadoCPE(nroCTG)
:Autentica con
CTG_LOGIN()
.Llama a
fe.ConsultarCPEAutomotor()
para obtener el estado actual desde AFIP.Muestra la información de la respuesta.
Si el estado local es diferente al estado de AFIP, actualiza la base de datos (
O_CTG_TRANSITO
) y el log.
8. Integración con otros módulos del sistema
8.1 Relación con Cereales LPG
GenerarLPGDesdeCPE(nroCTG)
:Obtiene los datos de la CPE local.
Valida que la CPE exista y su estado sea
CN
(Confirmado Definitivo).Crea un nuevo objeto de Liquidación Primaria de Granos (
LPG_OBJ
).Configura los campos de la LPG (
CUIT
,especie
,peso_neto
, etc.) usando los datos de la CPE.Llama a
LPG_Config_Proceso_Alta
para iniciar el proceso de LPG.
8.2 Integración con flujo general del sistema
ProcesoCompletoGranos(idOperacion)
:Muestra un flujo completo, desde la generación de una CPE (
GenerarCPEOperacion
) hasta la generación de una LPG y la finalización de una operación.
GenerarCPEOperacion(idOperacion)
:Obtiene los datos de una operación del sistema.
Crea y configura un objeto
CTG_FORM
con esos datos.Llama a
CTG_Config_Proceso_Alta
para procesar el alta de la CPE.Devuelve el número de CTG generado.
¿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