[Home] [Help]
PACKAGE BODY: APPS.AHL_OSP_ORDERS_CUHK
Source
1 PACKAGE BODY AHL_OSP_ORDERS_CUHK AS
2 /* $Header: AHLCOSPB.pls 120.0 2005/11/11 11:49:50 jeli noship $*/
3 G_PKG_NAME CONSTANT VARCHAR2(30) :='AHL_OSP_ORDERS_CUHK';
4 PROCEDURE process_osp_order_pre(
5 p_osp_order_rec IN AHL_OSP_ORDERS_PVT.osp_order_rec_type,
6 p_osp_order_lines_tbl IN AHL_OSP_ORDERS_PVT.osp_order_lines_tbl_type,
7 x_return_status OUT NOCOPY VARCHAR2,
8 x_msg_count OUT NOCOPY NUMBER,
9 x_msg_data OUT NOCOPY VARCHAR2) IS
10 /*
11 CURSOR get_item_flag(c_inventory_item_id NUMBER, c_inventory_org_id NUMBER) IS
12 SELECT comms_nl_trackable_flag --hazardous_material_flag
13 FROM mtl_system_items_kfv
14 WHERE inventory_item_id = c_inventory_item_id
15 AND organization_id = c_inventory_org_id;
16 l_first_item_flag VARCHAR2(1);
17 l_temp_item_flag VARCHAR2(1);
18 */
19 l_msg_count NUMBER;
20 l_api_name VARCHAR2(30);
21 BEGIN
22 --Initialize API return status to success
23 x_return_status := FND_API.G_RET_STS_SUCCESS;
24
25 l_api_name := 'PROCESS_OSP_ORDER_PRE';
26
27 /* This section was commented out for the user to customize
28 IF (p_osp_order_rec.operation_flag = 'C' AND p_osp_order_lines_tbl.COUNT > 0) THEN
29 OPEN get_item_flag(p_osp_order_lines_tbl(1).inventory_item_id, p_osp_order_lines_tbl(1).inventory_org_id );
30 FETCH get_item_flag INTO l_first_item_flag;
31 IF get_item_flag%NOTFOUND THEN
32 FND_MESSAGE.set_name('AHL', 'AHL_OSP_ORD_INV_ITEM');
33 FND_MESSAGE.set_token('ITEM_ID', p_osp_order_lines_tbl(1).inventory_item_id);
34 FND_MSG_PUB.add;
35 CLOSE get_item_flag;
36 RAISE FND_API.G_EXC_ERROR;
37 ELSE
38 CLOSE get_item_flag;
39 END IF;
40 FOR i IN p_osp_order_lines_tbl.FIRST.. p_osp_order_lines_tbl.LAST LOOP
41 OPEN get_item_flag(p_osp_order_lines_tbl(i).inventory_item_id, p_osp_order_lines_tbl(i).inventory_org_id );
42 FETCH get_item_flag INTO l_temp_item_flag;
43 IF get_item_flag%NOTFOUND THEN
44 FND_MESSAGE.set_name('AHL', 'AHL_OSP_ORD_INV_ITEM');
45 FND_MESSAGE.set_token('ITEM_ID', p_osp_order_lines_tbl(i).inventory_item_id);
46 FND_MSG_PUB.ADD;
47 CLOSE get_item_flag;
48 RAISE FND_API.G_EXC_ERROR;
49 ELSE
50 CLOSE get_item_flag;
51 END IF;
52 IF ((l_first_item_flag IS NULL AND l_temp_item_flag IS NOT NULL) OR
53 (l_first_item_flag IS NOT NULL AND l_temp_item_flag IS NULL) OR
54 (l_temp_item_flag <> l_first_item_flag)) THEN
55 -- Throw an error about the mixed nature of items
56 FND_MESSAGE.set_name('AHL', 'AHL_OSP_CANNOT_MIX_ITEMS');
57 FND_MESSAGE.set_token('ITEM_ID', p_osp_order_lines_tbl(i).inventory_item_id);
58 FND_MSG_PUB.add;
59 RAISE FND_API.G_EXC_ERROR;
60 END IF;
61 END LOOP;
62 END IF;
63 */
64 -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
65 l_msg_count := FND_MSG_PUB.count_msg;
66 IF l_msg_count > 0 THEN
67 x_msg_count := l_msg_count;
68 RAISE FND_API.G_EXC_ERROR;
69 END IF;
70
71 -- Count and Get messages (optional)
72 FND_MSG_PUB.count_and_get(
73 p_encoded => FND_API.G_FALSE,
74 p_count => x_msg_count,
75 p_data => x_msg_data);
76
77 EXCEPTION
78 WHEN FND_API.G_EXC_ERROR THEN
79 x_return_status := FND_API.G_RET_STS_ERROR;
80 FND_MSG_PUB.count_and_get(
81 p_encoded => FND_API.G_FALSE,
82 p_count => x_msg_count,
83 p_data => x_msg_data);
84
85 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
86 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
87 FND_MSG_PUB.count_and_get(
88 p_encoded => FND_API.G_FALSE,
89 p_count => x_msg_count,
90 p_data => x_msg_data);
91
92 WHEN OTHERS THEN
93 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
94 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
95 THEN
96 FND_MSG_PUB.add_exc_msg(
97 p_pkg_name => G_PKG_NAME,
98 p_procedure_name => l_api_name,
99 p_error_text => SUBSTRB(SQLERRM,1,240));
100 END IF;
101 FND_MSG_PUB.count_and_get(
102 p_encoded => FND_API.G_FALSE,
103 p_count => x_msg_count,
104 p_data => x_msg_data);
105 END process_osp_order_pre;
106
107 PROCEDURE process_osp_order_post(
108 p_osp_order_rec IN AHL_OSP_ORDERS_PVT.osp_order_rec_type,
109 p_osp_order_lines_tbl IN AHL_OSP_ORDERS_PVT.osp_order_lines_tbl_type,
110 x_return_status OUT NOCOPY VARCHAR2,
111 x_msg_count OUT NOCOPY NUMBER,
112 x_msg_data OUT NOCOPY VARCHAR2) IS
113 l_msg_count NUMBER;
114 l_api_name VARCHAR2(30);
115 BEGIN
116 --Initialize API return status to success
117 x_return_status := FND_API.G_RET_STS_SUCCESS;
118
119 l_api_name := 'PROCESS_OSP_ORDER_POST';
120
121 --Users can add their own customization code here
122
123 -- Get all the error messages from the previous steps (if any) and raise the appropriate Exception
124 l_msg_count := FND_MSG_PUB.count_msg;
125 IF l_msg_count > 0 THEN
126 x_msg_count := l_msg_count;
127 RAISE FND_API.G_EXC_ERROR;
128 END IF;
129
130 -- Count and Get messages (optional)
131 FND_MSG_PUB.count_and_get(
132 p_encoded => FND_API.G_FALSE,
133 p_count => x_msg_count,
134 p_data => x_msg_data);
135
136 EXCEPTION
137 WHEN FND_API.G_EXC_ERROR THEN
138 x_return_status := FND_API.G_RET_STS_ERROR;
139 FND_MSG_PUB.count_and_get(
140 p_encoded => FND_API.G_FALSE,
141 p_count => x_msg_count,
142 p_data => x_msg_data);
143
144 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
145 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
146 FND_MSG_PUB.count_and_get(
147 p_encoded => FND_API.G_FALSE,
148 p_count => x_msg_count,
149 p_data => x_msg_data);
150
151 WHEN OTHERS THEN
152 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
153 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
154 FND_MSG_PUB.add_exc_msg(
155 p_pkg_name => G_PKG_NAME,
156 p_procedure_name => l_api_name,
157 p_error_text => SUBSTRB(SQLERRM,1,240));
158 END IF;
159 FND_MSG_PUB.count_and_get(
160 p_encoded => FND_API.G_FALSE,
161 p_count => x_msg_count,
162 p_data => x_msg_data);
163 END process_osp_order_post;
164
165 END AHL_OSP_ORDERS_CUHK;