GEINFOR ERP: Redondear cantidades en ordenes

Cuando trabajamos con producción y las estructuras de ordenes, algo que sucede en ocasiones son los “dichoso” decimales en los componentes para indicar la proporción con un producto acabado como cuando ese calculo lo multiplicamos por el total de unidades, metros, kg, etc… del producto a producir.

Geinfor ERP nos dota de ciertas herramientas de redondeo o de calculo de formulas en estructuras que son muy útiles, pero con nuestros TRIGGER en la base de datos este trabajo puede ser mucho más rápido y sencillo.

Para no faltar a mi ritual,

NINGUNA DE LAS ACCIONES QUE VOY A EXPLICAR TIENE SOPORTE POR PARTE DE GEINFOR. MUCHO OJO Y BAJO VUESTRA RESPONSABILIDAD

Como os comentaba, GEINFOR ERP nos dota de 2 opciones:

  • Un tipo de unidad que siempre redondeará la cantidad necesaria siempre a 0 decimales y con redondeo superior. Esta puede ser perfectamente válida salvo que lo que busquemos es un redondeo “natural”. Me explico. Con la función de Geinfor, 6.99 lo redondearía a 7 pero 7.0001 lo llevaría a 8. Pero si es 0.01 es producido por un “error” de decimales en la estructura pues es un poco fastidio
  • La otra opción es aprovechar todo el potencial de uso de formulas, pero si ya tenemos muchas estructuras y tenemos que revisarlas y actualizarlas todas para que utilicen la formula es un poco “tostón”

Si nos tiramos a automatizar con triggers, el TR serían el siguiente

CREATE OR REPLACE TRIGGER TR_ESTRUCTURA_ORDENES_CR BEFORE INSERT ON ESTRUCTURA_ORDENES
REFERENCING NEW AS N 
FOR EACH ROW
MODE DB2SQL

BEGIN ATOMIC

IF (SELECT MAESTRO_DE_ARTICULOS.UNIDAD_INTERNA
    FROM MAESTRO_DE_ARTICULOS 
    WHERE MAESTRO_DE_ARTICULOS.CODIGO_ARTICULO=COMPONENTE)=1
  THEN SET N.CANTIDAD=ROUND(N.CANTIDAD,0);
END IF;
END;

La estructura es fácil, antes de escribir en la tabla, si el componente es de tipo “unidades” aplico un redondeo a la cantidad. De forma que cuando el dato llegue a la tabla es como si el sistema lo hubiese lanzado ya redondeado.

La pregunta sería  ¿Y por qué no crea un segundo trigger para cuando modifiquen datos? porque la operativa de geinfor es siempre la de crear el registro nuevo, con lo que un Before Update o un After Update, aunque estuviesen definidos, no se ejecutarían nunca al cambiar las unidades

Espero que os sea útil, suscribiros para que os lleguen avisos de la próxima entrada y no dudéis en comentar o mandar un mensaje con cualquier consulta, aportación o inquietud que tengáis…

… y si algo sale mal… La Culpa de Sistemas 😉

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.