Anexo: Ejemplos de Uso - Cereales CPE

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


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

  1. El usuario inicia el proceso desde un formulario seleccionando "Alta de CPE".

  2. Se invoca el evento appcontext_makeformfinal(p, xobjeto) en Cereales eventos.vb.

  3. El evento llama a la función de configuración CTG_Config_form_Alta(xobjeto).

  4. El usuario completa los campos y guarda el formulario.

  5. Se dispara el evento appcontext_saveform(p, o).

  6. El evento llama a la función de procesamiento CTG_Config_Proceso_Alta(xobjeto).

  7. 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

  1. El usuario selecciona una CPE de una lista y elige "Confirmar Definitivo".

  2. Se invoca el evento appcontext_makeformfinal(p, xobjeto) en Cereales eventos.vb.

  3. El evento llama a la función de configuración CTG_Config_form_ConfDef(xobjeto).

  4. El usuario ajusta los datos y guarda el formulario.

  5. Se dispara el evento appcontext_saveform(p, o).

  6. El evento llama a la función de procesamiento CTG_Config_Proceso_ConfDef(xobjeto).

  7. 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 a AltaCPEEnAfip 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ámetro mp (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ámetro mp.

4.2 Ejemplo de uso desde la interfaz de usuario

  • ConfigurarBotonAltaCPE(xform): Agrega un botón a un formulario.

  • GenerarAltaCPE(): Función asociada al evento onclick 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 a CTG_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 devuelve False.

    • 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 ser AC = 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

¡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