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: -- LSP PROJECT :
32: CURSOR c_get_client(p_delivery_detail_id IN NUMBER) IS
48: l_exception_id WSH_EXCEPTIONS.EXCEPTION_ID%TYPE;
49: l_number_of_errors NUMBER;
50: l_number_of_warnings NUMBER;
51: l_return_status VARCHAR2(1);
52: l_dd_id_tab WSH_UTIL_CORE.ID_TAB_TYPE;
53: l_temp NUMBER;
54: l_exception_message WSH_EXCEPTIONS.MESSAGE%TYPE;
55: i NUMBER;
56: split_error EXCEPTION;
80: WSH_DEBUG_SV.log(l_module_name,'P_DETAIL_TAB COUNT',p_detail_tab.COUNT);
81: WSH_DEBUG_SV.log(l_module_name,'P_ITEM_QUANTITY_UOM_TAB COUNT',p_item_quantity_uom_tab.COUNT);
82: END IF;
83: --
84: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
85:
86: l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED;
87:
88: IF (l_gc3_is_installed IS NULL) THEN
82: END IF;
83: --
84: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
85:
86: l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED;
87:
88: IF (l_gc3_is_installed IS NULL) THEN
89: l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED;
90: END IF;
85:
86: l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED;
87:
88: IF (l_gc3_is_installed IS NULL) THEN
89: l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED;
90: END IF;
91:
92: IF (l_gc3_is_installed = 'Y') THEN
93: --initializing
121: IF l_debug_on THEN
122: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_SHIPPING_PARAMS_PVT.Get_Global_Parameters: ' || l_return_status);
123: END IF;
124:
125: IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
126: l_number_of_warnings := l_number_of_warnings + 1;
127: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
128: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
129: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
123: END IF;
124:
125: IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
126: l_number_of_warnings := l_number_of_warnings + 1;
127: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
128: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
129: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
130: wsh_util_core.add_message(l_return_status,l_module_name);
131: x_return_status := l_return_status;
124:
125: IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
126: l_number_of_warnings := l_number_of_warnings + 1;
127: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
128: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
129: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
130: wsh_util_core.add_message(l_return_status,l_module_name);
131: x_return_status := l_return_status;
132: --
126: l_number_of_warnings := l_number_of_warnings + 1;
127: ELSIF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
128: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
129: FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_GLOBAL_PARAMETER');
130: wsh_util_core.add_message(l_return_status,l_module_name);
131: x_return_status := l_return_status;
132: --
133: IF l_debug_on THEN
134: WSH_DEBUG_SV.log(l_module_name, 'x_return_status', x_return_status);
169: IF l_debug_on THEN
170: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_SHIPPING_PARAMS_PVT.Get: ' || l_return_status);
171: END IF;
172:
173: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
174: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
175: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
176: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
177: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
170: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_SHIPPING_PARAMS_PVT.Get: ' || l_return_status);
171: END IF;
172:
173: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
174: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
175: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
176: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
177: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
178: wsh_util_core.add_message(l_return_status,l_module_name);
173: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
174: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
175: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
176: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
177: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
178: wsh_util_core.add_message(l_return_status,l_module_name);
179: l_number_of_errors := l_number_of_errors+1;
180:
181: ELSE
174: WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
175: FND_MESSAGE.Set_Name('WSH', 'WSH_PARAM_NOT_DEFINED');
176: FND_MESSAGE.Set_Token('ORGANIZAION_CODE',
177: wsh_util_core.get_org_name(p_detail_tab(i).organization_id));
178: wsh_util_core.add_message(l_return_status,l_module_name);
179: l_number_of_errors := l_number_of_errors+1;
180:
181: ELSE
182:
179: l_number_of_errors := l_number_of_errors+1;
180:
181: ELSE
182:
183: IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
184: l_number_of_warnings := l_number_of_warnings + 1;
185: END IF;
186:
187: IF l_debug_on THEN
279: l_return_status);
280: WSH_DEBUG_SV.log(l_module_name, 'l_quantity', l_quantity);
281: END IF;
282:
283: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
284: RAISE split_error;
285: ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR) THEN
286: --indivisible quantity, calculate split num by quantity
287: l_max_quantity := FLOOR(l_quantity); --take the maximum whole number quantity since not divisible
281: END IF;
282:
283: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
284: RAISE split_error;
285: ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR) THEN
286: --indivisible quantity, calculate split num by quantity
287: l_max_quantity := FLOOR(l_quantity); --take the maximum whole number quantity since not divisible
288:
289: IF (l_max_quantity = 0) THEN
298: END IF;
299:
300: ELSE --has decimal quantity
301:
302: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
303: l_number_of_warnings := l_number_of_warnings+1;
304: END IF;
305:
306: --if there's no remainder that means the number of splits is one less
359: IF l_debug_on THEN
360: WSH_DEBUG_SV.logmsg(l_module_name, 'return status from WSH_DELIVERY_DETAILS_ACTIONS.SPLIT_DELIVERY_DETAILS_BULK: ' || l_return_status);
361: END IF;
362:
363: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR, WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
364: RAISE split_error;
365: END IF;
366:
367: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
363: IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR, WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
364: RAISE split_error;
365: END IF;
366:
367: IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
368: l_number_of_warnings := l_number_of_warnings+1;
369: END IF;
370:
371: END IF; --detail weight > l_parameter_info.MAX_NET_WEIGHT
371: END IF; --detail weight > l_parameter_info.MAX_NET_WEIGHT
372: END IF; --l_parameter_info.MAX_NET_WEIGHT IS NOT NULL
373: --}
374: END IF; --l_parameter_info.otm_enabled = 'Y'
375: END IF; --l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR or UNEXP ERROR
376:
377: EXCEPTION
378: WHEN split_error THEN --catching every exception and treat it as cannot split
379: --
428: END LOOP;
429: END IF;
430:
431: IF l_number_of_errors > 0 THEN
432: x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
433: ELSIF l_number_of_warnings > 0 THEN
434: x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
435: ELSE
436: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
430:
431: IF l_number_of_errors > 0 THEN
432: x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
433: ELSIF l_number_of_warnings > 0 THEN
434: x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
435: ELSE
436: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
437: END IF;
438:
432: x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
433: ELSIF l_number_of_warnings > 0 THEN
434: x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
435: ELSE
436: x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
437: END IF;
438:
439: --
440: -- Debug Statements
447: EXCEPTION
448:
449: WHEN OTHERS THEN
450: --
451: WSH_UTIL_CORE.default_handler(
452: 'WSH_DELIVERY_DETAILS_SPLITTER.TMS_DELIVERY_DETAIL_SPLIT', l_module_name);
453: IF l_debug_on THEN
454: WSH_DEBUG_SV.logmsg(l_module_name,
455: 'Unexpected error has occured. Oracle error message is '||