DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_UTILS_SQNUM_PKG

Source


1 PACKAGE BODY PA_UTILS_SQNUM_PKG as
2 /* $Header: PAXGSQNB.pls 120.1.12010000.2 2008/09/27 09:28:01 bifernan ship $ */
3 
4   /*----------------------------------------------------------+
5    | get_unique_proj_num : a procedure to get a unique number |
6    |            for the automatic project number.             |
7    |                                                          |
8    |    unique_number :  contains the returned unique number. |
9    |    x_status      :  contains the returned status.        |
10    |                                                          |
11    |            x_status = 0         if it is successful.     |
12    |                     = 1         if no data found.        |
13    |                     = sqlcode   otherwise                |
14    |    Bug fix : 438413 - Next number should actually be the |
15    |              next number that is to be used, not the last|
16    |              number used, as is currently stored in the  |
17    |              table. The next number will now be stored.  |
18    |              tsaifee  01/24/97                           |
19    +----------------------------------------------------------*/
20   PROCEDURE get_unique_proj_num(x_table_name       IN      VARCHAR2,
21 				user_id		 IN	   NUMBER,
22                                 unique_number    IN OUT    NOCOPY NUMBER, --File.Sql.39 bug 4440895
23 				x_status	 IN OUT    NOCOPY NUMBER) is --File.Sql.39 bug 4440895
24     uniqueid NUMBER;
25     -- Commented by Sachin. Bug 3517177
26 --    PL_DUMMY PA_UNIQUE_IDENTIFIER_CONTROL.NEXT_UNIQUE_IDENTIFIER%TYPE;
27     PRAGMA AUTONOMOUS_TRANSACTION;   -- Added by Sachin. Bug 3517177
28 
29   BEGIN
30 
31     x_status := 0;
32 
33 --  tsaifee 01/24/97 : First select the number from the table
34 --  then increment and update it.
35 
36 --    LOCK TABLE PA_UNIQUE_IDENTIFIER_CONTROL IN SHARE UPDATE MODE;
37  /* Commented by sachin. Bug 3517177
38     SELECT  NEXT_UNIQUE_IDENTIFIER
39     INTO    PL_DUMMY
40     FROM    PA_UNIQUE_IDENTIFIER_CONTROL
41     WHERE   TABLE_NAME = x_table_name
42     AND     NEXT_UNIQUE_IDENTIFIER IS NOT NULL
43     FOR UPDATE OF NEXT_UNIQUE_IDENTIFIER;
44  */
45     SELECT  NEXT_UNIQUE_IDENTIFIER
46     INTO    uniqueid
47     FROM    PA_UNIQUE_IDENTIFIER_CONTROL
48     WHERE   TABLE_NAME = x_table_name
49     AND     NEXT_UNIQUE_IDENTIFIER IS NOT NULL
50     FOR UPDATE OF NEXT_UNIQUE_IDENTIFIER;
51 
52     UPDATE  PA_UNIQUE_IDENTIFIER_CONTROL
53     SET     NEXT_UNIQUE_IDENTIFIER = NEXT_UNIQUE_IDENTIFIER + 1,
54             LAST_UPDATED_BY        = user_id,
55             LAST_UPDATE_DATE       = trunc(SYSDATE)
56     WHERE   TABLE_NAME             = x_table_name
57     AND     NEXT_UNIQUE_IDENTIFIER IS NOT NULL;
58 
59     unique_number := uniqueid;
60   Commit;   -- Added by Sachin. Bug 3517177
61 
62   EXCEPTION
63 
64     when NO_DATA_FOUND then
65 	x_status := 1;
66          rollback; --Added by Sachin. Bug 3517177
67 
68     WHEN OTHERS then
69   	x_status := SQLCODE;
70         rollback; --Added by Sachin. Bug 3517177
71 
72   END get_unique_proj_num;
73 
74   /*----------------------------------------------------------+
75    | get_unique_invoice_num : a procedure to get a unique     |
76    |            number for the automatic project number.      |
77    |                                                          |
78    |    unique_number :  contains the returned unique number. |
79    |    x_status      :  contains the returned status.        |
80    |                                                          |
81    |            x_status = 0         if it is successful.     |
82    |                     = 1         if no data found.        |
83    |                     = sqlcode   otherwise                |
84    |    Bug fix : 438413 - Next number should actually be the |
85    |              next number that is to be used, not the last|
86    |              number used, as is currently stored in the  |
87    |              table. The next number will now be stored.  |
88    |              tsaifee  01/24/97                           |
89    +----------------------------------------------------------*/
90   PROCEDURE get_unique_invoice_num(invoice_category IN      VARCHAR2,
91                                    user_id          IN        NUMBER,
92                                    unique_number    IN OUT    NOCOPY NUMBER, --File.Sql.39 bug 4440895
93                                    x_status         IN OUT    NOCOPY NUMBER) is --File.Sql.39 bug 4440895
94     uniqueid NUMBER;
95     PL_DUMMY PA_IMPLEMENTATIONS.NEXT_AUTOMATIC_INVOICE_NUMBER%TYPE;
96 
97   BEGIN
98 
99     x_status := 0;
100 
101 --  tsaifee 01/24/97 : First select the number from the table
102 --  then increment and update it.
103 --  Commented due to bug#634122 by Arindam
104 
105 --  LOCK TABLE PA_IMPLEMENTATIONS IN SHARE UPDATE MODE;
106 
107 
108     SELECT  decode(invoice_category, 'EXTERNAL-INVOICE',NEXT_AUTOMATIC_INVOICE_NUMBER,
109                                      CC_NEXT_AUTOMATIC_INVOICE_NUM)
110     INTO    PL_DUMMY
111     FROM    PA_IMPLEMENTATIONS
112     FOR UPDATE OF NEXT_AUTOMATIC_INVOICE_NUMBER,CC_NEXT_AUTOMATIC_INVOICE_NUM;
113 
114     SELECT  decode(invoice_category, 'EXTERNAL-INVOICE',NEXT_AUTOMATIC_INVOICE_NUMBER,
115                                     CC_NEXT_AUTOMATIC_INVOICE_NUM)
116     INTO    uniqueid
117     FROM    PA_IMPLEMENTATIONS;
118 
119     UPDATE  PA_IMPLEMENTATIONS
120     SET     NEXT_AUTOMATIC_INVOICE_NUMBER = decode(invoice_category,
121                                                      'EXTERNAL-INVOICE',NEXT_AUTOMATIC_INVOICE_NUMBER + 1,
122                                                      NEXT_AUTOMATIC_INVOICE_NUMBER),
123          CC_NEXT_AUTOMATIC_INVOICE_NUM = decode(invoice_category,
124                                                      'EXTERNAL-INVOICE',CC_NEXT_AUTOMATIC_INVOICE_NUM ,
125                                                      CC_NEXT_AUTOMATIC_INVOICE_NUM+1),
126             LAST_UPDATED_BY        = user_id,
127             LAST_UPDATE_DATE       = trunc(SYSDATE);
128 
129     unique_number := uniqueid;
130 
131   EXCEPTION
132 /* Commented out for bug 1327836 as error is not handled in PAXVIACB.pls.If this
133 commnt is removed please handle the error at PAXVIACB.pls
134 
135     when NO_DATA_FOUND then
136         x_status := 1;
137 
138     WHEN OTHERS then
139         x_status := SQLCODE; */
140 
141 /* Commented the above exception handling part and added the following
142    lines as part of fix for bug# 1327836*/
143 
144     WHEN OTHERS then
145 		raise;
146 
147   END get_unique_invoice_num;
148 
149   --Bug 7335526. Added code to revert the project number in
150   /*--------------------------------------------------------------+
151   | revert_unique_proj_num : A procedure to revert a unique       |
152   |            number for the automatic project number if project |
153   |            creation errors out.                               |
154   |    p_unique_number :  contains the unique number which should |
155   |                       be reverted.                            |
156   +---------------------------------------------------------------*/
157   PROCEDURE revert_unique_proj_num(p_table_name       IN      VARCHAR2,
158                                    p_user_id          IN      NUMBER,
159                                    p_unique_number    IN      NUMBER) is
160 
161     PRAGMA AUTONOMOUS_TRANSACTION;   -- Added by Sachin. Bug 3517177
162 
163   BEGIN
164 
165     UPDATE  PA_UNIQUE_IDENTIFIER_CONTROL
166     SET     NEXT_UNIQUE_IDENTIFIER = p_unique_number,
167             LAST_UPDATED_BY        = p_user_id,
168             LAST_UPDATE_DATE       = trunc(SYSDATE)
169     WHERE   TABLE_NAME             = p_table_name
170     AND     NEXT_UNIQUE_IDENTIFIER IS NOT NULL
171     AND     NEXT_UNIQUE_IDENTIFIER = p_unique_number + 1 ;
172 
173     Commit;
174 
175 
176   END;
177 
178 END PA_UTILS_SQNUM_PKG;