/************************************************************/
/* Primero agregamos una nueva columna donde se registrara el
monto del descuento por línea de orden de compra */
alter table c_orderline add monto_descuento numeric default 0;
/************************************************************/
/* creamos la funcion que nos actualizara el subtotal al momento
de insertar o actualizar una linea de compra */
CREATE OR REPLACE FUNCTION sp_actualizar_compra() RETURNS TRIGGER AS $$
BEGIN
-- Aplicamos el monto de descuento para cada subtotal de la orden de compra
update c_orderline set linenetamt =
case
when c_orderline.qtyordered > 0 then
(c_orderline.qtyordered * c_orderline.priceactual) - monto_descuento
else
(c_orderline.qtyordered * c_orderline.priceactual)
end
where c_order_id = new.c_order_id;
-- Actualizamos el monto total de la orden de compra
NEW.totallines = (select sum(ol.linenetamt) from c_orderline ol where ol.c_order_id = NEW.c_order_id);
NEW.grandtotal = (select sum(ol.linenetamt) from c_orderline ol where ol.c_order_id = NEW.c_order_id);
return new;
END;
$$ LANGUAGE plpgsql;
/************************************************************/
/* creamos el trigger sobre la tabla linea de orden de compra */
CREATE TRIGGER actualizar_compra
BEFORE UPDATE ON c_order
FOR EACH ROW EXECUTE PROCEDURE sp_actualizar_compra();
/************************************************************/
Ahora entramos al adempiere como System Administrator y agregamos un nuevo elemento en Menu > Diccionario de la Aplicación > Elemento
El siguiente paso es entrar al Menu > Diccionario de la Aplicación > Tabla y Columna, y agregar una nueva columna en la tabla C_OrderLine, como se muestra en la siguiente imagen:
Finalmente, el último paso es agregar un nuevo campo en la opción Menu > Diccionario de la Aplicación > Ventana, Pestaña y Campo, como se muestra en la siguiente imagen:
Para que esto sea funcional desde la orden de compra hasta los pagos y recaudos es necesario también aplicar el mismo procedimiento para las facturas, aqui les dejo el enlace:
Cualquier duda o sugerencia, puedes a escribir:
ingenierojosefrancisco@gmail.com
No hay comentarios:
Publicar un comentario