DBA Data[Home] [Help]

PACKAGE BODY: APPS.FLM_EKANBAN_PUB

Source


1 PACKAGE BODY FLM_EKANBAN_PUB AS
2 /* $Header: FLMPEKBB.pls 120.1 2011/03/25 21:08:46 atjen noship $ */
3 
4 G_PKG_NAME CONSTANT VARCHAR2(15) := 'FLM_EKANBAN_PUB';
5 
6 
7 PROCEDURE validate_ekanban_profile
8 IS
9 BEGIN
10 
11   IF FND_PROFILE.Value('FLM_EKB_OPS_FLAG') <> 1 THEN
12     FND_MESSAGE.Set_Name('FLM', 'FLM_EKB_PROFILE_DISABLED');
13     FND_MSG_PUB.Add;
14     RAISE FND_API.G_EXC_ERROR;
15   END IF;
16 
17 END validate_ekanban_profile;
18 
19 
20 FUNCTION get_kanban_card_id(p_kanban_card_number IN VARCHAR2,
21                             p_organization_code IN VARCHAR2)
22 RETURN NUMBER
23 IS
24 
25   l_kanban_card_id NUMBER;
26 
27   CURSOR c_kanbard_card_id(c_kanban_card_number IN VARCHAR2,
28                            c_organization_code IN VARCHAR2)
29   IS
30     SELECT kanban_card_id
31     FROM mtl_kanban_cards
32     WHERE kanban_card_number = c_kanban_card_number
33       AND organization_id = (SELECT organization_id
34                              FROM mtl_parameters
35                              WHERE organization_code = c_organization_code);
36 
37 BEGIN
38 
39   OPEN c_kanbard_card_id(p_kanban_card_number, p_organization_code);
40   FETCH c_kanbard_card_id into l_kanban_card_id;
41   CLOSE c_kanbard_card_id;
42 
43   IF l_kanban_card_id IS NULL THEN
44     FND_MESSAGE.Set_Name('FLM', 'FLM_INV_CARD_ORG_COMB');
45     FND_MSG_PUB.Add;
46     RAISE FND_API.G_EXC_ERROR;
47   END IF;
48 
49   RETURN l_kanban_card_id;
50 
51 END get_kanban_card_id;
52 
53 
54 PROCEDURE receive
55 (   p_api_version           IN         NUMBER,
56     p_commit                IN         VARCHAR2,
57     p_init_msg_list         IN         VARCHAR2,
58     x_return_status         OUT NOCOPY VARCHAR2,
59     x_msg_count             OUT NOCOPY NUMBER,
60     x_msg_data              OUT NOCOPY VARCHAR2,
61     p_kanban_card_number    IN         VARCHAR2,
62     p_organization_code     IN         VARCHAR2,
63     p_receipt_quantity      IN         NUMBER,
64     p_process_flag          IN         VARCHAR2,
65     x_receipt_number        OUT NOCOPY NUMBER
66 )
67 IS
68   l_api_name       CONSTANT VARCHAR2(30) := 'receive';
69   l_api_version    CONSTANT NUMBER := 1.0;
70 
71   l_kanban_card_id    NUMBER;
72 
73 BEGIN
74 
75   SAVEPOINT Receive_PUB;
76 
77   -- Standard call to check for call compatibility
78   IF NOT FND_API.Compatible_API_Call(l_api_version,
79                                      p_api_version,
80                                      l_api_name,
81                                      G_PKG_NAME)
82   THEN
83     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
84   END IF;
85 
86   -- Initialize message list if p_init_msg_list is set to TRUE
87   IF FND_API.To_Boolean(p_init_msg_list) THEN
88     FND_MSG_PUB.Initialize;
89   END IF;
90 
91   validate_ekanban_profile;
92 
93   l_kanban_card_id := get_kanban_card_id(p_kanban_card_number, p_organization_code);
94 
95   FLM_RECEIPT_PUB.kanban_receive(p_kanban_card_id   => l_kanban_card_id,
96                                  p_receipt_quantity => p_receipt_quantity,
97                                  p_process_flag     => NVL(p_process_flag, 'N'),
98                                  p_receipt_number   => x_receipt_number,
99                                  x_ret_status       => x_return_status,
100                                  x_err_msg          => x_msg_data);
101 
102   -- Standard check of p_commit
103   IF FND_API.To_Boolean(p_commit) THEN
104     COMMIT;
105   END IF;
106 
107 EXCEPTION
108   WHEN FND_API.G_EXC_ERROR THEN
109     ROLLBACK TO Receive_PUB;
110     x_return_status := FND_API.G_RET_STS_ERROR;
111 
112     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
113                               p_count   => x_msg_count,
114                               p_data    => x_msg_data);
115 
116   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
117     ROLLBACK TO Receive_PUB;
118     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
119 
120     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
121                               p_count   => x_msg_count,
122                               p_data    => x_msg_data);
123 
124   WHEN OTHERS THEN
125     ROLLBACK TO Receive_PUB;
126     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
127 
128     IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
129       FND_MSG_PUB.Add_Exc_Msg(p_pkg_name       => G_PKG_NAME,
130                               p_procedure_name => l_api_name);
131     END IF;
132 
133     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
134                               p_count   => x_msg_count,
135                               p_data    => x_msg_data);
136 
137 END receive;
138 
139 
140 PROCEDURE transfer
141 (   p_api_version           IN         NUMBER,
142     p_commit                IN         VARCHAR2,
143     p_init_msg_list         IN         VARCHAR2,
144     x_return_status         OUT NOCOPY VARCHAR2,
145     x_msg_count             OUT NOCOPY NUMBER,
146     x_msg_data              OUT NOCOPY VARCHAR2,
147     p_kanban_card_number    IN         VARCHAR2,
148     p_organization_code     IN         VARCHAR2,
149     p_transfer_quantity     IN         NUMBER,
150     p_process_flag          IN         VARCHAR2
151 )
152 IS
153   l_api_name       CONSTANT VARCHAR2(30) := 'transfer';
154   l_api_version    CONSTANT NUMBER := 1.0;
155 
156   l_kanban_card_id    NUMBER;
157 
158 BEGIN
159 
160   SAVEPOINT Transfer_PUB;
161 
162   -- Standard call to check for call compatibility
163   IF NOT FND_API.Compatible_API_Call(l_api_version,
164                                      p_api_version,
165                                      l_api_name,
166                                      G_PKG_NAME)
167   THEN
168     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
169   END IF;
170 
171   -- Initialize message list if p_init_msg_list is set to TRUE
172   IF FND_API.To_Boolean(p_init_msg_list) THEN
173     FND_MSG_PUB.Initialize;
174   END IF;
175 
176   validate_ekanban_profile;
177 
178   l_kanban_card_id := get_kanban_card_id(p_kanban_card_number, p_organization_code);
179 
180   FLM_KANBAN_TRANSFER.complete_process(p_kanban_id    => l_kanban_card_id,
181                                        p_transfer_qty => p_transfer_quantity,
182                                        p_process_flag => NVL(p_process_flag, 'N'),
183                                        x_retcode      => x_return_status,
184                                        x_errmsg       => x_msg_data);
185 
186   -- Standard check of p_commit
187   IF FND_API.To_Boolean(p_commit) THEN
188     COMMIT;
189   END IF;
190 
191 EXCEPTION
192   WHEN FND_API.G_EXC_ERROR THEN
193     ROLLBACK TO Transfer_PUB;
194     x_return_status := FND_API.G_RET_STS_ERROR;
195 
196     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
197                               p_count   => x_msg_count,
198                               p_data    => x_msg_data);
199 
200   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
201     ROLLBACK TO Transfer_PUB;
202     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
203 
204     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
205                               p_count   => x_msg_count,
206                               p_data    => x_msg_data);
207 
208   WHEN OTHERS THEN
209     ROLLBACK TO Transfer_PUB;
210     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
211 
212     IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
213       FND_MSG_PUB.Add_Exc_Msg(p_pkg_name       => G_PKG_NAME,
214                               p_procedure_name => l_api_name);
215     END IF;
216 
217     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
218                               p_count   => x_msg_count,
219                               p_data    => x_msg_data);
220 
221 END transfer;
222 
223 
224 PROCEDURE process_pull_sequence
225 (   p_api_version          IN            NUMBER,
226     p_commit               IN            VARCHAR2,
227     p_init_msg_list        IN            VARCHAR2,
228     x_return_status        OUT NOCOPY    VARCHAR2,
229     x_msg_count            OUT NOCOPY    NUMBER,
230     x_msg_data             OUT NOCOPY    VARCHAR2,
231     x_pull_sequence_rec    IN OUT NOCOPY pull_sequence_rec_type,
232     x_supplier_tbl         IN OUT NOCOPY kanban_supplier_tbl_type,
233     p_transaction_type     IN NUMBER
234 )
235 IS
236   l_api_name       CONSTANT VARCHAR2(30) := 'process_pull_sequence';
237   l_api_version    CONSTANT NUMBER := 1.0;
238 
239 BEGIN
240 
241   SAVEPOINT Process_Pull_Sequence_PUB;
242 
243   -- Standard call to check for call compatibility
244   IF NOT FND_API.Compatible_API_Call(l_api_version,
245                                      p_api_version,
246                                      l_api_name,
247                                      G_PKG_NAME)
248   THEN
249     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
250   END IF;
251 
252   -- Initialize message list if p_init_msg_list is set to TRUE
253   IF FND_API.To_Boolean(p_init_msg_list) THEN
254     FND_MSG_PUB.Initialize;
255   END IF;
256 
257   validate_ekanban_profile;
258 
259   FLM_KANBAN_PUB.process_pull_sequence(p_pull_sequence_rec => x_pull_sequence_rec,
260                                        p_supplier_tbl      => x_supplier_tbl,
261                                        p_transaction_type  => p_transaction_type,
262                                        p_commit_flag       => 'N',
263                                        x_ret_status        => x_return_status,
264                                        x_error_msg         => x_msg_data);
265 
266   -- Standard check of p_commit
267   IF FND_API.To_Boolean(p_commit) THEN
268     COMMIT;
269   END IF;
270 
271 EXCEPTION
272   WHEN FND_API.G_EXC_ERROR THEN
273     ROLLBACK TO Process_Pull_Sequence_PUB;
274     x_return_status := FND_API.G_RET_STS_ERROR;
275 
276     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
277                               p_count   => x_msg_count,
278                               p_data    => x_msg_data);
279 
280   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
281     ROLLBACK TO Process_Pull_Sequence_PUB;
282     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
283 
284     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
285                               p_count   => x_msg_count,
286                               p_data    => x_msg_data);
287 
288   WHEN OTHERS THEN
289     ROLLBACK TO Process_Pull_Sequence_PUB;
290     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
291 
292     IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
293       FND_MSG_PUB.Add_Exc_Msg(p_pkg_name       => G_PKG_NAME,
294                               p_procedure_name => l_api_name);
295     END IF;
296 
297     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
298                               p_count   => x_msg_count,
299                               p_data    => x_msg_data);
300 
301 END process_pull_sequence;
302 
303 
304 PROCEDURE process_cards
305 (   p_api_version         IN            NUMBER,
306     p_commit              IN            VARCHAR2,
307     p_init_msg_list       IN            VARCHAR2,
308     x_return_status       OUT NOCOPY    VARCHAR2,
309     x_msg_count           OUT NOCOPY    NUMBER,
310     x_msg_data            OUT NOCOPY    VARCHAR2,
311     x_kanban_card_rec     IN OUT NOCOPY kanban_card_rec_type,
312     p_transaction_type    IN            NUMBER
313 )
314 IS
315   l_api_name       CONSTANT VARCHAR2(30) := 'process_cards';
316   l_api_version    CONSTANT NUMBER := 1.0;
317 
318 BEGIN
319 
320   SAVEPOINT Process_Cards_PUB;
321 
322   -- Standard call to check for call compatibility
323   IF NOT FND_API.Compatible_API_Call(l_api_version,
324                                      p_api_version,
325                                      l_api_name,
326                                      G_PKG_NAME)
327   THEN
328     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
329   END IF;
330 
331   -- Initialize message list if p_init_msg_list is set to TRUE
332   IF FND_API.To_Boolean(p_init_msg_list) THEN
333     FND_MSG_PUB.Initialize;
334   END IF;
335 
336   validate_ekanban_profile;
337 
338   FLM_KANBAN_PUB.process_cards(p_kanban_card_rec  => x_kanban_card_rec,
339                                p_transaction_type => p_transaction_type,
340                                p_commit_flag      => 'N',
341                                x_ret_status       => x_return_status,
342                                x_err_msg          => x_msg_data);
343 
344   -- Standard check of p_commit
345   IF FND_API.To_Boolean(p_commit) THEN
346     COMMIT;
347   END IF;
348 
349 EXCEPTION
350   WHEN FND_API.G_EXC_ERROR THEN
351     ROLLBACK TO Process_Cards_PUB;
352     x_return_status := FND_API.G_RET_STS_ERROR;
353 
354     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
355                               p_count   => x_msg_count,
356                               p_data    => x_msg_data);
357 
358   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
359     ROLLBACK TO Process_Cards_PUB;
360     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
361 
362     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
363                               p_count   => x_msg_count,
364                               p_data    => x_msg_data);
365 
366   WHEN OTHERS THEN
367     ROLLBACK TO Process_Cards_PUB;
368     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
369 
370     IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
371       FND_MSG_PUB.Add_Exc_Msg(p_pkg_name       => G_PKG_NAME,
372                               p_procedure_name => l_api_name);
373     END IF;
374 
375     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
376                               p_count   => x_msg_count,
377                               p_data    => x_msg_data);
378 
379 END process_cards;
380 
381 
382 PROCEDURE update_card_status
383 (   p_api_version           IN         NUMBER,
384     p_commit                IN         VARCHAR2,
385     p_init_msg_list         IN         VARCHAR2,
386     x_return_status         OUT NOCOPY VARCHAR2,
387     x_msg_count             OUT NOCOPY NUMBER,
388     x_msg_data              OUT NOCOPY VARCHAR2,
389     p_kanban_card_number    IN         VARCHAR2,
390     p_organization_code     IN         VARCHAR2,
391     p_supply_status_from    IN         NUMBER,
392     p_supply_status_to      IN         NUMBER,
396   l_api_name       CONSTANT VARCHAR2(30) := 'update_card_status';
393     p_card_status_to        IN         NUMBER
394 )
395 IS
397   l_api_version    CONSTANT NUMBER := 1.0;
398 
399   l_ret_msg_code    NUMBER;
400 
401 BEGIN
402 
403   SAVEPOINT Update_Card_Status_PUB;
404 
405   -- Standard call to check for call compatibility
406   IF NOT FND_API.Compatible_API_Call(l_api_version,
407                                      p_api_version,
408                                      l_api_name,
409                                      G_PKG_NAME)
410   THEN
411     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
412   END IF;
413 
414   -- Initialize message list if p_init_msg_list is set to TRUE
415   IF FND_API.To_Boolean(p_init_msg_list) THEN
416     FND_MSG_PUB.Initialize;
417   END IF;
418 
419   validate_ekanban_profile;
420 
421   FLM_KANBANCARD_PUB.update_card_status(p_kanban_card_num    => p_kanban_card_number,
422                                         p_org_code           => p_organization_code,
423                                         p_supply_status_from => p_supply_status_from,
424                                         p_supply_status_to   => p_supply_status_to,
425                                         p_card_status_to     => p_card_status_to,
426                                         p_commit_flag        => 'N',
427                                         x_retcode            => x_return_status,
428                                         x_ret_msg_code       => l_ret_msg_code,
429                                         x_err_msg            => x_msg_data);
430 
431   -- Standard check of p_commit
432   IF FND_API.To_Boolean(p_commit) THEN
433     COMMIT;
434   END IF;
435 
436 EXCEPTION
437   WHEN FND_API.G_EXC_ERROR THEN
438     ROLLBACK TO Update_Card_Status_PUB;
439     x_return_status := FND_API.G_RET_STS_ERROR;
440 
441     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
442                               p_count   => x_msg_count,
443                               p_data    => x_msg_data);
444 
445   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
446     ROLLBACK TO Update_Card_Status_PUB;
447     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
448 
449     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
450                               p_count   => x_msg_count,
451                               p_data    => x_msg_data);
452 
453   WHEN OTHERS THEN
454     ROLLBACK TO Update_Card_Status_PUB;
455     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
456 
457     IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
458       FND_MSG_PUB.Add_Exc_Msg(p_pkg_name       => G_PKG_NAME,
459                               p_procedure_name => l_api_name);
460     END IF;
461 
462     FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
463                               p_count   => x_msg_count,
464                               p_data    => x_msg_data);
465 
466 END update_card_status;
467 
468 
469 END FLM_EKANBAN_PUB;