DBA Data[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;