[Home] [Help]
PACKAGE BODY: APPS.PSB_WS_LINE_PERIOD_L_PVT
Source
1 PACKAGE BODY PSB_WS_LINE_PERIOD_L_PVT AS
2 /* $Header: PSBWLPLB.pls 120.2 2005/07/13 11:35:00 shtripat ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30):= 'PSB_WS_LINE_PERIOD_L_PVT';
5
6
7
8 /*==========================================================================+
9 | PROCEDURE Lock_Row |
10 +==========================================================================*/
11
12 PROCEDURE Lock_Row
13 (
14 p_api_version IN NUMBER,
15 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
16 p_commit IN VARCHAR2 := FND_API.G_FALSE,
17 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
18 p_return_status OUT NOCOPY VARCHAR2,
19 p_msg_count OUT NOCOPY NUMBER,
20 p_msg_data OUT NOCOPY VARCHAR2,
21 --
22 p_row_locked OUT NOCOPY VARCHAR2,
23 p_service_package_id IN NUMBER,
24 --
25 p_column_count IN NUMBER,
26 --
27 p_wal_id IN NUMBER,
28 p_year_type IN VARCHAR2,
29 p_balance_type IN VARCHAR2,
30 --
31 p_ytd_amount IN NUMBER,
32 p_amount_P1 IN NUMBER,
33 p_amount_P2 IN NUMBER,
34 p_amount_P3 IN NUMBER,
35 p_amount_P4 IN NUMBER,
36 p_amount_P5 IN NUMBER,
37 p_amount_P6 IN NUMBER,
38 p_amount_P7 IN NUMBER,
39 p_amount_P8 IN NUMBER,
40 p_amount_P9 IN NUMBER,
41 p_amount_P10 IN NUMBER,
42 p_amount_P11 IN NUMBER,
43 p_amount_P12 IN NUMBER
44 )
45 IS
46 --
47 l_api_name CONSTANT VARCHAR2(30) := 'Lock_Row';
48 l_api_version CONSTANT NUMBER := 1.0;
49
50 --
51
52 Counter NUMBER;
53 CURSOR C IS
54 SELECT account_line_id
55 FROM psb_ws_account_lines
56 WHERE account_line_id = p_wal_id
57 FOR UPDATE of ytd_amount NOWAIT;
58 Recinfo C%ROWTYPE;
59
60 BEGIN
61 --
62 SAVEPOINT Lock_Row_Pvt ;
63 --
64 IF NOT FND_API.Compatible_API_Call ( l_api_version,
65 p_api_version,
66 l_api_name,
67 G_PKG_NAME )
68 THEN
69 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
70 END IF;
71 --
72
73 IF FND_API.to_Boolean ( p_init_msg_list ) THEN
74 FND_MSG_PUB.initialize ;
75 END IF;
76 --
77 p_row_locked := FND_API.G_TRUE;
78 p_return_status := FND_API.G_RET_STS_SUCCESS ;
79 --
80 -- amount types can be B-Budget, A-Actuals, E- Estimate, F -FTE
81 -- Create new rows only for current and proposed years
82 -- and only when amount type is not FTE
83 IF p_balance_type = 'E' THEN
84
85 OPEN C;
86 --
87 FETCH C INTO Recinfo;
88 IF (C%NOTFOUND) then
89 CLOSE C;
90 FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
91 FND_MSG_PUB.Add;
92 RAISE FND_API.G_EXC_ERROR ;
93 END IF;
94 CLOSE C;
95
96 -- Check for amount change removed for performance reasons
97
98 END IF;
99 --
100 IF FND_API.To_Boolean ( p_commit ) THEN
101 COMMIT WORK;
102 END iF;
103 --
104 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
105 p_data => p_msg_data );
106 --
107 EXCEPTION
108 --
109
110 WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
111 ROLLBACK TO Lock_Row_Pvt ;
112 p_row_locked := FND_API.G_FALSE;
113 p_return_status := FND_API.G_RET_STS_ERROR;
114 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
115 p_data => p_msg_data );
116
117
118 WHEN FND_API.G_EXC_ERROR THEN
119 --
120 ROLLBACK TO Lock_Row_Pvt ;
121 p_return_status := FND_API.G_RET_STS_ERROR;
122
123 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
124 p_data => p_msg_data );
125 --
126 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
127 --
128 ROLLBACK TO Lock_Row_Pvt ;
129 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
130 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
131 p_data => p_msg_data );
132 --
133 WHEN OTHERS THEN
134 --
135 ROLLBACK TO Lock_Row_Pvt ;
136 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
137 --
138 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
139 FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
140 l_api_name);
141 END if;
142 --
143 FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
144 p_data => p_msg_data );
145 --
146 END Lock_Row;
147 /* ----------------------------------------------------------------------- */
148
149 END PSB_WS_LINE_PERIOD_L_PVT;