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