Professional Documents
Culture Documents
8) */
CREATE OR REPLACE PROCEDURE erp.prc_virmnt_rokka_log_req (
p_dml_oper IN VARCHAR2
)
IS
TYPE frm_virmntrec IS RECORD ( --RECORD TYPE DECLARE
vsno NUMBER,
from_ministry_code VARCHAR2 (100),
from_project_code VARCHAR2 (100),
from_sub_project_code VARCHAR2 (100),
from_economic_code5 VARCHAR2 (100),
deducted_amount NUMBER (10, 2)
);
BEGIN
v_dml_oper := UPPER (TRIM (p_dml_oper));
SELECT serial_no,
from_ministry_code,
from_project_code,
from_sub_project_code,
from_economic_code5,
deducted_amount
BULK COLLECT INTO v_frm_rectyp
FROM lmbs_frm_tmp_virmnt_roka_act
ORDER BY serial_no ASC;
SELECT b.serial_no,
b.to_ministry_code,
b.to_project_code,
b.to_sub_project_code,
b.to_economic_code5,
b.added_amount
BULK COLLECT INTO v_to_rectyp
FROM lmbs_to_tmp_virmnt_roka_act b
ORDER BY serial_no ASC;
IF v_dml_oper = 'INS'
THEN
-- v_totaddamt:=v_frm_rectyp(0).added_amount;
c_count1 :=v_frm_rectyp.count;
c_count2 :=v_to_rectyp.count;
if c_count1>c_count2 then
c_count3:=c_count1;
else
c_count3:=c_count2;
end if;
FOR i IN 1 .. c_count3
LOOP
-- if nvl(v_totaddamt,0)=0 then
-- v_totaddamt:=v_to_rectyp(i).added_amount;
-- end if;
IF v_balance > 0
THEN
INSERT INTO lmbis_virement_rokka_act_log
(from_ministry_code, deducted_amount,
to_ministry_code,
added_amount,
from_project_code,
from_sub_project_code,
from_economic_code5,
to_project_code,
to_sub_project_code,
to_economic_code5
)
VALUES (v_frm_rectyp (i).from_ministry_code, v_balance,
v_to_rectyp (i + 1).to_ministry_code,
v_to_rectyp (i + 1).added_amount,
v_frm_rectyp (i).from_project_code,
v_frm_rectyp (i).from_sub_project_code,
v_frm_rectyp (i).from_economic_code5,
v_to_rectyp (i + 1).to_project_code,
v_to_rectyp (i + 1).to_sub_project_code,
v_to_rectyp (i + 1).to_economic_code5
);
-- v_balance:=v_balance - v_to_rectyp (i+1).added_amount;
END IF;
ELSIF (((v_frm_rectyp (i).deducted_amount + NVL (v_balance, 0))- NVL
(v_baladd, 0)) < v_to_rectyp(i).added_amount)
THEN
if((((v_frm_rectyp (i).deducted_amount + NVL (v_balance, 0))- NVL
(v_baladd, 0)))>0) then
INSERT INTO lmbis_virement_rokka_act_log
(from_ministry_code,
deducted_amount,
to_ministry_code,
added_amount,
from_project_code,
from_sub_project_code,
from_economic_code5,
to_project_code,
to_sub_project_code,
to_economic_code5
)
VALUES (v_frm_rectyp (i).from_ministry_code,
v_frm_rectyp (i).deducted_amount + NVL (v_balance, 0) -
NVL (v_baladd, 0),
v_to_rectyp (i).to_ministry_code,
v_to_rectyp (i).added_amount,
v_frm_rectyp (i).from_project_code,
v_frm_rectyp (i).from_sub_project_code,
v_frm_rectyp (i).from_economic_code5,
v_to_rectyp (i).to_project_code,
v_to_rectyp (i).to_sub_project_code,
v_to_rectyp (i).to_economic_code5
);
end if;
v_totaddamt:=v_frm_rectyp (i+1).deducted_amount ;
IF v_baladd > 0
THEN
if v_frm_rectyp (i+1).deducted_amount >v_baladd then
INSERT INTO lmbis_virement_rokka_act_log
(from_ministry_code, deducted_amount,
to_ministry_code,
added_amount,
from_project_code,
from_sub_project_code,
from_economic_code5,
to_project_code,
to_sub_project_code,
to_economic_code5
)
VALUES (v_frm_rectyp (i+1).from_ministry_code, v_baladd,
v_to_rectyp (i).to_ministry_code,
v_to_rectyp (i).added_amount,
v_frm_rectyp (i+1).from_project_code,
v_frm_rectyp (i+1).from_sub_project_code,
v_frm_rectyp (i+1).from_economic_code5,
v_to_rectyp (i).to_project_code,
v_to_rectyp (i).to_sub_project_code,
v_to_rectyp (i).to_economic_code5
);
else
-- v_baladd:= v_baladd -v_frm_rectyp (i).deducted_amount;
FOR k IN i+1 .. c_count3
loop
else
exit;
end if;
v_totaddamt:=v_totaddamt+ v_frm_rectyp (k).deducted_amount;
end loop;
end if;
END IF;
END IF;
COMMIT;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
p_success := 'N';
p_msg :=
'PKG_VIRMNT_ROKKA_ACT_DML.PRC_VIRMNT_ROKKA_ACT_LOG_DML(INS) '
|| SUBSTR (SQLERRM, 1, 200);
END;
/