DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSD_REPAIRS_PUB

Source


1 PACKAGE BODY CSD_REPAIRS_PUB as
2     /* $Header: csdpdrab.pls 120.12.12010000.3 2008/12/18 18:45:52 swai ship $ */
3     /*#
4     * This is the public interface for the Depot Repair API.  It allows
5     * execution of various Depot Repair APIs.
6     * @rep:scope public
7     * @rep:product CSD
8     * @rep:displayname Depot Repair APIs
9     * @rep:lifecycle active
10     * @rep:category BUSINESS_ENTITY CSD_REPAIR_ORDER
11     */
12     --
13     -- Package name     : CSD_REPAIRS_PUB
14     -- Purpose          : This package contains the public APIs for creating
15     --                    and updating repair orders.
16     -- History          :
17     -- Version       Date       Name        Description
18     -- 115.0         11/17/99   pkdas       Created.
19     -- 115.1         12/18/99   pkdas
20     -- 115.2         01/04/00   pkdas
21     -- 115.3         02/09/00   pkdas       Added p_REPAIR_LINE_ID as IN parameter in the
22     --                                      Create_Repairs procedure.
23     --                                      Added p_REPAIR_NUMBER as OUT parameter in the
24     --                                      Create_Repairs procedure.
25     -- 115.4         02/29/00   pkdas       Changed the procedure name
26     --                                      Create_Repairs -> Create_Repair_Order
27     --                                      Update_Repairs -> Update_Repair_Order
28     --                                      Added p_validation_level to Create_Repair_Order and
29     --                                      Update_Repair_Order
30     --
31     -- NOTE             :
32     --
33     G_PKG_NAME  CONSTANT VARCHAR2(30) := 'CSD_REPAIRS_PUB';
34     G_FILE_NAME CONSTANT VARCHAR2(12) := 'csdpdrab.pls';
35     g_debug NUMBER := csd_gen_utility_pvt.g_debug_level;
36     --
37     /*#
38     * Create Repair Order
39     * @param P_Api_Version_Number api version number
40     * @param P_Init_Msg_List initial the message stack, default to false
41     * @param P_Commit to decide whether to commit the transaction or not, default to false
42     * @param p_validation_level validation level, default to full level
43     * @param p_repair_line_id repair line id is unique id
44     * @param P_REPLN_Rec repiar line record
45     * @param p_create_default_logistics flag to create logistics lines, default to N
46     * @param X_REPAIR_LINE_ID repair line id of the created repair order
47     * @param X_REPAIR_NUMBER repair number of the created repair order which display on Depot UI
48     * @param X_Return_Status return status
49     * @param X_Msg_Count return message count
50     * @param X_Msg_Data return message data
51     * @rep:scope public
52     * @rep:lifecycle active
53     * @rep:displayname Create Repair Order
54     */
55     PROCEDURE Create_Repair_Order(P_Api_Version_Number IN NUMBER,
56                                   P_Init_Msg_List      IN VARCHAR2 := FND_API.G_FALSE,
57                                   P_Commit             IN VARCHAR2 := FND_API.G_FALSE,
58                                   p_validation_level   IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
59                                   P_REPAIR_LINE_ID     IN NUMBER := FND_API.G_MISS_NUM,
60                                   P_REPLN_Rec          IN CSD_REPAIRS_PUB.REPLN_Rec_Type,
61                                   p_create_default_logistics   IN VARCHAR2 := 'N',
62                                   X_REPAIR_LINE_ID     OUT NOCOPY NUMBER,
63                                   X_REPAIR_NUMBER      OUT NOCOPY VARCHAR2,
64                                   X_Return_Status      OUT NOCOPY VARCHAR2,
65                                   X_Msg_Count          OUT NOCOPY NUMBER,
66                                   X_Msg_Data           OUT NOCOPY VARCHAR2) IS
67         --
68         l_api_name           CONSTANT VARCHAR2(30) := 'Create_Repair_Order';
69         l_api_version_number CONSTANT NUMBER := 1.0;
70         --
71 
72         -- swai: 12.1.1 bug 7176940 service bulletin check
73         l_ro_sc_ids_tbl CSD_RO_BULLETINS_PVT.CSD_RO_SC_IDS_TBL_TYPE;
74         l_return_status                 VARCHAR2 (1) ;
75         l_msg_count                     NUMBER;
76         l_msg_data                      VARCHAR2 (2000);
77     BEGIN
78         --
79         -- Standard Start of API savepoint
80         SAVEPOINT CREATE_REPAIR_ORDER_PUB;
81         -- Standard call to check for call compatibility.
82         IF NOT FND_API.Compatible_API_Call(l_api_version_number,
83                                            p_api_version_number,
84                                            l_api_name,
85                                            G_PKG_NAME)
86         THEN
87             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
88         END IF;
89         -- Initialize message list if p_init_msg_list is set to TRUE.
90         IF FND_API.to_Boolean(p_init_msg_list)
91         THEN
92             FND_MSG_PUB.initialize;
93         END IF;
94         -- Initialize API return status to success
95         x_return_status := FND_API.G_RET_STS_SUCCESS;
96         --
97         -- API body
98         --
99         CSD_REPAIRS_PVT.Create_Repair_Order(P_Api_Version_Number => 1.0,
100                                             P_Init_Msg_List      => p_init_msg_list,
101                                             P_Commit             => p_commit,
102                                             P_Validation_Level   => p_validation_level,
103                                             P_REPAIR_LINE_ID     => p_REPAIR_LINE_ID,
104                                             P_REPLN_Rec          => p_REPLN_Rec,
105                                             X_REPAIR_LINE_ID     => x_REPAIR_LINE_ID,
106                                             X_REPAIR_NUMBER      => x_REPAIR_NUMBER,
107                                             X_Return_Status      => x_return_status,
108                                             X_Msg_Count          => x_msg_count,
109                                             X_Msg_Data           => x_msg_data);
110         --
111         -- Check return status from the above procedure call
112         IF not (x_return_status = FND_API.G_RET_STS_SUCCESS)
113         then
114             ROLLBACK TO CREATE_REPAIR_ORDER_PUB;
115             return;
116         END IF;
117 
118         IF (P_CREATE_DEFAULT_LOGISTICS = 'Y') THEN
119 
120            CSD_LOGISTICS_PVT.Create_Default_Logistics
121            (     p_api_version        =>    P_Api_Version_Number,
122                  p_commit             =>    P_Commit,
123                  p_init_msg_list      =>    P_Init_Msg_List,
124                  p_validation_level   =>    p_validation_level,
125                  p_repair_line_id     =>    X_REPAIR_LINE_ID, -- swai: bug 7654143
126                  x_return_status      =>    X_Return_Status,
127                  x_msg_count          =>    X_Msg_Count,
128                  x_msg_data           =>    X_Msg_Data
129            );
130 
131            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
132               RAISE FND_API.G_EXC_ERROR;
133            END IF;
134 
135         END IF;
136 
137         -- swai: 12.1.1 bug 7176940 - check service bulletins after RO creation
138         IF (nvl(fnd_profile.value('CSD_AUTO_CHECK_BULLETINS'),'N') = 'Y') THEN
139             CSD_RO_BULLETINS_PVT.LINK_BULLETINS_TO_RO(
140                p_api_version_number         => 1.0,
141                p_init_msg_list              => Fnd_Api.G_FALSE,
142                p_commit                     => Fnd_Api.G_FALSE,
143                p_validation_level           => Fnd_Api.G_VALID_LEVEL_FULL,
144                p_repair_line_id             => x_repair_line_id,
145                px_ro_sc_ids_tbl             => l_ro_sc_ids_tbl,
146                x_return_status              => l_return_status,
147                x_msg_count                  => l_msg_count,
148                x_msg_data                   => l_msg_data
149             );
150             -- ignore return status for now.
151         END IF;
152 
153         --
154         -- End of API body.
155         --
156         -- Standard check for p_commit
157         IF FND_API.to_Boolean(p_commit)
158         THEN
159             COMMIT WORK;
160         END IF;
161         -- Standard call to get message count and if count is 1, get message info.
162         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count,
163                                   p_data  => x_msg_data);
164         --
165     EXCEPTION
166         WHEN FND_API.G_EXC_ERROR THEN
167             JTF_PLSQL_API.HANDLE_EXCEPTIONS(P_API_NAME        => L_API_NAME,
168                                             P_PKG_NAME        => G_PKG_NAME,
169                                             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
170                                             P_PACKAGE_TYPE    => JTF_PLSQL_API.G_PUB,
171                                             X_MSG_COUNT       => X_MSG_COUNT,
172                                             X_MSG_DATA        => X_MSG_DATA,
173                                             X_RETURN_STATUS   => X_RETURN_STATUS);
174             --   RAISE;
175         --
176         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
177             JTF_PLSQL_API.HANDLE_EXCEPTIONS(P_API_NAME        => L_API_NAME,
178                                             P_PKG_NAME        => G_PKG_NAME,
179                                             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
180                                             P_PACKAGE_TYPE    => JTF_PLSQL_API.G_PUB,
181                                             X_MSG_COUNT       => X_MSG_COUNT,
182                                             X_MSG_DATA        => X_MSG_DATA,
183                                             X_RETURN_STATUS   => X_RETURN_STATUS);
184             --   RAISE;
185         --
186         WHEN OTHERS THEN
187             JTF_PLSQL_API.HANDLE_EXCEPTIONS(P_API_NAME        => L_API_NAME,
188                                             P_PKG_NAME        => G_PKG_NAME,
189                                             P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS,
190                                             P_PACKAGE_TYPE    => JTF_PLSQL_API.G_PUB,
191                                             X_MSG_COUNT       => X_MSG_COUNT,
192                                             X_MSG_DATA        => X_MSG_DATA,
193                                             X_RETURN_STATUS   => X_RETURN_STATUS);
194             --   RAISE;
195         --
196     End Create_Repair_Order;
197 
198     PROCEDURE Update_Repair_Order(P_Api_Version_Number IN NUMBER,
199                                   P_Init_Msg_List      IN VARCHAR2 := FND_API.G_FALSE,
200                                   P_Commit             IN VARCHAR2 := FND_API.G_FALSE,
201                                   p_validation_level   IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
202                                   p_REPAIR_LINE_ID     IN NUMBER,
203                                   P_REPLN_Rec          IN OUT NOCOPY CSD_REPAIRS_PUB.REPLN_Rec_Type,
204                                   X_Return_Status      OUT NOCOPY VARCHAR2,
205                                   X_Msg_Count          OUT NOCOPY NUMBER,
206                                   X_Msg_Data           OUT NOCOPY VARCHAR2) IS
207         --
208         l_api_name           CONSTANT VARCHAR2(30) := 'Update_Repair_Order';
209         l_api_version_number CONSTANT NUMBER := 1.0;
210         --
211     BEGIN
212         --
213         -- Standard Start of API savepoint
214         SAVEPOINT UPDATE_REPAIR_ORDER_PUB;
215         -- Standard call to check for call compatibility.
216         IF NOT FND_API.Compatible_API_Call(l_api_version_number,
217                                            p_api_version_number,
218                                            l_api_name,
219                                            G_PKG_NAME)
220         THEN
221             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
222         END IF;
223         -- Initialize message list if p_init_msg_list is set to TRUE.
224         IF FND_API.to_Boolean(p_init_msg_list)
225         THEN
226             FND_MSG_PUB.initialize;
227         END IF;
228         -- Initialize API return status to SUCCESS
229         x_return_status := FND_API.G_RET_STS_SUCCESS;
230         --
231         -- API body
232         --
233         CSD_repairs_PVT.Update_Repair_Order(P_Api_Version_Number => 1.0,
234                                             P_Init_Msg_List      => p_init_msg_list,
235                                             P_Commit             => p_commit,
236                                             P_Validation_Level   => p_validation_level,
237                                             p_REPAIR_LINE_ID     => p_repair_line_id,
238                                             P_REPLN_Rec          => p_REPLN_Rec,
239                                             X_Return_Status      => x_return_status,
240                                             X_Msg_Count          => x_msg_count,
241                                             X_Msg_Data           => x_msg_data);
242         --
243         -- Check return status from the above procedure call
244         IF not (x_return_status = FND_API.G_RET_STS_SUCCESS)
245         then
246             ROLLBACK TO UPDATE_REPAIR_ORDER_PUB;
247             return;
248         END IF;
249         --
250         -- End of API body.
251         --
252         -- Standard check for p_commit
253         IF FND_API.to_Boolean(p_commit)
254         THEN
255             COMMIT WORK;
256         END IF;
257         -- Standard call to get message count and if count is 1, get message info.
258         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count,
259                                   p_data  => x_msg_data);
260         --
261     EXCEPTION
262         WHEN FND_API.G_EXC_ERROR THEN
263             JTF_PLSQL_API.HANDLE_EXCEPTIONS(P_API_NAME        => L_API_NAME,
264                                             P_PKG_NAME        => G_PKG_NAME,
265                                             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
266                                             P_PACKAGE_TYPE    => JTF_PLSQL_API.G_PUB,
267                                             X_MSG_COUNT       => X_MSG_COUNT,
268                                             X_MSG_DATA        => X_MSG_DATA,
269                                             X_RETURN_STATUS   => X_RETURN_STATUS);
270             --   RAISE;
271         --
272         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
273             JTF_PLSQL_API.HANDLE_EXCEPTIONS(P_API_NAME        => L_API_NAME,
274                                             P_PKG_NAME        => G_PKG_NAME,
275                                             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
276                                             P_PACKAGE_TYPE    => JTF_PLSQL_API.G_PUB,
277                                             X_MSG_COUNT       => X_MSG_COUNT,
278                                             X_MSG_DATA        => X_MSG_DATA,
279                                             X_RETURN_STATUS   => X_RETURN_STATUS);
280             --   RAISE;
281         --
282         WHEN OTHERS THEN
283             JTF_PLSQL_API.HANDLE_EXCEPTIONS(P_API_NAME        => L_API_NAME,
284                                             P_PKG_NAME        => G_PKG_NAME,
285                                             P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS,
286                                             P_PACKAGE_TYPE    => JTF_PLSQL_API.G_PUB,
287                                             X_MSG_COUNT       => X_MSG_COUNT,
288                                             X_MSG_DATA        => X_MSG_DATA,
289                                             X_RETURN_STATUS   => X_RETURN_STATUS);
290             --   RAISE;
291     End Update_Repair_Order;
292     --
293     -- R12 Development Begin
294     /*#
295     * Update Repair Order Status
296     * @param P_Api_Version api version number
297     * @param P_Commit to decide whether to commit the transaction or not, default to false
298     * @param P_Init_Msg_List initial the message stack, default to false
299     * @param X_Return_Status return status
300     * @param X_Msg_Count return message count
301     * @param X_Msg_Data return message data
302     * @param P_Repair_status_rec repair status attributes record.
303     * @param P_status_upd_control_rec repair status record control flags.
304     * @param X_OBJECT_VERSION_NUMBER
305     * @rep:scope public
306     * @rep:lifecycle active
307     * @rep:displayname Update Repair Order Status
308     */
309     PROCEDURE Update_Ro_Status(P_Api_Version            IN NUMBER,
310                                P_Commit                 IN VARCHAR2,
311                                P_Init_Msg_List          IN VARCHAR2,
312                                X_Return_Status          OUT NOCOPY VARCHAR2,
313                                X_Msg_Count              OUT NOCOPY NUMBER,
314                                X_Msg_Data               OUT NOCOPY VARCHAR2,
315                                P_REPAIR_STATUS_Rec      IN REPAIR_STATUS_REC_TYPE,
316                                P_STATUS_UPD_CONTROL_REC IN STATUS_UPD_CONTROL_REC_TYPE,
317                                X_OBJECT_VERSION_NUMBER  OUT NOCOPY NUMBER) IS
318         --
319         l_api_name           CONSTANT VARCHAR2(30) := 'Update_Ro_Status';
320         l_api_version_number CONSTANT NUMBER := 1.0;
321         --
322     BEGIN
323         --
324         -- Standard Start of API savepoint
325         SAVEPOINT UPDATE_RO_STATUS_PUB;
326         -- Standard call to check for call compatibility.
327         IF NOT FND_API.Compatible_API_Call(l_api_version_number,
328                                            p_api_version,
329                                            l_api_name,
330                                            G_PKG_NAME)
331         THEN
332             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
333         END IF;
334         -- Initialize message list if p_init_msg_list is set to TRUE.
335         IF FND_API.to_Boolean(p_init_msg_list)
336         THEN
337             FND_MSG_PUB.initialize;
338         END IF;
339         -- Initialize API return status to success
340         x_return_status := FND_API.G_RET_STS_SUCCESS;
341         --
342         -- API body
343         --
344         CSD_REPAIRS_PVT.UPDATE_RO_STATUS(P_Api_Version           => p_api_version,
345                                          P_Commit                => p_commit,
346                                          P_Init_Msg_List         => p_init_msg_list,
347                                          P_Validation_Level      => FND_API.G_VALID_LEVEL_FULL,
348                                          X_Return_Status         => x_return_status,
349                                          X_Msg_Count             => x_msg_count,
350                                          X_Msg_Data              => x_msg_data,
351                                          P_REPAIR_STATUS_REC     => p_repair_status_rec,
352                                          P_STATUS_CONTROL_REC    => p_status_upd_control_rec,
353                                          X_OBJECT_VERSION_NUMBER => x_object_Version_number);
354         --
355         -- Check return status from the above procedure call
356         IF not (x_return_status = FND_API.G_RET_STS_SUCCESS)
357         then
358             ROLLBACK TO UPDATE_RO_STATUS_PUB;
359             return;
360         END IF;
361         --
362         -- End of API body.
363         --
364         -- Standard check for p_commit
365         IF FND_API.to_Boolean(p_commit)
366         THEN
367             COMMIT WORK;
368         END IF;
369         -- Standard call to get message count and if count is 1, get message info.
370         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count,
371                                   p_data  => x_msg_data);
372         --
373     EXCEPTION
374         WHEN Fnd_Api.G_EXC_ERROR THEN
375             x_return_status := Fnd_Api.G_RET_STS_ERROR;
376             ROLLBACK TO UPDATE_RO_STATUS_PUB;
377             Fnd_Msg_Pub.Count_And_Get(p_count => x_msg_count,
378                                       p_data  => x_msg_data);
379             IF (Fnd_Log.level_error >= Fnd_Log.g_current_runtime_level)
380             THEN
381                 Fnd_Log.STRING(Fnd_Log.level_error,
382                                'csd.plsql.CSD_REPAIRS_PUB.Update_ro_status',
383                                'EXC_ERROR[' || x_msg_data || ']');
384             END IF;
385 
386         WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
387             x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
388             ROLLBACK TO UPDATE_RO_STATUS_PUB;
389             Fnd_Msg_Pub.Count_And_Get(p_count => x_msg_count,
390                                       p_data  => x_msg_data);
391             IF (Fnd_Log.level_exception >= Fnd_Log.g_current_runtime_level)
392             THEN
393                 Fnd_Log.STRING(Fnd_Log.level_exception,
394                                'csd.plsql.CSD_REPAIRS_PUB.Update_ro_status',
395                                'EXC_UNEXP_ERROR[' || x_msg_data || ']');
396             END IF;
397         WHEN OTHERS THEN
398             x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
399             Rollback TO UPDATE_RO_STATUS_PUB;
400             IF Fnd_Msg_Pub.Check_Msg_Level(Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR)
401             THEN
402                 Fnd_Msg_Pub.Add_Exc_Msg(G_PKG_NAME, l_api_name);
403             END IF;
404             Fnd_Msg_Pub.Count_And_Get(p_count => x_msg_count,
405                                       p_data  => x_msg_data);
406             IF (Fnd_Log.level_exception >= Fnd_Log.g_current_runtime_level)
407             THEN
408                 Fnd_Log.STRING(Fnd_Log.level_exception,
409                                'csd.plsql.CSD_REPAIRS_PUB.Update_ro_status',
410                                'SQL MEssage[' || SQLERRM || ']');
411             END IF;
412 
413     End Update_ro_status;
414     -- R12 Development End
415 End CSD_REPAIRS_PUB;