Avalados por :

Cómo implementar el patrón de estrategia en desarrollos de contabilidad electrónica en México

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 3 Vistas
0
Cargando...
En esta entrada veremos cómo nos ayuda el patrón de estrategia en nuestros desarrollos.

Este patrón nos permite cambiar el algoritmo dependiendo del cliente.

Veamos primero el problema, después atacaremos la solución desde un punto de vista "tradicional" y después usaremos el patrón para dar la solución.

Enunciado del problema


En la contabilidad electrónica en México, se guarda la información del número único de la factura (UUID) en los textos de los documentos de finanzas. Como es un texto, esta información no se muestra en los reportes estándares de los documentos financieros, como son FBL1N (facturas de proveedores) y FBL5N (Facturas de clientes).

Una opción para suplir esto, es usar la BAdI FI_ITEMS_CH_DATA, que implementa la interfaz IF_FI_ITEMS_CH_DATA y el método "change_items".

Ésta BAdI, pasa por todos los procesos que llenan los reportes estándares de FI, en particular, en la ejecución de las transacciones FBLxN.

Necesitamos además, extender, la estructura que usa el método (pero será material para otra entrada), para nuestro caso, vamos a asumir, que ya tenemos la estructura extendida con el campo UUID (ZZUUID - char de longitud 36).

Dependiendo de si la factura es de proveedor (FBL1N) o si es de cliente (FBL5N) la forma de obtener el UUID es diferente:

  • En el caso de proveedores:

    • Leemos el texto de la factura (id = YUUD; object = BELEG; name = bukrs&&belnr&&gjahr)

    • Si no encontramos, leer de RBKP con belnr = awkey(10) ghajr = awkey+10(4)



  • En el caso de clientes:

    • Leemos el texto de la factura de SD (id = YUUD; object = VBBK; name = akkey(10))

    • Si no encuentra datos, leemos el texto de la factura FI (id = YUUD; object = BELEG; name = bukrs&&belnr&&gjahr)



Análisis del problema


Necesitamos un algoritmo que se comporte de forma diferente, dependiendo de la transacción que se esté ejecutando.

Una forma sería, de la forma tradicional, crear un método por cada caso, y usarlos en el método de la BAdI, haciendo el despliegue de las diferentes opciones, y llamar al método correcto en cada caso.

Solución sin patrón estrategia


Crearíamos los métodos en la misma clase de implementación (como privados).
CLASS zim_if_items_ch_data DEFINITION.
...

    
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?