57: --
58: l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
59: --
60: IF l_debug_on IS NULL THEN
61: l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
62: END IF;
63: --
64: IF l_debug_on THEN
65: WSH_DEBUG_SV.push(l_module_name);
61: l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
62: END IF;
63: --
64: IF l_debug_on THEN
65: WSH_DEBUG_SV.push(l_module_name);
66: --
67: WSH_DEBUG_SV.log(l_module_name,'P_DETAIL_TAB COUNT',p_detail_tab.COUNT);
68: WSH_DEBUG_SV.log(l_module_name,'P_ITEM_QUANTITY_UOM_TAB COUNT',p_item_quantity_uom_tab.COUNT);
69: END IF;
63: --
64: IF l_debug_on THEN
65: WSH_DEBUG_SV.push(l_module_name);
66: --
67: WSH_DEBUG_SV.log(l_module_name,'P_DETAIL_TAB COUNT',p_detail_tab.COUNT);
68: WSH_DEBUG_SV.log(l_module_name,'P_ITEM_QUANTITY_UOM_TAB COUNT',p_item_quantity_uom_tab.COUNT);
69: END IF;
70: --
71: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
64: IF l_debug_on THEN
65: WSH_DEBUG_SV.push(l_module_name);
66: --
67: WSH_DEBUG_SV.log(l_module_name,'P_DETAIL_TAB COUNT',p_detail_tab.COUNT);
68: WSH_DEBUG_SV.log(l_module_name,'P_ITEM_QUANTITY_UOM_TAB COUNT',p_item_quantity_uom_tab.COUNT);
69: END IF;
70: --
71: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
72:
87: i := 0;
88:
89: IF (p_detail_tab.COUNT = 0) THEN
90: IF l_debug_on THEN
91: WSH_DEBUG_SV.logmsg(l_module_name, 'no delivery detail to split');
92: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
93: WSH_DEBUG_SV.pop(l_module_name);
94: END IF;
95: RETURN;
88:
89: IF (p_detail_tab.COUNT = 0) THEN
90: IF l_debug_on THEN
91: WSH_DEBUG_SV.logmsg(l_module_name, 'no delivery detail to split');
92: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
93: WSH_DEBUG_SV.pop(l_module_name);
94: END IF;
95: RETURN;
96: END IF;
89: IF (p_detail_tab.COUNT = 0) THEN
90: IF l_debug_on THEN
91: WSH_DEBUG_SV.logmsg(l_module_name, 'no delivery detail to split');
92: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
93: WSH_DEBUG_SV.pop(l_module_name);
94: END IF;
95: RETURN;
96: END IF;
97:
97:
98: --get weight UOM from global parameters
99:
100: IF l_debug_on THEN
101: WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_SHIPPING_PARAMS_PVT.Get_Global_Parameters',WSH_DEBUG_SV.C_PROC_LEVEL);
102: END IF;
103:
104: WSH_SHIPPING_PARAMS_PVT.get_global_parameters(
105: x_param_info => l_global_param_info,
105: x_param_info => l_global_param_info,
106: x_return_status => l_return_status);
107:
108: IF l_debug_on THEN
109: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_SHIPPING_PARAMS_PVT.Get_Global_Parameters: ' || l_return_status);
110: END IF;
111:
112: IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
113: l_number_of_warnings := l_number_of_warnings + 1;
117: wsh_util_core.add_message(l_return_status,l_module_name);
118: x_return_status := l_return_status;
119: --
120: IF l_debug_on THEN
121: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
122: WSH_DEBUG_SV.pop(l_module_name);
123: END IF;
124: RETURN;
125: END IF;
118: x_return_status := l_return_status;
119: --
120: IF l_debug_on THEN
121: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
122: WSH_DEBUG_SV.pop(l_module_name);
123: END IF;
124: RETURN;
125: END IF;
126:
132:
133: BEGIN
134: --get net weight limit
135: IF l_debug_on THEN
136: WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_SHIPPING_PARAMS_PVT.Get',WSH_DEBUG_SV.C_PROC_LEVEL);
137: END IF;
138:
139: WSH_SHIPPING_PARAMS_PVT.get(
140: p_organization_id => p_detail_tab(i).organization_id,
141: x_param_info => l_parameter_info,
142: x_return_status => l_return_status);
143:
144: IF l_debug_on THEN
145: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_SHIPPING_PARAMS_PVT.Get: ' || l_return_status);
146: END IF;
147:
148: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
149: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
159: l_number_of_warnings := l_number_of_warnings + 1;
160: END IF;
161:
162: IF l_debug_on THEN
163: wsh_debug_sv.log(l_module_name,'l_parameter_info.otm_enabled', l_parameter_info.otm_enabled );
164: END IF;
165:
166: --Added the outer if condition to check OTM enabled at org level.
167: IF l_parameter_info.otm_enabled = 'Y' THEN --OTM R12 Org-Specific
166: --Added the outer if condition to check OTM enabled at org level.
167: IF l_parameter_info.otm_enabled = 'Y' THEN --OTM R12 Org-Specific
168: --{
169: IF l_debug_on THEN
170: wsh_debug_sv.log(l_module_name,
171: 'Max Net Weight',
172: l_parameter_info.max_net_weight);
173: wsh_debug_sv.log(l_module_name,
174: 'Global UOM',
169: IF l_debug_on THEN
170: wsh_debug_sv.log(l_module_name,
171: 'Max Net Weight',
172: l_parameter_info.max_net_weight);
173: wsh_debug_sv.log(l_module_name,
174: 'Global UOM',
175: l_global_param_info.GU_WEIGHT_UOM);
176: wsh_debug_sv.log(l_module_name,
177: 'detail uom',
172: l_parameter_info.max_net_weight);
173: wsh_debug_sv.log(l_module_name,
174: 'Global UOM',
175: l_global_param_info.GU_WEIGHT_UOM);
176: wsh_debug_sv.log(l_module_name,
177: 'detail uom',
178: p_detail_tab(i).weight_uom);
179: END IF;
180:
192: quantity => l_parameter_info.MAX_NET_WEIGHT);
193: END IF;
194:
195: IF l_debug_on THEN
196: wsh_debug_sv.log(l_module_name,
197: 'Converted Max Net Weight',
198: l_parameter_info.max_net_weight);
199:
200: wsh_debug_sv.log(l_module_name,
196: wsh_debug_sv.log(l_module_name,
197: 'Converted Max Net Weight',
198: l_parameter_info.max_net_weight);
199:
200: wsh_debug_sv.log(l_module_name,
201: 'Detail Weight',
202: NVL(p_detail_tab(i).net_weight, 0));
203: END IF;
204:
216: --number of split needed idealy
217: l_num_split := FLOOR(p_detail_tab(i).net_weight/l_parameter_info.MAX_NET_WEIGHT);
218:
219: IF l_debug_on THEN
220: WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DETAILS_VALIDATIONS.CHECK_DECIMAL_QUANTITY',WSH_DEBUG_SV.C_PROC_LEVEL);
221: WSH_DEBUG_SV.log(l_module_name, 'l_max_quantity', l_max_quantity);
222: WSH_DEBUG_SV.log(l_module_name, 'l_num_split', l_num_split);
223: END IF;
224:
217: l_num_split := FLOOR(p_detail_tab(i).net_weight/l_parameter_info.MAX_NET_WEIGHT);
218:
219: IF l_debug_on THEN
220: WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DETAILS_VALIDATIONS.CHECK_DECIMAL_QUANTITY',WSH_DEBUG_SV.C_PROC_LEVEL);
221: WSH_DEBUG_SV.log(l_module_name, 'l_max_quantity', l_max_quantity);
222: WSH_DEBUG_SV.log(l_module_name, 'l_num_split', l_num_split);
223: END IF;
224:
225: WSH_DETAILS_VALIDATIONS.check_decimal_quantity(
218:
219: IF l_debug_on THEN
220: WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DETAILS_VALIDATIONS.CHECK_DECIMAL_QUANTITY',WSH_DEBUG_SV.C_PROC_LEVEL);
221: WSH_DEBUG_SV.log(l_module_name, 'l_max_quantity', l_max_quantity);
222: WSH_DEBUG_SV.log(l_module_name, 'l_num_split', l_num_split);
223: END IF;
224:
225: WSH_DETAILS_VALIDATIONS.check_decimal_quantity(
226: p_item_id => p_detail_tab(i).item_id,
230: x_output_quantity => l_quantity,
231: x_return_status => l_return_status);
232:
233: IF l_debug_on THEN
234: wsh_debug_sv.log(l_module_name,
235: 'check decimal quantity return status',
236: l_return_status);
237: WSH_DEBUG_SV.log(l_module_name, 'l_quantity', l_quantity);
238: END IF;
233: IF l_debug_on THEN
234: wsh_debug_sv.log(l_module_name,
235: 'check decimal quantity return status',
236: l_return_status);
237: WSH_DEBUG_SV.log(l_module_name, 'l_quantity', l_quantity);
238: END IF;
239:
240: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
241: RAISE split_error;
267: END IF;
268: END IF;
269:
270: IF l_debug_on THEN
271: WSH_DEBUG_SV.log(l_module_name, 'l_num_split', l_num_split);
272: END IF;
273:
274: IF (l_num_split = 0) THEN
275: RAISE split_error;
278: l_dd_id_tab.DELETE;
279: l_new_detail_id := NULL;
280:
281: IF l_debug_on THEN
282: WSH_DEBUG_SV.logmsg(l_module_name,
283: 'Calling program unit WSH_DELIVERY_DETAILS_ACTIONS.SPLIT_DELIVERY_DETAILS_BULK',
284: WSH_DEBUG_SV.C_PROC_LEVEL);
285: WSH_DEBUG_SV.log(l_module_name, 'l_num_split', l_num_split);
286: END IF;
280:
281: IF l_debug_on THEN
282: WSH_DEBUG_SV.logmsg(l_module_name,
283: 'Calling program unit WSH_DELIVERY_DETAILS_ACTIONS.SPLIT_DELIVERY_DETAILS_BULK',
284: WSH_DEBUG_SV.C_PROC_LEVEL);
285: WSH_DEBUG_SV.log(l_module_name, 'l_num_split', l_num_split);
286: END IF;
287:
288: WSH_DELIVERY_DETAILS_ACTIONS.split_delivery_details_bulk (
281: IF l_debug_on THEN
282: WSH_DEBUG_SV.logmsg(l_module_name,
283: 'Calling program unit WSH_DELIVERY_DETAILS_ACTIONS.SPLIT_DELIVERY_DETAILS_BULK',
284: WSH_DEBUG_SV.C_PROC_LEVEL);
285: WSH_DEBUG_SV.log(l_module_name, 'l_num_split', l_num_split);
286: END IF;
287:
288: WSH_DELIVERY_DETAILS_ACTIONS.split_delivery_details_bulk (
289: p_from_detail_id => p_detail_tab(i).entity_id,
294: x_return_status => l_return_status
295: );
296:
297: IF l_debug_on THEN
298: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_DELIVERY_DETAILS_ACTIONS.SPLIT_DELIVERY_DETAILS_BULK: ' || l_return_status);
299: END IF;
300:
301: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR, WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
302: RAISE split_error;
328:
329: l_exception_id := NULL;
330:
331: IF l_debug_on THEN
332: WSH_DEBUG_SV.logmsg(l_module_name,
333: 'Calling program unit WSH_XC_UTIL.LOG_EXCEPTION',
334: WSH_DEBUG_SV.C_PROC_LEVEL);
335: END IF;
336:
330:
331: IF l_debug_on THEN
332: WSH_DEBUG_SV.logmsg(l_module_name,
333: 'Calling program unit WSH_XC_UTIL.LOG_EXCEPTION',
334: WSH_DEBUG_SV.C_PROC_LEVEL);
335: END IF;
336:
337: WSH_XC_UTIL.log_exception(
338: p_api_version => 1.0,
349: p_message => SUBSTRB(l_exception_message,1,2000)
350: );
351:
352: IF l_debug_on THEN
353: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_XC_UTIL.log_exception: ' || l_return_status);
354: END IF;
355:
356: IF l_debug_on THEN
357: wsh_debug_sv.logmsg(l_module_name,
353: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_XC_UTIL.log_exception: ' || l_return_status);
354: END IF;
355:
356: IF l_debug_on THEN
357: wsh_debug_sv.logmsg(l_module_name,
358: 'WSH_DELIVERY_DETAILS_SPLITTER.TMS_DELIVERY_DETAIL_SPLIT exception has occured ',
359: wsh_debug_sv.c_excep_level);
360: END IF;
361:
355:
356: IF l_debug_on THEN
357: wsh_debug_sv.logmsg(l_module_name,
358: 'WSH_DELIVERY_DETAILS_SPLITTER.TMS_DELIVERY_DETAIL_SPLIT exception has occured ',
359: wsh_debug_sv.c_excep_level);
360: END IF;
361:
362: END;
363:
377: --
378: -- Debug Statements
379: --
380: IF l_debug_on THEN
381: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
382: WSH_DEBUG_SV.pop(l_module_name);
383: END IF;
384: --
385: EXCEPTION
378: -- Debug Statements
379: --
380: IF l_debug_on THEN
381: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
382: WSH_DEBUG_SV.pop(l_module_name);
383: END IF;
384: --
385: EXCEPTION
386:
388: --
389: WSH_UTIL_CORE.default_handler(
390: 'WSH_DELIVERY_DETAILS_SPLITTER.TMS_DELIVERY_DETAIL_SPLIT', l_module_name);
391: IF l_debug_on THEN
392: WSH_DEBUG_SV.logmsg(l_module_name,
393: 'Unexpected error has occured. Oracle error message is '||
394: SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
395: WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
396: END IF;
390: 'WSH_DELIVERY_DETAILS_SPLITTER.TMS_DELIVERY_DETAIL_SPLIT', l_module_name);
391: IF l_debug_on THEN
392: WSH_DEBUG_SV.logmsg(l_module_name,
393: 'Unexpected error has occured. Oracle error message is '||
394: SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
395: WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
396: END IF;
397: END TMS_DELIVERY_DETAIL_SPLIT;
398:
391: IF l_debug_on THEN
392: WSH_DEBUG_SV.logmsg(l_module_name,
393: 'Unexpected error has occured. Oracle error message is '||
394: SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
395: WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
396: END IF;
397: END TMS_DELIVERY_DETAIL_SPLIT;
398:
399: END WSH_DELIVERY_DETAILS_SPLITTER;