24: -- The procedure returns with success if no delivery details are passed in.
25: ------------------------------------------------------------
26: PROCEDURE tms_delivery_detail_split
27: (p_detail_tab IN WSH_ENTITY_INFO_TAB,
28: p_item_quantity_uom_tab IN WSH_UTIL_CORE.COLUMN_TAB_TYPE,
29: x_return_status OUT NOCOPY VARCHAR2) IS
30:
31: l_parameter_info WSH_SHIPPING_PARAMS_PVT.PARAMETER_REC_TYP;
32: l_global_param_info WSH_SHIPPING_PARAMS_PVT.GLOBAL_PARAMETERS_REC_TYP;
39: l_exception_id WSH_EXCEPTIONS.EXCEPTION_ID%TYPE;
40: l_number_of_errors NUMBER;
41: l_number_of_warnings NUMBER;
42: l_return_status VARCHAR2(1);
43: l_dd_id_tab WSH_UTIL_CORE.ID_TAB_TYPE;
44: l_temp NUMBER;
45: l_exception_message WSH_EXCEPTIONS.MESSAGE%TYPE;
46: i NUMBER;
47: split_error EXCEPTION;
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:
73: l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED;
74:
75: IF (l_gc3_is_installed IS NULL) THEN
69: END IF;
70: --
71: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
72:
73: l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED;
74:
75: IF (l_gc3_is_installed IS NULL) THEN
76: l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED;
77: END IF;
72:
73: l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED;
74:
75: IF (l_gc3_is_installed IS NULL) THEN
76: l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED;
77: END IF;
78:
79: IF (l_gc3_is_installed = 'Y') THEN
80: --initializing
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;
114: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
115: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
116: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
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;
114: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
115: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
116: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
117: wsh_util_core.add_message(l_return_status,l_module_name);
118: x_return_status := l_return_status;
111:
112: IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
113: l_number_of_warnings := l_number_of_warnings + 1;
114: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
115: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
116: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
117: wsh_util_core.add_message(l_return_status,l_module_name);
118: x_return_status := l_return_status;
119: --
113: l_number_of_warnings := l_number_of_warnings + 1;
114: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
115: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
116: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
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);
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
150: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
151: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
152: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
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
150: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
151: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
152: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
153: wsh_util_core.add_message(l_return_status,l_module_name);
148: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
149: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
150: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
151: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
152: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
153: wsh_util_core.add_message(l_return_status,l_module_name);
154: l_number_of_errors := l_number_of_errors+1;
155:
156: ELSE
149: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
150: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
151: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
152: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
153: wsh_util_core.add_message(l_return_status,l_module_name);
154: l_number_of_errors := l_number_of_errors+1;
155:
156: ELSE
157:
154: l_number_of_errors := l_number_of_errors+1;
155:
156: ELSE
157:
158: IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
159: l_number_of_warnings := l_number_of_warnings + 1;
160: END IF;
161:
162: IF l_debug_on THEN
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;
242: ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR) THEN
243: --indivisible quantity, calculate split num by quantity
244: l_max_quantity := FLOOR(l_quantity); --take the maximum whole number quantity since not divisible
238: END IF;
239:
240: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
241: RAISE split_error;
242: ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR) THEN
243: --indivisible quantity, calculate split num by quantity
244: l_max_quantity := FLOOR(l_quantity); --take the maximum whole number quantity since not divisible
245:
246: IF (l_max_quantity = 0) THEN
255: END IF;
256:
257: ELSE --has decimal quantity
258:
259: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
260: l_number_of_warnings := l_number_of_warnings+1;
261: END IF;
262:
263: --if there's no remainder that means the number of splits is one less
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;
303: END IF;
304:
305: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
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;
303: END IF;
304:
305: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
306: l_number_of_warnings := l_number_of_warnings+1;
307: END IF;
308:
309: END IF; --detail weight > l_parameter_info.MAX_NET_WEIGHT
309: END IF; --detail weight > l_parameter_info.MAX_NET_WEIGHT
310: END IF; --l_parameter_info.MAX_NET_WEIGHT IS NOT NULL
311: --}
312: END IF; --l_parameter_info.otm_enabled = 'Y'
313: END IF; --l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR or UNEXP ERROR
314:
315: EXCEPTION
316: WHEN split_error THEN --catching every exception and treat it as cannot split
317: --
366: END LOOP;
367: END IF;
368:
369: IF l_number_of_errors > 0 THEN
370: x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
371: ELSIF l_number_of_warnings > 0 THEN
372: x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
373: ELSE
374: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
368:
369: IF l_number_of_errors > 0 THEN
370: x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
371: ELSIF l_number_of_warnings > 0 THEN
372: x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
373: ELSE
374: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
375: END IF;
376:
370: x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
371: ELSIF l_number_of_warnings > 0 THEN
372: x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
373: ELSE
374: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
375: END IF;
376:
377: --
378: -- Debug Statements
385: EXCEPTION
386:
387: WHEN OTHERS THEN
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 '||