DBA Data[Home] [Help]

PACKAGE BODY: APPS.POS_UPDATE_CAPACITY_PKG

Source


1 PACKAGE BODY POS_UPDATE_CAPACITY_PKG AS
2 /* $Header: POSUPDNB.pls 115.10 2004/09/10 20:32:20 jacheung ship $ */
3 
4 
5 L_TABLE_STYLE VARCHAR2(100) := ' style="border-collapse:collapse" cellpadding="1" cellspacing="0" border="0" width="100%" ';
6 
7 L_TABLE_HEADER_STYLE VARCHAR2(100) := ' class="tableheader" style="border-left:1px solid #f7f7e7" ';
8 
9 L_TABLE_LABEL_STYLE VARCHAR2(100) := ' class="tableheaderright" nowrap align=right style="border:1px solid #f7f7e7" ';
10 
11 L_TABLE_CELL_STYLE VARCHAR2(100) := ' class="tabledata" nowrap align=left style="border:1px solid #cccc99" ';
12 
13 L_TABLE_CELL_WRAP_STYLE VARCHAR2(100) := ' class="tabledata" align=left style="border:1px solid #cccc99" ';
14 
15 L_TABLE_CELL_RIGHT_STYLE VARCHAR2(100) := ' class="tabledata" nowrap align=right style="border:1px solid #cccc99" ';
16 
17 /*===========================================================================
18   PROCEDURE NAME:	updmodifiers()
19 ===========================================================================*/
20 
21 PROCEDURE INSERT_TEMP_MFG_CAPACITY(
22         p_asl_id                    IN   NUMBER,
23         p_from_date                 IN   DATE,
24         p_to_date                 IN   DATE,
25         p_capacity_per_day               IN   NUMBER,
26         p_created_by            in number,
27         p_capacity_id in number,
28         p_status in varchar2,/*
29         p_supplier_item_number in varchar2,
30         p_item_number in varchar2,
31         p_item_description in varchar2,
32         p_uom in varchar2,
33         p_vendor_id in number,
34         p_vendor_name in varchar2,*/
35         p_error_code                OUT NOCOPY VARCHAR2,
36         p_error_message             OUT NOCOPY VARCHAR2) is
37 
38 
39   l_seq number;
40 BEGIN
41 
42     /* Update PO_ASL_ATTRIBUTES form ISP     */
43   select POS_MFG_CAPACITY_TEMP_ID_S.NEXTVAL
44   into l_seq from sys.dual;
45 
46   insert into POS_MFG_CAPACITY_TEMP (
47     mfg_capacity_id,
48     asl_id,
49     last_update_date,
50     last_updated_by,
51     last_update_login,
52     creation_date,
53     created_by,
54     from_date,
55     to_date,
56     capacity_per_day,/*
57     supplier_item_number,
58     item_number,
59     item_description,
60     uom,
61     vendor_id,
62     vendor_name,*/
63     CAPACITY_ID,
64     status)
65   values
66     (
67     l_seq,
68     p_asl_id,
69     sysdate,
70     p_created_by,
71     p_created_by,
72     sysdate,
73     p_created_by,
74     p_from_date,
75     p_to_date,
76     p_capacity_per_day,/*
77     p_supplier_item_number,
78     p_item_number,
79     p_item_description,
80     p_uom,
81     p_vendor_id,
82     p_vendor_name,*/
83     p_capacity_id,
84     p_status);
85 
86 
87 
88  EXCEPTION
89 
90   WHEN OTHERS THEN
91 
92     p_ERROR_CODE := 'Y';
93     p_ERROR_MESSAGE := 'exception raised during Update';
94 
95 END INSERT_TEMP_MFG_CAPACITY;
96 
97 
98 PROCEDURE INSERT_TEMP_CAPACITY_TOLERANCE(
99         p_asl_id                    IN   NUMBER,
100         p_days_in_advance               IN   NUMBER,
101         p_tolerance               IN   NUMBER,
102         p_created_by            in number,
103         /*
104         p_supplier_item_number in varchar2,
105         p_item_number in varchar2,
106         p_item_description in varchar2,
107         p_uom in varchar2,
108         p_vendor_id in number,
109         p_vendor_name in varchar2,
110         */
111         p_error_code                OUT NOCOPY VARCHAR2,
112         p_error_message             OUT  NOCOPY VARCHAR2) is
113 
114 
115   l_seq number;
116 BEGIN
117 
118     /* Update PO_ASL_ATTRIBUTES form ISP     */
119   select POS_MFG_CAPACITY_TEMP_ID_S.NEXTVAL
120   into l_seq from sys.dual;
121 
122   insert into POS_CAPACITY_TOLERANCE_TEMP(
123     capacity_tolerance_id,
124     asl_id,
125     last_update_date,
126     last_updated_by,
127     last_update_login,
128     creation_date,
129     created_by,
130     days_in_advance,
131     tolerance,
132     /*
133     supplier_item_number,
134     item_number,
135     item_description,
136     uom,
137     vendor_id,
138     vendor_name,
139     */
140     status)
141   values
142     (
143     l_seq,
144     p_asl_id,
145     sysdate,
146     p_created_by,
147     p_created_by,
148     sysdate,
149     p_created_by,
150     p_days_in_advance,
151     p_tolerance,
152     /*
153     p_supplier_item_number,
154     p_item_number,
155     p_item_description,
156     p_uom,
157     p_vendor_id,
158     p_vendor_name,
159     */
160     'NEW');
161 
162 
163 
164  EXCEPTION
165 
166   WHEN OTHERS THEN
167 
168     p_ERROR_CODE := 'Y';
169     p_ERROR_MESSAGE := 'exception raised during Update';
170 
171 END INSERT_TEMP_CAPACITY_TOLERANCE;
172 
173 
174 
175 PROCEDURE UPDATE_EXIST(p_asl_id in NUMBER,
176         p_return_code out NOCOPY number) is
177 
178 begin
179 
180   select count(*)
181   into p_return_code
182   from POS_MFG_CAPACITY_TEMP
183   where asl_id=p_asl_id and status in ('NEW', 'OLD', 'DEL', 'MOD');
184 
185   if(p_return_code>0) then return;
186   else
187     select count(*)
188     into p_return_code
189     from POS_CAPACITY_TOLERANCE_TEMP
190     where asl_id=p_asl_id and status='NEW';
191   end if;
192 
193 end UPDATE_EXIST;
194 
195 PROCEDURE StartWorkflow(p_asl_id in NUMBER) is
196 
197   l_seq varchar2(25);
198   l_itemkey varchar2(40);
199   l_itemtype varchar2(20):='POSUPDNT';
200   l_count number;
201 
202 BEGIN
203 
204     /* Update PO_ASL_ATTRIBUTES form ISP     */
205 
206   UPDATE_EXIST(p_asl_id, l_count);
207 
208   if(l_count=0) then
209     return;
210   end if;
211 
212   select to_char(POS_ASL_UPD_ITEMKEY_S.NEXTVAL)
213   into l_seq from sys.dual;
214 
215   l_itemkey:=to_char(p_asl_id)||'-'||l_seq;
216 
217   wf_engine.createProcess     ( ItemType  => l_ItemType,
218                                   ItemKey   => l_ItemKey,
219                                   Process   => 'UPDATE_CAPACITY');
220 
221 
222   wf_engine.SetItemAttrNumber ( itemtype => l_itemtype,
223                                   itemkey  => l_itemkey,
224                                   aname    => 'ASL_ID',
225                                   avalue   => p_asl_id);
226   wf_engine.StartProcess      ( ItemType  => l_ItemType,
227                                   ItemKey   => l_ItemKey );
228 
229 end StartWorkflow;
230 
231 procedure OLD_MFG_CAPACITY_TABLE( itemtype in varchar2,
232            itemkey in varchar2,
233            asl_id in number) is
234 
235 
236   l_document      VARCHAR2(32000) := '';
237   NL              VARCHAR2(1) := fnd_global.newline;
238   l_from DATE;
239   l_to DATE;
240   l_cap_per_day NUMBER;
241 
242   CURSOR old_mfg_capacity(id number) is
243          SELECT from_date, to_date, capacity_per_day
244          FROM   pos_supplier_item_capacity_v
245          WHERE  asl_id=id
246          order by from_date asc;
247 
248 begin
249   l_document := '<TABLE' || L_TABLE_STYLE || 'cellpadding=2 cellspacing=1>';
250 
251   l_document := l_document || '<TR>';
252 
253   l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
254                      fnd_message.get_string('POS', 'POS_FROM') ||
255                      '</TH> ' || NL;
256   l_document := l_document || '<TH align=left ' || L_TABLE_HEADER_STYLE || '>' ||
257                      fnd_message.get_string('POS', 'POS_TO') ||
258                      '</TH> ' || NL;
259    l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
260 	                     fnd_message.get_string('POS', 'POS_CAPACITY_PER_DAY') ||
261                      '</TH> ' || NL;
262 
263   l_document := l_document || '</TR>';
264 
265   open old_mfg_capacity(asl_id);
266 
267   LOOP
268     FETCH old_mfg_capacity INTO l_from, l_to, l_cap_per_day;
269     EXIT WHEN old_mfg_capacity%NOTFOUND;
270  l_document := l_document || '<TD '||  L_TABLE_CELL_STYLE ||'>' || to_char(l_from)||'</TD> ' || NL;
271     l_document := l_document || '<TD ' ||  L_TABLE_CELL_STYLE ||'>' ||to_char(l_to)||'</TD> ' || NL;
272     l_document := l_document || '<TD ' ||  L_TABLE_CELL_STYLE ||'>' ||to_char(l_cap_per_day)||'</TD> ' || NL;
273     l_document := l_document || '</TR>' || NL;
274 
275 
276   end loop;
277 
278   l_document := l_document || '</TABLE>';
279 
280   wf_engine.SetItemAttrText ( itemtype => itemtype,
281                                   itemkey  => itemkey,
282                                   aname    => 'OLD_MFG_CAPACITY_TABLE',
283                                   avalue   => l_document);
284 
285 end OLD_MFG_CAPACITY_TABLE;
286 
287 procedure NEW_MFG_CAPACITY_TABLE( itemtype in varchar2,
288            itemkey in varchar2,
289            asl_id in number) is
290 
291 
292   l_document      VARCHAR2(32000) := '';
293   NL              VARCHAR2(1) := fnd_global.newline;
294   l_from DATE;
295   l_to DATE;
296   l_cap_per_day NUMBER;
297 
298   CURSOR new_mfg_capacity(id number) is
299          SELECT from_date, to_date, capacity_per_day
300          FROM   pos_mfg_capacity_temp
301          WHERE  asl_id=id and status in ('NEW', 'OLD', 'MOD')
302          order by from_date asc;
303 
304 begin
305   l_document := '<TABLE' || L_TABLE_STYLE || 'cellpadding=2 cellspacing=1>';
306 
307   l_document := l_document || '<TR>';
308 
309   l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
310                      fnd_message.get_string('POS', 'POS_FROM') ||
311                      '</TH> ' || NL;
312   l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
313                      fnd_message.get_string('POS', 'POS_TO') ||
314                      '</TH> ' || NL;
315    l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
316 	                     fnd_message.get_string('POS', 'POS_CAPACITY_PER_DAY') ||
317                      '</TH> ' || NL;
318 
319   l_document := l_document || '</TR>';
320 
321   open new_mfg_capacity(asl_id);
322 
323   LOOP
324     FETCH new_mfg_capacity INTO l_from, l_to, l_cap_per_day;
325     EXIT WHEN new_mfg_capacity%NOTFOUND;
326     l_document := l_document || '<TR>';
327 
328     l_document := l_document || '<TD '||  L_TABLE_CELL_STYLE ||'>' || to_char(l_from)||'</TD> ' || NL;
329     l_document := l_document || '<TD' ||  L_TABLE_CELL_STYLE ||'>' ||to_char(l_to)||'</TD> ' || NL;
330     l_document := l_document || '<TD' ||  L_TABLE_CELL_STYLE ||'>' ||to_char(l_cap_per_day)||'</TD> ' || NL;
331     l_document := l_document || '</TR>' || NL;
332   end loop;
333 
334   l_document := l_document || '</TABLE>' || NL;
335 
336   wf_engine.SetItemAttrText ( itemtype => itemtype,
337                                   itemkey  => itemkey,
338                                   aname    => 'NEW_MFG_CAPACITY_TABLE',
339                                   avalue   => l_document);
340 
341 end NEW_MFG_CAPACITY_TABLE;
342 
343 
344 procedure OLD_CAPACITY_TOLERANCE_TABLE( itemtype in varchar2,
345            itemkey in varchar2,
346            asl_id in number) is
347 
348 
349   l_document      VARCHAR2(32000) := '';
350   NL              VARCHAR2(1) := fnd_global.newline;
351   l_days_in_advance NUMBER;
352   l_tolerance NUMBEr;
353 
354   CURSOR OLD_CAPACITY_TOLERANCE(id number) is
355          SELECT number_of_days, tolerance
356          FROM   po_supplier_item_tolerance
357          WHERE  asl_id=id
358          order by number_of_days asc;
359 
360 begin
361 
362 l_document := '<TABLE' || L_TABLE_STYLE || 'cellpadding=2 cellspacing=1>' || NL;
363 
364   l_document := l_document || '<TR>' || NL;
365 
366   l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
367                      fnd_message.get_string('POS', 'POS_DAYS_IN_ADVANCE') ||
368                      '</TH> ' || NL;
369   l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
370                      fnd_message.get_string('POS', 'POS_TOLERANCE') ||
371                      '</TH> ' || NL;
372 
373   l_document := l_document || '</TR>' || NL;
374 
375 
376   open OLD_CAPACITY_TOLERANCE(asl_id);
377 
378   LOOP
379     FETCH OLD_CAPACITY_TOLERANCE INTO l_days_in_advance, l_tolerance;
380     EXIT WHEN OLD_CAPACITY_TOLERANCE%NOTFOUND;
381 
382 
383     l_document := l_document || '<TR>';
384 
385     l_document := l_document || '<TD '||  L_TABLE_CELL_STYLE ||'>' || to_char(l_days_in_advance)||'</TD> ';
386     l_document := l_document || '<TD ' ||  L_TABLE_CELL_STYLE ||'>' ||to_char(l_tolerance)||'</TD> ';
387 
388     l_document := l_document || '</TR>';
389   end loop;
390 
391   l_document := l_document || '</TABLE>';
392 
393   wf_engine.SetItemAttrText ( itemtype => itemtype,
394                                   itemkey  => itemkey,
395                                   aname    => 'OLD_CAPACITY_TOLERANCE_TABLE',
396                                   avalue   => l_document);
397 
398 end OLD_CAPACITY_TOLERANCE_TABLE;
399 
400 procedure NEW_CAPACITY_TOLERANCE_TABLE( itemtype in varchar2,
401            itemkey in varchar2,
402            asl_id in number) is
403 
404   l_document      VARCHAR2(32000) := '';
405   NL              VARCHAR2(1) := fnd_global.newline;
406   l_days_in_advance NUMBER;
407   l_tolerance NUMBEr;
408 
409   CURSOR NEW_CAPACITY_TOLERANCE(id number) is
410          SELECT days_in_advance, tolerance
411          FROM   POS_CAPACITY_TOLERANCE_TEMP
412          WHERE  asl_id=id and status='NEW'
413          order by days_in_advance asc;
414 
415 begin
416 
417 
418 l_document := '<TABLE' || L_TABLE_STYLE || 'cellpadding=2 cellspacing=1>' || NL;
419 
420   l_document := l_document || '<TR>' || NL;
421 
422   l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
423                      fnd_message.get_string('POS', 'POS_DAYS_IN_ADVANCE') ||
424                      '</TH> ' || NL;
425   l_document := l_document || '<TH align=left' || L_TABLE_HEADER_STYLE || '>' ||
426                      fnd_message.get_string('POS', 'POS_TOLERANCE') ||
427                      '</TH> ' || NL;
428 
429   l_document := l_document || '</TR>' || NL;
430 
431 
432   open NEW_CAPACITY_TOLERANCE(asl_id);
433 
434   LOOP
435     FETCH NEW_CAPACITY_TOLERANCE INTO l_days_in_advance, l_tolerance;
436     EXIT WHEN NEW_CAPACITY_TOLERANCE%NOTFOUND;
437 
438     l_document := l_document || '<TR>';
439 
440     l_document := l_document || '<TD '||  L_TABLE_CELL_STYLE ||'>' || to_char(l_days_in_advance)||'</TD> ';
441     l_document := l_document || '<TD '||  L_TABLE_CELL_STYLE ||'>' ||to_char(l_tolerance)||'</TD> ';
442 
443     l_document := l_document || '</TR>';
444 
445   end loop;
446 
447   l_document := l_document || '</TABLE>';
448 
449   wf_engine.SetItemAttrText ( itemtype => itemtype,
450                                   itemkey  => itemkey,
451                                   aname    => 'NEW_CAPACITY_TOLERANCE_TABLE',
452                                   avalue   => l_document);
453 
454 end NEW_CAPACITY_TOLERANCE_TABLE;
455 
456 
457 procedure INIT_ATTRIBUTES(  itemtype        in  varchar2,
458     itemkey         in  varchar2,
459     actid           in number,
460     funcmode        in  varchar2,
461     resultout          out NOCOPY varchar2    ) is
462 
463   l_supplier_item_number varchar2(25);
464   l_item_number varchar2(25);
465   l_item_description varchar2(240);
466   l_uom varchar2(25);
467   l_vendor_id number;
468   l_buyer_id number;
469   l_planner_id number;
470   l_asl_id number;
471   l_buyer_username varchar2(80):=null;
472   l_planner_username varchar2(80):=null;
473   l_supplier_username varchar2(240):=null;
474   l_buyer_displayname varchar2(80):=null;
475   l_planner_displayname varchar2(80):=null;
476   l_supplier_displayname varchar2(80):=null;
477   l_approval_required_by varchar2(20);
478   l_progress varchar2(3):='0';
479 
480 begin
481   if (funcmode <> wf_engine.eng_run) then
482       resultout := wf_engine.eng_null;
483       return;
484   end if;
485   l_progress:='1';
486   l_asl_id:=wf_engine.GetItemAttrNumber ( itemtype => itemtype,
487                                           itemkey  => itemkey,
488                                           aname    => 'ASL_ID');
489   select  DESCRIPTION,
490           BUYER_ID,
491           PLANNER_ID,
492           UOM,
493           SUPPLIER_ITEM_NUMBER,
494           ITEM_NUMBER,
495           VENDOR_ID
496   into    l_item_description,
497           l_buyer_id,
498           l_planner_id,
499           l_uom,
500           l_supplier_item_number,
501           l_item_number,
502           l_vendor_id
503   from POS_ORD_MODIFIERS_V
504   where asl_id=l_asl_id;
505 
506   l_progress:='2';
507   wf_engine.SetItemAttrText ( itemtype => itemtype,
508                                   itemkey  => itemkey,
509                                   aname    => 'ITEM_DESCRIPTION',
510                                   avalue   => l_item_description);
511   wf_engine.SetItemAttrText ( itemtype => itemtype,
512                                   itemkey  => itemkey,
513                                   aname    => 'ITEM_NUM',
514                                   avalue   => l_item_number);
515   wf_engine.SetItemAttrText ( itemtype => itemtype,
516                                   itemkey  => itemkey,
517                                   aname    => 'SUPPLIER_ITEM',
518                                   avalue   => l_supplier_item_number);
519   wf_engine.SetItemAttrText ( itemtype => itemtype,
520                                   itemkey  => itemkey,
521                                   aname    => 'SUPPLIER_ITEM_NVL',
522                                   avalue   => nvl(l_supplier_item_number,
523                                                  l_item_number));
524   wf_engine.SetItemAttrText ( itemtype => itemtype,
525                                   itemkey  => itemkey,
526                                   aname    => 'PURCHASING_UOM',
527                                   avalue   => l_uom);
528 
529   l_progress:='3';
530   if(l_buyer_id is not null) then
531     wf_directory.GetUserName('PER', l_buyer_id, l_buyer_username, l_buyer_displayname);
532   end if;
533   l_progress:='4';
534   if(l_planner_id is not null) then
535     wf_directory.GetUserName('PER', l_planner_id, l_planner_username, l_planner_displayname);
536   end if;
537   l_progress:='5';
538   if(l_vendor_id is not null) then
539     select vendor_name
540       into l_supplier_username
541       from po_vendors
542      where vendor_id=l_vendor_id;
543   end if;
544 
545   l_progress:='6';
546   wf_engine.SetItemAttrText ( itemtype => itemtype,
547                                   itemkey  => itemkey,
548                                   aname    => 'SUPPLIER_ORG_NAME',
549                                   avalue   => l_supplier_username);
550 
551   l_progress:='7';
552   select count(*)
553   into l_vendor_id
554   from POS_MFG_CAPACITY_TEMP
555   where asl_id=l_asl_id and status in ('NEW', 'OLD', 'DEL', 'MOD');
556 
557   l_progress:='8';
558   if(l_vendor_id>0) then
559     l_progress:='9';
560     select last_updated_by
561       into l_vendor_id
562       from POS_MFG_CAPACITY_TEMP
563       where mfg_capacity_id=
564              (select min(mfg_capacity_id)
565                 from POS_MFG_CAPACITY_TEMP
566                where asl_id=l_asl_id and
567                      status in ('NEW', 'OLD', 'DEL', 'MOD'));
568   else
569     l_progress:='10';
570     select last_updated_by
571       into l_vendor_id
572       from POS_CAPACITY_TOLERANCE_TEMP
573       where capacity_tolerance_id=
574              (select min(capacity_tolerance_id)
575                 from POS_CAPACITY_TOLERANCE_TEMP
576                where asl_id=l_asl_id and status='NEW');
577   end if;
578 
579   l_progress:='11';
580   if(l_vendor_id is not null) then
581     wf_directory.GetUserName('FND_USR', l_vendor_id, l_supplier_username, l_supplier_displayname);
582   end if;
583   l_progress:='12';
584   wf_engine.SetItemAttrText ( itemtype => itemtype,
585                                   itemkey  => itemkey,
586                                   aname    => 'BUYER_NAME',
587                                   avalue   => l_buyer_username);
588   wf_engine.SetItemAttrText ( itemtype => itemtype,
589                                   itemkey  => itemkey,
590                                   aname    => 'BUYER_DISPLAY_NAME',
591                                   avalue   => l_buyer_displayname);
592   wf_engine.SetItemAttrText ( itemtype => itemtype,
593                                   itemkey  => itemkey,
594                                   aname    => 'PLANNER_NAME',
595                                   avalue   => l_planner_username);
596   wf_engine.SetItemAttrText ( itemtype => itemtype,
597                                   itemkey  => itemkey,
598                                   aname    => 'PLANNER_DISPLAY_NAME',
599                                   avalue   => l_planner_displayname);
600   wf_engine.SetItemAttrText ( itemtype => itemtype,
601                                   itemkey  => itemkey,
602                                   aname    => 'SUPPLIER_NAME',
603                                   avalue   => l_supplier_username);
604   wf_engine.SetItemAttrText ( itemtype => itemtype,
605                                   itemkey  => itemkey,
606                                   aname    => 'SUPPLIER_DISPLAY_NAME',
607                                   avalue   => l_supplier_displayname);
608 
609   l_progress:='13';
610   FND_PROFILE.get('POS_ASL_MOD_APPR_REQD_BY', l_approval_required_by);
611   l_progress:='14';
612   if(upper(l_approval_required_by)='BUYER') then
613     wf_engine.SetItemAttrText ( itemtype => itemtype,
614                                   itemkey  => itemkey,
615                                   aname    => 'APPROVAL_REQUIRED_BY',
616                                   avalue   => 'BUYER');
617   elsif(upper(l_approval_required_by)='PLANNER') then
618     wf_engine.SetItemAttrText ( itemtype => itemtype,
619                                   itemkey  => itemkey,
620                                   aname    => 'APPROVAL_REQUIRED_BY',
621                                   avalue   => 'PLANNER');
622   else
623     wf_engine.SetItemAttrText ( itemtype => itemtype,
624                                   itemkey  => itemkey,
625                                   aname    => 'APPROVAL_REQUIRED_BY',
626                                   avalue   => 'NONE');
627   end if;
628 
629   l_progress:='15';
630 
631  wf_engine.SetItemAttrText (itemtype        => itemtype,
632 			     itemkey         => itemkey,
633 			     aname           => 'POS_NOTIFY_APPROVER',
634 			     avalue  	 => 'PLSQL:POS_UPDATE_CAPACITY_PKG.GENERATE_CAP_APP_NOTIF/'|| itemtype || ':' || itemkey);
635 
636    wf_engine.SetItemAttrText (itemtype        => itemtype,
637 			     itemkey         => itemkey,
638 			     aname           => 'POS_SUPP_NOTIF_APPR',
639 			     avalue => 'PLSQL:POS_UPDATE_CAPACITY_PKG.GENERATE_SUPPL_CAP_NOTIF_APPR/'|| itemtype || ':' || itemkey);
640 
641   wf_engine.SetItemAttrText (itemtype        => itemtype,
642 			     itemkey         => itemkey,
643 			     aname           => 'POS_SUPP_NOTIF_REJ',
644 			     avalue  	 => 'PLSQL:POS_UPDATE_CAPACITY_PKG.GENERATE_SUPPL_CAP_NOTIF_REJ/'|| itemtype || ':' || itemkey);
645 
646   OLD_MFG_CAPACITY_TABLE(itemtype, itemkey, l_asl_id);
647   l_progress:='16';
648   NEW_MFG_CAPACITY_TABLE(itemtype, itemkey, l_asl_id);
649   l_progress:='17';
650   OLD_CAPACITY_TOLERANCE_TABLE(itemtype, itemkey, l_asl_id);
651   l_progress:='18';
652   NEW_CAPACITY_TOLERANCE_TABLE(itemtype, itemkey, l_asl_id);
653 
654   l_progress:='19';
655 EXCEPTION
656 
657 
658   WHEN OTHERS THEN
659        wf_core.context('POS_UPDATE_CAPACITY_PKG','INIT_ATTRIBUTES',l_progress);
660        raise;
661 
662 end;
663 
664 procedure GET_BUYER_NAME(  itemtype        in  varchar2,
665   itemkey         in  varchar2,
666   actid           in number,
667   funcmode        in  varchar2,
668   resultout          out NOCOPY varchar2    ) is
669 begin
670   if (funcmode <> wf_engine.eng_run) then
671       resultout := wf_engine.eng_null;
672       return;
673   end if;
674 end;
675 
676 procedure GET_PLANNER_NAME(  itemtype        in  varchar2,
677   itemkey         in  varchar2,
678   actid           in number,
679   funcmode        in  varchar2,
680   resultout          out NOCOPY varchar2    ) is
681 begin
682   if (funcmode <> wf_engine.eng_run) then
683       resultout := wf_engine.eng_null;
684       return;
685   end if;
686 end;
687 
688 procedure BUYER_APPROVAL_REQUIRED(  itemtype        in  varchar2,
689   itemkey         in  varchar2,
690   actid           in number,
691   funcmode        in  varchar2,
692   resultout          out NOCOPY varchar2    ) is
693 
694 l_approval_required_by varchar2(20);
695 l_buyer_name varchar2(180);
696 begin
697   if (funcmode <> wf_engine.eng_run) then
698       resultout := wf_engine.eng_null;
699       return;
700   end if;
701   l_approval_required_by:=wf_engine.GetItemAttrText ( itemtype => itemtype,
702                                   itemkey  => itemkey,
703                                   aname    => 'APPROVAL_REQUIRED_BY');
704   if(l_approval_required_by='BUYER') then
705     l_buyer_name:=wf_engine.GetItemAttrText ( itemtype => itemtype,
706                                           itemkey  => itemkey,
707                                           aname    => 'BUYER_NAME');
708     wf_engine.SetItemAttrText ( itemtype => itemtype,
709                                   itemkey  => itemkey,
710                                   aname    => 'RESPONSE_FROM_ROLE',
711                                   avalue   => l_buyer_name);
712     resultout := wf_engine.eng_completed || ':' || 'Y';
713   else
714     resultout := wf_engine.eng_completed || ':' || 'N';
715   end if;
716 
717 end;
718 
719 procedure BUYER_EXIST(  itemtype        in  varchar2,
720   itemkey         in  varchar2,
721   actid           in number,
722   funcmode        in  varchar2,
723   resultout          out NOCOPY varchar2    ) is
724 
725   l_buyer_name varchar2(100);
726 begin
727   if (funcmode <> wf_engine.eng_run) then
728       resultout := wf_engine.eng_null;
729       return;
730   end if;
731   l_buyer_name:=wf_engine.GetItemAttrText ( itemtype => itemtype,
732                                           itemkey  => itemkey,
733                                           aname    => 'BUYER_NAME');
734   if(l_buyer_name is not null) then
735     resultout := wf_engine.eng_completed || ':' || 'Y';
736   else
737     resultout := wf_engine.eng_completed || ':' || 'N';
738   end if;
739 end;
740 
741 procedure PLANNER_APPROVAL_REQUIRED(  itemtype        in  varchar2,
742   itemkey         in  varchar2,
743   actid           in number,
744   funcmode        in  varchar2,
745   resultout          out NOCOPY varchar2    ) is
746 
747 l_approval_required_by varchar2(20);
748 l_planner_name varchar2(180);
749 l_supplier_name varchar2(180);
750 begin
751   if (funcmode <> wf_engine.eng_run) then
752       resultout := wf_engine.eng_null;
753       return;
754   end if;
755   l_approval_required_by:=wf_engine.GetItemAttrText ( itemtype => itemtype,
756                                   itemkey  => itemkey,
757                                   aname    => 'APPROVAL_REQUIRED_BY');
758   if(l_approval_required_by='PLANNER') then
759     l_planner_name:=wf_engine.GetItemAttrText ( itemtype => itemtype,
760                                           itemkey  => itemkey,
761                                           aname    => 'PLANNER_NAME');
762     wf_engine.SetItemAttrText ( itemtype => itemtype,
763                                   itemkey  => itemkey,
764                                   aname    => 'RESPONSE_FROM_ROLE',
765                                   avalue   => l_planner_name);
766     resultout := wf_engine.eng_completed || ':' || 'Y';
767   else
768     l_supplier_name:=wf_engine.GetItemAttrText ( itemtype => itemtype,
769                                           itemkey  => itemkey,
770                                           aname    => 'SUPPLIER_NAME');
771     wf_engine.SetItemAttrText ( itemtype => itemtype,
772                                   itemkey  => itemkey,
773                                   aname    => 'RESPONSE_FROM_ROLE',
774                                   avalue   => l_supplier_name);
775     resultout := wf_engine.eng_completed || ':' || 'N';
776   end if;
777 
778 end;
779 
780 procedure PLANNER_EXIST(  itemtype        in  varchar2,
781   itemkey         in  varchar2,
782   actid           in number,
783   funcmode        in  varchar2,
784   resultout          out NOCOPY varchar2    ) is
785 
786   l_planner_name varchar2(100);
787 begin
788   if (funcmode <> wf_engine.eng_run) then
789       resultout := wf_engine.eng_null;
790       return;
791   end if;
792   l_planner_name:=wf_engine.GetItemAttrText ( itemtype => itemtype,
793                                           itemkey  => itemkey,
794                                           aname    => 'PLANNER_NAME');
795   if(l_planner_name is not null) then
796     resultout := wf_engine.eng_completed || ':' || 'Y';
797   else
798     resultout := wf_engine.eng_completed || ':' || 'N';
799   end if;
800 end;
801 
802 procedure UPDATE_ASL(  itemtype        in  varchar2,
803   itemkey         in  varchar2,
804   actid           in number,
805   funcmode        in  varchar2,
806   resultout          out NOCOPY varchar2    ) is
807 
808   l_asl_id number;
809   l_num_of_days number;
810   l_tolerance number;
811   l_created_by number;
812 
813   l_from_date DATE;
814   l_to_date DATE;
815   l_cap_per_day number;
816   l_status varchar2(10);
817   l_capacity_id number;
818   x_progress varchar2(3):='0';
819   l_progress number:=0;
820   CURSOR tol_updates(id number) is
821     SELECT
822       days_in_advance, tolerance, created_by
823     FROM  POS_CAPACITY_TOLERANCE_TEMP
824     WHERE asl_id=id and status='NEW';
825 
826   CURSOR cap_updates(id number) is
827     SELECT
828       from_date, to_date, capacity_per_day, capacity_id, created_by, status
829     FROM  POS_MFG_CAPACITY_TEMP
830     WHERE asl_id=id and status in ('NEW', 'OLD', 'DEL', 'MOD');
831 begin
832   if (funcmode <> wf_engine.eng_run) then
833       resultout := wf_engine.eng_null;
834       return;
835   end if;
836   l_asl_id:=wf_engine.GetItemAttrNumber ( itemtype => itemtype,
837                                           itemkey  => itemkey,
838                                           aname    => 'ASL_ID');
839 
840   pos_supplier_item_tol_pkg.delete(l_asl_id);
841 
842   x_progress:='a1';
843   open tol_updates(l_asl_id);
844   LOOP
845     FETCH tol_updates INTO l_num_of_days, l_tolerance, l_created_by;
846     EXIT WHEN tol_updates%NOTFOUND;
847     pos_supplier_item_tol_pkg.store_line(l_asl_id, l_num_of_days, l_tolerance, l_created_by);
848   end loop;
849 
850   x_progress:='a2';
851   update POS_CAPACITY_TOLERANCE_TEMP
852      set status='ACE'
853    where asl_id=l_asl_id
854          and status='NEW';
855 
856   x_progress:='a3';
857   l_progress:=0;
858   open cap_updates(l_asl_id);
859   LOOP
860     FETCH cap_updates INTO l_from_date, l_to_date, l_cap_per_day, l_capacity_id, l_created_by, l_status;
861     EXIT WHEN cap_updates%NOTFOUND;
862 
863     x_progress:='b'||to_char(l_progress);
864     l_progress:=l_progress+1;
865     if(l_status='NEW') then
866       insert into po_supplier_item_capacity
867        (CAPACITY_ID,
868         ASL_ID,
869         USING_ORGANIZATION_ID,
870         FROM_DATE,
871         TO_DATE,
872         CAPACITY_PER_DAY,
873         LAST_UPDATE_DATE,
874         LAST_UPDATED_BY,
875         LAST_UPDATE_LOGIN,
876         CREATION_DATE,
877         CREATED_BY)
878       values (
879 	     po_supplier_item_capacity_s.nextval,
880 	     l_asl_id,
881 	     -1,
882 	     l_from_date,
883 	     l_to_date,
884 	     l_cap_per_day,
885 	     sysdate,
886 	     l_created_by,
887 	     l_created_by,
888 	     sysdate,
889 	     l_created_by);
890     elsif(l_status='DEL') then
891       DELETE from po_supplier_item_capacity
892       WHERE
893         asl_id = l_asl_id AND capacity_id = l_capacity_id;
894     elsif(l_status='MOD') then
895       UPDATE po_supplier_item_capacity
896       SET
897         FROM_DATE = l_from_date,
898         TO_DATE = l_to_date,
899         CAPACITY_PER_DAY = l_cap_per_day,
900         last_update_date = Sysdate,
901         last_updated_by = l_created_by,
902         last_update_login = l_created_by
903       WHERE
904         asl_id = l_asl_id AND capacity_id = l_capacity_id;
905     end if;
906   end loop;
907   x_progress:='a4';
908 
909   update POS_MFG_CAPACITY_TEMP
910      set status='ACE'
911    where asl_id=l_asl_id
912          and status in ('NEW', 'OLD', 'DEL', 'MOD');
913   x_progress:='a5';
914   EXCEPTION
915 
916     WHEN OTHERS THEN
917          wf_core.context('POS_UPDATE_CAPACITY_PKG','UPDATE_ASL',x_progress);
918        raise;
919 
920 end;
921 
922 procedure DEFAULT_APPROVAL_MODE(  itemtype        in  varchar2,
923   itemkey         in  varchar2,
924   actid           in number,
925   funcmode        in  varchar2,
926   resultout          out NOCOPY varchar2    ) is
927 
928 l_default_mode varchar2(20);
929 begin
930   if (funcmode <> wf_engine.eng_run) then
931       resultout := wf_engine.eng_null;
932       return;
933   end if;
934   l_default_mode:=wf_engine.GetItemAttrText ( itemtype => itemtype,
935                                           itemkey  => itemkey,
936                                           aname    => 'DEFAULT_MODE');
937   if(upper(l_default_mode)='APPROVE') then
938     resultout := wf_engine.eng_completed || ':' || 'APPROVED';
939   else
940     resultout := wf_engine.eng_completed || ':' || 'REJECTED';
941   end if;
942 
943 end;
944 
945 procedure UPDATE_STATUS(  itemtype        in  varchar2,
946   itemkey         in  varchar2,
947   actid           in number,
948   funcmode        in  varchar2,
949   resultout          out NOCOPY varchar2    ) is
950 
951   l_asl_id number;
952 begin
953   if (funcmode <> wf_engine.eng_run) then
954       resultout := wf_engine.eng_null;
955       return;
956   end if;
957 
958   l_asl_id:=wf_engine.GetItemAttrNumber ( itemtype => itemtype,
959                                           itemkey  => itemkey,
960                                           aname    => 'ASL_ID');
961 
962   update POS_MFG_CAPACITY_TEMP
963      set status='REJ'
964    where asl_id=l_asl_id
965          and status in ('NEW', 'OLD', 'DEL', 'MOD');
966 
967   update POS_CAPACITY_TOLERANCE_TEMP
968      set status='REJ'
969    where asl_id=l_asl_id
970          and status='NEW';
971 
972 end;
973 
974 procedure BUYER_SAME_AS_PLANNER(  itemtype        in  varchar2,
975   itemkey         in  varchar2,
976   actid           in number,
977   funcmode        in  varchar2,
978   resultout          out NOCOPY varchar2    ) is
979 
980   l_buyer_name varchar2(100);
981   l_planner_name varchar2(100);
982 begin
983   if (funcmode <> wf_engine.eng_run) then
984       resultout := wf_engine.eng_null;
985       return;
986   end if;
987   l_buyer_name:=wf_engine.GetItemAttrText ( itemtype => itemtype,
988                                           itemkey  => itemkey,
989                                           aname    => 'BUYER_NAME');
990   l_planner_name:=wf_engine.GetItemAttrText ( itemtype => itemtype,
991                                           itemkey  => itemkey,
992                                           aname    => 'PLANNER_NAME');
993 
994   if(l_planner_name is not null) then
995     if(l_planner_name=l_buyer_name) then
996       resultout := wf_engine.eng_completed || ':' || 'Y';
997     else
998       resultout := wf_engine.eng_completed || ':' || 'N';
999     end if;
1000   else
1001     resultout := wf_engine.eng_completed || ':' || 'Y';
1002   end if;
1003 end;
1004 
1005 
1006 PROCEDURE GENERATE_CAP_APP_NOTIF(document_id in  varchar2,
1007 			    display_type   in      varchar2,
1008 			    document in OUT NOCOPY varchar2,
1009 			    document_type  in OUT NOCOPY  varchar2)
1010 IS
1011 
1012 NL              VARCHAR2(1) := fnd_global.newline;
1013 l_document      VARCHAR2(32000) := '';
1014 
1015 x_old_capacity_tolerance varchar2(32000);
1016 x_new_capacity_tolerance varchar2(32000);
1017 x_new_mfg_capacity_table varchar2(32000);
1018 x_old_mfg_capacity_table varchar2(32000);
1019 
1020 
1021 l_item_type varchar2(300) := '';
1022 l_item_key WF_ITEM_ATTRIBUTE_VALUES.ITEM_KEY%TYPE := '';
1023 
1024 l_base_href       VARCHAR(2000) := fnd_profile.value('APPS_FRAMEWORK_AGENT');
1025 
1026 BEGIN
1027 
1028  l_item_type := substr(document_id, 1, instr(document_id, ':') - 1);
1029  l_item_key := substr(document_id, instr(document_id, ':') + 1, length(document_id) - 2);
1030 
1031 l_document := l_document || '<LINK REL=STYLESHEET HREF="' || l_base_href || '/OA_HTML/PORSTYL2.css" TYPE=text/css>' || NL;
1032 
1033 generate_header(l_document,l_item_type,l_item_key);
1034 
1035 
1036   x_old_capacity_tolerance := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1037                                   itemkey  => l_item_key,
1038                                   aname    => 'OLD_CAPACITY_TOLERANCE_TABLE');
1039 
1040   x_new_capacity_tolerance := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1041                                   itemkey  => l_item_key,
1042                                   aname    => 'NEW_CAPACITY_TOLERANCE_TABLE');
1043 
1044   x_new_mfg_capacity_table := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1045                                   itemkey  => l_item_key,
1046                                   aname    => 'NEW_MFG_CAPACITY_TABLE');
1047 
1048   x_old_mfg_capacity_table := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1049                                   itemkey  => l_item_key,
1050                                   aname    => 'OLD_MFG_CAPACITY_TABLE');
1051 
1052 
1053 
1054 
1055 l_document := l_document || '<font size=3 color=#336699 face=arial><b>' || fnd_message.get_string('POS','POS_MANUF_CAPACITY') || '</B></font><HR> ' || NL;
1056 l_document := l_document || '<table width=100% cellpadding=2 cellspacing=1>' || NL;
1057 l_document := l_document || '<tr>' || NL;
1058 l_document := l_document || '<TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_PREVIOUS_VALUES') || '</TH>' || NL;
1059 
1060 l_document := l_document || '<TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_REQUESTED_UPDATES') || '</TH>' || NL;
1061 l_document := l_document || '</tr>' || NL;
1062 l_document := l_document || '<tr><td valign=top>' || X_OLD_MFG_CAPACITY_TABLE || '</td><td valign=top>' || X_NEW_MFG_CAPACITY_TABLE || '</td>' || NL;
1063 l_document := l_document || '</tr> ' || NL;
1064 l_document := l_document || '</table>' || NL;
1065 
1066 l_document := l_document || '<br>' || NL;
1067 
1068 l_document := l_document || '<font size=3 color=#336699 face=arial><b>' || fnd_message.get_string('POS','POS_CAPACITY_TOLERANCE') || '</B></font><HR> ' || NL;
1069 l_document := l_document || '<table width=100% cellpadding=2 cellspacing=1>' || NL;
1070 l_document := l_document || '<tr>' || NL;
1071 l_document := l_document || '<TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_PREVIOUS_VALUES') || '</TH>' || NL;
1072 
1073 l_document := l_document || '<TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_REQUESTED_UPDATES') || '</TH>' || NL;
1074 l_document := l_document || '</tr>' || NL;
1075 l_document := l_document || '<tr><td valign=top>' || X_OLD_CAPACITY_TOLERANCE|| '</td><td valign=top>' || X_NEW_CAPACITY_TOLERANCE || '</td>' || NL;
1076 l_document := l_document || '</tr> ' || NL;
1077 l_document := l_document || '</table>' || NL;
1078 
1079 l_document := l_document || '</td> </tr> </table>' || NL;
1080 
1081 
1082 document := l_document;
1083 
1084 EXCEPTION
1085   WHEN OTHERS  THEN
1086 	NULL;
1087 END;
1088 
1089 
1090 procedure generate_header(document in out nocopy varchar2,
1091 			          itemtype in varchar2,
1092 				  itemkey in varchar2)
1093  is
1094 
1095 NL              VARCHAR2(1) := fnd_global.newline;
1096 l_document      VARCHAR2(32000) := '';
1097 
1098 x_supp_item varchar2(25);
1099 x_item_num varchar2(25);
1100 x_item_desc varchar2(240);
1101 x_uom varchar2(25);
1102 
1103 begin
1104 
1105   x_item_desc :=  wf_engine.GetItemAttrText ( itemtype => itemtype,
1106                                   itemkey  => itemkey,
1107                                   aname    => 'ITEM_DESCRIPTION');
1108 
1109   x_item_num :=   wf_engine.GetItemAttrText ( itemtype => itemtype,
1110                                   itemkey  => itemkey,
1111                                   aname    => 'ITEM_NUM');
1112 
1113   x_supp_item :=  wf_engine.GetItemAttrText ( itemtype => itemtype,
1114                                   itemkey  => itemkey,
1115                                   aname    => 'SUPPLIER_ITEM');
1116 
1117   x_uom := wf_engine.GetItemAttrText ( itemtype => itemtype,
1118                                   itemkey  => itemkey,
1119                                   aname    => 'PURCHASING_UOM');
1120 
1121 
1122 l_document := l_document || '<font size=3 color=#336699 face=arial><b>'||fnd_message.get_string('POS','POS_ASN_NOTIF_DETAILS') ||  '</B></font><HR>' || NL;
1123 
1124 l_document := l_document || '<table width=100%><tr><td width=2>' || ' ' || '</td><td>' || NL;
1125 
1126 l_document := l_document || '<table  cellpadding=2 cellspacing=1> ' || NL;
1127 
1128 l_document := l_document || '<tr ><td nowrap align=right><font color=black><B>' || fnd_message.get_string('POS','POS_SUPPLIER_ITEM_NUM') || '</B></font></td><td width=2> '|| ' ' || ' </td><td>' || x_supp_item || '</td> </tr>' || NL;
1129 
1130 l_document := l_document || '<tr ><td nowrap align=right><font color=black><B>' || fnd_message.get_string('POS','POS_ASN_NOTIF_ITEM') || '</B></font></td><td width=2> ' || ' ' || '</td><td>' || x_item_num || '</td> </tr>' || NL;
1131 
1132 l_document := l_document || '<tr ><td nowrap align=right><font color=black><B>' || fnd_message.get_string('POS','POS_ASN_NOTIF_ITEM_DESC') || '</B></font></td><td width=2>' || ' ' || ' </td><td>' || x_item_desc || '</td> </tr>' || NL;
1133 
1134 l_document := l_document || '<tr ><td nowrap align=right><font color=black><B>' || fnd_message.get_string('POS','POS_ASN_NOTIF_UOM') || '</B></font></td><td width=2>' || ' ' || '</td><td>' || x_uom || '</td> </tr>' || NL;
1135 
1136 
1137 l_document := l_document || '</table>' || NL;
1138 
1139 document := l_document;
1140 
1141 exception
1142 when others then
1143   null;
1144 end;
1145 
1146 
1147 PROCEDURE GENERATE_SUPPL_CAP_NOTIF_APPR(document_id in  varchar2,
1148 			    display_type   in      varchar2,
1149 			    document in OUT NOCOPY varchar2,
1150 			    document_type  in OUT NOCOPY  varchar2)
1151 IS
1152 
1153 NL              VARCHAR2(1) := fnd_global.newline;
1154 l_document      VARCHAR2(32000) := '';
1155 
1156 x_new_capacity_tolerance_table varchar2(32000) := '';
1157 x_new_mfg_capacity_table varchar2(32000) := '';
1158 
1159 l_item_type varchar2(300) := '';
1160 l_item_key WF_ITEM_ATTRIBUTE_VALUES.ITEM_KEY%TYPE := '';
1161 
1162 l_base_url       VARCHAR(2000) := '';
1163 
1164 BEGIN
1165 
1166 
1167  l_item_type := substr(document_id, 1, instr(document_id, ':') - 1);
1168  l_item_key := substr(document_id, instr(document_id, ':') + 1, length(document_id) - 2);
1169 
1170 
1171 l_base_url := POS_URL_PKG.get_external_url;
1172 
1173 
1174 l_document := l_document || '<LINK REL=STYLESHEET HREF="' || l_base_url || '/OA_HTML/PORSTYL2.css" TYPE=text/css>' || NL;
1175 
1176 generate_header(l_document,l_item_type,l_item_key);
1177 
1178 x_new_mfg_capacity_table := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1179                                   itemkey  => l_item_key,
1180                                   aname    => 'NEW_MFG_CAPACITY_TABLE');
1181 
1182 x_new_capacity_tolerance_table := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1183                                   itemkey  => l_item_key,
1184                                   aname    => 'NEW_CAPACITY_TOLERANCE_TABLE');
1185 
1186 
1187 l_document := l_document || '<font size=3 color=#336699 face=arial><b>' || fnd_message.get_string('POS','POS_MANUF_CAPACITY') || '</B></font><HR> ' || fnd_message.get_string('POS','POS_ORD_MOD_APPROVED') || NL;
1188 
1189 l_document := l_document || '<table width=100% cellpadding=2 cellspacing=1>' || NL;
1190 l_document := l_document || '<tr> <TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_VALUES') || '</TH></tr>' || NL;
1191 
1192 l_document := l_document || '<tr><td>' || X_NEW_MFG_CAPACITY_TABLE || '</td></tr></table>' || NL;
1193 
1194 l_document := l_document || '<br>' || NL;
1195 
1196 l_document := l_document || '<font size=3 color=#336699 face=arial><b>' || fnd_message.get_string('POS','POS_CAPACITY_TOLERANCE') || '</b></font><HR> ' || NL;
1197 
1198 l_document := l_document || '<table width=100% cellpadding=2 cellspacing=1>' || NL;
1199 l_document := l_document || '<tr> <TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_VALUES') || '</TH></tr>' || NL;
1200 
1201 l_document := l_document || '<tr><td>' || X_NEW_CAPACITY_TOLERANCE_TABLE || '</td></tr></table>' || NL;
1202 
1203 
1204 l_document := l_document || '</td></tr></table>'|| NL;
1205 
1206 document := l_document;
1207 
1208 
1209 EXCEPTION
1210 WHEN OTHERS THEN
1211  NULL;
1212 END;
1213 
1214 
1215 PROCEDURE GENERATE_SUPPL_CAP_NOTIF_REJ(document_id in  varchar2,
1216 			    display_type   in      varchar2,
1217 			    document in OUT NOCOPY varchar2,
1218 			    document_type  in OUT NOCOPY  varchar2)
1219 IS
1220 
1221 NL              VARCHAR2(1) := fnd_global.newline;
1222 l_document      VARCHAR2(32000) := '';
1223 
1224 x_new_capacity_tolerance_table varchar2(32000) := '';
1225 x_new_mfg_capacity_table varchar2(32000) := '';
1226 
1227 l_item_type varchar2(300) := '';
1228 l_item_key WF_ITEM_ATTRIBUTE_VALUES.ITEM_KEY%TYPE := '';
1229 
1230 l_base_url       VARCHAR(2000) := '';
1231 
1232 BEGIN
1233 
1234 
1235 l_base_url := POS_URL_PKG.get_external_url;
1236 
1237 
1238  l_item_type := substr(document_id, 1, instr(document_id, ':') - 1);
1239  l_item_key := substr(document_id, instr(document_id, ':') + 1, length(document_id) - 2);
1240 
1241 l_document := l_document || '<LINK REL=STYLESHEET HREF="' || l_base_url || '/OA_HTML/PORSTYL2.css" TYPE=text/css>' || NL;
1242 
1243 generate_header(l_document,l_item_type,l_item_key);
1244 
1245 x_new_mfg_capacity_table := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1246                                   itemkey  => l_item_key,
1247                                   aname    => 'NEW_MFG_CAPACITY_TABLE');
1248 
1249 x_new_capacity_tolerance_table := wf_engine.GetItemAttrText ( itemtype => l_item_type,
1250                                   itemkey  => l_item_key,
1251                                   aname    => 'NEW_CAPACITY_TOLERANCE_TABLE');
1252 
1253 
1254 l_document := l_document || '<font size=3 color=#336699 face=arial><b>' || fnd_message.get_string('POS','POS_MANUF_CAPACITY') || '</B></font><HR> ' || fnd_message.get_string('POS','POS_ORD_MOD_REJECTED') || NL;
1255 
1256 l_document := l_document || '<table width=100% cellpadding=2 cellspacing=1>' || NL;
1257 l_document := l_document || '<tr> <TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_VALUES') || '</TH></tr>' || NL;
1258 
1259 l_document := l_document || '<tr><td>' || X_NEW_MFG_CAPACITY_TABLE || '</td></tr></table>' || NL;
1260 
1261 l_document := l_document || '<br>' || NL;
1262 
1263 l_document := l_document || '<font size=3 color=#336699 face=arial><b>' || fnd_message.get_string('POS','POS_CAPACITY_TOLERANCE') || '</b></font><HR> ' || NL;
1264 
1265 l_document := l_document || '<table width=100% cellpadding=2 cellspacing=1>' || NL;
1266 l_document := l_document || '<tr> <TH align=left><font color=#336699>' || fnd_message.get_string('POS','POS_VALUES') || '</TH></tr>' || NL;
1267 
1268 l_document := l_document || '<tr><td>' || X_NEW_CAPACITY_TOLERANCE_TABLE || '</td></tr></table>' || NL;
1269 
1270 
1271 l_document := l_document || '</td></tr></table>'|| NL;
1272 
1273 document := l_document;
1274 
1275 
1276 EXCEPTION
1277 WHEN OTHERS THEN
1278  NULL;
1279 END;
1280 
1281 END POS_UPDATE_CAPACITY_PKG;
1282