DBA Data[Home] [Help]

PACKAGE BODY: APPS.MSD_DEM_COLLECT_RETURN_HISTORY

Source


1 PACKAGE BODY MSD_DEM_COLLECT_RETURN_HISTORY AS
2 /* $Header: msddemcrhb.pls 120.9 2007/10/26 11:21:53 vrepaka noship $ */
3 
4     /*** PRIVATE PROCEDURES ***/
5 
6 
7       /*
8        * This procedure given the series id, gets the
9        * data from the source instance and upserts into the
10        * return history staging table.
11        */
12       PROCEDURE COLLECT_DATA (
13       			errbuf				OUT NOCOPY VARCHAR2,
14       			retcode				OUT NOCOPY VARCHAR2,
15       			p_series_id			IN	   NUMBER,
16       			p_dest_table			IN	   VARCHAR2,
17       			p_dm_time_level			IN	   NUMBER,
18       			p_sr_instance_id		IN         NUMBER,
19       			p_apps_ver			IN	   NUMBER,
20       			p_instance_type			IN	   NUMBER,
21       			p_collection_group      	IN         VARCHAR2,
22       			p_collection_method     	IN         NUMBER,
23       			p_from_date			IN	   DATE,
24       			p_to_date			IN	   DATE)
25       IS
26 
27          /*** CURSORS ***/
28 
29          CURSOR c_get_series_info
30          IS
31                SELECT
32                 identifier, MSD_SOURCE_DATE_COL, CUSTOM_VIEW_NAME
33                FROM
34                   msd_dem_series
35                WHERE
36                       series_id = p_series_id
37                   AND series_type = 1;
38 
39          CURSOR c_rma_type
40          is
41          select rma_types
42          from msd_dem_rma_type;
43 
44          CURSOR c_accnt_class  --jarora
45          is
46          select accnt_class_type
47          from msd_dem_accnt_classes;
48 
49 
50          /*** LOCAL VARIABLES ***/
51             x_errbuf		VARCHAR2(200)	:= NULL;
52             x_errbuf1		VARCHAR2(200)	:= NULL;
53             x_retcode		VARCHAR2(100)	:= NULL;
54             x_retcode1		VARCHAR2(100)	:= NULL;
55             XDBLINK             VARCHAR2(100)   := NULL;
56             x_RMA_type          VARCHAR2(5000);
57             x_accnt_class       VARCHAR2(5000);    --jarora
58             x_large_sql		VARCHAR2(32000) := NULL;
59             x_add_where_clause  VARCHAR2(3000)  := NULL;
60 
61             x_dquery_identifier	VARCHAR2(30)	:= NULL;
62             x_pquery_identifier	VARCHAR2(30)	:= NULL;
63 
64             l_identifier           varchar2(30)    := NULL;
65             L_MSD_SOURCE_DATE_COL  VARCHAR2(1000)  := NULL;
66 
67             x_key_values	   VARCHAR2(4000)	:= NULL;
68             x_is_custom            NUMBER          	:= NULL;
69             l_custom_view_name	   VARCHAR2(100)	:= NULL;
70 
71       BEGIN
72 
73          msd_dem_common_utilities.log_debug ('Entering: msd_dem_collect_return_history.collect_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
74 
75 
76 
77          IF (p_series_id = MSD_DEM_COMMON_UTILITIES.C_SRP_RETURN_HISTORY) --jarora
78          THEN
79 
80          /* RMA types specified by the user */
81          open c_rma_type;
82          fetch c_rma_type into x_rma_type;
83          close c_rma_type;
84 
85          ELSIF ( p_series_id = MSD_DEM_COMMON_UTILITIES.C_SRP_USG_HISTORY_DR)
86          THEN
87 
88          /* WIP Accounting classes specified by the user */
89          open c_accnt_class;
90          fetch c_accnt_class into x_accnt_class;
91          close c_accnt_class;
92 
93          ELSE
94              NULL;
95          END IF;          --jarora
96 
97 
98          OPEN  c_get_series_info;
99          FETCH c_get_series_info INTO l_identifier, L_MSD_SOURCE_DATE_COL, l_custom_view_name;
100          CLOSE c_get_series_info;
101 
102 
103          IF (l_identifier IS NULL)
104          THEN
105             retcode := -1;
106             errbuf  := 'Unable to get the query identifier.';
107             msd_dem_common_utilities.log_message ('Error(1): msd_dem_collect_return_history.collect_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
108             msd_dem_common_utilities.log_message (errbuf);
109             RETURN;
110          END IF;
111 
112          /* Check if custom view for Discrete */
113          IF (l_custom_view_name IS NULL)
114          THEN
115             x_is_custom := 0;
116          ELSE
117             x_is_custom := 1;
118          END IF;
119 
120          /* For Discrete */
121          /* 11i instance where instance type in not 'PROCESS' OR R12 Instance of any type */
122          IF (   p_instance_type <> 2
123              OR p_apps_ver = 4)
124          THEN
125 
126            msd_dem_common_utilities.log_debug ('Begin collect discrete history - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS')); --jarora
127 
128            IF (p_series_id = MSD_DEM_COMMON_UTILITIES.C_SRP_RETURN_HISTORY) --jarora
129            THEN
130 
131              If(X_RMA_TYPE <> '''''') then
132              	x_add_where_clause := 'OTTL.NAME IN ('|| X_RMA_TYPE ||')';
133              else
134              	x_add_where_clause := '1=1';
135              end if;
136 
137            ELSIF (p_series_id = MSD_DEM_COMMON_UTILITIES.C_SRP_USG_HISTORY_DR)
138            THEN
139 
140              If(X_ACCNT_CLASS <> '''''') then
141              	x_add_where_clause := 'WAC.CLASS_CODE IN ('|| X_ACCNT_CLASS ||')';
142              else
143              	x_add_where_clause := '1=1';
144              end if;
145 
146            ELSE
147                x_add_where_clause := '1=1';
148            END IF;                                 --jarora
149 
150 
151              IF(p_dm_time_level = 1) then
152 
153                x_key_values := '$C_DEST_TABLE#' || p_dest_table
154                                   || '$C_DEST_DATE_GROUP#' || 'MDBR.SDATE'
155                                   || '$C_DEST_DATE#' || 'MDBR.SDATE'
156                                   || '$C_SOURCE_DATE#' || ' nvl( ' || substr(l_msd_source_date_col, 0, instr(upper(l_msd_source_date_col), 'SDATE')-1) || ', to_date(''01/01/1000'', ''DD/MM/YYYY'')) ' || ' SDATE'
157                                   || '$C_ADD_WHERE_CLAUSE#' || x_add_where_clause
158                                   || '$C_SR_INSTANCE_ID#' || to_char(p_sr_instance_id)
159                                   || '$C_MASTER_ORG#' || msd_dem_common_utilities.get_parameter_value (p_sr_instance_id, 'MSD_DEM_MASTER_ORG');
160 
161                IF (p_collection_method <> 1) THEN
162                   x_key_values := x_key_values || '$C_TIME_CLAUSE#' || ' WHERE SDATE BETWEEN '
163                                      || 'to_date(''' || to_char(p_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') '
164                                      || ' AND '
165                                      || 'to_date(''' || to_char(p_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') ';
166                ELSE
167                   x_key_values := x_key_values || '$C_TIME_CLAUSE#' || '    ';
168                END IF;
169 
170                x_key_values := x_key_values || '$';
171 
172                /* Bug# 6491059 */
173                IF (p_series_id IN (MSD_DEM_COMMON_UTILITIES.C_ON_HAND_INVENTORY,
174                                    MSD_DEM_COMMON_UTILITIES.C_TOTAL_BACKLOG,
175                                    MSD_DEM_COMMON_UTILITIES.C_PAST_DUE_BACKLOG,
176                                    MSD_DEM_COMMON_UTILITIES.C_ACTUAL_PRODUCTION,
177 								   MSD_DEM_COMMON_UTILITIES.C_INSTALL_BASE_HISTORY))
178                THEN
179                   x_key_values := replace (x_key_values, 'SDATE', 'PDATE');
180                END IF;
181 
182              ELSE
183 
184                x_key_values := '$C_DEST_TABLE#' || p_dest_table
185                                   || '$C_DEST_DATE_GROUP#' || 'INP.DATET'
186                                   || '$C_DEST_DATE#' || 'INP.DATET SDATE'
187                                   || '$C_SOURCE_DATE#' || SUBSTR(L_MSD_SOURCE_DATE_COL, 1, instr(L_MSD_SOURCE_DATE_COL, 'SDATE')-1)||' PDATE'
188                                   || '$C_ADD_WHERE_CLAUSE#' || x_add_where_clause
189                                   || '$C_SR_INSTANCE_ID#' || to_char(p_sr_instance_id)
190                                   || '$C_MASTER_ORG#' || msd_dem_common_utilities.get_parameter_value (p_sr_instance_id, 'MSD_DEM_MASTER_ORG');
191 
192                IF (p_collection_method <> 1) THEN
193                   x_key_values := x_key_values || '$C_TIME_CLAUSE#' || ', msd_dem_dates inp WHERE mdbr.pdate BETWEEN '
194                                      || 'to_date(''' || to_char(p_from_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') '
195                                      || ' AND '
196                                      || 'to_date(''' || to_char(p_to_date, 'DD/MM/RRRR') || ''', ''DD/MM/RRRR'') '
197                                      || ' AND MDBR.PDATE BETWEEN inp.start_date AND inp.end_date ';
198                ELSE
199                   x_key_values := x_key_values || '$C_TIME_CLAUSE#' || ', msd_dem_dates inp WHERE mdbr.pdate BETWEEN inp.start_date AND inp.end_date ';
200                END IF;
201 
202                x_key_values := x_key_values || '$';
203 
204                /* Change for streams with LAST aggregation along time */
205                IF (p_series_id IN (MSD_DEM_COMMON_UTILITIES.C_ON_HAND_INVENTORY,
206                                    MSD_DEM_COMMON_UTILITIES.C_TOTAL_BACKLOG,
207                                    MSD_DEM_COMMON_UTILITIES.C_PAST_DUE_BACKLOG))
208                THEN
209                   l_identifier := l_identifier || '_L';
210                END IF;
211 
212               END IF;
213 
214               /* Get the query */
215              msd_dem_query_utilities.get_query2 (
216              			x_retcode1,
217              			x_large_sql,
218              			l_identifier,
219              			p_sr_instance_id,
220              			x_key_values,
221              			x_is_custom,
222              			l_custom_view_name);
223 
224               IF (   x_retcode1 = '-1'
225                  OR x_large_sql IS NULL)
226               THEN
227                 retcode := -1;
228                 errbuf  := 'Unable to get the query.';
229                 msd_dem_common_utilities.log_message ('Error(2): msd_dem_collect_return_history.collect_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
230                 msd_dem_common_utilities.log_message (errbuf);
231                 RETURN;
232               END IF;
233 
234 
235              msd_dem_common_utilities.log_debug ('Query - ');
236              msd_dem_common_utilities.log_debug (x_large_sql);
237 
238              msd_dem_common_utilities.log_debug ('Query Start Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
239 
240              BEGIN
241                 /* insert return history data into return history staging table */
242                 EXECUTE IMMEDIATE x_large_sql;
243              EXCEPTION
244                 WHEN OTHERS THEN
245                    retcode := -1 ;
246 	           errbuf  := substr(SQLERRM,1,150);
247 	           msd_dem_common_utilities.log_message ('Exception(1): msd_dem_collect_return_history.collect_data- ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
248 	           msd_dem_common_utilities.log_message (errbuf);
249 	           msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
250 	           RETURN;
251              END;
252 
253              msd_dem_common_utilities.log_debug ('Query End Time - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
254 
255              COMMIT;
256 
257              IF (p_series_id = MSD_DEM_COMMON_UTILITIES.C_RETURN_HISTORY)
258              THEN
259 
260                 msd_dem_common_utilities.log_debug ('Start Updating Site codes - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
261 
262                 MSD_DEM_UPDATE_LEVEL_CODES.update_code(x_errbuf ,
263                       x_retcode,
264                       p_SR_instance_id,
265                       'SITE',
266                       p_dest_table,
267                       'LEVEL4',
268                       'LEVEL4_SR_PK');
269 
270 	        msd_dem_common_utilities.log_debug ('End Updating Site codes - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
271 
272              END IF;                 --jarora
273 
274              msd_dem_common_utilities.log_debug ('End collect discrete history  - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));  --jarora
275 
276          END IF;
277 
278       IF (p_series_id = MSD_DEM_COMMON_UTILITIES.C_RETURN_HISTORY)
279       THEN
280           /* Delete the RMA types stored in the DB table */
281           delete from msd_dem_rma_type;
282       ELSIF (p_series_id = MSD_DEM_COMMON_UTILITIES.C_SRP_USG_HISTORY_DR)
283       THEN
284           /* Delete the WIP Accounting classes stored in the DB table */
285           delete from msd_dem_accnt_classes;
286       ELSE
287            NULL;
288       END IF;                                             --jarora
289 
290         msd_dem_common_utilities.log_debug ('Exiting: msd_dem_collect_return_history.collect_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
291 
292       EXCEPTION
293          WHEN OTHERS THEN
294             retcode := -1 ;
295 	    errbuf  := substr(SQLERRM,1,150);
296 	    msd_dem_common_utilities.log_message ('Exception(3): msd_dem_collect_return_history.collect_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
297 	    msd_dem_common_utilities.log_message (errbuf);
298 	    RETURN;
299 
300  END COLLECT_DATA;
301 
302 
303  PROCEDURE COLLECT_RETURN_HISTORY_DATA (
304       			errbuf				OUT NOCOPY VARCHAR2,
305       			retcode				OUT NOCOPY VARCHAR2,
306       			p_sr_instance_id		IN         NUMBER,
307       			p_collection_group      	IN         VARCHAR2 DEFAULT '-999', --jarora
308       			p_collection_method     	IN         NUMBER,
309       			p_date_range_type		IN	   NUMBER,
310       			p_collection_window		IN	   NUMBER,
311       			p_from_date			IN	   VARCHAR2,
312       			p_to_date			IN	   VARCHAR2,
313       			p_entity_name                   IN         VARCHAR2 DEFAULT NULL,    --jarora
314       			p_truncate                      IN         NUMBER DEFAULT 1 --sopjarora
315       			)
316       IS
317 
318          /*** CURSORS ***/
319 
320          CURSOR c_get_table (p_lookup_type	VARCHAR2,
321                              p_lookup_code   	VARCHAR2)
322          IS
323             SELECT meaning                            --jarora
324             FROM fnd_lookup_values_vl
325             WHERE lookup_type = p_lookup_type
326               AND lookup_code = p_lookup_code;
327 
328         CURSOR c_get_dm_schema --jarora
329          IS
330          SELECT owner
331          FROM dba_objects
332          WHERE  owner = owner
333             AND object_type = 'TABLE'
334             AND object_name = 'MDP_MATRIX'
335          ORDER BY created desc;
336 
337         v_applsys_schema    VARCHAR2(32);  --jarora
338 
339 
340          /*** LOCAL VARIABLES ****/
341 
342             x_errbuf		VARCHAR2(200)	:= NULL;
343             x_errbuf1		VARCHAR2(200)	:= NULL;
344             x_retcode		VARCHAR2(100)	:= NULL;
345             x_retcode1		VARCHAR2(100)	:= NULL;
346 
347           --  x_RMA_type          VARCHAR2(5000);
348             x_dest_table	VARCHAR2(100)    := NULL;
349 
350             x_sql		VARCHAR2(1000)  := NULL;
351 
352             x_from_date		DATE 		:= NULL;
353             x_to_date		DATE		:= NULL;
354 
355             x_instance_code     VARCHAR2(30)	:= NULL;
356             x_apps_ver		NUMBER		:= NULL;
357             x_dgmt		NUMBER		:= NULL;
358             x_instance_type     NUMBER		:= NULL;
359             x_dm_time_level	NUMBER		:= NULL;
360             x_dm_time_bucket    VARCHAR2(30)    := NULL;
361             g_dblink            varchar2(30)    := null;
362             x_dem_schema	VARCHAR2(50)	:= NULL; --jarora
363 
364             lv_retval           BOOLEAN;           --jarora
365             lv_dummy1           VARCHAR2(32);
366             lv_dummy2           VARCHAR2(32);
367 
368             x_series_id         NUMBER         := NULL; --jarora
369 
370             l_position          NUMBER         := 0;    --sopjarora
371             l_length            NUMBER         := 0;    --sopjarora
372             l_table_name       VARCHAR2(100)  := NULL; --sopjarora
373             l_series_name       VARCHAR2(100)  := NULL; --sopjarora
374 
375       BEGIN
376 
377          msd_dem_common_utilities.log_debug ('Entering: msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
378 
379          /* Get the db link to the source instance */
380          msd_dem_common_utilities.get_dblink (
381          			x_errbuf,
382          			x_retcode,
383          			p_sr_instance_id,
384          			g_dblink);
385 
386          IF (x_retcode = '-1')
387          THEN
388             retcode := -1;
389             errbuf := x_errbuf;
390             msd_dem_common_utilities.log_message ('Error(1): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
391             RETURN;
392          END IF;
393 
394          /* Calling procedure to push the profile values, collection enabled orgs and
395           * the time data in the source instance, which will be used in the source
396           * views.
397          */
398 
399          MSD_DEM_PUSH_SETUP_PARAMETERS.PUSH_SETUP_PARAMETERS(x_errbuf, x_retcode, p_sr_instance_id, p_collection_group);
400 
401 
402 
403          /* VALIDATION OF INPUT PARAMETERS - BEGIN */
404 
405          msd_dem_common_utilities.log_debug ('Begin validation of inputs parameters - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
406 
407 
408          /* Show Warning if collection method is Refresh and a date range filter is specified */
409          IF (    p_collection_method = 1
410              AND (   p_from_date IS NOT NULL
411                   OR p_to_date IS NOT NULL
412                   OR p_collection_window IS NOT NULL))
413          THEN
414             x_retcode := 1;
415             x_errbuf  := 'Date Range filters are ignored in ''Refresh'' collections';
416             msd_dem_common_utilities.log_message ('Warning(1): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
417             msd_dem_common_utilities.log_message (x_errbuf);
418          END IF;
419 
420 
421          /* Show Warning if collection method is net change, date range type is Rolling and from date and to date are specified */
422          IF (    p_collection_method = 2
423              AND p_date_range_type = 2
424              AND (   p_from_date IS NOT NULL
425                   OR p_to_date IS NOT NULL))
426          THEN
427             x_retcode := 1;
428             x_errbuf  := 'The ''Date From'' and ''Date To'' fields are ignored if ''Rolling'' date range type is selected.';
429             msd_dem_common_utilities.log_message ('Warning(2): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
430             msd_dem_common_utilities.log_message (x_errbuf);
431          END IF;
432 
433 
434          /* Show Warning if collection method is net change, date range type is Absolute and history collection window is specified */
435          IF (    p_collection_method = 2
436              AND p_date_range_type = 1
437              AND p_collection_window IS NOT NULL)
438          THEN
439             x_retcode := 1;
440             x_errbuf  := 'The ''History Collection Window'' field is ignored if ''Absolute'' date range type is selected.';
441             msd_dem_common_utilities.log_message ('Warning(3): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
442             msd_dem_common_utilities.log_message (x_errbuf);
443          END IF;
444 
445 
446          /* Error if collection method is net change, date range type is Rolling and history collection window is not specified */
447          IF (    p_collection_method = 2
448              AND p_date_range_type = 2
449              AND p_collection_window IS NULL)
450          THEN
451             retcode := -1;
452             errbuf  := 'The ''History Collection Window'' field cannot be NULL, if ''Rolling'' date range type is selected.';
453             msd_dem_common_utilities.log_message ('Error(3): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
454             msd_dem_common_utilities.log_message (errbuf);
455             RETURN;
456          END IF;
457 
458 
459          /* Error if collection method is net change, date range type is Absolute and from date and to date are not specified */
460          IF (    p_collection_method = 2
461              AND p_date_range_type = 1
462              AND (   p_from_date IS NULL
463                   OR p_to_date IS NULL))
464          THEN
465             retcode := -1;
466             errbuf  := 'The ''Date From'' and ''Date To'' fields cannot be NULL, if ''Absolute'' date range type is selected.';
467             msd_dem_common_utilities.log_message ('Error(4): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
468             msd_dem_common_utilities.log_message (errbuf);
469             RETURN;
470          END IF;
471 
472 
473          msd_dem_common_utilities.log_debug ('End validation of inputs parameters - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
474 
475          /* VALIDATION OF INPUT PARAMETERS - END */
476 
477 
478          /* Get the start date and end dates for collection */
479 
480          msd_dem_common_utilities.log_debug ('Begin get dates - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
481 
482          IF (p_collection_method = 1) /* Refresh*/
483          THEN
484             x_from_date := to_date('01/01/1000', 'DD/MM/YYYY');
485             x_to_date := to_date('31/12/4000', 'DD/MM/YYYY');
486          ELSE /* Net Change */
487             IF (p_date_range_type = 1) /* Absolute*/
488             THEN
489 
490                IF (p_from_date IS NULL)
491                THEN
492                   x_from_date := to_date('01/01/1000', 'DD/MM/YYYY');
493                ELSE
494                   x_from_date := FND_DATE.canonical_to_date(p_from_date);
495                END IF;
496 
497                IF (p_to_date IS NULL)
498                THEN
499                   x_to_date := to_date('31/12/4000', 'DD/MM/YYYY');
500                ELSE
501                   x_to_date := FND_DATE.canonical_to_date(p_to_date);
502                END IF;
503 
504                /* Error if p_from_date is greater than p_to_date */
505                IF (x_from_date > x_to_date)
506                THEN
507                   retcode := -1;
508                   errbuf  := 'From Date should not be greater than To Date.';
509                   msd_dem_common_utilities.log_message ('Error(6): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
510                   msd_dem_common_utilities.log_message (errbuf);
511                   RETURN;
512                END IF;
513 
514             ELSE /* Rolling */
515 
516                IF (p_collection_window < 0)
517                THEN
518                   retcode := -1;
519                   errbuf  := 'History Collection Window must be a positive number.';
520                   msd_dem_common_utilities.log_message ('Error(7): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
521                   msd_dem_common_utilities.log_message (errbuf);
522                   RETURN;
523                ELSE
524                   x_to_date   := trunc(sysdate);
525                   x_from_date := x_to_date - p_collection_window + 1;
526                END IF;
527             END IF;
528          END IF;
529 
530          msd_dem_common_utilities.log_debug ('End get dates - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
531          msd_dem_common_utilities.log_debug ('Begin get instance info - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
532 
533          /* Get the instance info */
534          msd_dem_common_utilities.get_instance_info (
535          			x_errbuf1,
536          			x_retcode1,
537          			x_instance_code,
538          			x_apps_ver,
539          			x_dgmt,
540          			x_instance_type,
541          			p_sr_instance_id);
542 
543          IF (x_retcode1 = '-1')
544          THEN
545             retcode := -1;
546             errbuf  := x_errbuf1;
547             msd_dem_common_utilities.log_message ('Error(8): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
548             msd_dem_common_utilities.log_message ('Unable to get instance info.');
549             RETURN;
550          END IF;
551 
552          msd_dem_common_utilities.log_debug ('End get instance info - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
553 
554          select instr(p_entity_name,':'),length(p_entity_name)  --sopjarora
555                 INTO l_position,l_length
556          FROM DUAL;
557 
558          IF l_position <> 0                                  --sopjarora
559          THEN
560            select substr(p_entity_name,1,l_position - 1),substr(p_entity_name,l_position + 1,l_length)
561                 INTO l_table_name,l_series_name
562            FROM DUAL;
563          ELSE
564            l_table_name := p_entity_name;
565            l_series_name := p_entity_name;
566          END IF;
567 
568          /* Get the return history staging table name */ --jarora
569          OPEN c_get_table ('MSD_DEM_TABLES', l_table_name); --sopjarora
570          FETCH c_get_table INTO x_dest_table;
571          CLOSE c_get_table;
572 
573          OPEN c_get_dm_schema;                       --jarora
574          FETCH c_get_dm_schema INTO x_dem_schema;
575          CLOSE c_get_dm_schema;
576 
577 
578          IF (x_dest_table is NULL)
579          THEN
580             retcode := -1;
581             errbuf  := 'Unable to find the return history staging tables.';
582             msd_dem_common_utilities.log_message ('Error(9): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
583             msd_dem_common_utilities.log_message (errbuf);
584             RETURN;
585          END IF;
586 
587          /* Demantra is Installed */
588          IF (x_dem_schema IS NOT NULL)
589          THEN
590 
591 		 IF(p_entity_name = 'MSD_DEM_SRP_RETURN_HISTORY' OR
592 		 p_entity_name = 'MSD_DEM_INS_BASE_HISTORY' OR
593 		 p_entity_name = 'MSD_DEM_DPT_REP_USG_HISTORY' OR
594 		 p_entity_name = 'MSD_DEM_FLD_SER_USG_HISTORY')
595 		 THEN
596             lv_retval := fnd_installation.get_app_info('MSD',lv_dummy1,lv_dummy2,v_applsys_schema);
597             x_dest_table := v_applsys_schema || '.' || x_dest_table;
598          ELSE
599             x_dest_table := x_dem_schema || '.' || x_dest_table;
600          END IF;
601 
602          ELSE
603             lv_retval := fnd_installation.get_app_info('MSD',lv_dummy1,lv_dummy2,v_applsys_schema);
604             x_dest_table := v_applsys_schema || '.' || x_dest_table;
605 
606          END IF; --jarora
607 
608          msd_dem_common_utilities.log_message (' Collect History Data - Actions');
609          msd_dem_common_utilities.log_message ('--------------------------------');
610          msd_dem_common_utilities.log_message (' ');
611 
612          msd_dem_common_utilities.log_message ('Date From (DD/MM/RRRR) - ' || to_char(x_from_date, 'DD/MM/RRRR'));
613          msd_dem_common_utilities.log_message ('Date To (DD/MM/RRRR)   - ' || to_char(x_to_date, 'DD/MM/RRRR'));
614 
615          msd_dem_common_utilities.log_debug ('Begin delete from history staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));         --jarora
616 
617          IF p_truncate = 1 --sopjarora
618          THEN
619           /* Truncate the history staging table */ --jarora
620           msd_dem_common_utilities.log_message ('Deleting data from history staging table - ' || x_dest_table);   --jarora
621           x_sql := 'DELETE FROM ' || x_dest_table;   --amitku
622 	  EXECUTE IMMEDIATE x_sql;
623 	  msd_dem_common_utilities.log_debug ('End delete from history staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));    --jarora
624 	 END IF;
625 
626 
627          msd_dem_common_utilities.log_debug ('Begin get dm time level - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
628 
629          /* Get the lowest time bucket */
630          IF (x_dem_schema IS NOT NULL) /* Demantra is Installed */ --jarora
631          THEN
632            x_dm_time_bucket := msd_dem_common_utilities.dm_time_level;
633          ELSE
634            x_dm_time_bucket := 'DAY';
635          END IF;                            --jarora
636 
637          IF (x_dm_time_bucket IS NULL)
638          THEN
639             retcode := -1;
640             errbuf  := 'Unable to get lowest time bucket';
641             msd_dem_common_utilities.log_message ('Error(10): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
642             msd_dem_common_utilities.log_message (errbuf);
643             RETURN;
644          ELSIF (upper(x_dm_time_bucket) = 'DAY')
645          THEN
646             x_dm_time_level := 1;
647          ELSE
648             x_dm_time_level := 2;
649          END IF;
650 
651          msd_dem_common_utilities.log_debug ('End get dm time level - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
652 
653          /* Collect history series */ --jarora
654          msd_dem_common_utilities.log_debug ('Begin collect History - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));  --jarora
655 
656          IF p_entity_name = 'MSD_DEM_RETURN_HISTORY'
657          THEN
658            x_series_id := MSD_DEM_COMMON_UTILITIES.C_RETURN_HISTORY;
659 
660          ELSIF p_entity_name = 'MSD_DEM_SRP_RETURN_HISTORY'
661          THEN
662            x_series_id := MSD_DEM_COMMON_UTILITIES.C_SRP_RETURN_HISTORY;
663 
664          ELSIF p_entity_name = 'MSD_DEM_DPT_REP_USG_HISTORY'
665          THEN
666            x_series_id := MSD_DEM_COMMON_UTILITIES.C_SRP_USG_HISTORY_DR;
667 
668          ELSIF p_entity_name = 'MSD_DEM_FLD_SER_USG_HISTORY'
669          THEN
670            x_series_id := MSD_DEM_COMMON_UTILITIES.C_SRP_USG_HISTORY_FS;
671 
672          ELSIF p_entity_name = 'MSD_DEM_INS_BASE_HISTORY'
673          THEN
674            x_series_id := MSD_DEM_COMMON_UTILITIES.C_INSTALL_BASE_HISTORY;
675 
676          ELSIF p_entity_name = 'BIIO_SCI_BACKLOG:MSD_TOTAL_BACKLOG' --sopjarora
677          THEN
678            x_series_id := MSD_DEM_COMMON_UTILITIES.C_TOTAL_BACKLOG;
679 
680          ELSIF p_entity_name = 'BIIO_SCI_BACKLOG:MSD_PAST_DUE_BACKLOG'
681          THEN
682            x_series_id := MSD_DEM_COMMON_UTILITIES.C_PAST_DUE_BACKLOG;
683 
684          ELSIF p_entity_name = 'BIIO_SCI:MSD_ON_HAND_INVENTORY'
685          THEN
686            x_series_id := MSD_DEM_COMMON_UTILITIES.C_ON_HAND_INVENTORY;
687 
688          ELSIF p_entity_name = 'BIIO_SCI:MSD_ACTUAL_PRODUCTION'
689          THEN
690            x_series_id := MSD_DEM_COMMON_UTILITIES.C_ACTUAL_PRODUCTION;
691 
692          ELSE
693            retcode := -1;
694            msd_dem_common_utilities.log_message ('Error(10.1): MSD_DEM_COLLECT_RETURN_HISTORY.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
695            msd_dem_common_utilities.log_message ('Error - invalid history series');
696            RETURN;
697 
698          END IF;                                        --jarora
699 
700             collect_data (
701            		x_errbuf1,
702            		x_retcode1,
703            		x_series_id,                     --jarora
704            		x_dest_table,
705            		x_dm_time_level,
706            		p_sr_instance_id,
707            		x_apps_ver,
708            		x_instance_type,
709            		p_collection_group,
710            		p_collection_method,
711            		x_from_date,
712            		x_to_date);
713 
714             IF (x_retcode1 = -1)
715             THEN
716                retcode := -1;
717                errbuf  := x_errbuf1;
718                msd_dem_common_utilities.log_message ('Error(11): MSD_DEM_COLLECT_RETURN_HISTORY.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
719                msd_dem_common_utilities.log_message ('Error while collecting History');  --jarora
720                RETURN;
721             END IF;
722 
723          msd_dem_common_utilities.log_debug ('End collect History - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS')); --jarora
724 
725          COMMIT;
726 
727          msd_dem_common_utilities.log_debug ('Begin Analyze history staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));  --jarora
728 
729          msd_dem_collect_history_data.analyze_table (
730            		x_errbuf1,
731            		x_retcode1,
732          	  	x_dest_table);
733 
734          msd_dem_common_utilities.log_debug ('End Analyze history staging table - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));  --jarora
735 
736          IF (x_retcode1 = -1)
737          THEN
738             retcode := -1;
739             errbuf  := x_errbuf1;
740             msd_dem_common_utilities.log_message ('Error(19): msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
741             msd_dem_common_utilities.log_message ('Error while analyzing history staging table. ');    --jarora
742             RETURN;
743          END IF;
744 
745          retcode := x_retcode;
746          errbuf  := x_errbuf;
747          msd_dem_common_utilities.log_debug ('Exiting: msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
748 
749       EXCEPTION
750          WHEN OTHERS THEN
751             retcode := -1 ;
752 	    errbuf  := substr(SQLERRM,1,150);
753 	    msd_dem_common_utilities.log_message ('Exception: msd_dem_collect_return_history.collect_return_history_data - ' || TO_CHAR(systimestamp, 'DD-MON-YYYY HH24:MI:SS'));
754 	    msd_dem_common_utilities.log_message (errbuf);
755 	    RETURN;
756 
757       END COLLECT_RETURN_HISTORY_DATA;
758 
759 END MSD_DEM_COLLECT_RETURN_HISTORY;