DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_SHIPMENT_BATCH_PUB

Source


1 PACKAGE BODY WSH_SHIPMENT_BATCH_PUB as
2 /* $Header: WSHSBPBB.pls 120.0.12020000.2 2013/01/17 03:55:04 ueshanka ship $ */
3 
4 
5 G_PKG_NAME CONSTANT VARCHAR2(50) := 'WSH_SHIPMENT_BATCH_PUB';
6 
7 --========================================================================
8 -- PROCEDURE : Create_Shipment_Batch         PUBLIC
9 --
10 -- PARAMETERS: p_api_version_number    version number of the API
11 --             p_init_msg_list         messages will be initialized if set as true
12 --             p_process_mode          'ONLINE' or 'CONCURRENT', Default Value 'CONCURRENT'
13 --             p_organization_id       Organization Id
14 --             p_customer_id           Customer Id
15 --             p_ship_to_location_id   Ship From Location
16 --             p_transaction_type_id   Sales Order Type Id
17 --             p_from_order_number     From Sales Order Number
18 --             p_to_order_number       To Sales Order Number
19 --             p_from_request_date     From Request Date
20 --             p_to_request_date       To Request Date
21 --             p_from_schedule_date    From Schedule Date
22 --             p_to_schedule_date      To Schedule Date
23 --             p_shipment_priority     Shipment Priority Code
24 --             p_include_internal_so   Include Internal Sales Order
25 --             Bug 14620571: Added parameter p_include_lines_with_hold
26 --             p_include_lines_with_hold Include order lines with Hold
27 --             p_log_level             0 or 1 to control the log messages, Default Value 0
28 --             p_commit                Commit Flag
29 --             x_request_id            Concurrent Request Id submitted for 'Create Shipment Batches' program
30 --             x_return_status         return status
31 --             x_msg_count             number of messages in the list
32 --             x_msg_data              text of messages
33 -- VERSION   : current version         1.0
34 --             initial version         1.0
35 -- COMMENT   : Public API to create shipment batches.
36 --
37 --========================================================================
38 
39 /*#
40  * Creates Shipment Batches
41  * @param p_api_version_number    version number of the API
42  * @param p_init_msg_list         messages will be initialized if set as true
43  * @param p_process_mode          ONLINE or CONCURRENT mode to create shipment batches. Default value 'CONCURRENT'
44  * @param p_organization_id       Organization Id
45  * @param p_customer_id           Customer Id
46  * @param p_ship_to_location_id   Ship From Location
47  * @param p_transaction_type_id   Sales Order Type Id
48  * @param p_from_order_number     From Sales Order Number
49  * @param p_to_order_number       To Sales Order Number
50  * @param p_from_request_date     From Request Date
51  * @param p_to_request_date       To Request Date
52  * @param p_from_schedule_date    From Schedule Date
53  * @param p_to_schedule_date      To Schedule Date
54  * @param p_shipment_priority     Shipment Priority Code
55  * @param p_include_internal_so   Include Internal Sales Order, Default Value 'N'
56  * @param p_include_lines_with_hold Include order lines with Hold applied, Default Value 'N'
57  * @param p_log_level             Controls the log messages generated, Default Value 0
58  * @param p_commit                commit flag
59  * @param x_request_id            Concurrent request Id of the 'Create Shipment Batches' program
60  * @param x_return_status         return status of the API
61  * @param x_msg_count             number of messages, if any
62  * @param x_msg_data              message text, if any
63  * @rep:scope public
64  * @rep:lifecycle active
65  * @rep:displayname Create Shipment Batches
66  */
67   PROCEDURE Create_Shipment_Batch(
68             p_api_version_number   IN  NUMBER,
69             p_init_msg_list        IN  VARCHAR2,
70             p_process_mode         IN  VARCHAR2,
71             p_organization_id      IN  NUMBER,
72             p_customer_id          IN  NUMBER,
73             p_ship_to_location_id  IN  NUMBER,
74             p_transaction_type_id  IN  NUMBER,
75             p_from_order_number    IN  VARCHAR2,
76             p_to_order_number      IN  VARCHAR2,
77             p_from_request_date    IN  DATE,
78             p_to_request_date      IN  DATE,
79             p_from_schedule_date   IN  DATE,
80             p_to_schedule_date     IN  DATE,
81             p_shipment_priority    IN  VARCHAR,
82             p_include_internal_so  IN  VARCHAR,
83             p_include_lines_with_hold IN VARCHAR DEFAULT 'N',
84             p_log_level            IN  NUMBER,
85             p_commit               IN  VARCHAR2,
86             x_request_id           OUT NOCOPY  NUMBER,
87             x_return_status        OUT NOCOPY  VARCHAR2,
88             x_msg_count            OUT NOCOPY  NUMBER,
89             x_msg_data             OUT NOCOPY  VARCHAR2 )
90 AS
91    --
92    l_return_status          VARCHAR2(100);
93    l_msg_count              NUMBER;
94    l_msg_data               VARCHAR2(1000);
95 
96    l_from_request_date      VARCHAR2(30);
97    l_to_request_date        VARCHAR2(30);
98    l_from_schedule_date     VARCHAR2(30);
99    l_to_schedule_date       VARCHAR2(30);
100 
101    l_api_version_number     CONSTANT NUMBER := 1.0;
102    l_api_name               CONSTANT VARCHAR2(30):= 'Create_Shipment_Batch';
103    --
104    l_debug_on               BOOLEAN;
105    l_module_name CONSTANT   VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || l_api_name;
106    --
107 BEGIN
108    --
109    l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
110    --
111    IF l_debug_on IS NULL
112    THEN
113        l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
114    END IF;
115    --
116    IF l_debug_on THEN
117       WSH_DEBUG_SV.push(l_module_name);
118       --
119       WSH_DEBUG_SV.log(l_module_name, 'p_commit',p_commit);
120       WSH_DEBUG_SV.log(l_module_name, 'p_log_level',p_log_level);
121       WSH_DEBUG_SV.log(l_module_name, 'p_process_mode',p_process_mode);
122       WSH_DEBUG_SV.log(l_module_name, 'p_api_version_number', p_api_version_number);
123       WSH_DEBUG_SV.log(l_module_name, 'p_organization_id', p_organization_id);
124       WSH_DEBUG_SV.log(l_module_name, 'p_customer_id', p_customer_id);
125       WSH_DEBUG_SV.log(l_module_name, 'p_ship_to_location_id', p_ship_to_location_id);
126       WSH_DEBUG_SV.log(l_module_name, 'p_transaction_type_id', p_transaction_type_id);
127       WSH_DEBUG_SV.log(l_module_name, 'p_from_order_number', p_from_order_number);
128       WSH_DEBUG_SV.log(l_module_name, 'p_to_order_number', p_to_order_number);
129       WSH_DEBUG_SV.log(l_module_name, 'p_from_request_date', p_from_request_date);
130       WSH_DEBUG_SV.log(l_module_name, 'p_to_request_date', p_to_request_date);
131       WSH_DEBUG_SV.log(l_module_name, 'p_from_schedule_date', p_from_schedule_date);
132       WSH_DEBUG_SV.log(l_module_name, 'p_to_schedule_date', p_to_schedule_date);
133       WSH_DEBUG_SV.log(l_module_name, 'p_shipment_priority', p_shipment_priority);
134       WSH_DEBUG_SV.log(l_module_name, 'p_include_internal_so', p_include_internal_so);
135       WSH_DEBUG_SV.log(l_module_name, 'p_include_lines_with_hold', p_include_lines_with_hold);
136    END IF;
137    --
138 
139    x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
140    -- Initialize Message List
141    IF FND_API.to_Boolean(p_init_msg_list) THEN
142       FND_MSG_PUB.initialize;
143    END IF;
144 
145    --  Standard call to check for call compatibility
146    IF NOT FND_API.Compatible_API_Call (
147               l_api_version_number,
148               p_api_version_number,
149               l_api_name,
150               G_PKG_NAME )
151    THEN
152       --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
153       RAISE FND_API.G_EXC_ERROR;
154    END IF;
155 
156    BEGIN
157       select to_char(p_from_request_date, 'YYYY/MM/DD HH24:MI:SS'),
158              to_char(p_to_request_date, 'YYYY/MM/DD HH24:MI:SS'),
159              to_char(p_from_schedule_date, 'YYYY/MM/DD HH24:MI:SS'),
160              to_char(p_to_schedule_date, 'YYYY/MM/DD HH24:MI:SS')
161       into   l_from_request_date,
162              l_to_request_date,
163              l_from_schedule_date,
164              l_to_schedule_date
165       from dual;
166    EXCEPTION
167       WHEN OTHERS THEN
168          --
169          IF l_debug_on THEN
170             WSH_DEBUG_SV.log(l_module_name, 'Error: Invalid date format', sqlerrm);
171          END IF;
172          --
173          RAISE FND_API.G_EXC_ERROR;
174    END;
175 
176    IF p_process_mode = 'ONLINE' THEN
177       --
178       IF l_debug_on THEN
179          WSH_DEBUG_SV.logmsg(l_module_name, 'Calling WSH_SHIPMENT_BATCH_PKG.Create_Shipment_Batch', WSH_DEBUG_SV.C_PROC_LEVEL);
180       END IF;
181       --
182       WSH_SHIPMENT_BATCH_PKG.Create_Shipment_Batch (
183                 p_organization_id      => p_organization_id,
184                 p_customer_id          => p_customer_id,
185                 p_ship_to_location_id  => p_ship_to_location_id,
186                 p_transaction_type_id  => p_transaction_type_id,
187                 p_from_order_number    => p_from_order_number,
188                 p_to_order_number      => p_to_order_number,
189                 p_from_request_date    => l_from_request_date,
190                 p_to_request_date      => l_to_request_date,
191                 p_from_schedule_date   => l_from_schedule_date,
192                 p_to_schedule_date     => l_to_schedule_date,
193                 p_shipment_priority    => p_shipment_priority,
194                 p_include_internal_so  => p_include_internal_so,
195                 p_include_lines_with_hold => p_include_lines_with_hold,
196                 x_return_status        => l_return_status );
197 
198       --
199       IF l_debug_on THEN
200          WSH_DEBUG_SV.log(l_module_name, 'Return Status of WSH_SHIPMENT_BATCH_PKG.Create_Shipment_Batch', l_return_status);
201       END IF;
202       --
203       IF l_return_status = WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
204          FND_MESSAGE.Set_Name('WSH', 'WSH_SUCCESS_PROCESS');
205          WSH_UTIL_CORE.Add_Message(x_return_status);
206       ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
207          x_return_status := l_return_status;
208       -- Raise error, if return status is not Success/Warning
209       ELSE
210          RAISE FND_API.G_EXC_ERROR;
211       END IF;
212    ELSIF p_process_mode = 'CONCURRENT' THEN
213       --
214       IF l_debug_on THEN
215           WSH_DEBUG_SV.logmsg(l_module_name, 'Calling FND_REQUEST.SUBMIT_REQUEST', WSH_DEBUG_SV.C_PROC_LEVEL);
216       END IF;
217       --
218       x_request_id :=  FND_REQUEST.SUBMIT_REQUEST(
219                            application   =>  'WSH',
220                            program       =>  'WSHSHBAT',
221                            description   =>  'Create Shipment Batches',
222                            start_time    =>   NULL,
223                            sub_request   =>   FALSE,
224                            argument1     =>   p_organization_id,
225                            argument2     =>   p_customer_id,
226                            argument3     =>   p_ship_to_location_id,
227                            argument4     =>   p_transaction_type_id,
228                            argument5     =>   p_from_order_number,
229                            argument6     =>   p_to_order_number,
230                            argument7     =>   l_from_request_date,
231                            argument8     =>   l_to_request_date,
232                            argument9     =>   l_from_schedule_date,
233                            argument10    =>   l_to_schedule_date,
234                            argument11    =>   p_shipment_priority,
235                            argument12    =>   p_include_internal_so,
236                            argument13    =>   p_include_lines_with_hold,
237                            argument14    =>   p_log_level );
238 
239       --
240       IF l_debug_on THEN
241           WSH_DEBUG_SV.log(l_module_name, 'Request Id returned from FND_REQUEST.SUBMIT_REQUEST', x_request_id);
242       END IF;
243       --
244       IF (nvl(x_request_id,0) <= 0) THEN
245          RAISE FND_API.G_EXC_ERROR;
246       ELSE
247          FND_MESSAGE.Set_Name('WSH', 'WSH_REQUEST_SUBMITTED');
248          FND_MESSAGE.Set_Token('REQUEST_ID', x_request_id);
249          WSH_UTIL_CORE.Add_Message(x_return_status);
250       END IF;
251    ELSE
252       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
253       FND_MESSAGE.Set_Name('WSH', 'WSH_OI_INVALID_ATTRIBUTE');
254       FND_MESSAGE.Set_Token('ATTRIBUTE', 'PROCESS_MODE');
255       WSH_UTIL_CORE.Add_Message(x_return_status);
256       --
257       IF l_debug_on THEN
258           WSH_DEBUG_SV.logmsg(l_module_name, 'p_process_mode should be ONLINE/CONCURRENT');
259       END IF;
260       --
261       RAISE FND_API.G_EXC_ERROR;
262    END IF;
263 
264    IF p_commit = FND_API.G_TRUE THEN
265       COMMIT;
266    END IF;
267 
268    --Set Msg. Count and Data from Msg. Stack
269    FND_MSG_PUB.Count_And_Get(
270                   p_count   => x_msg_count,
271                   p_data    => x_msg_data,
272                   p_encoded => fnd_api.g_false);
273 
274    --
275    IF l_debug_on THEN
276       WSH_DEBUG_SV.log(l_module_name, 'Return Status', x_return_status);
277       WSH_DEBUG_SV.pop(l_module_name);
278    END IF;
279    --
280 EXCEPTION
281    WHEN FND_API.G_EXC_ERROR THEN
282       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
283       --
284       IF l_debug_on THEN
285           WSH_DEBUG_SV.logmsg(l_module_name,'Rolling back the transactions');
286       END IF;
287       --
288       ROLLBACK;
289       FND_MSG_PUB.Count_And_Get(
290                   p_count   => x_msg_count,
291                   p_data    => x_msg_data,
292                   p_encoded => fnd_api.g_false);
293       IF l_debug_on THEN
294           WSH_DEBUG_SV.logmsg(l_module_name, 'Error occured while creating Shipment Batch');
295           WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
296       END IF;
297    WHEN others THEN
298       x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
299       --
300       IF l_debug_on THEN
301           WSH_DEBUG_SV.logmsg(l_module_name,'Rolling back the transactions');
302       END IF;
303       --
304       ROLLBACK;
305       FND_MSG_PUB.Count_And_Get(
306                   p_count   => x_msg_count,
307                   p_data    => x_msg_data,
308                   p_encoded => fnd_api.g_false);
309       --
310       IF l_debug_on THEN
311          WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
312          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
313       END IF;
314 END Create_Shipment_Batch;
315 --
316 --========================================================================
317 -- PROCEDURE : Cancel_Line         PUBLIC
318 --
319 -- PARAMETERS: p_api_version_number    version number of the API
320 --             p_init_msg_list         messages will be initialized if set as true
321 --             p_commit                commit Flag
322 --             p_document_number       document number
323 --             p_line_number           line number
324 --             p_cancel_quantity       quantity to unassign from Shipment batch
325 --             x_return_status         return status
326 --             x_msg_count             number of messages in the list
327 --             x_msg_data              text of messages
328 -- VERSION   : current version         1.0
329 --             initial version         1.0
330 -- COMMENT   : Public API to unassign delivery line from a Shipment Batch.
331 --
332 --========================================================================
333 
334 /*#
335  * Unassing delivery line from Shipment Batch
336  * @param p_api_version_number    version number of the API
337  * @param p_init_msg_list         messages will be initialized if set as true
338  * @param p_commit                commit flag
339  * @param p_document_number       document number
340  * @param p_line_number           line number
341  * @param p_cancel_quantity       quantity to unassign from Shipment batch
342  * @param x_return_status         return status of the API
343  * @param x_msg_count             number of messages, if any
344  * @param x_msg_data              message text, if any
345  * @rep:scope public
346  * @rep:lifecycle active
347  * @rep:displayname Unassign Delivery Line From Shipment Batch
348  */
349 PROCEDURE Cancel_Line(
350           p_api_version_number   IN  NUMBER,
351           p_init_msg_list        IN  VARCHAR2,
352           p_commit               IN  VARCHAR2,
353           p_document_number      IN  VARCHAR2,
354           p_line_number          IN  VARCHAR2,
355           p_cancel_quantity      IN  NUMBER,
356           x_return_status        OUT NOCOPY    VARCHAR2,
357           x_msg_count            OUT NOCOPY    NUMBER,
358           x_msg_data             OUT NOCOPY    VARCHAR2 )
359 AS
360 
361    l_msg_count              NUMBER;
362    l_return_status          VARCHAR2(1);
363    l_msg_data               VARCHAR2(1000);
364 
365    l_api_version_number     CONSTANT NUMBER := 1.0;
366    l_api_name               CONSTANT VARCHAR2(30):= 'Cancel_Line';
367 
368    --
369    l_debug_on               BOOLEAN;
370    l_module_name CONSTANT   VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || l_api_name;
371    --
372 BEGIN
373    --
374    l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
375    --
376    IF l_debug_on IS NULL
377    THEN
378        l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
379    END IF;
380    --
381    IF l_debug_on THEN
382       WSH_DEBUG_SV.push(l_module_name);
383       --
384       WSH_DEBUG_SV.log(l_module_name, 'p_commit', p_commit);
385       WSH_DEBUG_SV.log(l_module_name, 'p_api_version_number', p_api_version_number);
386       WSH_DEBUG_SV.log(l_module_name, 'p_document_number', p_document_number);
387       WSH_DEBUG_SV.log(l_module_name, 'p_line_number', p_line_number);
388       WSH_DEBUG_SV.log(l_module_name, 'p_cancel_quantity', p_cancel_quantity);
389    END IF;
390    --
391    x_return_status     := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
392    -- Initialize Message List
393    IF FND_API.to_Boolean(p_init_msg_list) THEN
394       FND_MSG_PUB.initialize;
395    END IF;
396 
397    --  Standard call to check for call compatibility
398    IF NOT FND_API.Compatible_API_Call (
399               l_api_version_number,
400               p_api_version_number,
401               l_api_name,
402               G_PKG_NAME )
403    THEN
404       --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
405       RAISE FND_API.G_EXC_ERROR;
406    END IF;
407 
408    IF l_debug_on THEN
409       WSH_DEBUG_SV.logmsg(l_module_name, 'Calling WSH_SHIPMENT_BATCH_PKG.Cancel_Line', WSH_DEBUG_SV.C_PROC_LEVEL);
410    END IF;
411    --
412    WSH_SHIPMENT_BATCH_PKG.Cancel_Line(
413             p_document_number  =>  p_document_number ,
414             p_line_number      =>  p_line_number     ,
415             p_cancel_quantity   =>  p_cancel_quantity  ,
416             x_return_status    =>  l_return_status   );
417 
418    --
419    IF l_debug_on THEN
420       WSH_DEBUG_SV.log(l_module_name, 'Return Status of WSH_SHIPMENT_BATCH_PKG.Cancel_Line', l_return_status);
421    END IF;
422    --
423 
424    IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
425       RAISE FND_API.G_EXC_ERROR;
426    END IF;
427 
428    IF p_commit = FND_API.G_TRUE THEN
429       COMMIT;
430    END IF;
431 
432    --
433    IF l_debug_on THEN
434       WSH_DEBUG_SV.log(l_module_name, 'Return Status', x_return_status);
435       WSH_DEBUG_SV.pop(l_module_name);
436    END IF;
437    --
438 EXCEPTION
439    WHEN FND_API.G_EXC_ERROR THEN
440       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
441       --
442       IF l_debug_on THEN
443           WSH_DEBUG_SV.logmsg(l_module_name,'Rolling back the transactions');
444       END IF;
445       --
446       ROLLBACK;
447       FND_MSG_PUB.Count_And_Get(
448                   p_count   => x_msg_count,
449                   p_data    => x_msg_data,
450                   p_encoded => fnd_api.g_false);
451       IF l_debug_on THEN
452           WSH_DEBUG_SV.logmsg(l_module_name, 'Error occured while cancelling delivery line');
453           WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
454       END IF;
455    WHEN others THEN
456       x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
457       --
458       IF l_debug_on THEN
459           WSH_DEBUG_SV.logmsg(l_module_name,'Rolling back the transactions');
460       END IF;
461       --
462       ROLLBACK;
463       FND_MSG_PUB.Count_And_Get(
464                   p_count   => x_msg_count,
465                   p_data    => x_msg_data,
466                   p_encoded => fnd_api.g_false);
467       --
468       IF l_debug_on THEN
469          WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
470          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
471       END IF;
472 END Cancel_Line;
473 
474 END WSH_SHIPMENT_BATCH_PUB;