DBA Data[Home] [Help]

PACKAGE BODY: APPS.WMS_CONTAINER_GRP

Source


1 PACKAGE BODY WMS_Container_GRP AS
2 /* $Header: WMSGCNTB.pls 120.5.12020000.2 2012/07/04 06:34:10 abasheer ship $ */
3 
4 --  Global constant holding the package name
5 g_pkg_name CONSTANT VARCHAR2(30) := 'WMS_CONTAINER_GRP';
6 g_pkg_version CONSTANT VARCHAR2(100) := '$Header: WMSGCNTB.pls 120.5.12020000.2 2012/07/04 06:34:10 abasheer ship $';
7 
8 -- Various debug levels
9 G_ERROR     CONSTANT NUMBER := 1;
10 G_INFO      CONSTANT NUMBER := 5;
11 G_MESSAGE   CONSTANT NUMBER := 9;
12 
13 PROCEDURE mdebug(msg IN VARCHAR2, LEVEL NUMBER := G_MESSAGE) IS
14 BEGIN
15   INV_TRX_UTIL_PUB.TRACE(msg, g_pkg_name, LEVEL);
16 END;
17 
18 PROCEDURE Auto_Create_LPNs (
19   p_api_version   IN         NUMBER
20 , p_init_msg_list IN         VARCHAR2
21 , p_commit        IN         VARCHAR2
22 , x_return_status OUT NOCOPY VARCHAR2
23 , x_msg_count     OUT NOCOPY NUMBER
24 , x_msg_data      OUT NOCOPY VARCHAR2
25 , p_caller        IN         VARCHAR2
26 , p_gen_lpn_rec   IN         WMS_Data_Type_Definitions_PUB.AutoCreateLPNRecordType
27 , p_lpn_table     OUT NOCOPY WMS_Data_Type_Definitions_PUB.LPNTableType
28 ) IS
29 
30   l_debug number;
31   l_api_name VARCHAR2(20);
32 
33   l_msgdata VARCHAR2(1000);
34   l_ucc_128_suffix_flag VARCHAR2(1);
35   l_serial_range WMS_Data_Type_Definitions_PUB.SerialRangeTableType;
36   l_lpn_attr WMS_Data_Type_Definitions_PUB.LPNRecordType;
37 
38 BEGIN
39   l_debug := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
40   l_api_name := 'Auto_Create_LPNs';
41 
42   x_return_status := fnd_api.g_ret_sts_success;
43 
44   /* Validate input parameters in p_gen_lpn_rec */
45   /* Required parameters: organization_id, quantity */
46   IF p_gen_lpn_rec.organization_id IS NULL THEN
47       IF (l_debug = 1) THEN
48           mdebug('Organization is required, can not auto create LPN ');
49       END IF;
50       fnd_message.set_name('INV','INV_ORG_REQUIRED');
51       fnd_msg_pub.add;
52       RAISE fnd_api.g_exc_error;
53 
54   ELSIF p_gen_lpn_rec.quantity IS NULL THEN
55       IF (l_debug = 1) THEN
56           mdebug('Quantity is required, can not auto create LPN ');
57       END IF;
58       fnd_message.set_name('WMS','WMS_QUANTITY_REQUIRED');
59       fnd_msg_pub.add;
60       RAISE fnd_api.g_exc_error;
61 
62   END IF;
63 
64   /* Set value for ucc_128_suffix_flag
65      1 - Y
66      2 - N
67   */
68   IF p_gen_lpn_rec.ucc_128_suffix_flag = 1 THEN
69       l_ucc_128_suffix_flag := 'Y';
70   ELSIF p_gen_lpn_rec.ucc_128_suffix_flag = 2 THEN
71       l_ucc_128_suffix_flag := 'N';
72   ELSE
73       /* Invalid value for ucc_128_suffix_flag, set it to N */
74       IF (l_debug = 1) THEN
75           mdebug('Invalid value for ucc_128_suffix_flag '||p_gen_lpn_rec.ucc_128_suffix_flag||', consider it as NULL');
76       END IF;
77       l_ucc_128_suffix_flag := NULL; -- Bug14019072 - Making it as NULL so that we will fetch the value from the organization parameter. 'N';
78   END IF;
79 
80 
81   /* Set value for p_lpn_attributes */
82   l_lpn_attr.organization_id   := p_gen_lpn_rec.organization_id;
83   l_lpn_attr.source_transaction_id := p_gen_lpn_rec.source_transaction_id;
84   l_lpn_attr.subinventory_code := p_gen_lpn_rec.subinventory_code;
85   l_lpn_attr.locator_id        := p_gen_lpn_rec.locator_id;
86   l_lpn_attr.inventory_item_id := p_gen_lpn_rec.container_item_id;
87   l_lpn_attr.lpn_context       := p_gen_lpn_rec.lpn_context;
88 
89   /* Call Auto_Create_LPNs prcedure in private package */
90   WMS_CONTAINER_PVT.Auto_Create_LPNs (
91     p_api_version         =>   p_api_version
92   , p_init_msg_list       =>   p_init_msg_list
93   , p_commit              =>   p_commit
94   , x_return_status       =>   x_return_status
95   , x_msg_count           =>   x_msg_count
96   , x_msg_data            =>   x_msg_data
97   , p_caller              =>   p_caller
98 
99   , p_quantity            =>   p_gen_lpn_rec.quantity
100   , p_lpn_prefix          =>   p_gen_lpn_rec.lpn_prefix
101   , p_lpn_suffix          =>   p_gen_lpn_rec.lpn_suffix
102   , p_starting_number     =>   p_gen_lpn_rec.starting_num
103   , p_total_lpn_length    =>   p_gen_lpn_rec.total_lpn_length
104   , p_ucc_128_suffix_flag =>   l_ucc_128_suffix_flag
105 
106   , p_lpn_attributes      =>   l_lpn_attr
107   , p_serial_ranges       =>   l_serial_range
108   , x_created_lpns        =>   p_lpn_table
109   );
110 
111 EXCEPTION
112   WHEN FND_API.G_EXC_ERROR THEN
113     x_return_status := fnd_api.g_ret_sts_error;
114     FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
115     IF (l_debug = 1) THEN
116       FOR i in 1..x_msg_count LOOP
117         l_msgdata := substr(l_msgdata||' | '||substr(fnd_msg_pub.get(x_msg_count-i+1, 'F'), 0, 200),1,2000);
118       END LOOP;
119       mdebug(l_api_name ||' SQL error: '|| SQLERRM(SQLCODE), G_ERROR);
120       mdebug('msg: '||l_msgdata, G_ERROR);
121     END IF;
122   WHEN OTHERS THEN
123     x_return_status := fnd_api.g_ret_sts_unexp_error;
124     FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
125     IF (l_debug = 1) THEN
126       mdebug(l_api_name ||' SQL error: '|| SQLERRM(SQLCODE), G_ERROR);
127     END IF;
128 
129 END Auto_Create_LPNs;
130 
131 PROCEDURE Create_LPNs (
132   p_api_version   IN            NUMBER
133 , p_init_msg_list IN            VARCHAR2
134 , p_commit        IN            VARCHAR2
135 , x_return_status OUT    NOCOPY VARCHAR2
136 , x_msg_count     OUT    NOCOPY NUMBER
137 , x_msg_data      OUT    NOCOPY VARCHAR2
138 , p_caller        IN            VARCHAR2
139 , p_lpn_table     IN OUT NOCOPY WMS_Data_Type_Definitions_PUB.LPNTableType
140 ) IS
141 BEGIN
142   x_return_status := fnd_api.g_ret_sts_success;
143 
144   /* Call Create_LPNs prcedure in private package */
145   WMS_CONTAINER_PVT.Create_LPNs (
146     p_api_version    =>   p_api_version
147   , p_init_msg_list  =>   p_init_msg_list
148   , p_commit         =>   p_commit
149   , x_return_status  =>   x_return_status
150   , x_msg_count      =>   x_msg_count
151   , x_msg_data       =>   x_msg_data
152   , p_caller         =>   p_caller
153   , p_lpn_table      =>   p_lpn_table
154   );
155 
156 END Create_LPNs;
157 
158 PROCEDURE Modify_LPNs (
159   p_api_version   IN         NUMBER
160 , p_init_msg_list IN         VARCHAR2
161 , p_commit        IN         VARCHAR2
162 , x_return_status OUT NOCOPY VARCHAR2
163 , x_msg_count     OUT NOCOPY NUMBER
164 , x_msg_data      OUT NOCOPY VARCHAR2
165 , p_caller        IN         VARCHAR2
166 , p_lpn_table     IN         WMS_Data_Type_Definitions_PUB.LPNTableType
167 ) IS
168 BEGIN
169   x_return_status := fnd_api.g_ret_sts_success;
170 
171   /* Call Modify_LPNs prcedure in private package */
172   WMS_CONTAINER_PVT.Modify_LPNs (
173     p_api_version   =>   p_api_version
174   , p_init_msg_list =>   p_init_msg_list
175   , p_commit        =>   p_commit
176   , x_return_status =>   x_return_status
177   , x_msg_count     =>   x_msg_count
178   , x_msg_data      =>   x_msg_data
179   , p_caller        =>   p_caller
180   , p_lpn_table     =>   p_lpn_table
181   );
182 
183 END Modify_LPNs;
184 
185 PROCEDURE LPN_Purge_Actions (
186   p_api_version   IN            NUMBER
187 , p_init_msg_list IN            VARCHAR2
188 , p_commit        IN            VARCHAR2
189 , x_return_status OUT    NOCOPY VARCHAR2
190 , x_msg_count     OUT    NOCOPY NUMBER
191 , x_msg_data      OUT    NOCOPY VARCHAR2
192 , p_caller        IN            VARCHAR2
193 , p_action        IN            VARCHAR2
194 , p_lpn_purge_rec IN OUT NOCOPY WMS_Data_Type_Definitions_PUB.LPNPurgeRecordType
195 ) IS
196 
197   l_debug number;
198   l_api_name VARCHAR2(20);
199   l_valid_lpns WMS_DATA_TYPE_DEFINITIONS_PUB.NumberTableType;
200   l_purge_count WMS_DATA_TYPE_DEFINITIONS_PUB.NumberTableType;
201   l_msgdata VARCHAR2(1000);
202 
203 BEGIN
204   l_debug := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
205   l_api_name := 'LPN_Purge_Actions';
206 
207   x_return_status := fnd_api.g_ret_sts_success;
208 
209   IF (l_debug = 1) THEN
210     mdebug(l_api_name || ' Entered ' || g_pkg_version);
211     mdebug('ver='||p_api_version||' initmsg='||p_init_msg_list||' commit='||p_commit||' caller='||p_caller);
212     mdebug('p_action='||p_action||' p_lpn_purge_rec.lpn_ids has '||p_lpn_purge_rec.lpn_ids.count||' records');
213   END IF;
214 
215   l_valid_lpns := p_lpn_purge_rec.lpn_ids;
216 
217   IF (p_action = G_LPN_PURGE_ACTION_VALIDATE) THEN
218     -- Validate only
219     -- Call WMS_PURGE_PVT.Check_Purge_LPNs
220     --  with p_lock_flag as 'N'
221     IF (l_debug = 1 ) THEN
222       mdebug('Validate only, Calling WMS_PURGE_PVT.Check_Purge_LPNs with p_lock_flag as N');
223     END IF;
224 
225     WMS_PURGE_PVT.Check_Purge_LPNs(
226       p_api_version     =>  p_api_version
227     , p_init_msg_list   =>  p_init_msg_list
228     , p_commit          =>  p_commit
229     , x_return_status   =>  x_return_status
230     , x_msg_count       =>  x_msg_count
231     , x_msg_data        =>  x_msg_data
232     , p_caller          =>  p_caller
233     , p_lock_flag       =>  'N'
234     , p_lpn_id_table    =>  l_valid_lpns
235     );
236 
237     IF x_return_status = fnd_api.g_ret_sts_success THEN
238       IF (l_debug = 1) THEN
239         mdebug('Number of validated LPNs: '||l_valid_lpns.count);
240       END IF;
241       p_lpn_purge_rec.lpn_ids := l_valid_lpns;
242     ELSE
243       IF (l_debug = 1) THEN
244         mdebug('Error calling Check_Purge_LPNs');
245       END IF;
246     END IF;
247 
248   ELSIF (p_action = G_LPN_PURGE_ACTION_DELETE) THEN
249     -- Validate then delete
250     -- Call WMS_PURGE_PVT.Check_Purge_LPNs
251     --  with p_lock_flag as 'Y'
252     -- Then call WMS_PURGE_PVT.Purge_LPNs to delete LPNs
253     IF (l_debug = 1 ) THEN
254       mdebug('Validate, Calling WMS_PURGE_PVT.Check_Purge_LPNs with p_lock_flag as Y');
255     END IF;
256 
257     WMS_PURGE_PVT.Check_Purge_LPNs(
258       p_api_version     =>  p_api_version
259     , p_init_msg_list   =>  p_init_msg_list
260     , p_commit          =>  p_commit
261     , x_return_status   =>  x_return_status
262     , x_msg_count       =>  x_msg_count
263     , x_msg_data        =>  x_msg_data
264     , p_caller          =>  p_caller
265     , p_lock_flag       =>  'Y'
266     , p_lpn_id_table    =>  l_valid_lpns
267     );
268 
269     IF x_return_status <> fnd_api.g_ret_sts_success THEN
270       IF (l_debug = 1) THEN
271         mdebug('Error calling Check_Purge_LPNs, can not proceed');
272       END IF;
273       RETURN;
274     ELSE
275       IF (l_debug = 1) THEN
276         mdebug('Number of validated LPNs: '||l_valid_lpns.count);
277       END IF;
278       IF (l_valid_lpns.count <> p_lpn_purge_rec.lpn_ids.count) THEN
279         IF (l_debug = 1) THEN
280           mdebug('Validation failed, can not proceed');
281         END IF;
282         fnd_message.set_name('WMS','WMS_LPN_PURGE_VALIDATION');
283         fnd_msg_pub.add;
284         RAISE FND_API.G_EXC_ERROR;
285       ELSE
286         -- Validation passed, call Purge_LPNs to delete LPNs
287         IF (l_debug = 1) THEN
288           mdebug('Validation passed, calling WMS_PURGE_PVT.Purge_LPNs');
289         END IF;
290         WMS_PURGE_PVT.Purge_LPNs(
291           p_api_version     =>  p_api_version
292         , p_init_msg_list   =>  p_init_msg_list
293         , p_commit          =>  p_commit
294         , x_return_status   =>  x_return_status
295         , x_msg_count       =>  x_msg_count
296         , x_msg_data        =>  x_msg_data
297         , p_caller          =>  p_caller
298         , p_lpn_id_table    =>  l_valid_lpns
299         , p_purge_count     =>  l_purge_count
300         );
301        END IF; -- End if of l_valid_lpns.count<>p_lpn_purge_rec.lpn_ids.count
302 
303     END IF; -- End if of x_return_status<>fnd_api.g_ret_sts_success
304 
305   END IF; -- End if of p_action
306 EXCEPTION
307   WHEN FND_API.G_EXC_ERROR THEN
308     x_return_status := fnd_api.g_ret_sts_error;
309     FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
310     IF (l_debug = 1) THEN
311       FOR i in 1..x_msg_count LOOP
312         l_msgdata := substr(l_msgdata||' | '||substr(fnd_msg_pub.get(x_msg_count-i+1, 'F'), 0, 200),1,2000);
313       END LOOP;
314       mdebug(l_api_name ||' SQL error: '|| SQLERRM(SQLCODE), G_ERROR);
315       mdebug('msg: '||l_msgdata, G_ERROR);
316     END IF;
317   WHEN OTHERS THEN
318     x_return_status := fnd_api.g_ret_sts_unexp_error;
319     FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
320     IF (l_debug = 1) THEN
321       mdebug(l_api_name ||' SQL error: '|| SQLERRM(SQLCODE), G_ERROR);
322     END IF;
323 
324 END LPN_Purge_Actions;
325 
326 END WMS_Container_GRP;