DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGI_IAC_SALVAGE_PKG

Source


1 Package Body IGI_IAC_SALVAGE_PKG AS
2 -- $Header: igiiascb.pls 120.3.12010000.2 2010/06/24 17:38:40 schakkin ship $
3 
4    --===========================FND_LOG.START=====================================
5 
6    g_state_level NUMBER	        :=	FND_LOG.LEVEL_STATEMENT;
7    g_proc_level  NUMBER	        :=	FND_LOG.LEVEL_PROCEDURE;
8    g_event_level NUMBER	        :=	FND_LOG.LEVEL_EVENT;
9    g_excep_level NUMBER	        :=	FND_LOG.LEVEL_EXCEPTION;
10    g_error_level NUMBER	        :=	FND_LOG.LEVEL_ERROR;
11    g_unexp_level NUMBER	        :=	FND_LOG.LEVEL_UNEXPECTED;
12    g_path        VARCHAR2(100)  :=      'IGI.PLSQL.igiiascb.igi_iac_salvage_pkg.';
13 
14    --===========================FND_LOG.END=====================================
15 
16    PROCEDURE do_round ( p_amount in out NOCOPY number, p_book_type_code in varchar2) is
17       l_path varchar2(150) := g_path||'do_round(p_amount,p_book_type_code)';
18       l_amount number     := p_amount;
19       l_amount_old number := p_amount;
20       --l_path varchar2(150) := g_path||'do_round';
21     begin
22         igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'--- Inside Round() ---');
23        IF IGI_IAC_COMMON_UTILS.Iac_Round(X_Amount => l_amount, X_Book => p_book_type_code)
24        THEN
25           p_amount := l_amount;
26           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'IGI_IAC_COMMON_UTILS.Iac_Round is TRUE');
27           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'p_amount = '||p_amount);
28        ELSE
29           p_amount := round( l_amount, 2);
30           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'IGI_IAC_COMMON_UTILS.Iac_Round is FALSE');
31           igi_iac_debug_pkg.debug_other_string(g_state_level,l_path,'p_amount = '||p_amount);
32        END IF;
33     exception when others then
34       p_amount := l_amount_old;
35       igi_iac_debug_pkg.debug_unexpected_msg(l_path);
36       Raise;
37    END;
38 
39     FUNCTION Correction
40           (P_asset_id        IN igi_iac_asset_balances.asset_id%TYPE,
41            P_book_type_code  IN igi_iac_asset_balances.book_type_code%TYPE,
42            P_value           IN OUT NOCOPY Number,
43            P_cost            IN Fa_books.cost%TYPE,
44            P_salvage_value   IN fa_books.salvage_value%TYPE,
45            p_calling_program    VARCHAR2)
46     RETURN  Boolean IS
47 
48     	-- to get latest cost and salvage value for an asset
49 	    CURSOR C_get_asset_info IS
50     	SELECT cost, salvage_value
51 	    FROM FA_BOOKS
52     	WHERE Asset_id=P_Asset_id
53 	    AND book_type_Code =p_book_type_code
54     	AND transaction_header_id_out IS NULL;
55 
56         l_cost fa_books.cost%TYPE;
57         l_salvage_value fa_books.salvage_value%TYPE;
58         err_asset_info    EXCEPTION;
59         l_path_name VARCHAR2(150) := g_path||'correction';
60 
61    BEGIN
62          igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
63 		             p_full_path => l_path_name,
64 		             p_string => 'Parameter values Asset ID..'||p_asset_id );
65          igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
66 		             p_full_path => l_path_name,
67 		             p_string => 'Parameter values Book Type Code..'||P_book_type_code);
68          igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
69 		             p_full_path => l_path_name,
70 		             p_string => 'Parameter values Cost'||P_cost);
71          igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
72 		             p_full_path => l_path_name,
73 		             p_string => 'Parameter values salavge Value'||P_salvage_value);
74          igi_iac_debug_pkg.debug_other_string(p_level => g_state_level,
75 		             p_full_path => l_path_name,
76 		             p_string => 'Parameter values Value to be corrected'||P_value);
77 
78         IF P_salvage_value = 0 THEN
79             RETURN TRUE;
80         ELSIF P_Salvage_Value IS NULL THEN
81         	-- Get the latest cost and salvage value
82             OPEN c_get_asset_info;
83             FETCH c_get_asset_info  INTO l_cost,l_salvage_value;
84             IF c_get_asset_info%NOTFOUND THEN
85                 	 CLOSE c_get_asset_info;
86                      RAISE  err_asset_info;
87             END IF;
88           	 CLOSE c_get_asset_info;
89 
90              P_value := p_value + (P_value/(l_cost-l_Salvage_value))*l_salvage_value;
91 	     do_round(p_value,P_book_type_code);
92 
93              RETURN TRUE;
94 
95         END IF;
96 
97 
98         P_value := p_value + (P_value/(P_cost- P_Salvage_value))*P_salvage_value;
99 	do_round(p_value,P_book_type_code);
100 
101         RETURN TRUE;
102 
103     EXCEPTION
104         WHEN err_asset_info THEN
105             FND_MESSAGE.SET_NAME('IGI', 'IGI_IAC_EXCEPTION');
106             FND_MESSAGE.SET_TOKEN('PACKAGE','igi_iac_salvage_pkg');
107             FND_MESSAGE.SET_TOKEN('ERROR_MESSAGE','Error in fetching latest cost and salvage value for the asset', TRUE);
108             igi_iac_debug_pkg.debug_other_msg(p_level => g_error_level,
109 		          p_full_path => l_path_name,
110 		          p_remove_from_stack => FALSE);
111             fnd_file.put_line(fnd_file.log, fnd_message.get);
112             RETURN FALSE;
113         WHEN others THEN
114              igi_iac_debug_pkg.debug_unexpected_msg(p_full_path => l_path_name);
115              RETURN FALSE;
116 
117 END correction;
118 
119 END igi_iac_salvage_pkg;
120 
121