1 package body JA_CN_CUSTOM_SOURCES AS
2 --$Header: JACNSCSB.pls 120.8 2008/03/28 09:39:58 shyan noship $
3 --+=======================================================================+
4 --| Copyright (c) 2006 Oracle Corporation |
5 --| Redwood Shores, CA, USA |
6 --| All rights reserved. |
7 --+=======================================================================+
8 --| FILENAME |
9 --| JACNSCSB.pls |
10 --| |
11 --| DESCRIPTION |
12 --| This package is used to create customer source. |
13 --| |
14 --| PROCEDURE LIST |
15 --| |
16 --| PROCEDURE Invoice_Category PUBLIC |
17 --| |
18 --| HISTORY |
19 --| 01/08/2007 yanbo liu Created |
20 --| |
21 --+======================================================================*/
22 --==========================================================================
23 -- FUNCTION NAME:
24 -- GDF_Item Private
25 --
26 -- DESCRIPTION:
27 -- This procedure is used to return source value when the invoice source is
28 -- 'Manual Invoice Entry'. The return value is GDF in Invoice distribution
29 -- or header.The priority of distribution is over than header.
30 --
31 -- PARAMETERS:
32 -- p_invoice_id invoice id
33 -- p_invoice_distribution_id invoice distribution id
34 --
35 -- DESIGN REFERENCES:
36 -- None
37 --
38 -- CHANGE HISTORY:
39 -- 06/08/2007 yanbo liu updated
40 --===========================================================================
41 FUNCTION GDF_Item(p_invoice_id IN NUMBER,
42 p_invoice_distribution_id IN NUMBER)
43 RETURN VARCHAR2 IS
44 GDF_Item ap_invoice_distributions_all.global_attribute1%type:=null;
45 l_dbg_level NUMBER :=FND_LOG.G_Current_Runtime_Level;
46 l_proc_level NUMBER :=FND_LOG.Level_Procedure;
47 l_proc_name VARCHAR2(100) :='GDF_Item';
48
49 BEGIN
50 IF (l_proc_level >= l_dbg_level)
51 THEN
52 FND_LOG.String( l_proc_level
53 ,l_module_prefix||'.'||l_proc_name||'.begin'
54 ,'Enter procedure'
55 );
56 FND_LOG.String( l_proc_level
57 ,l_module_prefix||'.'||l_proc_name||'.parameters'
58 ,'p_invoice_id '||p_invoice_id
59 );
60
61 FND_LOG.String(l_proc_level
62 ,l_module_prefix||'.'||l_proc_name||'.parameters'
63 ,'p_invoice_distribution_id'||p_invoice_distribution_id
64 );
65
66 END IF; --(l_proc_level >= l_dbg_level)
67
68 --First get custom source value from distribution
69
70 SELECT GLOBAL_ATTRIBUTE1
71 INTO GDF_ITEM
72 FROM AP_INVOICE_DISTRIBUTIONS_ALL
73 WHERE INVOICE_DISTRIBUTION_ID=P_INVOICE_DISTRIBUTION_ID;
74
75 --IF THE VALUE IN DISTRIBUTION IS NULL,
76 --THEN GET THE VALUE FROM HEADER.
77 IF GDF_ITEM IS NULL THEN
78 SELECT GLOBAL_ATTRIBUTE1
79 INTO GDF_ITEM
80 FROM AP_INVOICES_ALL
81 WHERE INVOICE_ID=P_INVOICE_ID;
82 END IF;
83
84 RETURN GDF_ITEM;
85
86 -- RETURN nvl(GDF_ITEM,'gdf_item_0') ;
87
88 EXCEPTION
89
90 WHEN OTHERS THEN
91 IF (l_proc_level >= l_dbg_level)
92 THEN
93 FND_LOG.String( l_proc_level
94 ,l_module_prefix||'.'||l_proc_name||'.Other_Exception '
95 ,SQLCODE||':'||SQLERRM);
96 END IF; --(l_proc_level >= l_dbg_level)
97 RAISE;
98 -- return('gdf_item0');
99 END GDF_Item;
100 --==========================================================================
101 -- FUNCTION NAME:
102 -- Master_Item Public
103 --
104 -- DESCRIPTION:
105 -- This procedure is used to return source value when the invoice source is
106 -- 'ERS'.The return value is Category Set In Master Item
107 --
108 -- PARAMETERS:
109 -- p_invoice_distribution_id invoice distribution id
110 --
111 -- DESIGN REFERENCES:
112 -- None
113 --
114 -- CHANGE HISTORY:
115 -- 06/08/2007 yanbo liu updated
116 -- 09/08/2007 yanbo liu updated
117 -- 07/12/2007 xiao lv updated
118 -- get item logic change
119 --===========================================================================
120 FUNCTION MASTER_ITEM_UPDATE(P_INVOICE_ID IN NUMBER,
121 P_INVOICE_DISTRIBUTION_ID IN NUMBER)
122 RETURN VARCHAR2 IS
123 MASTER_ITEM VARCHAR(100):=null;
124 L_INVOICE_LINE_NUMBER NUMBER;
125 L_INVOICE_ID NUMBER;
126 --new variable
127 L_PO_HEADER_ID NUMBER;
128 L_PO_LINE_ID NUMBER;
129 --
130 L_DBG_LEVEL NUMBER :=FND_LOG.G_CURRENT_RUNTIME_LEVEL;
131 L_PROC_LEVEL NUMBER :=FND_LOG.LEVEL_PROCEDURE;
132 L_PROC_NAME VARCHAR2(100) :='MASTER_ITEM';
133 a EXCEPTION;
134
135
136 BEGIN
137 IF (l_proc_level >= l_dbg_level)
138 THEN
139 FND_LOG.String( l_proc_level
140 ,l_module_prefix||'.'||l_proc_name||'.begin'
141 ,'Enter procedure'
142 );
143
144 FND_LOG.String(l_proc_level
145 ,l_module_prefix||'.'||l_proc_name||'.parameters'
146 ,'p_invoice_distribution_id '||p_invoice_distribution_id
147 );
148
149 END IF; --(l_proc_level >= l_dbg_level)
150
151 -- get the invoice line number and invoice id from ap_invoice_distributions_all
152 SELECT INVOICE_LINE_NUMBER,INVOICE_ID
153 INTO L_INVOICE_LINE_NUMBER,L_INVOICE_ID
154 FROM AP_INVOICE_DISTRIBUTIONS_ALL
155 WHERE INVOICE_DISTRIBUTION_ID=P_INVOICE_DISTRIBUTION_ID ;
156
157 --get key flexfield concatenated_segments as source value
158 --CATEGORY SET NAME is 'Cash Flow Category'
159 BEGIN
160 SELECT MC.CONCATENATED_SEGMENTS
161 INTO MASTER_ITEM
162 FROM MTL_CATEGORIES_B_KFV MC
163 WHERE CATEGORY_ID IN(
164 SELECT CATEGORY_ID
165 FROM MTL_ITEM_CATEGORIES MIC
166 WHERE MIC.CATEGORY_SET_ID IN (
167 SELECT CATEGORY_SET_ID
168 FROM MTL_CATEGORY_SETS_TL MCST
169 WHERE MCST.LANGUAGE = USERENV('LANG')
170 AND MCST.CATEGORY_SET_NAME = 'Cash Flow Category')
171 AND INVENTORY_ITEM_ID IN(
172 SELECT ITEM_ID
173 FROM PO_LINES_ALL
174 WHERE PO_HEADER_ID = (
175 SELECT PO_HEADER_ID
176 FROM AP_INVOICE_LINES_ALL AP
177 WHERE AP.INVOICE_ID=L_INVOICE_ID
178 AND AP.LINE_NUMBER=L_INVOICE_LINE_NUMBER)
179 AND PO_LINE_ID = (
180 SELECT PO_LINE_ID
181 FROM AP_INVOICE_LINES_ALL AP
182 WHERE AP.INVOICE_ID=L_INVOICE_ID
183 AND AP.LINE_NUMBER=L_INVOICE_LINE_NUMBER)
184 )
185 AND ORGANIZATION_ID IN(
186 SELECT ORG_ID
187 FROM AP_INVOICE_LINES_ALL AP
188 WHERE AP.INVOICE_ID=L_INVOICE_ID
189 AND AP.LINE_NUMBER=L_INVOICE_LINE_NUMBER)
190 );
191
192 EXCEPTION
193 WHEN OTHERS THEN
194 --updated by lyb, for custom source for tax 6666473
195 IF MASTER_ITEM IS NULL
196 THEN
197 SELECT PO_HEADER_ID,
198 PO_LINE_ID
199 INTO L_PO_HEADER_ID,
200 L_PO_LINE_ID
201 FROM ap_invoice_lines_all al
202 WHERE RCV_TRANSACTION_ID = (
203 SELECT RCV_TRANSACTION_ID
204 FROM ap_invoice_lines_all ap
205 WHERE ap.invoice_id = P_INVOICE_ID
206 AND ap.LINE_NUMBER = L_INVOICE_LINE_NUMBER)
207
208 AND INVOICE_ID = P_INVOICE_ID
209 AND PO_HEADER_ID IS NOT NULL
210 AND PO_LINE_ID IS NOT NULL;
211
212 --get key flexfield concatenated_segments as source value
213 --CATEGORY SET NAME is 'Cash Flow Category'
214 SELECT MC.CONCATENATED_SEGMENTS
215 INTO MASTER_ITEM
216 FROM MTL_CATEGORIES_B_KFV MC
217 WHERE CATEGORY_ID IN(
218 SELECT CATEGORY_ID
219 FROM MTL_ITEM_CATEGORIES MIC
220 WHERE MIC.CATEGORY_SET_ID IN (
221 SELECT CATEGORY_SET_ID
222 FROM MTL_CATEGORY_SETS_TL MCST
223 WHERE MCST.LANGUAGE = USERENV('LANG')
224 AND MCST.CATEGORY_SET_NAME = 'Cash Flow Category')
225 AND INVENTORY_ITEM_ID IN(
226 SELECT ITEM_ID
227 FROM PO_LINES_ALL
228 WHERE PO_HEADER_ID = L_PO_HEADER_ID
229 AND PO_LINE_ID = L_PO_LINE_ID
230 )
231 AND ORGANIZATION_ID IN(
232 SELECT ORG_ID
233 FROM AP_INVOICE_LINES_ALL AP
234 WHERE AP.INVOICE_ID=L_INVOICE_ID
235 AND AP.LINE_NUMBER=L_INVOICE_LINE_NUMBER)
236 );
237
238
239 END IF;
240
241 IF MASTER_ITEM IS NOT NULL THEN
242 RETURN MASTER_ITEM;
243 END IF;
244
245 RAISE A;
246 END;
247 --==========================================================================
248
249 --==========================================================================
250
251 RETURN MASTER_ITEM;
252 --RETURN nvl(MASTER_ITEM,'master_item_0');
253
254 EXCEPTION
255
256 WHEN OTHERS THEN
257 IF (l_proc_level >= l_dbg_level)
258 THEN
259 FND_LOG.String( l_proc_level
260 ,l_module_prefix||'.'||l_proc_name||'.Other_Exception '
261 ,SQLCODE||':'||SQLERRM);
262 END IF; --(l_proc_level >= l_dbg_level)
263 IF MASTER_ITEM IS NULL THEN
264 MASTER_ITEM := GDF_Item(p_invoice_id,
265 p_invoice_distribution_id
266 );
267 RETURN MASTER_ITEM;
268 END IF;
269 RAISE;
270 -- return('master_item_exp');
271 END MASTER_ITEM_UPDATE;
272
273
274
275 --==========================================================================
276 -- FUNCTION NAME:
277 -- Expense_Item Public
278 --
279 -- DESCRIPTION:
280 -- This procedure is used to return source value when the invoice source is
281 -- 'Oracle Internet Expenses' or 'Payables Expense Reports'.
282 -- The return value is Expenses Item.
283 --
284 --
285 -- PARAMETERS:
286 -- invoice_distribution_id invoice distribution id
287 --
288 -- DESIGN REFERENCES:
289 -- None
290 --
291 -- CHANGE HISTORY:
292 -- 06/08/2007 yanbo liu updated
293 --===========================================================================
294 FUNCTION Expense_Item(P_INVOICE_ID IN NUMBER,
295 p_invoice_distribution_id IN NUMBER)
296 RETURN VARCHAR2 IS
297 Expense_Item_desc ap_invoice_distributions_all.description%type:=null;
298 l_dbg_level NUMBER :=FND_LOG.G_Current_Runtime_Level;
299 l_proc_level NUMBER :=FND_LOG.Level_Procedure;
300 l_proc_name VARCHAR2(100) :='Expense_Item';
301
302 BEGIN
303 IF (l_proc_level >= l_dbg_level)
304 THEN
305 FND_LOG.String( l_proc_level
306 ,l_module_prefix||'.'||l_proc_name||'.begin'
307 ,'Enter procedure'
308 );
309
310 FND_LOG.String(l_proc_level
311 ,l_module_prefix||'.'||l_proc_name||'.parameters'
312 ,'invoice_distribution_id'||p_invoice_distribution_id
313 );
314
315 END IF; --(l_proc_level >= l_dbg_level)
316
317 --get the custom value from destribution
318 SELECT description
319 INTO Expense_Item_desc
320 FROM ap_invoice_distributions_all
321 WHERE invoice_distribution_id=p_invoice_distribution_id ;
322 RETURN Expense_Item_desc;
323 --RETURN nvl(Expense_Item_desc,'expense_item_desc_0');
324 EXCEPTION
325 WHEN OTHERS THEN
326 IF (l_proc_level >= l_dbg_level)
327 THEN
328 FND_LOG.String( l_proc_level
329 ,l_module_prefix||'.'||l_proc_name||'.Other_Exception '
330 ,SQLCODE||':'||SQLERRM);
331 END IF; --(l_proc_level >= l_dbg_level)
332 IF Expense_Item_desc IS NULL THEN
333 Expense_Item_desc := GDF_Item(p_invoice_id,
334 p_invoice_distribution_id
335 );
336 RETURN Expense_Item_desc;
337 END IF;
338 RAISE;
339 -- return('expense_item0');
340 END Expense_Item;
341 --==========================================================================
342 -- FUNCTION NAME:
343 -- Master_Item Public
344 --
345 -- DESCRIPTION:
346 -- This procedure is used to return source value when the invoice source is
347 -- 'ERS'.The return value is Category Set In Master Item
348 --
349 -- PARAMETERS:
350 -- p_invoice_distribution_id invoice distribution id
351 --
352 -- DESIGN REFERENCES:
353 -- None
354 --
355 -- CHANGE HISTORY:
356 -- 06/08/2007 yanbo liu updated
357 -- 09/08/2007 yanbo liu updated
358 -- get item logic change
359 --===========================================================================
360 FUNCTION MASTER_ITEM(P_INVOICE_ID IN NUMBER,
361 P_INVOICE_DISTRIBUTION_ID IN NUMBER)
362 RETURN VARCHAR2 IS
363 MASTER_ITEM VARCHAR(100):=null;
364 L_INVOICE_LINE_NUMBER NUMBER;
365 L_INVOICE_ID NUMBER;
366 L_DBG_LEVEL NUMBER :=FND_LOG.G_CURRENT_RUNTIME_LEVEL;
367 L_PROC_LEVEL NUMBER :=FND_LOG.LEVEL_PROCEDURE;
368 L_PROC_NAME VARCHAR2(100) :='MASTER_ITEM';
369 a EXCEPTION;
370
371
372 BEGIN
373 IF (l_proc_level >= l_dbg_level)
374 THEN
375 FND_LOG.String( l_proc_level
376 ,l_module_prefix||'.'||l_proc_name||'.begin'
377 ,'Enter procedure'
378 );
379
380 FND_LOG.String(l_proc_level
381 ,l_module_prefix||'.'||l_proc_name||'.parameters'
382 ,'p_invoice_distribution_id '||p_invoice_distribution_id
383 );
384
385 END IF; --(l_proc_level >= l_dbg_level)
386
387 -- get the invoice line number and invoice id from ap_invoice_distributions_all
388 SELECT INVOICE_LINE_NUMBER,INVOICE_ID
389 INTO L_INVOICE_LINE_NUMBER,L_INVOICE_ID
390 FROM AP_INVOICE_DISTRIBUTIONS_ALL
391 WHERE INVOICE_DISTRIBUTION_ID=P_INVOICE_DISTRIBUTION_ID ;
392
393 --get key flexfield concatenated_segments as source value
394 --CATEGORY SET NAME is 'Cash Flow Category'
395 SELECT MC.CONCATENATED_SEGMENTS
396 INTO MASTER_ITEM
397 FROM MTL_CATEGORIES_B_KFV MC
398 WHERE CATEGORY_ID IN(
399 SELECT CATEGORY_ID
400 FROM MTL_ITEM_CATEGORIES MIC
401 WHERE MIC.CATEGORY_SET_ID IN (
402 SELECT CATEGORY_SET_ID
403 FROM MTL_CATEGORY_SETS_TL MCST
404 WHERE MCST.LANGUAGE = USERENV('LANG')
405 AND MCST.CATEGORY_SET_NAME = 'Cash Flow Category')
406 AND INVENTORY_ITEM_ID IN(
407 SELECT ITEM_ID
408 FROM PO_LINES_ALL
409 WHERE PO_HEADER_ID = (
410 SELECT PO_HEADER_ID
411 FROM AP_INVOICE_LINES_ALL AP
412 WHERE AP.INVOICE_ID=L_INVOICE_ID
413 AND AP.LINE_NUMBER=L_INVOICE_LINE_NUMBER)
414 AND PO_LINE_ID = (
415 SELECT PO_LINE_ID
416 FROM AP_INVOICE_LINES_ALL AP
417 WHERE AP.INVOICE_ID=L_INVOICE_ID
418 AND AP.LINE_NUMBER=L_INVOICE_LINE_NUMBER)
419 )
420 AND ORGANIZATION_ID IN(
421 SELECT ORG_ID
422 FROM AP_INVOICE_LINES_ALL AP
423 WHERE AP.INVOICE_ID=L_INVOICE_ID
424 AND AP.LINE_NUMBER=L_INVOICE_LINE_NUMBER)
425 );
426
427 RETURN MASTER_ITEM;
428 --RETURN nvl(MASTER_ITEM,'master_item_0');
429
430 EXCEPTION
431
432 WHEN OTHERS THEN
433 IF (l_proc_level >= l_dbg_level)
434 THEN
435 FND_LOG.String( l_proc_level
436 ,l_module_prefix||'.'||l_proc_name||'.Other_Exception '
437 ,SQLCODE||':'||SQLERRM);
438 END IF; --(l_proc_level >= l_dbg_level)
439 IF MASTER_ITEM IS NULL THEN
440 MASTER_ITEM := GDF_Item(p_invoice_id,
441 p_invoice_distribution_id
442 );
443 RETURN MASTER_ITEM;
444 END IF;
445 RAISE;
446 -- return('master_item_exp');
447 END Master_Item;
448
449 --==========================================================================
450 -- FUNCTION NAME:
451 -- Invoice_Category Public
452 --
453 -- DESCRIPTION:
454 -- This procedure is used to return different source value according to
455 -- invoice source input.
456 --
457 -- PARAMETERS:
458 -- p_Invoice_Source invoice source
459 -- p_invoice_id invoice id
460 -- p_invoice_line_number invoice line number
461 -- p_distribution_line_number distribution line number
462 --
463 -- DESIGN REFERENCES:
464 -- None
465 --
466 -- CHANGE HISTORY:
467 -- 06/08/2007 yanbo liu updated
468 --===========================================================================
469 FUNCTION Invoice_Category(p_Invoice_Source IN VARCHAR2,
470 p_invoice_id IN NUMBER,
471 p_invoice_distribution_id IN NUMBER)
472 RETURN VARCHAR2 IS
473 Source_Value VARCHAR2(200):=NULL;
474 l_dbg_level NUMBER :=FND_LOG.G_Current_Runtime_Level;
475 l_proc_level NUMBER :=FND_LOG.Level_Procedure;
476 l_proc_name VARCHAR2(100) :='Invoice Category';
477 BEGIN
478
479 IF (l_proc_level >= l_dbg_level)
480 THEN
481 FND_LOG.String( l_proc_level
482 ,l_module_prefix||'.'||l_proc_name||'.begin'
483 ,'Enter procedure'
484 );
485 FND_LOG.String( l_proc_level
486 ,l_module_prefix||'.'||l_proc_name||'.parameters'
487 ,'p_Invoice_Source '||p_Invoice_Source
488 );
489 FND_LOG.String( l_proc_level
490 ,l_module_prefix||'.'||l_proc_name||'.parameters'
491 ,'p_invoice_id '||p_invoice_id
492 );
493
494 FND_LOG.String(l_proc_level
495 ,l_module_prefix||'.'||l_proc_name||'.parameters'
496 ,'p_invoice_distribution_id'||p_invoice_distribution_id
497 );
498
499 END IF; --(l_proc_level >= l_dbg_level)
500
501 -- This function will call different function and return different value
502 -- according to the parameter Invoice Source.
503
504 IF p_Invoice_Source IS NULL OR p_invoice_id IS NULL OR p_invoice_distribution_id IS NULL THEN
505 RETURN NULL;
506 ELSE
507 CASE p_Invoice_Source
508 WHEN 'Manual Invoice Entry'
509 THEN
510 Source_Value := GDF_Item(p_invoice_id,
511 p_invoice_distribution_id
512 );
513 WHEN 'SelfService'
514 THEN
515 Source_Value := Expense_Item(p_invoice_id,
516 p_invoice_distribution_id);
517 WHEN 'XpenseXpress'
518 THEN
519 Source_Value := Expense_Item(p_invoice_id,
520 p_invoice_distribution_id);
521 WHEN 'ERS'
522 THEN
523 Source_Value := MASTER_ITEM_UPDATE(p_invoice_id,
524 p_invoice_distribution_id);
525 ELSE
526 Source_Value := GDF_Item(p_invoice_id,
527 p_invoice_distribution_id
528 );
529 END CASE ;
530
531 IF (l_proc_level >= l_dbg_level)
532 THEN
533 FND_LOG.STRING(l_proc_level,
534 l_module_prefix|| '.' || l_proc_name || '.end',
535 'end procedure');
536 END IF;
537 RETURN Source_Value;
538 -- RETURN nvl(Source_Value,'0');
539 END IF;
540 EXCEPTION
541 WHEN OTHERS THEN
542 IF (l_proc_level >= l_dbg_level)
543 THEN
544 FND_LOG.String( l_proc_level
545 ,l_module_prefix||'.'||l_proc_name||'.Other_Exception '
546 ,SQLCODE||':'||SQLERRM);
547 END IF; --(l_proc_level >= l_dbg_level)
548
549 RETURN NULL;
550 RAISE;
551 -- return('invoice_category');
552 END Invoice_Category;
553 --==========================================================================
554 -- FUNCTION NAME:
555 -- GET_PROJECT_NUM Public
556 --
557 -- DESCRIPTION:
558 -- This procedure is used to return project number according to project id
559 --
560 --
561 -- PARAMETERS:
562 -- Project_id Project id
563 --
564 -- DESIGN REFERENCES:
565 -- None
566 --
567 -- CHANGE HISTORY:
568 -- 09/08/2007 yanbo liu updated
569 --===========================================================================
570
571 FUNCTION GET_PROJECT_NUM(Project_id IN NUMBER)
572 RETURN VARCHAR2 IS
573 project_num PA_PROJECTS_ALL.Segment1%type:=null;
574 l_dbg_level NUMBER :=FND_LOG.G_Current_Runtime_Level;
575 l_proc_level NUMBER :=FND_LOG.Level_Procedure;
576 l_proc_name VARCHAR2(100) :='GET_PROJECT_NUM';
577 BEGIN
578
579 IF (l_proc_level >= l_dbg_level)
580 THEN
581 FND_LOG.String( l_proc_level
582 ,l_module_prefix||'.'||l_proc_name||'.begin'
583 ,'Enter procedure'
584 );
585 FND_LOG.String( l_proc_level
586 ,l_module_prefix||'.'||l_proc_name||'.parameters'
587 ,'Project_id '||Project_id
588 );
589
590 END IF; --(l_proc_level >= l_dbg_level)
591
592 --get project number by project id.
593 IF Project_id IS NULL THEN
594 RETURN NULL;
595 ELSE
596 SELECT SEGMENT1
597 INTO project_num
598 FROM PA_PROJECTS_ALL
599 WHERE PROJECT_ID = Project_id;
600
601 RETURN project_num;
602 END IF;
603
604
605 EXCEPTION
606
607 WHEN OTHERS THEN
608 IF (l_proc_level >= l_dbg_level)
609 THEN
610 FND_LOG.String( l_proc_level
611 ,l_module_prefix||'.'||l_proc_name||'.Other_Exception '
612 ,SQLCODE||':'||SQLERRM);
613 END IF; --(l_proc_level >= l_dbg_level)
614 RETURN NULL;
615 RAISE;
616 END GET_PROJECT_NUM;
617
618
619 BEGIN
620 NULL;
621 -- Initialization
622 -- <Statement>
623 end JA_CN_CUSTOM_SOURCES;
624
625