DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_IMP_PR_MAIN

Source


1 PACKAGE BODY CZ_IMP_PR_MAIN AS
2 /*	$Header: cziprmnb.pls 115.18 2002/12/03 14:47:45 askhacha ship $		*/
3 
4 
5 PROCEDURE CND_PRICE (	inRUN_ID 		IN 	PLS_INTEGER,
6                                         COMMIT_SIZE     IN      PLS_INTEGER,
7 					MAX_ERR		IN 	PLS_INTEGER,
8 					FAILED		  OUT NOCOPY PLS_INTEGER
9 					) IS
10 BEGIN
11 	DECLARE
12 		CURSOR c_imp_price IS
13                         SELECT DELETED_FLAG, ROWID FROM CZ_IMP_PRICE WHERE REC_STATUS IS NULL AND RUN_ID = inRUN_ID;
14 		/* Internal vars */
15 		nCommitCount						PLS_INTEGER:=0;			/*COMMIT buffer index */
16 		nErrorCount							PLS_INTEGER:=0;			/*Error index */
17 		nFailed							PLS_INTEGER:=0;			/*Failed records */
18 		nDups								PLS_INTEGER:=0;			/*Dupl records */
19 		x_error							BOOLEAN:=FALSE;
20 
21 
22 		/*Cursor Var for Import */
23 		p_imp_price   				c_imp_price%ROWTYPE;
24 		x_imp_price_f				BOOLEAN:=FALSE;
25 
26 	BEGIN
27 
28 		OPEN 	c_imp_price;
29 		LOOP
30 			FETCH c_imp_price INTO p_imp_price;
31 			x_imp_price_f:=c_imp_price%FOUND;
32 
33 		EXIT WHEN(NOT x_imp_price_f Or nFailed >= Max_Err);
34 		IF (p_imp_price.DELETED_FLAG IS NULL) THEN
35 			BEGIN
36                                 UPDATE CZ_IMP_PRICE SET DELETED_FLAG=DECODE(DELETED_FLAG,NULL,'0',DELETED_FLAG) WHERE ROWID = p_imp_price.ROWID;
37 				nCOmmitCount:=nCommitCount+1;
38 				/* COMMIT if the buffer size is reached */
39 				IF (nCommitCount>= COMMIT_SIZE) THEN
40 					COMMIT;
41 					nCommitCount:=0;
42 				END IF;
43 			EXCEPTION
44 			WHEN OTHERS THEN
45 				x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.CND_PRICE',11276);
46 				nFailed:=nFailed+1;
47 			END;
48 		END IF;
49 		END LOOP;
50 		CLOSE c_imp_price;
51 		FAILED:=nFailed;
52 
53 	EXCEPTION
54 	WHEN OTHERS THEN
55 		x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.CND_PRICE',11276);
56 	END;
57 
58 END CND_PRICE;
59 
60 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
61 
62 PROCEDURE CND_PRICE_GROUP (	inRUN_ID 		IN 	PLS_INTEGER,
63                                         COMMIT_SIZE     IN      PLS_INTEGER,
64 					MAX_ERR		IN 	PLS_INTEGER,
65 					FAILED		  OUT NOCOPY PLS_INTEGER
66 					) IS
67 BEGIN
68 	DECLARE
69 		CURSOR c_imp_pricegroup IS
70                         SELECT DELETED_FLAG, ROWID FROM CZ_IMP_PRICE_GROUP WHERE REC_STATUS IS NULL AND RUN_ID = inRUN_ID;
71 		/* Internal vars */
72 		nCommitCount						PLS_INTEGER:=0;			/*COMMIT buffer index */
73 		nErrorCount							PLS_INTEGER:=0;			/*Error index */
74 		nFailed							PLS_INTEGER:=0;			/*Failed records */
75 		nDups								PLS_INTEGER:=0;			/*Dupl records */
76 		x_error							BOOLEAN:=FALSE;
77 
78 
79 		/*Cursor Var for Import */
80 		p_imp_pricegroup   				c_imp_pricegroup%ROWTYPE;
81 		x_imp_pricegroup_f				BOOLEAN:=FALSE;
82 
83 	BEGIN
84 
85 		OPEN 	c_imp_pricegroup;
86 		LOOP
87 			FETCH c_imp_pricegroup INTO p_imp_pricegroup;
88 			x_imp_pricegroup_f:=c_imp_pricegroup%FOUND;
89 
90 		EXIT WHEN(NOT x_imp_pricegroup_f Or nFailed >= Max_Err);
91 		IF (p_imp_pricegroup.DELETED_FLAG IS NULL) THEN
92 			BEGIN
93                                 UPDATE CZ_IMP_PRICE_GROUP SET DELETED_FLAG=DECODE(DELETED_FLAG,NULL,'0',DELETED_FLAG) WHERE ROWID = p_imp_pricegroup.ROWID;
94 				nCOmmitCount:=nCommitCount+1;
95 				/* COMMIT if the buffer size is reached */
96 				IF (nCommitCount>= COMMIT_SIZE) THEN
97 					COMMIT;
98 					nCommitCount:=0;
99 				END IF;
100 			EXCEPTION
101 			WHEN OTHERS THEN
102 				x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.CND_PRICE_GROUP',11276);
103 				nFailed:=nFailed+1;
104 			END;
105 		END IF;
106 		END LOOP;
107 		CLOSE c_imp_pricegroup;
108 		FAILED:=nFailed;
109 
110 	EXCEPTION
111 	WHEN OTHERS THEN
112 		x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.CND_PRICE_GROUP',11276);
113 	END;
114 
115 END CND_PRICE_GROUP;
116 
117 
118 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
119 
120 PROCEDURE MAIN_PRICE (	inRUN_ID 		IN 	PLS_INTEGER,
121                                         COMMIT_SIZE     IN      PLS_INTEGER,
122 					MAX_ERR		IN 	PLS_INTEGER,
123 					INSERTS		IN   OUT NOCOPY PLS_INTEGER,
124 					UPDATES		IN OUT NOCOPY 	PLS_INTEGER,
125 					FAILED		IN   OUT NOCOPY PLS_INTEGER,
126                                         DUPS            IN OUT NOCOPY  PLS_INTEGER,
127                               inXFR_GROUP       IN    VARCHAR2
128 					) IS
129 BEGIN
130 	DECLARE
131 		/* Internal vars */
132 		nCommitCount						PLS_INTEGER:=0;			/*COMMIT buffer index */
133 		nErrorCount							PLS_INTEGER:=0;			/*Error index */
134 		nXfrInsertCount						PLS_INTEGER:=0;			/*Inserts */
135 		nXfrUpdateCount						PLS_INTEGER:=0;			/*Updates */
136 		nFailed							PLS_INTEGER:=0;			/*Failed records */
137 		nDups								PLS_INTEGER:=0;			/*Dupl records */
138 		x_error							BOOLEAN:=FALSE;
139                 dummy                                                   CHAR(1);
140 
141 	BEGIN
142 
143          BEGIN
144            SELECT 'X' INTO dummy FROM CZ_XFR_RUN_INFOS WHERE RUN_ID=inRUN_ID;
145 
146            UPDATE CZ_XFR_RUN_INFOS SET
147             STARTED=SYSDATE,
148             LAST_ACTIVITY=SYSDATE
149           WHERE RUN_ID=inRUN_ID;
150 
151         EXCEPTION
152           WHEN NO_DATA_FOUND THEN
153            INSERT INTO CZ_XFR_RUN_INFOS (RUN_ID,STARTED,LAST_ACTIVITY)
154            VALUES(inRUN_ID,SYSDATE,SYSDATE);
155 
156            WHEN OTHERS THEN
157             x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.MAIN_PRICE',11276);
158          END;
159 
160 		CZ_IMP_PR_MAIN.CND_PRICE (inRun_ID,COMMIT_SIZE,MAX_ERR,nFailed);
161 		IF (nFailed=MAX_ERR) THEN
162 			INSERTS:=0;
163 			UPDATES:=0;
164 			FAILED:=MAX_ERR;
165 			DUPS:=0;
166 			return;
167 		END IF;
168 
169 		CZ_IMP_PR_KRS.KRS_PRICE (inRUN_ID,COMMIT_SIZE,MAX_ERR,INSERTS,UPDATES,nFailed,DUPS,inXFR_GROUP);
170 
171 		/* Make sure that the error count has not been reached */
172 		IF(nFailed < MAX_ERR) THEN
173 			CZ_IMP_PR_XFR.XFR_PRICE (inRUN_ID,COMMIT_SIZE,MAX_ERR-nFailed,nXfrInsertCount,nXfrUpdateCount,FAILED,inXFR_GROUP);
174 			/* Report Insert Errors */
175 			IF (nXfrInsertCount<> INSERTS) THEN
176 	 			x_error:=CZ_IMP_ALL.REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_INSERTERRORS','RESOLVED',to_char(INSERTS),'ACTUAL',to_char(nXfrInsertCount)),1,'CZ_IMP_PR_MAIN.MAIN_PRICE ',11276);
177 			END IF;
178 
179 			/* Report Update Errors */
180 			IF (nXfrUpdateCount<> UPDATES) THEN
181 				x_error:=CZ_IMP_ALL.REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_UPDATEERRORS','RESOLVED',to_char(UPDATES),'ACTUAL',to_char(nXfrUpdateCount)),1,'CZ_IMP_PR_MAIN.MAIN_PRICE',11276);
182 			END IF;
183 
184 			/* Return the transferred number of rows and not the number of rows with keys resolved*/
185 			INSERTS:=nXfrInsertCount;
186 			UPDATES:=nXfrUpdateCount;
187 
188 			FAILED:=FAILED+nFailed;
189 		ELSE
190 			FAILED:=nFailed;
191 		END IF;
192 
193           CZ_IMP_PR_MAIN.RPT_PRICE(inRUN_ID);
194         END ;
195 END MAIN_PRICE ;
196 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
197 
198 PROCEDURE MAIN_PRICE_GROUP (	inRUN_ID 		IN 	PLS_INTEGER,
199                                         COMMIT_SIZE     IN      PLS_INTEGER,
200 					MAX_ERR		IN 	PLS_INTEGER,
201 					INSERTS		IN   OUT NOCOPY PLS_INTEGER,
202 					UPDATES		IN OUT NOCOPY 	PLS_INTEGER,
203 					FAILED		IN   OUT NOCOPY PLS_INTEGER,
204                                         DUPS            IN OUT NOCOPY  PLS_INTEGER,
205                               inXFR_GROUP       IN    VARCHAR2
206 					) IS
207 BEGIN
208 	DECLARE
209 		/* Internal vars */
210 		nCommitCount						PLS_INTEGER:=0;			/*COMMIT buffer index */
211                 nErrorCount                                             PLS_INTEGER:=0;                 /*Error index */
212 		nXfrInsertCount						PLS_INTEGER:=0;			/*Inserts */
213 		nXfrUpdateCount						PLS_INTEGER:=0;			/*Updates */
214 		nFailed							PLS_INTEGER:=0;			/*Failed records */
215                 nDups                                                   PLS_INTEGER:=0;                 /*Dupl records */
216 		x_error							BOOLEAN:=FALSE;
217                 dummy                                                   CHAR(1);
218 	BEGIN
219 
220          BEGIN
221            SELECT 'X' INTO dummy FROM CZ_XFR_RUN_INFOS WHERE RUN_ID=inRUN_ID;
222 
223            UPDATE CZ_XFR_RUN_INFOS SET
224             STARTED=SYSDATE,
225             LAST_ACTIVITY=SYSDATE
226           WHERE RUN_ID=inRUN_ID;
227 
228         EXCEPTION
229           WHEN NO_DATA_FOUND THEN
230            INSERT INTO CZ_XFR_RUN_INFOS (RUN_ID,STARTED,LAST_ACTIVITY)
231            VALUES(inRUN_ID,SYSDATE,SYSDATE);
232 
233            WHEN OTHERS THEN
234             x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.MAIN_PRICE_GROUP',11276);
235          END;
236 
237                 CZ_IMP_PR_MAIN.CND_PRICE_GROUP (inRun_ID,COMMIT_SIZE,MAX_ERR,nFailed);
238 		IF (nFailed=MAX_ERR) THEN
239 			INSERTS:=0;
240 			UPDATES:=0;
241 			FAILED:=MAX_ERR;
242 			DUPS:=0;
243 			return;
244 		END IF;
245 
246 		CZ_IMP_PR_KRS.KRS_PRICE_GROUP (inRUN_ID,COMMIT_SIZE,MAX_ERR,INSERTS,UPDATES,nFailed,DUPS,inXFR_GROUP);
247 
248 		/* Make sure that the error count has not been reached */
249 		IF(nFailed < MAX_ERR) THEN
250 			CZ_IMP_PR_XFR.XFR_PRICE_GROUP(inRUN_ID,COMMIT_SIZE,MAX_ERR-nFailed,nXfrInsertCount,nXfrUpdateCount,FAILED,inXFR_GROUP);
251 			/* Report Insert Errors */
252 			IF (nXfrInsertCount<> INSERTS) THEN
253 	 			x_error:=CZ_IMP_ALL.REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_INSERTERRORS','RESOLVED',to_char(INSERTS),'ACTUAL',to_char(nXfrInsertCount)),1,'CZ_IMP_PR_MAIN.MAIN_PRICE_GROUP ',11276);
254 			END IF;
255 
256 			/* Report Update Errors */
257 			IF (nXfrUpdateCount<> UPDATES) THEN
258 				x_error:=CZ_IMP_ALL.REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_UPDATEERRORS','RESOLVED',to_char(UPDATES),'ACTUAL',to_char(nXfrUpdateCount)),1,'CZ_IMP_PR_MAIN.MAIN_PRICE_GROUP ',11276);
259 			END IF;
260 
261 			/* Return the transferred number of rows and not the number of rows with keys resolved*/
262 			INSERTS:=nXfrInsertCount;
263 			UPDATES:=nXfrUpdateCount;
264 
265 			FAILED:=FAILED+nFailed;
266 		ELSE
267 			FAILED:=nFailed;
268 		END IF;
269 
270           CZ_IMP_PR_MAIN.RPT_PRICE_GROUP(inRUN_ID);
271 	END ;
272 END MAIN_PRICE_GROUP;
273 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
274   PROCEDURE RPT_PRICE ( inRUN_ID IN PLS_INTEGER ) AS
275                         x_error     BOOLEAN:=FALSE;
276   BEGIN
277        BEGIN
278          DELETE FROM CZ_XFR_RUN_RESULTS WHERE RUN_ID=inRUN_ID AND IMP_TABLE='CZ_PRICES';
279 
280          EXCEPTION
281               WHEN NO_DATA_FOUND THEN NULL;
282        END;
283 
284        DECLARE
285              CURSOR c_xfr_run_result IS
286                                 SELECT DISPOSITION,REC_STATUS,COUNT(*)
287                                   FROM CZ_IMP_price
288                                  WHERE RUN_ID = inRUN_ID
289                               GROUP BY DISPOSITION,REC_STATUS;
290 
291                               ins_disposition        CZ_XFR_RUN_RESULTS.disposition%TYPE;
292                               ins_rec_status         CZ_XFR_RUN_RESULTS.rec_status%TYPE ;
293                               ins_rec_count          CZ_XFR_RUN_RESULTS.records%TYPE    ;
294 
295               BEGIN
296 
297                   OPEN c_xfr_run_result;
298                   LOOP
299                      FETCH c_xfr_run_result INTO ins_disposition,ins_rec_status,ins_rec_count;
300                      EXIT WHEN c_xfr_run_result%NOTFOUND;
301 
302                      INSERT INTO CZ_XFR_RUN_RESULTS(RUN_ID,IMP_TABLE,DISPOSITION,REC_STATUS,RECORDS)
303                      VALUES(inRUN_ID,'CZ_PRICES',ins_disposition,ins_rec_status,ins_rec_count);
304 
305                   END LOOP;
306                   CLOSE c_xfr_run_result;
307                   COMMIT;
308 
309                   EXCEPTION
310                    WHEN OTHERS THEN
311                      x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.RPT_PRICE',11276);
312               END;
313 
314               DECLARE
315                nErrors  PLS_INTEGER;
316                CURSOR c_get_nErrors IS
317                 SELECT SUM(NVL(RECORDS,0)) FROM CZ_XFR_RUN_RESULTS
318                 WHERE REC_STATUS<>'OK' AND RUN_ID=inRUN_ID
319                 AND IMP_TABLE='CZ_PRICES';
320               BEGIN
321                 OPEN c_get_nErrors;
322                 FETCH c_get_nErrors INTO nErrors;
323                 CLOSE c_get_nErrors;
324                 UPDATE CZ_XFR_RUN_INFOS
325                  SET TOTAL_ERRORS=NVL(TOTAL_ERRORS,0)+NVL(nErrors,0),
326                      COMPLETED='1'
327                 WHERE RUN_ID=inRUN_ID;
328                COMMIT;
329                EXCEPTION
330                 WHEN OTHERS THEN
331                   x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.RPT_PRICE',11276);
332               END;
333        EXCEPTION
334         WHEN OTHERS THEN
335           x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.RPT_PRICE',11276);
336   END;
337 
338 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
339   PROCEDURE RPT_PRICE_GROUP ( inRUN_ID IN PLS_INTEGER ) AS
340                               x_error     BOOLEAN:=FALSE;
341   BEGIN
342        BEGIN
343          DELETE FROM CZ_XFR_RUN_RESULTS WHERE RUN_ID=inRUN_ID AND IMP_TABLE='CZ_PRICE_GROUPS';
344 
345          EXCEPTION
346               WHEN NO_DATA_FOUND THEN NULL;
347        END;
348 
349        DECLARE
350              CURSOR c_xfr_run_result IS
351                                 SELECT DISPOSITION,REC_STATUS,COUNT(*)
352                                   FROM CZ_IMP_price_group
353                                  WHERE RUN_ID = inRUN_ID
354                               GROUP BY DISPOSITION,REC_STATUS;
355 
356                               ins_disposition        CZ_XFR_RUN_RESULTS.disposition%TYPE;
357                               ins_rec_status         CZ_XFR_RUN_RESULTS.rec_status%TYPE ;
358                               ins_rec_count          CZ_XFR_RUN_RESULTS.records%TYPE    ;
359 
360               BEGIN
361 
362                   OPEN c_xfr_run_result;
363                   LOOP
364                      FETCH c_xfr_run_result INTO ins_disposition,ins_rec_status,ins_rec_count;
365                      EXIT WHEN c_xfr_run_result%NOTFOUND;
366 
367                      INSERT INTO CZ_XFR_RUN_RESULTS(RUN_ID,IMP_TABLE,DISPOSITION,REC_STATUS,RECORDS)
368                      VALUES(inRUN_ID,'CZ_PRICE_GROUPS',ins_disposition,ins_rec_status,ins_rec_count);
369 
370                   END LOOP;
371                   CLOSE c_xfr_run_result;
372                   COMMIT;
373 
374                   EXCEPTION
375                    WHEN OTHERS THEN
376                      x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.RPT_PRICE_GROUP',11276);
377               END;
378 
379               DECLARE
380                nErrors  PLS_INTEGER;
381                CURSOR c_get_nErrors IS
382                 SELECT SUM(NVL(RECORDS,0)) FROM CZ_XFR_RUN_RESULTS
383                 WHERE REC_STATUS<>'OK' AND RUN_ID=inRUN_ID
384                 AND IMP_TABLE='CZ_PRICE_GROUPS';
385               BEGIN
386                 OPEN c_get_nErrors;
387                 FETCH c_get_nErrors INTO nErrors;
388                 CLOSE c_get_nErrors;
389                 UPDATE CZ_XFR_RUN_INFOS
390                  SET TOTAL_ERRORS=NVL(TOTAL_ERRORS,0)+NVL(nErrors,0),
391                      COMPLETED='1'
392                 WHERE RUN_ID=inRUN_ID;
393                COMMIT;
394                EXCEPTION
395                 WHEN OTHERS THEN
396                   x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.RPT_PRICE_GROUP',11276);
397               END;
398        EXCEPTION
399         WHEN OTHERS THEN
400           x_error:=CZ_IMP_ALL.REPORT(SQLERRM,1,'CZ_IMP_PR_MAIN.RPT_PRICE_GROUP',11276);
401   END;
402 
403 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
404 
405 END CZ_IMP_PR_MAIN;