[Home] [Help]
PACKAGE BODY: APPS.PA_FAXFACE_RET_PVT
Source
1 PACKAGE BODY PA_FAXFACE_RET_PVT AS
2 /* $Header: PACXFRCB.pls 115.2 2003/08/18 14:31:37 ajdas noship $ */
3
4
5 PROCEDURE INTERFACE_RET_COST_ADJ_LINE
6 (x_project_asset_line_id IN NUMBER,
7 x_msg_data OUT NOCOPY VARCHAR2,
8 x_err_stage IN OUT NOCOPY VARCHAR2,
9 x_err_code IN OUT NOCOPY NUMBER) IS
10
11
12 CURSOR ret_adj_target_cur IS
13 SELECT ppa.project_asset_id,
14 ppa.book_type_code,
15 ppa.ret_target_asset_id,
16 ppa.fa_period_name,
17 pal.cip_ccid rwip_ccid,
18 pal.current_asset_cost rwip_amount,
19 pal.retirement_cost_type
20 FROM pa_project_assets ppa,
21 pa_project_asset_lines pal
22 WHERE ppa.project_asset_id = pal.project_asset_id
23 AND pal.project_asset_line_id = x_project_asset_line_id;
24
25 ret_adj_target_rec ret_adj_target_cur%ROWTYPE;
26
27
28 v_user NUMBER := FND_GLOBAL.user_id;
29 v_login NUMBER := FND_GLOBAL.login_id;
30 v_request_id NUMBER := FND_GLOBAL.conc_request_id;
31 v_program_application_id NUMBER := FND_GLOBAL.prog_appl_id;
32 v_program_id NUMBER := FND_GLOBAL.conc_program_id;
33
34 v_fa_period_posted PA_PROJECT_ASSETS_ALL.fa_period_name%TYPE;
35 v_set_of_books_id NUMBER;
36 v_proceeds NUMBER := 0;
37 v_proceeds_ccid NUMBER := NULL;
38 v_cost_of_removal NUMBER := 0;
39 v_cost_of_removal_ccid NUMBER := NULL;
40 v_return_status VARCHAR2(1) := NULL;
41 v_msg_count NUMBER := 0;
42 v_msg_data VARCHAR2(2000) := NULL;
43 v_trans_rec FA_API_TYPES.trans_rec_type;
44 v_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
45
46 unexp_error_in_api_call EXCEPTION;
47
48
49 BEGIN
50 --Initialize variables
51 x_err_code := 0;
52 x_msg_data := NULL;
53 x_err_stage := 'Entering Interface Retirement Cost Adjustment Lines';
54 v_fa_period_posted := NULL;
55
56
57 FOR ret_adj_target_rec IN ret_adj_target_cur LOOP
58
59 /* Removing this, we do not need to specify the Set of Books, FA derives it internally
60
61 --Obtain valid Set of Books based on Book Type Code and Implementation Options (these must agree)
62 SELECT fb.set_of_books_id
63 INTO v_set_of_books_id
64 FROM fa_book_controls fb,
65 pa_implementations pi
66 WHERE fb.set_of_books_id = pi.set_of_books_id
67 AND fb.book_type_code = ret_adj_target_rec.book_type_code;
68 */
69
70
71 --Format API Parameter Records
72 v_asset_hdr_rec.asset_id := ret_adj_target_rec.ret_target_asset_id;
73 v_asset_hdr_rec.book_type_code := ret_adj_target_rec.book_type_code;
74
75 -- These two parameters should be left NULL according to FA
76 v_asset_hdr_rec.set_of_books_id := NULL;
77 v_asset_hdr_rec.period_of_addition := NULL;
78
79
80 --Populate line amounts and RWIP CCIDs
81 IF ret_adj_target_rec.retirement_cost_type = 'COR' THEN
82
83 --Amounts are Costs of Removal
84 v_cost_of_removal := ret_adj_target_rec.rwip_amount;
85 v_cost_of_removal_ccid := ret_adj_target_rec.rwip_ccid;
86 v_proceeds := NULL;
87 v_proceeds_ccid := NULL;
88
89 ELSIF ret_adj_target_rec.retirement_cost_type = 'POS' THEN
90
91 --Amounts are Proceeds of Sale
92
93 --Proceeds amounts are credits in PA, and hence we must send the value * (-1)
94 --Absolute value is not appropriate, in case we have an adjustment to a POS amount,
95 --which would be positive in PA and should be sent to FA as a negative.
96 v_proceeds := (-1)*ret_adj_target_rec.rwip_amount;
97
98 v_proceeds_ccid := ret_adj_target_rec.rwip_ccid;
99 v_cost_of_removal := NULL;
100 v_cost_of_removal_ccid := NULL;
101
102 END IF;
103
104
105 --Execute Group Retirement Cost Adjustment API
106
107 FA_RETIREMENT_ADJUSTMENT_PUB.do_retirement_adjustment
108 (p_api_version => 1.0, --IN NUMBER,
109 p_init_msg_list => FND_API.G_FALSE, --IN VARCHAR2 := FND_API.G_FALSE,
110 p_commit => FND_API.G_FALSE, --IN VARCHAR2 := FND_API.G_FALSE,
111 p_validation_level => FND_API.G_VALID_LEVEL_FULL, --IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
112 p_calling_fn => 'PA_FAXFACE.INTERFACE_RET_ASSET_LINES',
113 x_return_status => v_return_status, -- OUT NOCOPY VARCHAR2,
114 x_msg_count => v_msg_count, -- OUT NOCOPY NUMBER,
115 x_msg_data => v_msg_data, -- OUT NOCOPY VARCHAR2,
116 px_trans_rec => v_trans_rec, --IN OUT NOCOPY FA_API_TYPES.trans_rec_type,
117 px_asset_hdr_rec => v_asset_hdr_rec, --IN OUT NOCOPY FA_API_TYPES.asset_hdr_rec_type,
118 p_cost_of_removal => v_cost_of_removal, --IN NUMBER,
119 p_proceeds => v_proceeds, --IN NUMBER,
120 p_cost_of_removal_ccid => v_cost_of_removal_ccid, --IN NUMBER DEFAULT NULL,
121 p_proceeds_ccid => v_proceeds_ccid --IN NUMBER DEFAULT NULL
122 );
123
124
125 IF v_return_status = 'S' THEN
126
127 --Get Period Posted for Successful Transactions
128 SELECT period_name
129 INTO v_fa_period_posted
130 FROM fa_deprn_periods
131 WHERE book_type_code = v_asset_hdr_rec.book_type_code
132 AND v_trans_rec.who_info.last_update_date --Transaction date_effective as per BRIDGWAY
133 BETWEEN period_open_date AND NVL(period_close_date, SYSDATE);
134
135 --Update project asset line with FA Period Posted and Txn ID
136 UPDATE pa_project_asset_lines
137 SET fa_period_name = v_fa_period_posted,
138 ret_adjustment_txn_id = v_trans_rec.transaction_header_id,
139 last_update_date = SYSDATE,
140 last_updated_by = v_user,
141 last_update_login = v_login,
142 request_id = v_request_id,
143 program_application_id = v_program_application_id,
144 program_id = v_program_id,
145 program_update_date = SYSDATE
146 WHERE project_asset_line_id = x_project_asset_line_id;
147
148 --Update project asset with FA Period Posted, if field is currently NULL (first line posted for asset)
149 IF ret_adj_target_rec.fa_period_name IS NULL THEN
150
151 UPDATE pa_project_assets
152 SET fa_period_name = v_fa_period_posted,
153 last_update_date = SYSDATE,
154 last_updated_by = v_user,
155 last_update_login = v_login,
156 request_id = v_request_id,
157 program_application_id = v_program_application_id,
158 program_id = v_program_id,
159 program_update_date = SYSDATE
160 WHERE project_asset_id = ret_adj_target_rec.project_asset_id;
161
162 END IF;
163
164 RETURN;
165
166 ELSIF v_return_status = 'E' THEN
167
168 FND_FILE.PUT_LINE(FND_FILE.LOG,'Error in FA_RETIREMENT_ADJUSTMENT_PUB.do_retirement_adjustment for asset line:'||x_project_asset_line_id);
169 FND_FILE.PUT_LINE(FND_FILE.LOG,v_msg_data);
170
171 --Reject Unsucsessful Transactions
172 x_err_code := 500;
173 x_msg_data := v_msg_data;
174 RETURN;
175
176 ELSIF v_return_status = 'U' THEN
177
178 --Raise Unexpected Error
179 RAISE unexp_error_in_api_call;
180 END IF;
181
182 END LOOP;
183
184
185 EXCEPTION
186 WHEN unexp_error_in_api_call THEN
187 FND_FILE.PUT_LINE(FND_FILE.LOG,'Unexpected error in FA_RETIREMENT_ADJUSTMENT_PUB.do_retirement_adjustment.');
188 FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error: '||SQLCODE||' '||SQLERRM);
189 FND_FILE.PUT_LINE(FND_FILE.LOG,v_msg_data);
190 x_err_code := SQLCODE;
191 x_msg_data := v_msg_data;
192 RAISE;
193
194 WHEN OTHERS THEN
195 FND_FILE.PUT_LINE(FND_FILE.LOG,'Unexpected error in Interface Ret Cost Adj Line.');
196 FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error: '||SQLCODE||' '||SQLERRM);
197 x_err_code := SQLCODE;
198 RAISE;
199
200 END INTERFACE_RET_COST_ADJ_LINE;
201
202 END PA_FAXFACE_RET_PVT;