DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_ITEM_TECHNICAL_DATA_PVT

Source


1 PACKAGE BODY GMD_ITEM_TECHNICAL_DATA_PVT AS
2 /* $Header: GMDVITDB.pls 120.7 2012/03/30 02:39:16 maychen ship $ */
3 
4 --Global Variables
5 G_PKG_NAME 	CONSTANT	VARCHAR2(30)	:=	'GMD_ITEM_TECHNICAL_DATA_PVT';
6 
7 --Start of comments
8 --+========================================================================+
9 --| API Name    : INSERT_ITEM_TECHNICAL_DATA_HDR                           |
10 --| TYPE        : Private                                                  |
11 --| Function    : Inserts the Item technical data header record            |
12 --| Notes       :                                                          |
13 --|                                                                        |
14 --| HISTORY                                                                |
15 --|     S.Sriram        21-Feb-2005     Created                            |
16 --+========================================================================+
17 -- End of comments
18 
19 PROCEDURE INSERT_ITEM_TECHNICAL_DATA_HDR
20 (
21   p_api_version		IN  		NUMBER
22 , p_init_msg_list	IN  		VARCHAR2 := FND_API.G_FALSE
23 , p_commit		IN  		VARCHAR2 := FND_API.G_FALSE
24 , x_return_status	OUT 	NOCOPY 	VARCHAR2
25 , x_msg_count		OUT 	NOCOPY 	NUMBER
26 , x_msg_data		OUT 	NOCOPY 	VARCHAR2
27 , x_tech_data_id        IN OUT  NOCOPY  NUMBER
28 , p_organization_id     IN              NUMBER
29 , p_inventory_item_id   IN              NUMBER
30 , p_lot_no		IN		VARCHAR2
31 , p_lot_organization_id IN              NUMBER
32 , p_formula_id          IN              NUMBER
33 , p_batch_id            IN              NUMBER
34 , p_delete_mark         IN              NUMBER
35 , p_text_code           IN              NUMBER
36 , p_creation_date       IN              DATE
37 , p_created_by          IN              NUMBER
38 , p_last_update_date    IN              DATE
39 , p_last_updated_by     IN              NUMBER
40 , p_last_update_login   IN              NUMBER
41 ) IS
42 
43 l_api_name		CONSTANT 	VARCHAR2(40)	:= 'Insert_Item_Technical_Data_hdr';
44 l_api_version           CONSTANT 	NUMBER 		:= 1.0;
45 
46 l_tech_data_id                          NUMBER;
47 l_data_type                             NUMBER;
48 
49 BEGIN
50 
51 -- Standard Start of API savepoint
52 SAVEPOINT       Insert_Item_Technical_Data ;
53 
54 -- Initialize message list if p_init_msg_list is set to TRUE.
55 IF FND_API.to_Boolean( p_init_msg_list ) THEN
56 	FND_MSG_PUB.initialize;
57 END IF;
58 
59 -- Standard call to check for call compatibility.
60 IF NOT FND_API.Compatible_API_Call	(l_api_version        	,
61      	    	    	 		p_api_version        	,
62                                         l_api_name 		,
63     	    	    	    		G_PKG_NAME
64 					)
65 THEN
66 
67 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
68 END IF;
69 
70 --  Initialize API return status to success
71 x_return_status := FND_API.G_RET_STS_SUCCESS;
72 
73 --Bug 9819541 is fixed by changing the fnd_dual to sys.dual
74 IF (x_tech_data_id IS NULL) THEN
75         SELECT	GMD_TECH_DATA_ID_S.NEXTVAL
76         INTO	l_tech_data_id
77 	FROM	SYS.DUAL;
78 ELSE
79         l_tech_data_id := x_tech_data_id;
80 END IF;
81 x_tech_data_id := l_tech_data_id;
82 
83 INSERT INTO GMD_TECHNICAL_DATA_HDR (
84     TECH_DATA_ID,
85     INVENTORY_ITEM_ID,
86     ORGANIZATION_ID,
87     LOT_ORGANIZATION_ID,
88     LOT_NUMBER,
89     FORMULA_ID,
90     BATCH_ID,
91     DELETE_MARK,
92     TEXT_CODE,
93     CREATION_DATE,
94     CREATED_BY,
95     LAST_UPDATE_DATE,
96     LAST_UPDATED_BY,
97     LAST_UPDATE_LOGIN
98   ) VALUES (
99     x_tech_data_id,
100     p_inventory_item_id,
101     p_organization_id,
102     p_lot_organization_id,
103     p_lot_no,
104     p_formula_id,
105     p_batch_id,
106     p_delete_mark,
107     p_text_code,
108     p_creation_date,
109     p_created_by,
110     p_last_update_date,
111     p_last_updated_by,
112     p_last_update_login
113   );
114 
115   IF (SQL%ROWCOUNT < 1) THEN
116       RAISE NO_DATA_FOUND;
117   END IF;
118 
119   EXCEPTION
120   WHEN OTHERS THEN
121 	ROLLBACK TO Insert_Item_Technical_Data;
122         FND_MSG_PUB.Add_Exc_Msg('GMD_ITEM_TECHNICAL_DATA_PVT', 'INSERT_ITEM_TECHNICAL_DATA_HDR');
123         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
124         fnd_msg_pub.count_and_get (
125                     p_count => x_msg_count
126                    ,p_encoded => FND_API.g_false
127                    ,p_data => x_msg_data);
128 
129 END INSERT_ITEM_TECHNICAL_DATA_HDR;
130 
131 --Start of comments
132 --+========================================================================+
133 --| API Name    : INSERT_ITEM_TECHNICAL_DATA_DTL                           |
134 --| TYPE        : Private                                                  |
135 --| Function    : Inserts the Item technical data detail records           |
136 --| Notes       :                                                          |
137 --|                                                                        |
138 --| HISTORY                                                                |
139 --|     S.Sriram        21-Feb-2005     Created                            |
140 --+========================================================================+
141 -- End of comments
142 
143 PROCEDURE INSERT_ITEM_TECHNICAL_DATA_DTL
144 (
145   p_api_version		IN  		NUMBER
146 , p_init_msg_list	IN  		VARCHAR2 := FND_API.G_FALSE
147 , p_commit		IN  		VARCHAR2 := FND_API.G_FALSE
148 , x_return_status	OUT 	NOCOPY 	VARCHAR2
149 , x_msg_count		OUT 	NOCOPY 	NUMBER
150 , x_msg_data		OUT 	NOCOPY 	VARCHAR2
151 , x_tech_data_id        IN OUT  NOCOPY  NUMBER
152 , x_tech_parm_id        IN OUT  NOCOPY  NUMBER
153 , p_sort_seq            IN              NUMBER
154 , p_text_data           IN              VARCHAR2
155 , p_num_data            IN              NUMBER
156 , p_boolean_data        IN              NUMBER
157 , p_text_code           IN              NUMBER
158 , p_creation_date       IN              DATE
159 , p_created_by          IN              NUMBER
160 , p_last_update_date    IN              DATE
161 , p_last_updated_by     IN              NUMBER
162 , p_last_update_login   IN              NUMBER
163 ) IS
164 
165 l_api_name		 CONSTANT 	VARCHAR2(30)	:= 'Insert_Item_Technical_Data_dtl';
166 l_api_version            CONSTANT 	NUMBER 		:= 1.0;
167 
168 l_tech_data_id                          NUMBER;
169 l_data_type                             NUMBER;
170 
171 BEGIN
172 
173 -- Standard Start of API savepoint
174 SAVEPOINT       Insert_Item_Technical_Data ;
175 
176 -- Initialize message list if p_init_msg_list is set to TRUE.
177 IF FND_API.to_Boolean( p_init_msg_list )
178 THEN
179 	FND_MSG_PUB.initialize;
180 END IF;
181 
182 -- Standard call to check for call compatibility.
183 IF NOT FND_API.Compatible_API_Call	(l_api_version        	,
184     	    	    	 		p_api_version        	,
185     	 				l_api_name 		,
186     	    	    	    		G_PKG_NAME
187 					)
188 THEN
189 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
190 END IF;
191 
192 --  Initialize API return status to success
193 x_return_status := FND_API.G_RET_STS_SUCCESS;
194 
195    INSERT INTO GMD_TECHNICAL_DATA_DTL (
196     TECH_DATA_ID,
197     TECH_PARM_ID,
198     SORT_SEQ,
199     TEXT_DATA,
200     NUM_DATA,
201     BOOLEAN_DATA,
202     TEXT_CODE,
203     CREATION_DATE,
204     CREATED_BY,
205     LAST_UPDATE_DATE,
206     LAST_UPDATED_BY,
207     LAST_UPDATE_LOGIN
208   ) VALUES (
209     x_tech_data_id,
210     x_tech_parm_id,
211     p_sort_seq,
212     p_text_data,
213     p_num_data,
214     p_boolean_data,
215     p_text_code,
216     p_creation_date,
217     p_created_by,
218     p_last_update_date,
219     p_last_updated_by,
220     p_last_update_login
221 
222  );
223 
224   IF (SQL%ROWCOUNT < 1) THEN
225       RAISE NO_DATA_FOUND;
226   END IF;
227 
228   EXCEPTION
229   WHEN OTHERS THEN
230 	ROLLBACK TO Insert_Item_Technical_Data;
231         FND_MSG_PUB.Add_Exc_Msg('GMD_ITEM_TECHNICAL_DATA_PVT', 'INSERT_ITEM_TECHNICAL_DATA_DTL');
232         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
233         fnd_msg_pub.count_and_get (
234                     p_count => x_msg_count
235                    ,p_encoded => FND_API.g_false
236                    ,p_data => x_msg_data);
237 
238 
239 END INSERT_ITEM_TECHNICAL_DATA_DTL;
240 
241 --Start of comments
242 --+========================================================================+
243 --| API Name    : UPDATE_ITEM_TECHNICAL_DATA                               |
244 --| TYPE        : Private                                                  |
245 --| Function    : Updates the Item technical data detail records           |
246 --| Notes       :                                                          |
247 --|                                                                        |
248 --| HISTORY                                                                |
249 --|     S.Sriram        21-Feb-2005     Created                            |
250 --+========================================================================+
251 -- End of comments
252 
253 PROCEDURE UPDATE_ITEM_TECHNICAL_DATA
254 (
255   p_api_version		IN  		NUMBER
256 , p_init_msg_list	IN  		VARCHAR2 := FND_API.G_FALSE
257 , p_commit		IN  		VARCHAR2 := FND_API.G_FALSE
258 , x_return_status	OUT 	NOCOPY 	VARCHAR2
259 , x_msg_count		OUT 	NOCOPY 	NUMBER
260 , x_msg_data		OUT 	NOCOPY 	VARCHAR2
261 , p_tech_data_id	IN              NUMBER
262 , x_tech_parm_id        IN OUT  NOCOPY  NUMBER
263 , p_sort_seq            IN              NUMBER
264 , p_text_data           IN              VARCHAR2
265 , p_num_data            IN              NUMBER
266 , p_boolean_data        IN              NUMBER
267 , p_text_code           IN              NUMBER
268 , p_last_update_date    IN              DATE
269 , p_last_updated_by     IN              NUMBER
270 , p_last_update_login   IN              NUMBER
271 )IS
272 
273 l_api_name		CONSTANT 	VARCHAR2(30)	:= 'Update_Item_Technical_Data';
274 l_api_version           CONSTANT 	NUMBER 		:= 1.0;
275 l_data_type                             NUMBER;
276 
277 BEGIN
278 
279 -- Standard Start of API savepoint
280 SAVEPOINT       Update_Item_Technical_Data ;
281 
282 -- Initialize message list if p_init_msg_list is set to TRUE.
283 IF FND_API.to_Boolean( p_init_msg_list )
284 THEN
285 	FND_MSG_PUB.initialize;
286 END IF;
287 
288 -- Standard call to check for call compatibility.
289 IF NOT FND_API.Compatible_API_Call	(l_api_version        	,
290                                         p_api_version        	,
291     	 				l_api_name 		,
292     	    	    	    		G_PKG_NAME
293 					)
294 THEN
295 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
296 END IF;
297 
298 --  Initialize API return status to success
299 x_return_status := FND_API.G_RET_STS_SUCCESS;
300 
301 IF (p_tech_data_id IS NOT NULL AND x_tech_parm_id IS NOT NULL) THEN
302   		UPDATE gmd_technical_data_dtl
303 		SET	  SORT_SEQ              = p_sort_seq
304 			, TEXT_DATA             = p_text_data
305                         , NUM_DATA              = p_num_data
306                         , BOOLEAN_DATA          = p_boolean_data
307                         , TEXT_CODE             = p_text_code
308 			, LAST_UPDATED_BY       = p_last_updated_by
309 			, LAST_UPDATE_LOGIN     = p_last_update_login
310 			, LAST_UPDATE_DATE      = p_last_update_date
311 		WHERE	 TECH_DATA_ID  = p_tech_data_id
312                 AND	 TECH_PARM_ID  = x_tech_parm_id;
313                 IF (SQL%ROWCOUNT < 1) THEN
314                       RAISE NO_DATA_FOUND;
315                 END IF;
316  END IF;
317 
318 EXCEPTION
319   WHEN OTHERS THEN
320 	ROLLBACK TO Insert_Item_Technical_Data;
321         FND_MSG_PUB.Add_Exc_Msg('GMD_ITEM_TECHNICAL_DATA_PVT', 'UPDATE_ITEM_TECHNICAL_DATA');
322         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
323         fnd_msg_pub.count_and_get (
324                     p_count => x_msg_count
325                    ,p_encoded => FND_API.g_false
326                    ,p_data => x_msg_data);
327 
328 END UPDATE_ITEM_TECHNICAL_DATA;
329 
330 --Start of comments
331 --+========================================================================+
332 --| API Name    : DELETE_ITEM_TECHNICAL_DATA                               |
333 --| TYPE        : Private                                                  |
334 --| Function    : Deletes the Item technical data                          |
335 --| Notes       :                                                          |
336 --|                                                                        |
337 --| HISTORY                                                                |
338 --|     S.Sriram        21-Feb-2005     Created                            |
339 --+========================================================================+
340 -- End of comments
341 PROCEDURE DELETE_ITEM_TECHNICAL_DATA
342 (
343   p_api_version		IN  		NUMBER
344 , p_init_msg_list	IN  		VARCHAR2 := FND_API.G_FALSE
345 , p_commit		IN  		VARCHAR2 := FND_API.G_FALSE
346 , x_return_status	OUT 	NOCOPY 	VARCHAR2
347 , x_msg_count		OUT 	NOCOPY 	NUMBER
348 , x_msg_data		OUT 	NOCOPY 	VARCHAR2
349 , p_tech_data_id	IN              NUMBER
350 ) IS
351 
352 
353 l_api_name		CONSTANT 	VARCHAR2(30)	:= 'Delete_Item_Technical_Data';
354 l_api_version           CONSTANT 	NUMBER 		:= 1.0;
355 l_tech_dtl_cnt                          NUMBER;
356 
357 
358 BEGIN
359 
360 -- Standard Start of API savepoint
361 SAVEPOINT       Delete_Item_Technical_Data ;
362 
363 
364 -- Initialize message list if p_init_msg_list is set to TRUE.
365 IF FND_API.to_Boolean( p_init_msg_list ) THEN
366 	FND_MSG_PUB.initialize;
367 END IF;
368 
369 
370 -- Standard call to check for call compatibility.
371 IF NOT FND_API.Compatible_API_Call	(l_api_version        	,
372     	    	    	 		p_api_version        	,
373     	 				l_api_name 		,
374     	    	    	    		G_PKG_NAME
375 					)
376 THEN
377 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
378 END IF;
379 
380 
381 --  Initialize API return status to success
382 x_return_status := FND_API.G_RET_STS_SUCCESS;
383 
384 IF p_tech_data_id IS NOT NULL THEN
385         -- Delete in OPM is not Physical delete; Set delete mark to 1 (Mark for Purge)
386         UPDATE gmd_technical_data_hdr
387            SET DELETE_MARK            = 1
388                ,LAST_UPDATED_BY       = FND_GLOBAL.USER_ID
389                ,LAST_UPDATE_LOGIN     = FND_GLOBAL.LOGIN_ID
390                ,LAST_UPDATE_DATE      = SYSDATE
391          WHERE TECH_DATA_ID = p_tech_data_id;
392          IF (SQL%ROWCOUNT < 1) THEN
393                 RAISE NO_DATA_FOUND;
394          END IF;
395 
396 END IF;
397 
398 EXCEPTION
399   WHEN OTHERS THEN
400 	ROLLBACK TO Delete_Item_Technical_Data;
401         FND_MSG_PUB.Add_Exc_Msg('GMD_ITEM_TECHNICAL_DATA_PVT', 'DELETE_ITEM_TECHNICAL_DATA');
402         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
403         fnd_msg_pub.count_and_get (
404                     p_count   => x_msg_count
405                    ,p_encoded => FND_API.g_false
406                    ,p_data    => x_msg_data);
407 
408 END DELETE_ITEM_TECHNICAL_DATA;
409 
410 --Start of comments
411 --+========================================================================+
412 --| API Name    : FETCH_ITEM_TECHNICAL_DATA                                |
413 --| TYPE        : Private                                                  |
414 --| Function    : Fetches the Item technical data based on the input parm's|
415 --|               passed.                                                  |
416 --| Notes       :                                                          |
417 --|                                                                        |
418 --| HISTORY                                                                |
419 --|     S.Sriram        21-Feb-2005     Created                            |
420 --+========================================================================+
421 -- End of comments
422 
423 PROCEDURE FETCH_ITEM_TECHNICAL_DATA (
424   p_api_version	        IN  		NUMBER
425 , p_init_msg_list	IN  		VARCHAR2 := FND_API.G_FALSE
426 , x_msg_count		OUT 	NOCOPY 	NUMBER
427 , x_msg_data		OUT 	NOCOPY 	VARCHAR2
428 , p_header_rec		IN              GMD_ITEM_TECHNICAL_DATA_PUB.technical_data_hdr_rec
429 , x_dtl_tbl		OUT 	NOCOPY 	GMD_ITEM_TECHNICAL_DATA_PUB.technical_data_dtl_tab
430 , x_return_status	OUT 	NOCOPY 	VARCHAR2
431 ) IS
432 
433 
434 l_api_name		CONSTANT 	VARCHAR2(30)	:= 'Fetch_Item_Technical_Data';
435 l_api_version           CONSTANT 	NUMBER 		:= 1.0;
436 
437 
438 -- Cursor to fetch the tech_data_id based on the input data
439 CURSOR get_tech_data_id IS
440         SELECT tech_data_id
441           FROM gmd_technical_data_hdr h
442          WHERE h.inventory_item_id = p_header_rec.inventory_item_id
443            AND h.organization_id = p_header_rec.organization_id
444            AND (h.lot_number = p_header_rec.Lot_Number OR p_header_rec.Lot_Number IS NULL)
445            AND (h.lot_organization_id = p_header_rec.lot_organization_id OR p_header_rec.lot_organization_id IS NULL)
446            AND (h.formula_id = p_header_rec.formula_id OR p_header_rec.formula_id IS NULL)
447            AND (h.batch_id = p_header_rec.batch_id OR p_header_rec.batch_id IS NULL)
448            AND h.tech_data_id IS NOT NULL;
449 
450 
451 -- Cursor to fetch technical data rec's based on tech_data_id
452 CURSOR get_tech_data_rec (l_tech_data_id NUMBER) IS
453         SELECT tech_parm_id, text_code, text_data, num_data, boolean_data, sort_seq
454           FROM gmd_technical_data_dtl
455          WHERE tech_data_id = l_tech_data_id;
456 
457 -- Cursor to fetch data type for the technical parameter passed
458 CURSOR get_tech_data_type (l_tech_parm_id NUMBER, l_orgn_id NUMBER) IS
459       SELECT data_type
460         FROM gmd_tech_parameters_b
461        WHERE tech_parm_id = l_tech_parm_id
462          AND (organization_id  = l_orgn_id OR organization_id IS NULL);
463 
464 l_tech_data_id NUMBER;
465              I NUMBER;
466    l_data_type NUMBER;
467 
468 BEGIN
469 
470 -- Initialize message list if p_init_msg_list is set to TRUE.
471 IF FND_API.to_Boolean( p_init_msg_list )
472 THEN
473 	FND_MSG_PUB.initialize;
474 END IF;
475 
476 -- Standard call to check for call compatibility.
477 IF NOT FND_API.Compatible_API_Call	(l_api_version        	,
478     	    	    	 		 p_api_version        	,
479     	 				 l_api_name 		,
480     	    	    	    		 G_PKG_NAME
481 					)
482 THEN
483 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
484 END IF;
485 
486 --  Initialize API return status to success
487 x_return_status := FND_API.G_RET_STS_SUCCESS;
488 
489 -- FETCH IMPLEMENTATION
490 -- Get the tech_data_id based on i/p parameters
491 OPEN get_tech_data_id;
492 FETCH get_tech_data_id INTO l_tech_data_id;
493 CLOSE get_tech_data_id;
494 
495 IF l_tech_data_id IS NOT NULL THEN
496         -- Get detail record based on tech_data_id
497         FOR get_rec IN get_tech_data_rec(l_tech_data_id)
498         LOOP
499         I := I + 1;
500         x_dtl_tbl(I).tech_parm_id := get_rec.tech_parm_id;
501         x_dtl_tbl(I).sort_seq     := get_rec.sort_seq;
502         x_dtl_tbl(I).text_code    := get_rec.text_code;
503 
504         -- Get the data type of the tech parameter
505         OPEN get_tech_data_type(get_rec.tech_parm_id, p_header_rec.organization_id);
506         FETCH get_tech_data_type INTO l_data_type;
507         CLOSE get_tech_data_type;
508 
509         IF l_data_type IN (1,5,6,7,8,9,10,11) THEN
510                 x_dtl_tbl(I).tech_data     := get_rec.Num_Data;
511         ELSIF l_data_type IN (0,2, 4) THEN
512                 x_dtl_tbl(I).tech_data     := get_rec.Text_Data;
513         ELSIF l_data_type = 3 THEN
514                 x_dtl_tbl(I).tech_data     := get_rec.Boolean_Data;
515         END IF;
516         END LOOP;
517 END IF;
518 
519 EXCEPTION
520 WHEN OTHERS THEN
521         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
522         FND_MSG_PUB.Add_Exc_Msg('GMD_ITEM_TECHNICAL_DATA_PVT', 'FETCH_ITEM_TECHNICAL_DATA');
523         fnd_msg_pub.count_and_get (
524                     p_count   => x_msg_count
525                    ,p_encoded => FND_API.g_false
526                    ,p_data    => x_msg_data);
527 
528 
529 END FETCH_ITEM_TECHNICAL_DATA;
530 
531 END GMD_ITEM_TECHNICAL_DATA_PVT;
532