DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_DIRECT_ITEMS_DEFAULT_PVT

Source


1 PACKAGE BODY EAM_DIRECT_ITEMS_DEFAULT_PVT AS
2 /* $Header: EAMVDIDB.pls 120.1 2009/11/19 09:29:12 vchidura ship $ */
3 /***************************************************************************
4 --
5 --  Copyright (c) 2002 Oracle Corporation, Redwood Shores, CA, USA
6 --  All rights reserved.
7 --
8 --  FILENAME
9 --
10 --      EAMVDIDB.pls
11 --
12 --  DESCRIPTION
13 --
14 --      Spec of package EAM_DIRECT_ITEMS_DEFAULT_PVT
15 --
16 --  NOTES
17 --
18 --  HISTORY
19 --
20 --  15-SEP-2003    Basanth Roy     Initial Creation
21 ***************************************************************************/
22 G_PKG_NAME      CONSTANT VARCHAR2(30) := 'EAM_DIRECT_ITEMS_DEFAULT_PVT';
23 
24 
25         /********************************************************************
26         * Function      : get_di_seq_id
27         * Return        : NUMBER
28         * Purpose       : Function will return direct_item_sequence_id
29         *
30         **********************************************************************/
31 
32         FUNCTION get_di_seq_id
33         RETURN NUMBER
34         IS
35                 l_di_seq_id      NUMBER := NULL;
36         BEGIN
37 
38                 SELECT wip_eam_di_seq_id_s.nextval
39                 INTO   l_di_seq_id
40                 FROM   sys.dual;
41 
42                 RETURN l_di_seq_id;
43 
44          EXCEPTION
45                 WHEN OTHERS THEN
46                         RETURN NULL;
47 
48         END get_di_seq_id;
49 
50 
51 
52         /********************************************************************
53         * Procedure     : get_flex_eam_direct_items
54         * Return        : NUMBER
55         **********************************************************************/
56 
57 
58         PROCEDURE get_flex_eam_direct_items
59           (  p_eam_direct_items_rec IN  EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
60            , x_eam_direct_items_rec OUT NOCOPY EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
61           )
62         IS
63         BEGIN
64 
65             --  In the future call Flex APIs for defaults
66                 x_eam_direct_items_rec := p_eam_direct_items_rec;
67 
68                 IF p_eam_direct_items_rec.attribute_category =FND_API.G_MISS_CHAR THEN
69                         x_eam_direct_items_rec.attribute_category := NULL;
70                 END IF;
71 
72                 IF p_eam_direct_items_rec.attribute1 = FND_API.G_MISS_CHAR THEN
73                         x_eam_direct_items_rec.attribute1  := NULL;
74                 END IF;
75 
76                 IF p_eam_direct_items_rec.attribute2 = FND_API.G_MISS_CHAR THEN
77                         x_eam_direct_items_rec.attribute2  := NULL;
78                 END IF;
79 
80                 IF p_eam_direct_items_rec.attribute3 = FND_API.G_MISS_CHAR THEN
81                         x_eam_direct_items_rec.attribute3  := NULL;
82                 END IF;
83 
84                 IF p_eam_direct_items_rec.attribute4 = FND_API.G_MISS_CHAR THEN
85                         x_eam_direct_items_rec.attribute4  := NULL;
86                 END IF;
87 
88                 IF p_eam_direct_items_rec.attribute5 = FND_API.G_MISS_CHAR THEN
89                         x_eam_direct_items_rec.attribute5  := NULL;
90                 END IF;
91 
92                 IF p_eam_direct_items_rec.attribute6 = FND_API.G_MISS_CHAR THEN
93                         x_eam_direct_items_rec.attribute6  := NULL;
94                 END IF;
95 
96                 IF p_eam_direct_items_rec.attribute7 = FND_API.G_MISS_CHAR THEN
97                         x_eam_direct_items_rec.attribute7  := NULL;
98                 END IF;
99 
100                 IF p_eam_direct_items_rec.attribute8 = FND_API.G_MISS_CHAR THEN
101                         x_eam_direct_items_rec.attribute8  := NULL;
102                 END IF;
103 
104                 IF p_eam_direct_items_rec.attribute9 = FND_API.G_MISS_CHAR THEN
105                         x_eam_direct_items_rec.attribute9  := NULL;
106                 END IF;
107 
108                 IF p_eam_direct_items_rec.attribute10 = FND_API.G_MISS_CHAR THEN
109                         x_eam_direct_items_rec.attribute10 := NULL;
110                 END IF;
111 
112                 IF p_eam_direct_items_rec.attribute11 = FND_API.G_MISS_CHAR THEN
113                         x_eam_direct_items_rec.attribute11 := NULL;
114                 END IF;
115 
116                 IF p_eam_direct_items_rec.attribute12 = FND_API.G_MISS_CHAR THEN
117                         x_eam_direct_items_rec.attribute12 := NULL;
118                 END IF;
119 
120                 IF p_eam_direct_items_rec.attribute13 = FND_API.G_MISS_CHAR THEN
121                         x_eam_direct_items_rec.attribute13 := NULL;
122                 END IF;
123 
124                 IF p_eam_direct_items_rec.attribute14 = FND_API.G_MISS_CHAR THEN
125                         x_eam_direct_items_rec.attribute14 := NULL;
126                 END IF;
127 
128                 IF p_eam_direct_items_rec.attribute15 = FND_API.G_MISS_CHAR THEN
129                         x_eam_direct_items_rec.attribute15 := NULL;
130                 END IF;
131 
132         END get_flex_eam_direct_items;
133 
134 
135         /*********************************************************************
136         * Procedure     : Attribute_Defaulting
137         * Parameters IN : Direct Items record
138         * Parameters OUT NOCOPY: Direct Items record after defaulting
139         *                 Mesg_Token_Table
140         *                 Return_Status
141         * Purpose       : Attribute Defaulting will default the necessary null
142         *                 attribute with appropriate values.
143         **********************************************************************/
144 
145         PROCEDURE Attribute_Defaulting
146         (  p_eam_direct_items_rec              IN  EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
147          , x_eam_direct_items_rec              OUT NOCOPY EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
148          , x_mesg_token_tbl          OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
149          , x_return_status           OUT NOCOPY VARCHAR2
150          )
151         IS
152           l_out_eam_direct_items_rec EAM_PROCESS_WO_PUB.eam_direct_items_rec_type;
153         BEGIN
154 
155                 x_eam_direct_items_rec := p_eam_direct_items_rec;
156 --                x_eam_direct_items_rec := p_eam_direct_items_rec;
157                 x_return_status := FND_API.G_RET_STS_SUCCESS;
158 
159                 IF p_eam_direct_items_rec.transaction_type = EAM_PROCESS_WO_PUB.G_OPR_CREATE
160                 then
161                   -- Defaulting direct_item_sequence_id
162                   x_eam_direct_items_rec.direct_item_sequence_id := get_di_seq_id;
163                 END IF;
164 
165                 -- Defaulting AUTO_REQUEST_MATERIAL flag.
166                 IF p_eam_direct_items_rec.auto_request_material IS NULL OR
167                    p_eam_direct_items_rec.auto_request_material = FND_API.G_MISS_CHAR
168                 THEN
169                    x_eam_direct_items_rec.auto_request_material := 'Y';
170                 END IF;
171 
172                 -- Defaulting department_id
173                 IF (p_eam_direct_items_rec.department_id IS NULL OR
174                     p_eam_direct_items_rec.department_id = FND_API.G_MISS_NUM) AND
175                    p_eam_direct_items_rec.operation_seq_num is not null AND
176                    p_eam_direct_items_rec.organization_id is not null AND
177                    p_eam_direct_items_rec.wip_entity_id is not null
178                 THEN
179                   IF p_eam_direct_items_rec.operation_seq_num = 1 THEN
180                     x_eam_direct_items_rec.department_id := null;
181                   ELSE
182                     select department_id into x_eam_direct_items_rec.department_id
183                       from wip_operations
184                       where wip_entity_id = p_eam_direct_items_rec.wip_entity_id
185                       and organization_id = p_eam_direct_items_rec.organization_id
186                       and operation_seq_num = p_eam_direct_items_rec.operation_seq_num;
187 
188                   END IF;
189                 END IF;
190 
191                 l_out_eam_direct_items_rec := x_eam_direct_items_rec;
192 
193                 get_flex_eam_direct_items
194                 (  p_eam_direct_items_rec => x_eam_direct_items_rec
195                  , x_eam_direct_items_rec => l_out_eam_direct_items_rec
196                  );
197 
198                 x_eam_direct_items_rec := l_out_eam_direct_items_rec;
199 
200              EXCEPTION
201                 WHEN OTHERS THEN
202                      EAM_ERROR_MESSAGE_PVT.Add_Error_Token
203                      (  p_message_name       => NULL
204                       , p_message_text       => G_PKG_NAME || SQLERRM
205                       , x_mesg_token_Tbl     => x_mesg_token_tbl
206                      );
207 
208                     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
209 
210         END Attribute_Defaulting;
211 
212 
213         /******************************************************************
214         * Procedure     : Populate_Null_Columns
215         * Parameters IN : Direct Items column record
216         *                 Old Direct Items Column Record
217         * Parameters OUT NOCOPY: Direct Items column record after populating
218         * Purpose       : This procedure will look at the columns that the user
219         *                 has not filled in and will assign those columns a
220         *                 value from the old record.
221         *                 This procedure is not called for CREATE
222         ********************************************************************/
223         PROCEDURE Populate_Null_Columns
224         (  p_eam_direct_items_rec           IN  EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
225          , p_old_eam_direct_items_rec       IN  EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
226          , x_eam_direct_items_rec           OUT NOCOPY EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
227         )
228         IS
229         BEGIN
230                 x_eam_direct_items_rec := p_eam_direct_items_rec;
231 --                x_eam_direct_items_rec := p_eam_direct_items_rec;
232 
233 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Processing null columns prior update'); END IF;
234 
235                 IF p_eam_direct_items_rec.description IS NULL OR
236                    p_eam_direct_items_rec.description = FND_API.G_MISS_CHAR
237                 THEN
238                    x_eam_direct_items_rec.description := p_old_eam_direct_items_rec.description;
239                 END IF;
240 
241                 IF p_eam_direct_items_rec.purchasing_category_id IS NULL OR
242                    p_eam_direct_items_rec.purchasing_category_id = FND_API.G_MISS_NUM
243                 THEN
244                    x_eam_direct_items_rec.purchasing_category_id := p_old_eam_direct_items_rec.purchasing_category_id;
245                 END IF;
246 
247                 IF p_eam_direct_items_rec.uom IS NULL OR
248                    p_eam_direct_items_rec.uom = FND_API.G_MISS_CHAR
249                 THEN
250                    x_eam_direct_items_rec.uom := p_old_eam_direct_items_rec.uom;
251                 END IF;
252 
253                 IF p_eam_direct_items_rec.suggested_vendor_name IS NULL OR
254                    p_eam_direct_items_rec.suggested_vendor_name = FND_API.G_MISS_CHAR
255                 THEN
256                    x_eam_direct_items_rec.suggested_vendor_name := p_old_eam_direct_items_rec.suggested_vendor_name;
257                 END IF;
258 
259                 IF p_eam_direct_items_rec.suggested_vendor_id IS NULL OR
260                    p_eam_direct_items_rec.suggested_vendor_id = FND_API.G_MISS_NUM
261                 THEN
262                    x_eam_direct_items_rec.suggested_vendor_id := p_old_eam_direct_items_rec.suggested_vendor_id;
263                 END IF;
264 
265                 IF p_eam_direct_items_rec.suggested_vendor_site IS NULL OR
266                    p_eam_direct_items_rec.suggested_vendor_site = FND_API.G_MISS_CHAR
267                 THEN
268                    x_eam_direct_items_rec.suggested_vendor_site := p_old_eam_direct_items_rec.suggested_vendor_site;
269                 END IF;
270 
271                 IF p_eam_direct_items_rec.suggested_vendor_site_id IS NULL OR
272                    p_eam_direct_items_rec.suggested_vendor_site_id = FND_API.G_MISS_NUM
273                 THEN
274                    x_eam_direct_items_rec.suggested_vendor_site_id := p_old_eam_direct_items_rec.suggested_vendor_site_id;
275                 END IF;
276 
277                 IF p_eam_direct_items_rec.suggested_vendor_contact IS NULL OR
278                    p_eam_direct_items_rec.suggested_vendor_contact = FND_API.G_MISS_CHAR
279                 THEN
280                    x_eam_direct_items_rec.suggested_vendor_contact := p_old_eam_direct_items_rec.suggested_vendor_contact;
281                 END IF;
282 
283                 IF p_eam_direct_items_rec.suggested_vendor_contact_id IS NULL OR
284                    p_eam_direct_items_rec.suggested_vendor_contact_id = FND_API.G_MISS_NUM
285                 THEN
286                    x_eam_direct_items_rec.suggested_vendor_contact_id := p_old_eam_direct_items_rec.suggested_vendor_contact_id;
287                 END IF;
288 
289                 IF p_eam_direct_items_rec.suggested_vendor_phone IS NULL OR
290                    p_eam_direct_items_rec.suggested_vendor_phone = FND_API.G_MISS_CHAR
291                 THEN
292                    x_eam_direct_items_rec.suggested_vendor_phone := p_old_eam_direct_items_rec.suggested_vendor_phone;
293                 END IF;
294 
295                 IF p_eam_direct_items_rec.suggested_vendor_item_num IS NULL OR
296                    p_eam_direct_items_rec.suggested_vendor_item_num = FND_API.G_MISS_CHAR
297                 THEN
301                 IF p_eam_direct_items_rec.unit_price IS NULL OR
298                    x_eam_direct_items_rec.suggested_vendor_item_num := p_old_eam_direct_items_rec.suggested_vendor_item_num;
299                 END IF;
300 
302                    p_eam_direct_items_rec.unit_price = FND_API.G_MISS_NUM
303                 THEN
304                    x_eam_direct_items_rec.unit_price := p_old_eam_direct_items_rec.unit_price;
305                 END IF;
306 
307                 IF p_eam_direct_items_rec.department_id IS NULL OR
308                    p_eam_direct_items_rec.department_id = FND_API.G_MISS_NUM
309                 THEN
310                    x_eam_direct_items_rec.department_id := p_old_eam_direct_items_rec.department_id;
311                 END IF;
312 
313 
314                 IF p_eam_direct_items_rec.need_by_date IS NULL OR
315                    p_eam_direct_items_rec.need_by_date = FND_API.G_MISS_DATE
316                 THEN
317                    x_eam_direct_items_rec.need_by_date := p_old_eam_direct_items_rec.need_by_date;
318                 END IF;
319 
320                 IF p_eam_direct_items_rec.required_quantity IS NULL OR
321                    p_eam_direct_items_rec.required_quantity = FND_API.G_MISS_NUM
322                 THEN
323                    x_eam_direct_items_rec.required_quantity := p_old_eam_direct_items_rec.required_quantity;
324                 END IF;
325 
326                 --
327                 -- Populate Null or missng flex field columns
328                 --
329 
330 		--Changed the code for 8969942
331                 IF p_eam_direct_items_rec.attribute_category IS NULL
332                 THEN
333                         x_eam_direct_items_rec.attribute_category := p_old_eam_direct_items_rec.attribute_category;
334                 END IF;
335 
336                 IF p_eam_direct_items_rec.attribute1 IS NULL
337                 THEN
338 			x_eam_direct_items_rec.attribute1  := p_old_eam_direct_items_rec.attribute1;
339                 END IF;
340 
341                 IF p_eam_direct_items_rec.attribute2 IS NULL
342 		THEN
343                         x_eam_direct_items_rec.attribute2  := p_old_eam_direct_items_rec.attribute2;
344                 END IF;
345 
346                 IF p_eam_direct_items_rec.attribute3 IS NULL
347                 THEN
348 		        x_eam_direct_items_rec.attribute3  := p_old_eam_direct_items_rec.attribute3;
349                 END IF;
350 
351                 IF p_eam_direct_items_rec.attribute4 IS NULL
352 		THEN
353                         x_eam_direct_items_rec.attribute4  := p_old_eam_direct_items_rec.attribute4;
354                 END IF;
355 
356                 IF p_eam_direct_items_rec.attribute5 IS NULL
357 		THEN
358                         x_eam_direct_items_rec.attribute5  := p_old_eam_direct_items_rec.attribute5;
359                 END IF;
360 
361                 IF p_eam_direct_items_rec.attribute6 IS NULL
362 		THEN
363                         x_eam_direct_items_rec.attribute6  := p_old_eam_direct_items_rec.attribute6;
364                 END IF;
365 
366                 IF p_eam_direct_items_rec.attribute7 IS NULL
367 		THEN
368                         x_eam_direct_items_rec.attribute7  := p_old_eam_direct_items_rec.attribute7;
369                 END IF;
370 
371                 IF p_eam_direct_items_rec.attribute8 IS NULL
372 		THEN
373                         x_eam_direct_items_rec.attribute8  := p_old_eam_direct_items_rec.attribute8;
374                 END IF;
375 
376                 IF p_eam_direct_items_rec.attribute9 IS NULL
377 		THEN
378                         x_eam_direct_items_rec.attribute9  := p_old_eam_direct_items_rec.attribute9;
379                 END IF;
380 
381                 IF p_eam_direct_items_rec.attribute10 IS NULL
382 		THEN
383                         x_eam_direct_items_rec.attribute10  := p_old_eam_direct_items_rec.attribute10;
384                 END IF;
385 
386                 IF p_eam_direct_items_rec.attribute11 IS NULL
387 		THEN
388                         x_eam_direct_items_rec.attribute11  := p_old_eam_direct_items_rec.attribute11;
389                 END IF;
390 
391                 IF p_eam_direct_items_rec.attribute12 IS NULL
392 		THEN
393                         x_eam_direct_items_rec.attribute12  := p_old_eam_direct_items_rec.attribute12;
394                 END IF;
395 
396                 IF p_eam_direct_items_rec.attribute13 IS NULL
397 		THEN
398                         x_eam_direct_items_rec.attribute13  := p_old_eam_direct_items_rec.attribute13;
399                 END IF;
400 
401                 IF p_eam_direct_items_rec.attribute14 IS NULL
402 		THEN
403                         x_eam_direct_items_rec.attribute14  := p_old_eam_direct_items_rec.attribute14;
404                 END IF;
405 
406                 IF p_eam_direct_items_rec.attribute15 IS NULL
407 		THEN
408                         x_eam_direct_items_rec.attribute15  := p_old_eam_direct_items_rec.attribute15;
409                 END IF;
410 
411                 IF p_eam_direct_items_rec.auto_request_material = FND_API.G_MISS_CHAR OR
412                    p_eam_direct_items_rec.auto_request_material IS NULL
413                 THEN
414                         x_eam_direct_items_rec.auto_request_material := p_old_eam_direct_items_rec.auto_request_material;
415                 END IF;
416 
417 
418 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Done processing null columns prior update'); END IF;
419 
420 
421         END Populate_Null_Columns;
422 
423 
424 
425         /******************************************************************
426         * Procedure     : GetDI_In_Op1
427         * Parameters IN : Direct Items table
428         *                       Organization_ID
432         *          in operation seq num 1 and append them to the table.
429 		                         Wip_Entity_Id
430         * Parameters OUT NOCOPY: Direct Items table after populating
431         * Purpose       : This procedure will find all the direct items that are
433         *          This procedure is called only when there exists any DI in operation 1
434         ********************************************************************/
435 
436        PROCEDURE GetDI_In_Op1
437         (   p_eam_direct_items_tbl     IN  EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type
438           , p_organization_id         IN  NUMBER
439           , p_wip_entity_id           IN  NUMBER
440           , x_eam_direct_items_tbl      OUT  NOCOPY EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type
441         )
442 		IS
443 		l_eam_direct_items_tbl  EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type := p_eam_direct_items_tbl;
444 		k            NUMBER :=  l_eam_direct_items_tbl.COUNT ;
445 
446 		CURSOR DIRECT_ITEMS_CUR IS
447 		SELECT
448 		      WIP_ENTITY_ID                 WIP_ENTITY_ID
449 			, ORGANIZATION_ID               ORGANIZATION_ID
450 			, OPERATION_SEQ_NUM             OPERATION_SEQ_NUM
451 			, DIRECT_ITEM_SEQUENCE_ID             DIRECT_ITEM_SEQUENCE_ID
452 			, 2                                   TRANSACTION_TYPE
453 	     FROM wip_eam_direct_items
454 		 WHERE organization_id = p_organization_id
455 		 and wip_entity_id = p_wip_entity_id
456 		 and operation_seq_num = 1;
457 
458 
459 		BEGIN
460 
461 		   FOR direc IN DIRECT_ITEMS_CUR LOOP
462 		      k := k + 1 ;
463 
464 		      l_eam_direct_items_tbl(k).WIP_ENTITY_ID := direc.WIP_ENTITY_ID;
465 			  l_eam_direct_items_tbl(k).ORGANIZATION_ID := direc.ORGANIZATION_ID;
466 			  l_eam_direct_items_tbl(k).OPERATION_SEQ_NUM := direc.OPERATION_SEQ_NUM;
467               l_eam_direct_items_tbl(k).DIRECT_ITEM_SEQUENCE_ID := direc.DIRECT_ITEM_SEQUENCE_ID;
468 			  l_eam_direct_items_tbl(k).TRANSACTION_TYPE := direc.TRANSACTION_TYPE ;
469 
470 		   END LOOP;
471            x_eam_direct_items_tbl := l_eam_direct_items_tbl ;
472 
473 		END GetDI_In_Op1 ;
474 
475 
476         /******************************************************************
477         * Procedure     : Change_OpSeqNum1
478         * Parameters IN : Direct Items column record
479         *                       Operation Sequence Number
480 		                         Department Id
481         * Parameters OUT NOCOPY: Direct Items column record after changing
482         * Purpose       : This procedure will change the operation seq num from 1
483         *           to the newly created operation ( p_operation_seq_num )
484         *           and accordingly the department id
485         *           This procedure is called only when there exists any direct items in operation 1
486         ********************************************************************/
487 		PROCEDURE Change_OpSeqNum1
488 	    (   p_eam_direct_items_rec     IN  EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
489 		  , p_operation_seq_num   IN   NUMBER
490 	      , p_department_id          IN NUMBER
491 		  , x_eam_direct_items_rec      OUT  NOCOPY EAM_PROCESS_WO_PUB.eam_direct_items_rec_type
492         )
493         IS
494         l_eam_direct_items_rec EAM_PROCESS_WO_PUB.eam_direct_items_rec_type := p_eam_direct_items_rec;
495 
496 		BEGIN
497 
498             IF ( l_eam_direct_items_rec.operation_seq_num = 1 ) THEN
499                 l_eam_direct_items_rec.operation_seq_num := p_operation_seq_num ;
500                 l_eam_direct_items_rec.department_id := p_department_id ;
501             END IF;
502 
503             x_eam_direct_items_rec := l_eam_direct_items_rec ;
504 
505         END Change_OpSeqNum1;
506 
507 
508 
509 END EAM_DIRECT_ITEMS_DEFAULT_PVT;