1: PACKAGE BODY BSC_PERIODS_PUB AS
2: /* $Header: BSCPPITB.pls 120.3.12000000.2 2007/01/31 09:41:25 ashankar ship $ */
3: /*
4: REM +=======================================================================+
5: REM | Copyright (c) 2004 Oracle Corporation, Redwood Shores, CA, USA |
20: REM | 17-JAN-2007 ashankar Fix for the bug5654559 |
21: REM +=======================================================================+
22: */
23:
24: G_PKG_NAME CONSTANT VARCHAR2(30):='BSC_PERIODS_PUB';
25:
26:
27: FUNCTION Parse_Periods
28: ( p_Periods VARCHAR2
27: FUNCTION Parse_Periods
28: ( p_Periods VARCHAR2
29: , x_Start_Period OUT NOCOPY VARCHAR2
30: , x_End_Period OUT NOCOPY VARCHAR2
31: )RETURN BSC_PERIODS_PUB.Start_End_Period_Varray IS
32: l_Start_Pos NUMBER := 1;
33: l_End_Pos NUMBER;
34: l_Length NUMBER;
35: l_Is_String_End BOOLEAN := TRUE;
36: l_Period_Start VARCHAR2(32000);
37: l_Period_End VARCHAR2(32000);
38: l_Index NUMBER := 1 ;
39:
40: period_Varray_Record BSC_PERIODS_PUB.Start_End_Period_Varray := BSC_PERIODS_PUB.Start_End_Period_Varray();
41: start_End_Record BSC_PERIODS_PUB.Start_End_Period_Record ;
42: BEGIN
43: l_Length := LENGTH(TRIM(p_Periods));
44: IF(p_Periods IS NOT NULL) THEN
37: l_Period_End VARCHAR2(32000);
38: l_Index NUMBER := 1 ;
39:
40: period_Varray_Record BSC_PERIODS_PUB.Start_End_Period_Varray := BSC_PERIODS_PUB.Start_End_Period_Varray();
41: start_End_Record BSC_PERIODS_PUB.Start_End_Period_Record ;
42: BEGIN
43: l_Length := LENGTH(TRIM(p_Periods));
44: IF(p_Periods IS NOT NULL) THEN
45: LOOP
160:
161: /******************************************************************************/
162:
163: FUNCTION Is_Period_Modified
164: (p_Period_Record IN BSC_PERIODS_PUB.Period_Record
165: )RETURN VARCHAR2 IS
166: l_periods VARCHAR2(32000);
167: l_Is_Period_Modified VARCHAR2(1);
168: l_In_Trimmed_String VARCHAR2(32000);
188:
189: PROCEDURE Create_Periods
190: ( p_Api_Version IN NUMBER
191: , p_Commit IN VARCHAR2
192: , p_Period_Record IN BSC_PERIODS_PUB.Period_Record
193: , p_disable_period_val_flag IN VARCHAR2
194: , x_Return_Status OUT NOCOPY VARCHAR2
195: , x_Msg_Count OUT NOCOPY NUMBER
196: , x_Msg_Data OUT NOCOPY VARCHAR2
194: , x_Return_Status OUT NOCOPY VARCHAR2
195: , x_Msg_Count OUT NOCOPY NUMBER
196: , x_Msg_Data OUT NOCOPY VARCHAR2
197: )IS
198: l_Period_Record BSC_PERIODS_PUB.Period_Record;
199: l_period_Varray_Record BSC_PERIODS_PUB.Start_End_Period_Varray;
200: x_Start_Period VARCHAR2(32000);
201: x_End_Period VARCHAR2(32000);
202:
195: , x_Msg_Count OUT NOCOPY NUMBER
196: , x_Msg_Data OUT NOCOPY VARCHAR2
197: )IS
198: l_Period_Record BSC_PERIODS_PUB.Period_Record;
199: l_period_Varray_Record BSC_PERIODS_PUB.Start_End_Period_Varray;
200: x_Start_Period VARCHAR2(32000);
201: x_End_Period VARCHAR2(32000);
202:
203: BEGIN
215: l_Period_Record.period_Varry := l_period_Varray_Record;
216:
217: IF(p_disable_period_val_flag = FND_API.G_FALSE)THEN
218:
219: BSC_PERIODS_PUB.Validate_Periods_Action
220: ( p_Api_Version => p_Api_Version
221: , p_Commit => p_Commit
222: , p_Period_Record => l_Period_Record
223: , p_Action => BSC_PERIODS_UTILITY_PKG.C_CREATE
274: WHEN NO_DATA_FOUND THEN
275: ROLLBACK TO CreatePeriodsPubSP;
276: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
277: IF (x_msg_data IS NOT NULL) THEN
278: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Create_Periods ';
279: ELSE
280: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Create_Periods ';
281: END IF;
282: WHEN OTHERS THEN
276: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
277: IF (x_msg_data IS NOT NULL) THEN
278: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Create_Periods ';
279: ELSE
280: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Create_Periods ';
281: END IF;
282: WHEN OTHERS THEN
283: ROLLBACK TO CreatePeriodsPubSP;
284: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
282: WHEN OTHERS THEN
283: ROLLBACK TO CreatePeriodsPubSP;
284: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
285: IF (x_msg_data IS NOT NULL) THEN
286: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Create_Periods ';
287: ELSE
288: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Create_Periods ';
289: END IF;
290: END Create_Periods;
284: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
285: IF (x_msg_data IS NOT NULL) THEN
286: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Create_Periods ';
287: ELSE
288: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Create_Periods ';
289: END IF;
290: END Create_Periods;
291:
292: /*****************************************************************************************/
293:
294: PROCEDURE Update_Periods
295: ( p_Api_Version IN NUMBER
296: , p_Commit IN VARCHAR2
297: , p_Period_Record IN BSC_PERIODS_PUB.Period_Record
298: , x_Structual_Change OUT NOCOPY BOOLEAN
299: , p_disable_period_val_flag IN VARCHAR2
300: , x_Return_Status OUT NOCOPY VARCHAR2
301: , x_Msg_Count OUT NOCOPY NUMBER
300: , x_Return_Status OUT NOCOPY VARCHAR2
301: , x_Msg_Count OUT NOCOPY NUMBER
302: , x_Msg_Data OUT NOCOPY VARCHAR2
303: )IS
304: l_Period_Record BSC_PERIODS_PUB.Period_Record;
305: l_period_Varray_Record BSC_PERIODS_PUB.Start_End_Period_Varray;
306: x_End_Period VARCHAR2(32000);
307: x_Start_Period VARCHAR2(32000);
308:
301: , x_Msg_Count OUT NOCOPY NUMBER
302: , x_Msg_Data OUT NOCOPY VARCHAR2
303: )IS
304: l_Period_Record BSC_PERIODS_PUB.Period_Record;
305: l_period_Varray_Record BSC_PERIODS_PUB.Start_End_Period_Varray;
306: x_End_Period VARCHAR2(32000);
307: x_Start_Period VARCHAR2(32000);
308:
309: BEGIN
321: l_Period_Record.period_Varry := l_period_Varray_Record;
322:
323: IF(p_disable_period_val_flag = FND_API.G_FALSE)THEN
324:
325: BSC_PERIODS_PUB.Validate_Periods_Action
326: ( p_Api_Version => p_Api_Version
327: , p_Commit => p_Commit
328: , p_Period_Record => l_Period_Record
329: , p_Action => BSC_PERIODS_UTILITY_PKG.C_UPDATE
379: WHEN NO_DATA_FOUND THEN
380: ROLLBACK TO UpdatePeriodsPubSP;
381: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
382: IF (x_msg_data IS NOT NULL) THEN
383: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Update_Periods ';
384: ELSE
385: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Update_Periods ';
386: END IF;
387: WHEN OTHERS THEN
381: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
382: IF (x_msg_data IS NOT NULL) THEN
383: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Update_Periods ';
384: ELSE
385: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Update_Periods ';
386: END IF;
387: WHEN OTHERS THEN
388: ROLLBACK TO UpdatePeriodsPubSP;
389: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
387: WHEN OTHERS THEN
388: ROLLBACK TO UpdatePeriodsPubSP;
389: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
390: IF (x_msg_data IS NOT NULL) THEN
391: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Update_Periods ';
392: ELSE
393: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Update_Calendar ';
394: END IF;
395: END Update_Periods;
389: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
390: IF (x_msg_data IS NOT NULL) THEN
391: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Update_Periods ';
392: ELSE
393: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Update_Calendar ';
394: END IF;
395: END Update_Periods;
396:
397:
399: /****************************************************************************************/
400: PROCEDURE Delete_Periods
401: ( p_Api_Version IN NUMBER
402: , p_Commit IN VARCHAR2 := FND_API.G_FALSE
403: , p_Period_Record IN BSC_PERIODS_PUB.Period_Record
404: , x_Return_Status OUT NOCOPY VARCHAR2
405: , x_Msg_Count OUT NOCOPY NUMBER
406: , x_Msg_Data OUT NOCOPY VARCHAR2
407: )IS
409: SAVEPOINT DeletePeriodsPubSP;
410: FND_MSG_PUB.Initialize;
411: x_Return_Status := FND_API.G_RET_STS_SUCCESS;
412:
413: BSC_PERIODS_PUB.Validate_Periods_Action
414: ( p_Api_Version => p_Api_Version
415: , p_Commit => p_Commit
416: , p_Period_Record => p_Period_Record
417: , p_Action => BSC_PERIODS_UTILITY_PKG.C_DELETE
465: WHEN NO_DATA_FOUND THEN
466: ROLLBACK TO DeletePeriodsPubSP;
467: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
468: IF (x_msg_data IS NOT NULL) THEN
469: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Delete_Periods ';
470: ELSE
471: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Delete_Periods ';
472: END IF;
473: WHEN OTHERS THEN
467: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
468: IF (x_msg_data IS NOT NULL) THEN
469: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Delete_Periods ';
470: ELSE
471: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Delete_Periods ';
472: END IF;
473: WHEN OTHERS THEN
474: ROLLBACK TO DeletePeriodsPubSP;
475: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
473: WHEN OTHERS THEN
474: ROLLBACK TO DeletePeriodsPubSP;
475: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
476: IF (x_msg_data IS NOT NULL) THEN
477: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Delete_Periods ';
478: ELSE
479: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Delete_Periods ';
480: END IF;
481: END Delete_Periods;
475: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
476: IF (x_msg_data IS NOT NULL) THEN
477: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Delete_Periods ';
478: ELSE
479: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Delete_Periods ';
480: END IF;
481: END Delete_Periods;
482:
483: /***********************************************************************************/
484:
485: PROCEDURE Validate_Periods_Action
486: ( p_Api_Version IN NUMBER
487: , p_Commit IN VARCHAR2 := FND_API.G_FALSE
488: , p_Period_Record IN BSC_PERIODS_PUB.Period_Record
489: , p_Action IN VARCHAR2
490: , x_Start_Period IN VARCHAR2
491: , x_End_Period IN VARCHAR2
492: , x_Return_Status OUT NOCOPY VARCHAR2
536: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
537: WHEN NO_DATA_FOUND THEN
538: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
539: IF (x_msg_data IS NOT NULL) THEN
540: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Validate_Periods_Action ';
541: ELSE
542: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Validate_Periods_Action ';
543: END IF;
544: WHEN OTHERS THEN
538: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
539: IF (x_msg_data IS NOT NULL) THEN
540: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Validate_Periods_Action ';
541: ELSE
542: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Validate_Periods_Action ';
543: END IF;
544: WHEN OTHERS THEN
545: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
546: IF (x_msg_data IS NOT NULL) THEN
543: END IF;
544: WHEN OTHERS THEN
545: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
546: IF (x_msg_data IS NOT NULL) THEN
547: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Validate_Periods_Action ';
548: ELSE
549: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Validate_Periods_Action ';
550: END IF;
551: END Validate_Periods_Action;
545: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
546: IF (x_msg_data IS NOT NULL) THEN
547: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Validate_Periods_Action ';
548: ELSE
549: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Validate_Periods_Action ';
550: END IF;
551: END Validate_Periods_Action;
552: /****************************************************************************************/
553:
560: , x_Msg_Count OUT NOCOPY NUMBER
561: , x_Msg_Data OUT NOCOPY VARCHAR2
562: ) IS
563: BEGIN
564: BSC_PERIODS_PUB.Create_Periodicity_View
565: (
566: p_Periodicity_Id => p_Periodicity_Id
567: , p_Short_Name => p_Short_Name
568: , p_Calendar_Id => p_Calendar_Id
614: --view creation part for those periodicities. but we want the view name. This is required for the bug#5654559
615:
616: IF((p_periodicity_Type IS NULL AND l_Period_DB_Col IS NOT NULL) OR (p_periodicity_Type IS NOT NULL AND (
617: p_periodicity_Type NOT IN
618: (BSC_PERIODS_PUB.C_MONTH_DAY,BSC_PERIODS_PUB.C_MONTH_WEEK)))) THEN
619: IF (l_Period_DB_Col = BSC_PERIODS_UTILITY_PKG.C_YEAR_COLUMN) THEN
620: l_Sql_Stmt := ' CREATE OR REPLACE VIEW ' || x_Periodicity_View_Name||'(ID,VALUE,START_DATE,END_DATE) AS '||
621: ' SELECT C.YEAR,C.YEAR, ' ||
622: ' MIN(TO_DATE(C.CALENDAR_YEAR||''-''||C.CALENDAR_MONTH||''-''||C.CALENDAR_DAY, ''YYYY-MM-DD'')) START_DATE, ' ||
654: , p_count => x_msg_count
655: , p_data => x_msg_data
656: );
657: IF (x_msg_data IS NOT NULL) THEN
658: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Create_Periodicity_View ';
659: ELSE
660: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Create_Periodicity_View ';
661: END IF;
662: END Create_Periodicity_View;
656: );
657: IF (x_msg_data IS NOT NULL) THEN
658: x_msg_data := x_msg_data||' -> BSC_PERIODS_PUB.Create_Periodicity_View ';
659: ELSE
660: x_msg_data := SQLERRM||' at BSC_PERIODS_PUB.Create_Periodicity_View ';
661: END IF;
662: END Create_Periodicity_View;
663: /*************************************************************************************/
664: PROCEDURE Drop_Periodicity_View
741: /*************************************************************************************/
742:
743:
744:
745: END BSC_PERIODS_PUB;