DBA Data[Home] [Help]

PACKAGE BODY: APPS.ICX_REQ_CUSTOM

Source


1 package body icx_req_custom as
2 /* $Header: ICXRQCUB.pls 115.1 99/07/17 03:23:09 porting ship $ */
3 
4 
5 /*  The comments given below are simply my quick hints for writting user
6     defaults and validation.  The sql once written should be VALIDATED and
7     TUNED!!!  Remeber any overhead you add will result in slower performance.
8     Try to keep the defaulting to the defaulting routines, and the validation
9     to the validation routines.  These routines give you a lot of power over
10     the system, use it wisely........
11 
12 
13 	Thanks,
14 	   KW
15 
16 */
17 
18 
19 /****************************************************************************/
20 /*************************   CART TABLES ************************************/
21 /****************************************************************************
22 
23 
24 
25 	ICX_SHOPPING_CARTS  -- Header info for the Requisition
26 
27  CART_ID                         NOT NULL NUMBER
28  LAST_UPDATE_DATE                NOT NULL DATE
29  LAST_UPDATED_BY                 NOT NULL NUMBER
30  CREATION_DATE                   NOT NULL DATE
31  CREATED_BY                               NUMBER
32  SHOPPER_ID                      NOT NULL NUMBER
33  SAVED_FLAG                      NOT NULL NUMBER
34  APPROVER_ID                              NUMBER
35  APPROVER_NAME                            VARCHAR2(240)
36  NOTE_TO_APPROVER                         VARCHAR2(240)
37  REQ_NUMBER_SEGMENT1                      VARCHAR2(30)
38  HEADER_DESCRIPTION                       VARCHAR2(240)
39  HEADER_ATTRIBUTE_CATEGORY                VARCHAR2(30)
40  HEADER_ATTRIBUTE1                        VARCHAR2(150)
41  HEADER_ATTRIBUTE2                        VARCHAR2(150)
42  HEADER_ATTRIBUTE3                        VARCHAR2(150)
43  HEADER_ATTRIBUTE4                        VARCHAR2(150)
44  HEADER_ATTRIBUTE5                        VARCHAR2(150)
45  HEADER_ATTRIBUTE6                        VARCHAR2(150)
46  HEADER_ATTRIBUTE7                        VARCHAR2(150)
47  HEADER_ATTRIBUTE8                        VARCHAR2(150)
48  HEADER_ATTRIBUTE9                        VARCHAR2(150)
49  HEADER_ATTRIBUTE10                       VARCHAR2(150)
50  HEADER_ATTRIBUTE11                       VARCHAR2(150)
51  HEADER_ATTRIBUTE12                       VARCHAR2(150)
52  HEADER_ATTRIBUTE13                       VARCHAR2(150)
53  HEADER_ATTRIBUTE14                       VARCHAR2(150)
54  HEADER_ATTRIBUTE15                       VARCHAR2(150)
55  NOTE_TO_BUYER                            VARCHAR2(240)
56  RESERVED_PO_NUM                          VARCHAR2(220)
57  DESTINATION_TYPE_CODE                    VARCHAR2(25)
58  DESTINATION_ORGANIZATION_ID              NUMBER
59  DELIVER_TO_LOCATION_ID                   NUMBER
60  DELIVER_TO_REQUESTOR_ID                  NUMBER
61  NEED_BY_DATE                             DATE
62  ORG_ID                                   NUMBER
63  DELIVER_TO_LOCATION                      VARCHAR2(20)
64  DELIVER_TO_REQUESTOR                     VARCHAR2(240)
65  EMERGENCY_FLAG                           VARCHAR2(1)
66 
67 
68 	ICX_SHOPPING_CART_LINES  --Line level information for the Requisition
69 
70  CART_LINE_ID                    NOT NULL NUMBER
71  LAST_UPDATE_DATE                NOT NULL DATE
72  LAST_UPDATED_BY                 NOT NULL NUMBER
73  CREATION_DATE                   NOT NULL DATE
74  CREATED_BY                      NOT NULL NUMBER
75  LAST_UPDATE_LOGIN                        NUMBER
76  CART_ID                         NOT NULL NUMBER
77  LINE_ID                                  VARCHAR2(80)
78  ITEM_DESCRIPTION                         VARCHAR2(240)
79  QUANTITY                                 NUMBER
80  UNIT_PRICE                               NUMBER
81  ITEM_ID                                  NUMBER
82  ITEM_REVISION                            VARCHAR2(3)
83  CATEGORY_ID                              NUMBER
84  UNIT_OF_MEASURE                          VARCHAR2(25)
85  LINE_TYPE_ID                             NUMBER
86  EXPENDITURE_TYPE                         VARCHAR2(30)
87  DESTINATION_ORGANIZATION_ID              NUMBER
88  DELIVER_TO_LOCATION_ID                   NUMBER
89  SUGGESTED_BUYER_ID                       NUMBER
90  SUGGESTED_VENDOR_NAME                    VARCHAR2(80)
91  SUGGESTED_VENDOR_SITE                    VARCHAR2(15)
92  LINE_ATTRIBUTE_CATEGORY                  VARCHAR2(30)
93  LINE_ATTRIBUTE1                          VARCHAR2(150)
94  LINE_ATTRIBUTE2                          VARCHAR2(150)
95  LINE_ATTRIBUTE3                          VARCHAR2(150)
96  LINE_ATTRIBUTE4                          VARCHAR2(150)
97  LINE_ATTRIBUTE5                          VARCHAR2(150)
98  LINE_ATTRIBUTE6                          VARCHAR2(150)
99  LINE_ATTRIBUTE7                          VARCHAR2(150)
100  LINE_ATTRIBUTE8                          VARCHAR2(150)
101  LINE_ATTRIBUTE9                          VARCHAR2(150)
102  LINE_ATTRIBUTE10                         VARCHAR2(150)
103  LINE_ATTRIBUTE11                         VARCHAR2(150)
104  LINE_ATTRIBUTE12                         VARCHAR2(150)
105  LINE_ATTRIBUTE13                         VARCHAR2(150)
106  LINE_ATTRIBUTE14                         VARCHAR2(150)
107  LINE_ATTRIBUTE15                         VARCHAR2(150)
108  NEED_BY_DATE                             DATE
109  AUTOSOURCE_DOC_HEADER_ID                 NUMBER
110  AUTOSOURCE_DOC_LINE_NUM                  NUMBER
111  PROJECT_ID                               NUMBER
112  TASK_ID                                  NUMBER
113  EXPENDITURE_ITEM_DATE                    DATE
114  SUGGESTED_VENDOR_CONTACT                 VARCHAR2(80)
115  SUGGESTED_VENDOR_PHONE                   VARCHAR2(20)
116  SUGGESTED_VENDOR_ITEM_NUM                VARCHAR2(25)
117  EXPENDITURE_ORGANIZATION_ID              NUMBER
118  SUPPLIER_ITEM_NUM                        VARCHAR2(25)
119  ORG_ID                                   NUMBER
120  EXPRESS_NAME                             VARCHAR2(25)
121  ITEM_NUMBER                              VARCHAR2(40)
122  DELIVER_TO_LOCATION                      VARCHAR2(20)
123  CUSTOM_DEFAULTED                         CHAR(1)
124  CART_LINE_NUMBER                NOT NULL NUMBER
125 
126 
127 	ICX_CART_DISTRIBUTIONS   -- Account information turned on at the
128 				 -- Header level
129 
130  CART_ID                         NOT NULL NUMBER
131  DISTRIBUTION_ID                 NOT NULL NUMBER
132  LAST_UPDATED_BY                 NOT NULL NUMBER
133  LAST_UPDATE_DATE                NOT NULL DATE
134  LAST_UPDATE_LOGIN               NOT NULL NUMBER
135  CREATION_DATE                   NOT NULL DATE
136  CREATED_BY                      NOT NULL NUMBER
137  CHARGE_ACCOUNT_SEGMENT1                  VARCHAR2(240)
138  CHARGE_ACCOUNT_SEGMENT2                  VARCHAR2(25)
139  CHARGE_ACCOUNT_SEGMENT3                  VARCHAR2(25)
140  CHARGE_ACCOUNT_SEGMENT4                  VARCHAR2(25)
141  CHARGE_ACCOUNT_SEGMENT5                  VARCHAR2(25)
142  CHARGE_ACCOUNT_SEGMENT6                  VARCHAR2(25)
143  CHARGE_ACCOUNT_SEGMENT7                  VARCHAR2(25)
144  CHARGE_ACCOUNT_SEGMENT8                  VARCHAR2(25)
145  CHARGE_ACCOUNT_SEGMENT9                  VARCHAR2(25)
146  CHARGE_ACCOUNT_SEGMENT10                 VARCHAR2(25)
147  CHARGE_ACCOUNT_SEGMENT11                 VARCHAR2(25)
148  CHARGE_ACCOUNT_SEGMENT12                 VARCHAR2(25)
149  CHARGE_ACCOUNT_SEGMENT13                 VARCHAR2(25)
150  CHARGE_ACCOUNT_SEGMENT14                 VARCHAR2(25)
151  CHARGE_ACCOUNT_SEGMENT15                 VARCHAR2(25)
152  CHARGE_ACCOUNT_SEGMENT16                 VARCHAR2(25)
153  CHARGE_ACCOUNT_SEGMENT17                 VARCHAR2(25)
154  CHARGE_ACCOUNT_SEGMENT18                 VARCHAR2(25)
155  CHARGE_ACCOUNT_SEGMENT19                 VARCHAR2(25)
156  CHARGE_ACCOUNT_SEGMENT20                 VARCHAR2(25)
157  CHARGE_ACCOUNT_SEGMENT21                 VARCHAR2(25)
158  CHARGE_ACCOUNT_SEGMENT22                 VARCHAR2(25)
159  CHARGE_ACCOUNT_SEGMENT23                 VARCHAR2(25)
160  CHARGE_ACCOUNT_SEGMENT24                 VARCHAR2(25)
161  CHARGE_ACCOUNT_SEGMENT25                 VARCHAR2(25)
162  CHARGE_ACCOUNT_SEGMENT26                 VARCHAR2(25)
163  CHARGE_ACCOUNT_SEGMENT27                 VARCHAR2(25)
164  CHARGE_ACCOUNT_SEGMENT28                 VARCHAR2(25)
165  CHARGE_ACCOUNT_SEGMENT29                 VARCHAR2(25)
166  CHARGE_ACCOUNT_SEGMENT30                 VARCHAR2(25)
167  ORG_ID                                   NUMBER
168 
169 	ICX_CART_LINE_DISTRIBUTIONS -- Account information turned on at the
170 				    -- Line level
171 
172  CART_LINE_ID                    NOT NULL NUMBER
173  DISTRIBUTION_ID                 NOT NULL NUMBER
174  LAST_UPDATED_BY                 NOT NULL NUMBER
175  LAST_UPDATE_DATE                NOT NULL DATE
176  LAST_UPDATE_LOGIN               NOT NULL NUMBER
177  CREATION_DATE                   NOT NULL DATE
178  CREATED_BY                      NOT NULL NUMBER
179  CHARGE_ACCOUNT_ID                        NUMBER
180  CHARGE_ACCOUNT_SEGMENT1                  VARCHAR2(240)
181  CHARGE_ACCOUNT_SEGMENT2                  VARCHAR2(25)
182  CHARGE_ACCOUNT_SEGMENT3                  VARCHAR2(25)
183  CHARGE_ACCOUNT_SEGMENT4                  VARCHAR2(25)
184  CHARGE_ACCOUNT_SEGMENT5                  VARCHAR2(25)
185  CHARGE_ACCOUNT_SEGMENT6                  VARCHAR2(25)
186  CHARGE_ACCOUNT_SEGMENT7                  VARCHAR2(25)
187  CHARGE_ACCOUNT_SEGMENT8                  VARCHAR2(25)
188  CHARGE_ACCOUNT_SEGMENT9                  VARCHAR2(25)
189  CHARGE_ACCOUNT_SEGMENT10                 VARCHAR2(25)
190  CHARGE_ACCOUNT_SEGMENT11                 VARCHAR2(25)
191  CHARGE_ACCOUNT_SEGMENT12                 VARCHAR2(25)
192  CHARGE_ACCOUNT_SEGMENT13                 VARCHAR2(25)
193  CHARGE_ACCOUNT_SEGMENT14                 VARCHAR2(25)
194  CHARGE_ACCOUNT_SEGMENT15                 VARCHAR2(25)
195  CHARGE_ACCOUNT_SEGMENT16                 VARCHAR2(25)
196  CHARGE_ACCOUNT_SEGMENT17                 VARCHAR2(25)
197  CHARGE_ACCOUNT_SEGMENT18                 VARCHAR2(25)
198  CHARGE_ACCOUNT_SEGMENT19                 VARCHAR2(25)
199  CHARGE_ACCOUNT_SEGMENT20                 VARCHAR2(25)
200  CHARGE_ACCOUNT_SEGMENT21                 VARCHAR2(25)
201  CHARGE_ACCOUNT_SEGMENT22                 VARCHAR2(25)
202  CHARGE_ACCOUNT_SEGMENT23                 VARCHAR2(25)
203  CHARGE_ACCOUNT_SEGMENT24                 VARCHAR2(25)
204  CHARGE_ACCOUNT_SEGMENT25                 VARCHAR2(25)
205  CHARGE_ACCOUNT_SEGMENT26                 VARCHAR2(25)
206  CHARGE_ACCOUNT_SEGMENT27                 VARCHAR2(25)
207  CHARGE_ACCOUNT_SEGMENT28                 VARCHAR2(25)
208  CHARGE_ACCOUNT_SEGMENT29                 VARCHAR2(25)
209  CHARGE_ACCOUNT_SEGMENT30                 VARCHAR2(25)
210  DIST_ATTRIBUTE_CATEGORY                  VARCHAR2(30)
211  DISTRIBUTION_ATTRIBUTE1                  VARCHAR2(150)
212  DISTRIBUTION_ATTRIBUTE2                  VARCHAR2(150)
213  DISTRIBUTION_ATTRIBUTE3                  VARCHAR2(150)
214  DISTRIBUTION_ATTRIBUTE4                  VARCHAR2(150)
215  DISTRIBUTION_ATTRIBUTE5                  VARCHAR2(150)
216  DISTRIBUTION_ATTRIBUTE6                  VARCHAR2(150)
217  DISTRIBUTION_ATTRIBUTE7                  VARCHAR2(150)
218  DISTRIBUTION_ATTRIBUTE8                  VARCHAR2(150)
219  DISTRIBUTION_ATTRIBUTE9                  VARCHAR2(150)
220  DISTRIBUTION_ATTRIBUTE10                 VARCHAR2(150)
221  DISTRIBUTION_ATTRIBUTE11                 VARCHAR2(150)
222  DISTRIBUTION_ATTRIBUTE12                 VARCHAR2(150)
223  DISTRIBUTION_ATTRIBUTE13                 VARCHAR2(150)
224  DISTRIBUTION_ATTRIBUTE14                 VARCHAR2(150)
225  DISTRIBUTION_ATTRIBUTE15                 VARCHAR2(150)
226  ACCRUAL_ACCOUNT_ID                       NUMBER
227  VARIANCE_ACCOUNT_ID                      NUMBER
228  BUDGET_ACCOUNT_ID                        NUMBER
229  ORG_ID                                   NUMBER
230  CART_ID                         NOT NULL NUMBER
231 
232 
233 
234 */
235 
236 
237 -------------------------------------------------------------------------
238   procedure add_user_error(v_cart_id number, error_message varchar2) is
239 -------------------------------------------------------------------------
240 
241 
242 begin
243 	icx_util.add_error(error_message);
244 	ICX_REQ_SUBMIT.storeerror(v_cart_id, error_message);
245 
246 end;
247 
248 
249 
250 
251 -------------------------------------------------------------------------
252   procedure cart_custom_build_req_account(v_cart_line_id  IN NUMBER,
253 				     V_ACCOUNT_NUM 	OUT VARCHAR2,
254 				     V_ACCOUNT_ID	OUT NUMBER,
255 				     RETURN_CODE        OUT VARCHAR2) IS
256 -------------------------------------------------------------------------
257 
258 
259 /*	The following is a cursor you can use to get the infomation
260 	available about the requisition line
261 
262 
263 	CURSOR get_info is
264 	SELECT isc.ANY_COLUMN_OF_ICX_SHOPPING_CARTS
265 	       iscl.ANY_COLUMN_OF_ICX_SHOPPING_CART_LINES
266 	       iscd.ANY_COLUMN_OF_ICX_CART_DISTRIBUTIONS
267 	       iscld.ANY_COLUMN_OF_ICX_CART_LINE_DISTRIBUTIONS
268 	       hecv.default_code_combination_id employee_default_account_id,
269                hecv.organization_id employee_org_id,
270                hecv.business_group_id employee_bus_group_id,
271 	       fsp.org_id po_org_id,
272 	       fsp.set_of_books_id,
273 	       msi.expense_account
274 	FROM   financials_system_parameters fsp,
275                hr_employees_current_v hecv,
276                mtl_system_items msi,
277 	       icx_cart_distributions iscd,
278 	       icx_cart_line_distributions iscld,
279                icx_shopping_carts isc,
280                icx_shopping_cart_lines iscl
281 	WHERE  isc.cart_id = iscl.cart_id
282 	AND    iscl.cart_line_id = v_cart_line_id
283 	AND    iscd.cart_id = iscl.cart_id
284 	AND    iscld.cart_line_id = v_cart_line_id
285 	AND    msi.INVENTORY_ITEM_ID (+) = iscl.ITEM_ID
286 	AND    nvl(msi.ORGANIZATION_ID, isc.DESTINATION_ORG_ID) = isc.DESTINATION_ORG_ID
287 	AND    hecv.EMPLOYEE_ID = isc.shopper_id;
288 
289 
290 	If you decide to not use some of the above information (such as the
291 	info from ht_employees_current_v) it is faster to remove it from the
292 	join and the select.
293 
294 	You can then OPEN the cursor, FETCH the info, and figure out a
295 	ACCOUNT.  Remember to CLOSE the CURSOR.
296 
297 	You can add any table join to the above or do your own SQL to build the
298 	account
299 
300 */
301 
302 
303 
304 
305   BEGIN
306         -- PLACE CUSTOM CODE HERE!!!!!
307 
308         -- generate new charge account id
309 
310         V_ACCOUNT_NUM := NULL;
311         V_ACCOUNT_ID := NULL;
312 	RETURN_CODE := null;
313 
314   END;
315 
316 
317 
318 -------------------------------------------------------------------------
319   procedure cart_custom_build_req_account2(v_cart_line_id IN NUMBER,
320                                    VARIANCE_ACCOUNT_ID         OUT NUMBER,
321                                    BUDGET_ACCOUNT_ID   OUT NUMBER,
322                                    ACCRUAL_ACCOUNT_ID  OUT NUMBER,
323                                    RETURN_CODE  OUT VARCHAR2) is
324 -------------------------------------------------------------------------
325 
326 /*  To get at the information you need you can use the following cursor
327 
328 	CURSOR get_info is
329 	SELECT isc.ANY_COLUMN_YOU_WANT_FROM_ICX_SHOPPING_CARTS
330 	       iscl.ANY_COLUMN_OF_ICX_SHOPPING_CART_LINES
331 	       iscd.ANY_COLUMN_OF_ICX_CART_DISTRIBUTIONS
332 	       iscld.ANY_COLUMN_OF_ICX_CART_LINE_DISTRIBUTIONS
333 	FROM   icx_cart_distributions iscd,
334 	       icx_cart_line_distributions iscd,
335 	       icx_shopping_cart_lines iscl,
336 	       icx_shopping_carts isc
337 	WHERE  isc.cart_id = iscl.cart_id
338 	AND    isc.cart_id = iscd.cart_id
339 	AND    iscl.cart_line_id = v_cart_line_id
340 	AND    iscl.cart_line_id = iscld.cart_line_id;
341 
342 
343      You can then build the correct Accounts in the same way you did above
344 */
345   BEGIN
346      VARIANCE_ACCOUNT_ID := NULL;
347      BUDGET_ACCOUNT_ID := NULL;
348      ACCRUAL_ACCOUNT_ID := NULL;
349      RETURN_CODE := NULL;
350   end;
351 
352 
353 -------------------------------------------------------------------------
354   procedure po_custom_build_req_account(EMPLOYEE_ID     IN NUMBER,
355                                      employee_default_account_id IN NUMBER,
356                                      employee_org_id    IN NUMBER,
357                                      employee_bus_group_id NUMBER,
358                                      po_org_id          IN NUMBER,
359                                      NEED_BY_DATE       IN DATE,
360                                      DESTINATION_TYPE   IN VARCHAR2,
361                                      DESTINATION_ORG_ID IN NUMBER,
362                                      SITE_ID            IN NUMBER,
363                                      set_of_books_id    IN NUMBER,
364                                      ITEM_ID            IN NUMBER,
365                                      ITEM_REVISION      IN VARCHAR2,
366                                      ITEM_DESCRIPTION   IN VARCHAR2,
367                                      item_default_account_id IN NUMBER,
368                                      UNIT_OF_MEASURE    IN VARCHAR2,
369                                      QUANTITY           IN NUMBER,
370                                      PRICE              IN NUMBER,
371                                      SUPPLIER_ITEM_NUM  IN VARCHAR2,
372                                      CATEGORY_ID        IN NUMBER,
373                                      LINE_TYPE          IN NUMBER,
374                                      SUPPLIER           IN VARCHAR2,
375                                      SUPPLIER_SITE      IN VARCHAR2,
376                                      SOURCE_DOC_NUM     IN VARCHAR2,
377                                      SOURCE_LINE_NUM    IN NUMBER,
378                                      CHARGE_ACCT_LINE_SEGMENTS IN VARCHAR2,
379                                      ACCOUNT_NUM        OUT VARCHAR2,
380                                      CHARGE_ACCOUNT_ID  OUT NUMBER,
381 				     RETURN_CODE        OUT VARCHAR2) IS
382 -------------------------------------------------------------------------
383 
384     l_new_charge_account_id NUMBER;
385     l_new_seg VARCHAR2(1000);
386     pos NUMBER;
387 
388     cursor getChargeAccount(new_seg varchar2) is
389            select code_combination_id
390            from gl_code_combinations_kfv
391            where concatenated_segments = rtrim(l_new_seg);
392 
393 
394   BEGIN
395         -- PLACE CUSTOM CODE HERE!!!!!
396 
397         -- generate new charge account id
398 
399         ACCOUNT_NUM := NULL;
400         CHARGE_ACCOUNT_ID := NULL;
401         l_new_charge_account_id := NULL;
402         l_new_seg := CHARGE_ACCT_LINE_SEGMENTS;
403 
404         if l_new_seg is NOT NULL then
405 
406            open getChargeAccount(l_new_seg);
407            fetch getChargeAccount into l_new_charge_account_id;
408            close getChargeAccount;
409 
410           -- send back the new account id
411           -- otherwise pass in the old charge account id
412           -- and pass that back out
413           if l_new_charge_account_id is not NULL then
414              CHARGE_ACCOUNT_ID := l_new_charge_account_id;
415           end if;
416 
417         end if;
418 
419 	RETURN_CODE := null;
420 
421   exception
422     when NO_DATA_FOUND then
423         CHARGE_ACCOUNT_ID := NULL;
424         ACCOUNT_NUM := NULL;
425         RETURN_CODE := NULL;
426   END;
427 
428 
429 
430 -------------------------------------------------------------------------
431   procedure po_custom_build_req_account2(EMPLOYEE_ID        IN NUMBER,
432 				   employee_default_account_id IN NUMBER,
433 				   employee_org_id    IN NUMBER,
434 				   employee_bus_group_id NUMBER,
435 				   po_org_id          IN NUMBER,
436                                    NEED_BY_DATE       IN DATE,
437                                    DESTINATION_TYPE   IN VARCHAR2,
438                                    DESTINATION_ORG_ID IN NUMBER,
439                                    SITE_ID            IN NUMBER,
440 				   set_of_books_id    IN NUMBER,
441                                    ITEM_ID            IN NUMBER,
442                                    ITEM_REVISION      IN VARCHAR2,
443 				   ITEM_DESCRIPTION   IN VARCHAR2,
444 				   item_default_account_id IN NUMBER,
445                                    UNIT_OF_MEASURE    IN VARCHAR2,
446                                    QUANTITY           IN NUMBER,
447                                    PRICE              IN NUMBER,
448                                    SUPPLIER_ITEM_NUM  IN VARCHAR2,
449                                    CATEGORY_ID        IN NUMBER,
450                                    LINE_TYPE          IN NUMBER,
451                                    SUPPLIER           IN VARCHAR2,
452                                    SUPPLIER_SITE      IN VARCHAR2,
453                                    SOURCE_DOC_NUM     IN VARCHAR2,
454                                    SOURCE_LINE_NUM    IN NUMBER,
455                                    CHARGE_ACCT_LINE_SEGMENTS IN VARCHAR2,
456                                    CHARGE_ACCOUNT_ID IN NUMBER,
457                                    ACCOUNT_NUM        OUT VARCHAR2,
458                                    VARIANCE_ACCOUNT_ID         OUT NUMBER,
459                                    BUDGET_ACCOUNT_ID   OUT NUMBER,
460                                    ACCRUAL_ACCOUNT_ID  OUT NUMBER,
461                                    RETURN_CODE  OUT VARCHAR2) is
462 -------------------------------------------------------------------------
463   BEGIN
464      ACCOUNT_NUM := NULL;
465      VARIANCE_ACCOUNT_ID := NULL;
466      BUDGET_ACCOUNT_ID := NULL;
467      ACCRUAL_ACCOUNT_ID := NULL;
468      RETURN_CODE := NULL;
469   end;
470 
471 -------------------------------------------------------------------------
472  procedure  reqs_default_lines( p_emergency IN VARCHAR2,
473 				cartId IN number) is
474 -------------------------------------------------------------------------
475 
476 /*  You can default any informaion into the lines.  Please be carefull......
477 
478     You can do this in one of two ways.  Line by line, or with set processing.
479     Line by line will allow you to do specific defaults at a line level
480     while set processing will update all the columns at the same time.  It
481     should be noted that set processing is FASTER...
482 
483     Please note that this procedure will be run ONCE per ADD.  This means that
484     if a user adds 6 different items from a Template, this procedure will only
485     be called ONCE.
486 
487     You will use the CUSTOM_DEFAULTED flag in icx_shopping_cart_lines to
488     determine which records you have already done the defaulting for.
489     When we create the record, we set CUSTUM_DEFAULTED to 'N'.  When you do
490     your defaulting, set the CUSTUM_DEFAULTED to 'Y'.  I am not going to
491     force this, its your defaulting mechanism, it is just a suggestion.
492 
493 
494     LINE BY LINE  -- Use a Cursor and loop through
495 
496 
497     CURSOR get_info is
498     SELECT isc.ANY_SHOPPING_CART_COLUMN
499 	   iscl.ANY_SHOPPING_CART_LINE_COLUMN
500 	   iscld.ANY_CART_LINE_DISTRIBUTIONS_COLUMN
501     FROM   icx_shopping_carts isc,
502 	   icx_cart_line_distributions iscld,
503 	   icx_shopping_cart_lines iscl
504     WHERE  isc.cart_id = cartId
505     AND    iscl.cart_id = cartId
506     AND    iscld.cart_line_id = iscl.cart_line_id
507     AND    isc.CUSTOM_DEFAULTED = 'N';
508 
509 
510     Then simply LOOP through the record and do any updates you want
511 
512 
513     FOR prec in get_info LOOP
514 
515     UPDATE icx_shopping_cart_lines
516     set    WHATEVER = WHATEVER,
517 	   CUSTOM_DEFAULTED = 'Y'
521     set    WHATEVER = WHATEVER
518     where  cart_line_id = CART_LINE_ID FROM YOUR CURSOR;
519 
520     UPDATE icx_cart_line_distributions
522     where  cart_line_id = CART_LINE_ID FROM YOUR CURSOR;
523 
524     end LOOP;
525 
526 
527     SET PROCESSING  -- simply update the tables
528 
529     -- do the distributions first
530     update icx_cart_line_distributions
531     set    WHATEVER = WHATEVER
532     where  cart_line_id in
533 	(SELECT cart_line_id
534 	 from   icx_shopping_cart_lines
535 	 where  cart_id = cartId
536 	 and    CUSTOM_DEFAULTED = 'N');
537 
538 
539     update icx_shopping_cart_lines
540     set  (WHATEVER, CUSTOM_DEFAULTED) =
541 	(SELECT WHATEVER, 'Y'
542 	 FROM WHEREVER)
543     where cart_id = cartId
544     and   CUSTOM_DEFAULTED = 'N';
545 
546 
547 */
548 
549  begin
550   -- Custom default code will come here
551   -- do nothing;
552   null;
553  end reqs_default_lines;
554 
555 
556 -------------------------------------------------------------------------
557  procedure  reqs_default_head( p_emergency IN VARCHAR2,
558 			       v_cart_id   IN NUMBER) is
559 
560 -------------------------------------------------------------------------
561 
562 /*   The default head is run once when the Header record is created.  This
563      occurs when the user enters the Req program.  Here you can default in
564      any values you wish.  Again BE CAREFUL......
565 
566 
567      update icx_shopping_carts
568      set    WHATEVER = WHATEVER
569      where  cart_id = v_cart_id;
570 
571      update icx_cart_distributions
572      set    WHATEVER = WHATEVER
573      where  cart_id = v_cart_id;
574 
575 
576 */
577 
578 
579  begin
580   -- Custom default code will come here
581   -- do nothing;
582   null;
583  end reqs_default_head;
584 
585 
586 -------------------------------------------------------------------------
587  procedure  reqs_validate_line(p_emergency IN VARCHAR2,
588 			       v_cart_id number) is
589 -------------------------------------------------------------------------
590 
591 /*      Validation of the line
592 
593 	Please do validation of the lines here.  Remember this routine is run
594 	ONCE for all lines.  It is run during the submit of the requisition.
595 	If an error occurs, you should put an error on the error stack.  This
596 	will stop the submission.  Please make ALL your error checks here.  IF
597  	you find an error, put it on the error stack and continue checking.
598 	Each error you report, plus any we find, will then be reproted to the
599  	user at the same time, and in the same way.
600 
601  	To add a message to the error stack use
602 	     add_user_error(v_cart_id, 'YOUR ERROR MESSAGE');
603 
604 	To get at the lines you can use line processing or set processing.
605 
606 	LINE
607 
608         CURSOR get_info is
609         SELECT isc.ANY_COLUMN_YOU_WANT_FROM_ICX_SHOPPING_CARTS
610                iscl.ANY_COLUMN_OF_ICX_SHOPPING_CART_LINES
611                iscd.ANY_COLUMN_OF_ICX_CART_DISTRIBUTIONS
612                iscld.ANY_COLUMN_OF_ICX_CART_LINE_DISTRIBUTIONS
613         FROM   icx_cart_distributions iscd,
614                icx_cart_line_distributions iscd,
615                icx_shopping_cart_lines iscl,
616                icx_shopping_carts isc
617         WHERE  isc.cart_id = iscl.cart_id
618         AND    isc.cart_id = iscd.cart_id
619         AND    iscl.cart_line_id = v_cart_line_id
620         AND    iscl.cart_line_id = iscld.cart_line_id;
621 
622 
623 
624 	SET  -- Completely depends on your logic
625 
626  	Please only do Line logic, and please TRAP ALL YOUR ERRORS!!!!!
627 
628 
629 */
630 
631  begin
632   -- Custom validation code will come here
633   -- do nothing;
634   null;
635  end reqs_validate_line;
636 
637 
638 -------------------------------------------------------------------------
639  procedure  reqs_validate_head(p_emergency IN VARCHAR2,
640 			       v_cart_id   IN NUMBER) is
641 -------------------------------------------------------------------------
642 
643 /*   You can do your own header validation here.  As in lines, you can
644      put your errors directly to our error stack.  In this way, your errors
645      look exactly like errors raise by Oracle.  If you find an error, please
646      put it on the stack and continue.  In this way, all errors will be reported
647      to the user.
648 
649      Please do only Header logic, and please TRAP ALL YOUR ERRORS!!!!!
650 
651 
652  	To add a message to the error stack use
653 	     add_user_error(v_cart_id, 'YOUR ERROR MESSAGE');
654 
655         CURSOR get_info is
656         SELECT isc.ANY_COLUMN_YOU_WANT_FROM_ICX_SHOPPING_CARTS
657                iscd.ANY_COLUMN_OF_ICX_CART_DISTRIBUTIONS
658         FROM   icx_cart_distributions iscd,
659                icx_shopping_carts isc
660         WHERE  isc.cart_id = iscd.cart_id
661         AND    isc.cart_id = v_cart_id;
662 
663 
664 */
665 
666  begin
667   -- Custom validation code will come here
668   -- do nothing;
669   null;
670  end reqs_validate_head;
671 
672 end icx_req_custom;