abdeen-ahmad
12/10/2015 - 10:05 AM

formula to get (Net Amount) PO discount amount

formula to get (Net Amount) PO discount amount

pur_pkg.calc_net_amount(nvl(:pur_purchase_order_dtl.amount, 0),                                          
                                        case :pur_purchase_order_dtl.discount_calc_type 
                                        when 1 then
                                            nvl(:pur_purchase_order_dtl.item_discount_amount, 0)
                                        else
                                            nvl(:pur_purchase_order_dtl.discount_amount, 0)  -- direct
                                        end, 
                        nvl(:pur_purchase_order_dtl.item_po_discount_amount, 0))




--item_discount_amount
pur_pkg.calc_discount_amount(nvl(:pur_purchase_order_dtl.amount, 0), 
                             nvl(:pur_purchase_order_dtl.discount_percent, 0 ), 
                             nvl(:pur_purchase_order_dtl.discount_percent2, 0), 
                             nvl(:pur_purchase_order_dtl.discount_percent3,0))
                             
                             
--amount
:pur_purchase_order_dtl.qty * :pur_purchase_order_dtl.price
                             



--item_po_discount_amount
pur_pkg.calc_discount_amount_by_type(nvl(:pur_purchase_order_dtl.amount, 0), --t
                                     case :pur_purchase_order_dtl.discount_calc_type -- direct 
                                        when 1 then
                                            nvl(:pur_purchase_order_dtl.item_discount_amount, 0)
                                        else
                                            nvl(:pur_purchase_order_dtl.discount_amount, 0) --direct
                                        end, 
                                     :pur_purchase_orders.discount_calc_type,  --direct
                                     nvl(:pur_purchase_orders.discount_percent, 0), --direct
                                     nvl(:pur_purchase_orders.discount_amount, 0),  --direct
                                     nvl(:pur_purchase_order_dtl.amount_sum, 0))
                                     
                                     
--amount_sum
select sum(amount) from   pur_purchase_order_dtl
function CF_net_amtFormula return Number is
v_amount									number;
v_amount_sum							number;
v_item_discount_amount		number;
v_item_po_discount_amount	number;
v_net_amt									number;
begin

--amount
	v_amount:= :qty * :price;

--item_discount_amount
	v_item_discount_amount := pur_pkg.calc_discount_amount(nvl(v_amount, 0), 
	                             nvl(:discount_percent, 0 ), 
	                             nvl(:discount_percent2, 0), 
	                             nvl(:discount_percent3,0));
                            
 
 --amount_sum
 v_amount_sum := :sum_amount;



--item_po_discount_amount
	v_item_po_discount_amount := pur_pkg.calc_discount_amount_by_type(nvl(v_amount, 0), 
                                     case :discount_calc_type -- direct
                                        when 1 then
                                            nvl(v_item_discount_amount, 0)
                                        else
                                            nvl(:discount_amount, 0) --direct
                                        end, 
                                     :po_discount_calc_type,  --direct
                                     nvl(:po_discount_percent, 0), --direct
                                     nvl(:po_discount_amount, 0),  --direct
                                     nvl(v_amount_sum, 0));
                                     
--net_amt

	v_net_amt	 := pur_pkg.calc_net_amount(nvl(v_amount, 0),                                          
                                        case :discount_calc_type 
                                        when 1 then
                                            nvl(v_item_discount_amount, 0)
                                        else
                                            nvl(:discount_amount, 0)  -- direct
                                        end, 
                        nvl(v_item_po_discount_amount, 0));
    return v_net_amt;                                                                

end;