x
1
DECLARE
2
v_balance NUMERIC;
3
v_AccountType C_ElementValue.AccountType%TYPE;
4
v_AccountSign C_ElementValue.AccountSign%TYPE;
5
6
BEGIN
7
v_balance := p_AmtDr - p_AmtCr;
8
--
9
IF (p_Account_ID > 0) THEN
10
SELECT AccountType, AccountSign
11
INTO v_AccountType, v_AccountSign
12
FROM C_ElementValue
13
WHERE C_ElementValue_ID=p_Account_ID;
14
-- DBMS_OUTPUT.PUT_LINE('Type=' || v_AccountType || ' - Sign=' || v_AccountSign);
15
-- Natural Account Sign
16
IF (v_AccountSign='N') THEN
17
IF (v_AccountType IN ('A','E')) THEN
18
v_AccountSign := 'D';
19
ELSE
20
v_AccountSign := 'C';
21
END IF;
22
-- DBMS_OUTPUT.PUT_LINE('Type=' || v_AccountType || ' - Sign=' || v_AccountSign);
23
END IF;
24
-- Debit Balance
25
IF (v_AccountSign = 'C') THEN
26
v_balance := p_AmtCr - p_AmtDr;
27
END IF;
28
END IF;
29
--
30
RETURN v_balance;
31
EXCEPTION WHEN OTHERS THEN
32
-- In case Acct not found
33
RETURN p_AmtDr - p_AmtCr;
34
35
END;