miércoles, 14 de diciembre de 2011

Descuento en la orden de compra


/************************************************************/

/* 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