DBA Data[Home] [Help]

PACKAGE BODY: APPS.PMI_PRODUCTION_SUM

Source


1 PACKAGE BODY PMI_PRODUCTION_SUM AS
2 /* $Header: PMIPRDAB.pls 115.11 2003/06/03 03:05:30 srpuri ship $ */
3   PROCEDURE POPULATE_BATCH_STATUS_SUM (errbuf OUT NOCOPY varchar2,retcode OUT NOCOPY VARCHAR2) IS
4 l_buffer   varchar2(40);
5 l_count    number :=0;
6     l_table_owner           VARCHAR2(40);
7 
8   BEGIN
9 
10         delete from pmi_batch_status;
11 commit;
12 
13 /* Insert records for Plan Start */
14         Insert into pmi_batch_status (CO_CODE,
15                                       PLANT_CODE,
16                                       WHSE_CODE,
17                                       FISCAL_YEAR,
18                                       PERIOD_NUM,
22                                       BATCH_COUNT,
19                                       PERIOD_NAME,
20                                       ITEM_ID,
21                                       BATCH_STATUS_CODE,
23                                       LAST_UPDATE_DATE)
24                select og.co_code,
25                       bh.plant_code,
26                       bh.wip_whse_code,
27                       cl.period_year,
28                       cl.period_num,
29                       cl.period_name,
30                       bd.item_id,
31                       '1',
32                       count(*),
33                       sysdate
34                from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
35                where bh.batch_id = bd.batch_id
36                and   line_type = 1
37                and   bh.plant_CODE    = og.ORGN_CODE
38                and   og.CO_CODE    = cl.CO_CODE
39                AND trunc(bh.PLAN_START_DATE) between
40                          CL.start_date and CL.end_date
41                group by og.co_code,
42                         bh.plant_code,
43                         bh.wip_whse_code,
44                         cl.period_year,
45                         cl.period_num,
46                         cl.period_name,
47                         bd.item_id,
48                         '1',
49                         sysdate;
50 
51 /*Insert records for Plan Complete */
52         Insert into pmi_batch_status (CO_CODE,
53                                       PLANT_CODE,
54                                       WHSE_CODE,
55                                       FISCAL_YEAR,
56                                       PERIOD_NUM,
57                                       PERIOD_NAME,
58                                       ITEM_ID,
59                                       BATCH_STATUS_CODE,
60                                       BATCH_COUNT,
61                                       LAST_UPDATE_DATE)
62                select og.co_code,
63                       bh.plant_code,
64                       bh.wip_whse_code,
65                       cl.period_year,
66                       cl.period_num,
67                       cl.period_name,
68                       bd.item_id,
69                       '3',
70                       count(*),
71                       sysdate
72                from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
73                where bh.batch_id = bd.batch_id
74                and   line_type = 1
75                and   bh.plant_CODE    = og.ORGN_CODE
76                and   og.CO_CODE    = cl.CO_CODE
77                AND trunc(bh.PLAN_CMPLT_DATE) between
78                          CL.start_date and CL.end_date
79                group by og.co_code,
80                         bh.plant_code,
81                         bh.wip_whse_code,
82                         cl.period_year,
83                         cl.period_num,
84                         cl.period_name,
85                         bd.item_id,
86                         '3',
87                         sysdate;
88 
89 /* Insert records for Actual Start */
90 
91         Insert into pmi_batch_status (CO_CODE,
92                                       PLANT_CODE,
93                                       WHSE_CODE,
94                                       FISCAL_YEAR,
95                                       PERIOD_NUM,
96                                       PERIOD_NAME,
97                                       ITEM_ID,
98                                       BATCH_STATUS_CODE,
99                                       BATCH_COUNT,
100                                       LAST_UPDATE_DATE)
101                select og.co_code,
102                       bh.plant_code,
103                       bh.wip_whse_code,
104                       cl.period_year,
105                       cl.period_num,
106                       cl.period_name,
107                       bd.item_id,
108                       '2',
109                       count(*),
110                       sysdate
111                from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
112                where bh.batch_id = bd.batch_id
113                and   bh.batch_status > 1
114                and   line_type = 1
115                and   bh.plant_CODE    = og.ORGN_CODE
116                and   og.CO_CODE    = cl.CO_CODE
117                AND trunc(bh.ACTUAL_START_DATE) between
118                          CL.start_date and CL.end_date
119                group by og.co_code,
120                         bh.plant_code,
121                         bh.wip_whse_code,
122                         cl.period_year,
123                         cl.period_num,
124                         cl.period_name,
125                         bd.item_id,
126                         '2',
127                         sysdate;
128 
129 /* Insert records for Actual Complete */
130         Insert into pmi_batch_status (CO_CODE,
131                                       PLANT_CODE,
132                                       WHSE_CODE,
133                                       FISCAL_YEAR,
134                                       PERIOD_NUM,
135                                       PERIOD_NAME,
136                                       ITEM_ID,
137                                       BATCH_STATUS_CODE,
138                                       BATCH_COUNT,
139                                       LAST_UPDATE_DATE)
140                select og.co_code,
141                       bh.plant_code,
142                       bh.wip_whse_code,
143                       cl.period_year,
144                       cl.period_num,
145                       cl.period_name,
146                       bd.item_id,
147                       '4',
148                       count(*),
149                       sysdate
150                from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
151                where bh.batch_id = bd.batch_id
152                and   bh.batch_status > 2
153                and   line_type = 1
154                and   bh.plant_CODE    = og.ORGN_CODE
155                and   og.CO_CODE    = cl.CO_CODE
156                AND trunc(bh.ACTUAL_CMPLT_DATE) between
157                          CL.start_date and CL.end_date
158                group by og.co_code,
159                         bh.plant_code,
160                         bh.wip_whse_code,
161                         cl.period_year,
162                         cl.period_num,
163                         cl.period_name,
164                         bd.item_id,
165                         '4',
166                         sysdate;
167 
168 /* Insert records for Closed */
169         Insert into pmi_batch_status (CO_CODE,
170                                       PLANT_CODE,
171                                       WHSE_CODE,
172                                       FISCAL_YEAR,
173                                       PERIOD_NUM,
174                                       PERIOD_NAME,
175                                       ITEM_ID,
176                                       BATCH_STATUS_CODE,
177                                       BATCH_COUNT,
178                                       LAST_UPDATE_DATE)
179                select og.co_code,
180                       bh.plant_code,
181                       bh.wip_whse_code,
182                       cl.period_year,
183                       cl.period_num,
184                       cl.period_name,
185                       bd.item_id,
186                       '5',
187                       count(*),
188                       sysdate
189                from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
190                where bh.batch_id = bd.batch_id
191                and   bh.batch_status = 4
192                and   line_type = 1
193                and   bh.plant_CODE    = og.ORGN_CODE
194                and   og.CO_CODE    = cl.CO_CODE
195                AND trunc(bh.BATCH_CLOSE_DATE) between
196                          CL.start_date and CL.end_date
197                group by og.co_code,
198                         bh.plant_code,
199                         bh.wip_whse_code,
200                         cl.period_year,
201                         cl.period_num,
202                         cl.period_name,
203                         bd.item_id,
204                         '5',
205                         sysdate;
206 
207 
208 /* Insert records for Cancelled */
209         Insert into pmi_batch_status (CO_CODE,
210                                       PLANT_CODE,
211                                       WHSE_CODE,
212                                       FISCAL_YEAR,
213                                       PERIOD_NUM,
214                                       PERIOD_NAME,
215                                       ITEM_ID,
216                                       BATCH_STATUS_CODE,
217                                       BATCH_COUNT,
218                                       LAST_UPDATE_DATE)
219                select og.co_code,
220                       bh.plant_code,
221                       bh.wip_whse_code,
222                       cl.period_year,
223                       cl.period_num,
224                       cl.period_name,
225                       bd.item_id,
226                       '6',
227                       count(*),
228                       sysdate
229                from gme_batch_header bh, gme_material_details bd, pmi_gl_calendar_v cl,sy_orgn_mst og
230                where bh.batch_id = bd.batch_id
231                and   bh.batch_status = -1
232                and   line_type = 1
233                and   bh.plant_CODE    = og.ORGN_CODE
234                and   og.CO_CODE    = cl.CO_CODE
235                AND trunc(bh.LAST_UPDATE_DATE) between
236                          CL.start_date and CL.end_date
237                group by og.co_code,
238                         bh.plant_code,
239                         bh.wip_whse_code,
240                         cl.period_year,
241                         cl.period_num,
242                         cl.period_name,
243                         bd.item_id,
244                         '6',
245                         sysdate;
246 
247 Commit;
248         SELECT TABLE_OWNER INTO l_table_owner
249         FROM USER_SYNONYMS
250         WHERE SYNONYM_NAME = 'PMI_BATCH_STATUS';
251         FND_STATS.GATHER_TABLE_STATS(l_table_owner, 'PMI_BATCH_STATUS');
252 
253         exception when others then
254           l_buffer :='Summary table Population Failed'||l_count;
255             FND_FILE.PUT_LINE(FND_FILE.LOG,l_buffer);
256 
257   END POPULATE_BATCH_STATUS_SUM;
258 
259   FUNCTION FIND_PROD_GRADE(TRANS_ID_VI IN INTEGER,ITEM_ID_VI IN INTEGER,LOT_ID_VI IN INTEGER)
260            RETURN VARCHAR2
261 	IS
262                 TRANS_ID_V		ic_TRAN_CMP.TRANS_id%TYPE := NULL;
263 		QC_GRADE_V		ic_TRAN_CMP.QC_GRADE%TYPE := NULL;
264 
265 		CURSOR GRADE_CHANGE_TRAN_CUR(
266 			ITEM_ID_V		ic_item_mst.item_id%TYPE,
267 		        LOT_ID_V		ic_lots_mst.lot_id%TYPE )
268 		IS
269 			SELECT nvl(max(trans_id),0) from ic_tran_cmp_vw1
270 			where item_id = item_id_v
271                         and   lot_id  = lot_id_v
272                         and   doc_type = 'GRDI'
273                         and   reason_code = fnd_profile.value('PMI$REASON_CODE');
274          begin
275                 if (item_id_vi = PKG_VAR_ITEM_ID_V AND
276                     LOT_ID_VI = PKG_VAR_LOT_ID_V) then
277                     return PKG_VAR_QC_GRADE_V;
278                 end if;
279 
280                 IF NOT GRADE_CHANGE_TRAN_CUR%ISOPEN THEN
281 			OPEN GRADE_CHANGE_TRAN_CUR(ITEM_ID_VI,LOT_ID_VI);
282 		END IF;
283 
284 		FETCH GRADE_CHANGE_TRAN_CUR INTO trans_id_v;
285 		IF trans_id_v = 0 THEN
286                    SELECT QC_GRADE into qc_grade_v
287                    from ic_tran_cmp_vw1 where trans_id = trans_id_vi;
288                 else
289                     SELECT QC_GRADE into qc_grade_v
290                     from ic_tran_cmp_vw1 where trans_id = trans_id_v;
291 		end if;
292 
293                     PKG_VAR_ITEM_ID_V := item_id_vi;
294                     PKG_VAR_LOT_ID_V := lot_id_vi;
295                     PKG_VAR_qc_grade_v := qc_grade_v;
296                 return qc_grade_v;
297 
298         end FIND_PROD_GRADE;
299 
300 
301     FUNCTION NO_OF_SAMPLES_TAKEN(BATCH_ID_VI IN INTEGER) RETURN INTEGER
302      is
303          	NO_OF_SAMPLES_V	INTEGER := 0;
304 
305      Begin
306                 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V1 then
307                    return PKG_VAR_NO_OF_SAMPLES_V;
308                 end if;
309 
310                 select count(*) into NO_OF_SAMPLES_v from GMD_SAMPLES
311                 where batch_id = BATCH_ID_VI;
312 
313                 PKG_VAR_BATCH_ID_V1 := BATCH_ID_vi;
314                 PKG_VAR_NO_OF_SAMPLES_V := NO_OF_SAMPLES_v;
315 
316                 return NO_OF_SAMPLES_V;
317      end NO_OF_SAMPLES_TAKEN;
318 
319  FUNCTION NO_OF_SAMPLES_COMPLET(BATCH_ID_VI IN INTEGER) RETURN INTEGER
320      is
321          	Complet_SAMPLES_V	INTEGER := 0;
322 
323      Begin
324                 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V4 then
325                    return PKG_VAR_NO_OF_SMPL_CMPLT_V;
326                 end if;
327                 Select count(*) into COMPLET_SAMPLES_v
328                 from GMD_SAMPLES Smp,
329                      GMD_EVENT_SPEC_DISP EVT_SPEC_DISP,
330                      GMD_SAMPLE_SPEC_DISP SMP_SPEC_DISP
331                 WHERE SMP.SAMPLING_EVENT_ID = EVT_SPEC_DISP.SAMPLING_EVENT_ID
332                   AND EVT_SPEC_DISP.EVENT_SPEC_DISP_ID =  SMP_SPEC_DISP.EVENT_SPEC_DISP_ID
333                   AND EVT_SPEC_DISP.SPEC_USED_FOR_LOT_ATTRIB_IND = 'Y'
334                   AND SMP_SPEC_DISP.DISPOSITION IN ('4A','5AV','6RJ')
335                   AND SMP.BATCH_ID = BATCH_ID_VI;
336 
337                 PKG_VAR_BATCH_ID_V4 := BATCH_ID_vi;
338                 PKG_VAR_NO_OF_SMPL_CMPLT_V := COMPLET_SAMPLES_v;
339 
340                 return COMPLET_SAMPLES_V;
341      end NO_OF_SAMPLES_COMPLET;
342 
343    FUNCTION NO_OF_SAMPLES_PASSED(BATCH_ID_VI IN INTEGER) RETURN INTEGER
344      is
345          	PASSED_SAMPLES_V  INTEGER := 0;
346 
347      Begin
348                 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V2 then
349                    return PKG_VAR_PASSED_SAMPLES_V;
350                 end if;
351                 Select count(*) into PASSED_SAMPLES_V
352                 from GMD_SAMPLES Smp,
353                      GMD_EVENT_SPEC_DISP EVT_SPEC_DISP,
354                      GMD_SAMPLE_SPEC_DISP SMP_SPEC_DISP
355                 WHERE SMP.SAMPLING_EVENT_ID = EVT_SPEC_DISP.SAMPLING_EVENT_ID
356                   AND EVT_SPEC_DISP.EVENT_SPEC_DISP_ID =  SMP_SPEC_DISP.EVENT_SPEC_DISP_ID
357                   AND EVT_SPEC_DISP.SPEC_USED_FOR_LOT_ATTRIB_IND = 'Y'
358                   AND SMP_SPEC_DISP.DISPOSITION IN ('4A','5AV')
359                   AND SMP.BATCH_ID = BATCH_ID_VI;
360 
361                 PKG_VAR_BATCH_ID_V2 := BATCH_ID_vi;
362                 PKG_VAR_PASSED_SAMPLES_V := PASSED_SAMPLES_v;
363 
364                 return PASSED_SAMPLES_V;
365      end NO_OF_SAMPLES_PASSED;
366 
367     FUNCTION NO_OF_TIMES_ADJUSTED(BATCH_ID_VI IN INTEGER) RETURN INTEGER
368      is
369          	ADJUST_BATCH_V	INTEGER := 0;
370 
371      Begin
372                 if BATCH_ID_vi = PKG_VAR_BATCH_ID_V3 then
373                    return PKG_VAR_ADJUST_BATCH_V;
374                 end if;
375 
376                 select count(distinct to_char(item_id)||to_char(TRANS_DATE,'dd/mm/yy hh24:mi:ss'))
377                        into ADJUST_BATCH_V
378                 from ic_tran_cmp_vw1
379                 where doc_id = BATCH_ID_VI
380                 and doc_type = 'PROD'
381                 and   reason_code = fnd_profile.value('PMI$REASON_CODE_BTCH_ADJ');
382 
383                 PKG_VAR_BATCH_ID_V3 := BATCH_ID_vi;
384                 PKG_VAR_ADJUST_BATCH_V := ADJUST_BATCH_v;
385 
386                 return ADJUST_BATCH_v;
387      end NO_OF_TIMES_ADJUSTED;
388 
389     FUNCTION SCHD_WORK_HOUR(BATCH_ID_VI IN INTEGER, SCHEDULE_VI IN ps_schd_hdr.schedule%type)
390     RETURN NUMBER
391      is
392          	ACTUAL_START_DATE_V	GME_BATCH_HEADER.ACTUAL_START_DATE%type;
393                 ACTUAL_CMPLT_DATE_V	GME_BATCH_HEADER.ACTUAL_CMPLT_DATE%type;
394                 NO_DAYS_V               INTEGER := 0;
395                 Count1_V                INTEGER := 0;
396                 Count2_V                INTEGER := 0;
397                 batch_time_v            INTEGER := 0;
398                 PLANT_CODE_V1           GME_BATCH_HEADER.PLANT_CODE%type;
399 
400                 SHIFT_START_V           INTEGER := 0;
401                 SHIFT_END_V             INTEGER := 0;
402                 SHIFT_DURATION_V        INTEGER;
403                 start_sec               INTEGER;
404                 end_sec                 INTEGER;
405                 prev_end_sec            INTEGER := 0;
406                 batch_hrs_v             NUMBER;
407                 Batch_day_V1		DATE;
408 
409                 CURSOR shop_cal_CUR(
410 			SCHEDULE_V		PS_SCHD_HDR.SCHEDULE%TYPE,
411                         PLANT_CODE_V            GME_BATCH_HEADER.PLANT_CODE%type,
412 		        Batch_day_V		DATE )
413 		IS
414 			SELECT shift_start,shift_duration
415                         FROM   ps_schd_dtl sd, ps_schd_hdr sh,
416                                mr_shcl_dtl sc, mr_shdy_dtl sl
417                         WHERE  sd.schedule_id = sh.schedule_id
418                         AND    sd.Calendar_id = sc.Calendar_id
419                         AND    sc.shopday_no  = sl.shopday_no
420                         AND    sh.schedule    = SCHEDULE_V
421                         AND    sd.orgn_code   = PLANT_CODE_V
422                         AND    trunc(sc.calendar_date) = trunc(batch_day_V)
423                         order by shift_start;
424 
425      Begin
426                 SELECT PLANT_CODE,ACTUAL_START_DATE,ACTUAL_CMPLT_DATE
427                        into PLANT_CODE_V1,ACTUAL_START_DATE_V, ACTUAL_CMPLT_DATE_V
428                 from gme_batch_header
429                 where  batch_id = batch_id_vi;
430 
431                 select count(*) into count2_v
432                 from   ps_schd_dtl sd, ps_schd_hdr sh
433                 where  sd.schedule_id = sh.schedule_id
434                 and    sh.schedule    = SCHEDULE_VI
435                 AND    sd.orgn_code   = PLANT_CODE_V1;
436 
437                 if count2_v = 0 then  /* No Calendar Found */
438                    Batch_hrs_v := 24*(ACTUAL_CMPLT_DATE_V - ACTUAL_START_DATE_V);
439                    return Batch_hrs_v;
440                 end if;
441 
442                 no_days_v := trunc(ACTUAL_CMPLT_DATE_V) - trunc(ACTUAL_START_DATE_V);
443                 start_sec := 3600*to_char(ACTUAL_START_DATE_V,'hh24') +
444                              60*to_char(ACTUAL_START_DATE_V,'mi') +
445                              to_char(ACTUAL_START_DATE_V,'ss');
446                 End_sec   := 3600*to_char(ACTUAL_CMPLT_DATE_V,'hh24') +
447                              60*to_char(ACTUAL_CMPLT_DATE_V,'mi') +
448                              to_char(ACTUAL_CMPLT_DATE_V,'ss');
449 
450                 LOOP
451                      batch_day_v1 := ACTUAL_START_DATE_V + count1_v;
452 
453                      IF shop_cal_CUR%ISOPEN THEN
454                         CLOSE shop_cal_CUR;
455                      end if;
456 
460 		        FETCH shop_cal_CUR INTO SHIFT_START_V,SHIFT_DURATION_V;
457 			OPEN shop_cal_CUR(SCHEDULE_VI,PLANT_CODE_V1,batch_day_v1);
458 
459                      LOOP
461 
462                         if shop_cal_CUR%NOTFOUND then
463                            if (prev_end_sec <=  start_sec and start_sec < 86400) then
464                                if (prev_end_sec <=  end_sec and end_sec < 86400) then
465                                   if no_days_v = 0 then
466                                       Batch_time_v := (end_sec - start_sec);
467                                       EXIT;
468                                   else
469                                      if count1_v = 0 then
470                                        Batch_time_v := batch_time_v +(86400 - start_sec);
471                                      else
472                                          if count1_v = no_days_v then
473                                             Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
474                                          end if;
475                                      end if;
476                                   end if;
477                                else
478                                    if count1_v = 0 then
479                                       Batch_time_v := batch_time_v +(86400 - start_sec);
480                                    end if;
481                                end if;
482                             else
483                                  if (prev_end_sec <=  end_sec and end_sec < 86400) then
484                                      if no_days_v = count1_v then
485                                         Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
486                                      end if;
487                                  end if;
488                             end if;
489                             EXIT;
490                           end if;
491 
492                           if (prev_end_sec <=  start_sec and start_sec < SHIFT_START_V) then
493                                if (prev_end_sec <= end_sec and end_sec < SHIFT_START_V) then
494                                   if no_days_v = 0 then
495                                       Batch_time_v := (end_sec - start_sec);
496                                       EXIT;
497                                   else
498                                      if count1_v = 0 then
499                                        Batch_time_v := batch_time_v +(SHIFT_START_V - start_sec);
500                                      else
501                                          if count1_v = no_days_v then
502                                            Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
503                                          end if;
504                                      end if;
505                                   end if;
506                                else
507                                    if count1_v = 0 then
508                                       Batch_time_v := batch_time_v +(SHIFT_START_V - start_sec);
509                                    end if;
510                                end if;
511                             else
512                                  if (prev_end_sec <=  end_sec and end_sec < SHIFT_START_V) then
513                                      if no_days_v = count1_v then
514                                         Batch_time_v := batch_time_v +(end_sec - prev_end_sec);
515                                      end if;
516                                  end if;
517                             end if;
518 
519                         shift_end_v := SHIFT_START_V + SHIFT_DURATION_V;
520 
521                         if (count1_v = 0 and start_sec > SHIFT_START_V) then
522                            if start_sec < shift_end_v then
523                               Batch_time_v := batch_time_v + (SHIFT_START_V - start_sec);
524                            else
525                               Batch_time_v := batch_time_v - SHIFT_DURATION_V;
526                            end if;
527                         end if;
528 
529                         if no_days_v = count1_v then    /* Last Day */
530                            if End_sec >= shift_end_v then
531                                  Batch_time_v := batch_time_v + SHIFT_DURATION_V;
532                            else if end_sec > SHIFT_START_V then
533                                  Batch_time_v := batch_time_v + SHIFT_DURATION_V -
534                                  (shift_end_v - End_sec);
535                                 end if;
536                            end if;
537                          else             /* Days in the Middle */
538                            Batch_time_v := batch_time_v + SHIFT_DURATION_V;
539                          end if;
540 
541                            prev_end_sec := shift_end_v;
542                        END LOOP;
543 
544                        prev_end_sec := 0;
545                        count1_v := count1_v + 1;
546                        EXIT WHEN count1_v > no_days_v;
547                     END LOOP;
548                 Batch_hrs_v := Batch_time_v / 3600;
549                 return Batch_hrs_v;
550      end SCHD_WORK_HOUR;
551 
552 FUNCTION PLAN_ING_VALUE(BATCH_ID_VI IN INTEGER) RETURN NUMBER
553      is
554          	PLAN_ING_VALUE_V	NUMBER := 0;
555      Begin
556           SELECT sum(gmicuom.i2uom_cv(BtchDtl.ITEM_ID,0,BtchDtl.ITEM_UM,
557                   BtchDtl.PLAN_QTY,ItemMst.ITEM_UM)*pmi_common_pkg.PMICO_GET_COST(
558                   BtchDtl.ITEM_ID,BtchHdr.WIP_WHSE_CODE,NULL,BtchHdr.ACTUAL_CMPLT_DATE))
559           into    PLAN_ING_VALUE_V
560           FROM
561                   GME_BATCH_HEADER  BtchHdr,
562                   GME_MATERIAL_DETAILS  BtchDtl,
563     	          IC_ITEM_MST  ItemMst
564           WHERE BtchHdr.BATCH_ID = BATCH_ID_VI
565           AND BtchHdr.BATCH_ID   = BtchDtl.BATCH_ID
566           AND BtchDtl.ITEM_ID    = ItemMst.ITEM_ID
567           AND BtchDtl.LINE_TYPE=-1;
568 
569           return PLAN_ING_VALUE_V;
570     end PLAN_ING_VALUE;
571 
572 FUNCTION ACTUAL_ING_VALUE(BATCH_ID_VI IN INTEGER) RETURN NUMBER
573      is
574          	ACTUAL_ING_VALUE_V	NUMBER := 0;
575      Begin
576           SELECT sum(gmicuom.i2uom_cv(BtchDtl.ITEM_ID,0,BtchDtl.ITEM_UM,
577                   BtchDtl.ACTUAL_QTY,ItemMst.ITEM_UM)*pmi_common_pkg.PMICO_GET_COST(
578                   BtchDtl.ITEM_ID,BtchHdr.WIP_WHSE_CODE,NULL,BtchHdr.ACTUAL_CMPLT_DATE))
579           into    ACTUAL_ING_VALUE_V
580           FROM
581                   GME_BATCH_HEADER  BtchHdr,
582                   GME_MATERIAL_DETAILS  BtchDtl,
583     	          IC_ITEM_MST  ItemMst
584           WHERE BtchHdr.BATCH_ID = BATCH_ID_VI
585           AND BtchHdr.BATCH_ID   = BtchDtl.BATCH_ID
586           AND BtchDtl.ITEM_ID    = ItemMst.ITEM_ID
587           AND BtchDtl.LINE_TYPE=-1;
588 
589           return ACTUAL_ING_VALUE_V;
590     end ACTUAL_ING_VALUE;
591 
592 END PMI_PRODUCTION_SUM;