[Home] [Help]
15: PROCEDURE Create_Local_Dist_Pvt
16: (
17: p_account_line_id IN psb_ws_lines.account_line_id%TYPE ,
18: p_new_worksheet_id IN psb_worksheets.worksheet_id%TYPE ,
19: p_new_position_line_id IN psb_ws_lines_positions.position_line_id%TYPE ,
20: p_return_status OUT NOCOPY VARCHAR2
21: ) ;
22:
23: PROCEDURE Insert_WS_Lines_Pvt
827: --
828: END LOOP;
829:
830: --
831: -- Maintain psb_ws_lines_positions table if worksheet contains positions.
832: --
833: IF l_budget_by_position = 'Y' THEN
834:
835: --
833: IF l_budget_by_position = 'Y' THEN
834:
835: --
836: -- This loop gets all the position for the given worksheet. To maintain
837: -- psb_ws_lines_positions matrix table for the new worksheet, we will
838: -- consider all the positions falling in the given table of position sets.
839: --
840: FOR l_lines_pos_rec IN
841: (
840: FOR l_lines_pos_rec IN
841: (
842: SELECT pos_lines.* ,
843: pos.position_id
844: FROM psb_ws_lines_positions pos_lines ,
845: psb_ws_position_lines pos
846: WHERE pos_lines.worksheet_id = p_worksheet_id
847: AND pos.position_line_id = pos_lines.position_line_id
848: AND (
1298: END LOOP;
1299: --
1300:
1301: --
1302: -- Maintain psb_ws_lines_positions table if worksheet contains positions.
1303: -- ( This also means the worksheet includes position budgeting. )
1304: --
1305: IF l_budget_by_position = 'Y' THEN
1306:
1305: IF l_budget_by_position = 'Y' THEN
1306:
1307: --
1308: -- This loop gets all the position_line_id for the new worksheet which will
1309: -- be used to maintain psb_ws_lines_positions table.
1310: --
1311: FOR l_lines_rec IN
1312: (
1313: SELECT lines.*
1310: --
1311: FOR l_lines_rec IN
1312: (
1313: SELECT lines.*
1314: FROM psb_ws_lines_positions lines ,
1315: psb_ws_position_lines pos
1316: WHERE lines.worksheet_id = p_worksheet_id
1317: AND lines.position_line_id = pos.position_line_id
1318: /*For Bug No : 2236283 Start*/
1361: /*For Bug No : 2236283 End*/
1362: )
1363: LOOP
1364: --
1365: -- Put the position_line_id in the psb_ws_lines_positions table for
1366: -- the new worksheet.
1367: --
1368: PSB_WS_Pos_Pvt.Create_Position_Matrix
1369: (
1471: l_budget_by_position psb_worksheets.budget_by_position%TYPE ;
1472: l_worksheet_description psb_worksheets.description%TYPE ;
1473: l_main_budget_group_name psb_budget_groups.name%TYPE ;
1474: l_new_worksheet_id psb_worksheets.worksheet_id%TYPE ;
1475: l_new_position_line_id psb_ws_lines_positions.position_line_id%TYPE ;
1476: l_new_fte_line_id psb_ws_fte_lines.fte_line_id%TYPE ;
1477: l_new_element_line_id psb_ws_element_lines.element_line_id%TYPE ;
1478: l_new_position_assignment_id
1479: psb_position_assignments.position_assignment_id%TYPE ;
1671:
1672: FOR l_lines_pos_rec IN
1673: (
1674: SELECT positions.*
1675: FROM psb_ws_lines_positions lines ,
1676: psb_ws_position_lines positions
1677: WHERE lines.worksheet_id = p_worksheet_id
1678: AND lines.position_line_id = positions.position_line_id
1679: )
1679: )
1680: LOOP
1681:
1682: --
1683: -- API creates records in psb_ws_lines_positions and
1684: -- psb_ws_position_lines for the new worksheet.
1685: --
1686: PSB_WS_Pos_Pvt.Create_Position_Lines
1687: (
2065: l_target_freeze_flag psb_worksheets.freeze_flag%TYPE ;
2066: l_target_local_copy_flag psb_worksheets.local_copy_flag%TYPE ;
2067: l_target_current_stage_seq psb_worksheets.current_stage_seq%TYPE ;
2068: l_target_account_line_id psb_ws_account_lines.account_line_id%TYPE ;
2069: l_target_position_line_id psb_ws_lines_positions.position_line_id%TYPE;
2070: l_target_position_id psb_ws_position_lines.position_id%TYPE;
2071: --
2072: l_new_position_line_id psb_ws_lines_positions.position_line_id%TYPE;
2073: l_new_fte_line_id psb_ws_fte_lines.fte_line_id%TYPE ;
2068: l_target_account_line_id psb_ws_account_lines.account_line_id%TYPE ;
2069: l_target_position_line_id psb_ws_lines_positions.position_line_id%TYPE;
2070: l_target_position_id psb_ws_position_lines.position_id%TYPE;
2071: --
2072: l_new_position_line_id psb_ws_lines_positions.position_line_id%TYPE;
2073: l_new_fte_line_id psb_ws_fte_lines.fte_line_id%TYPE ;
2074: l_new_element_line_id psb_ws_element_lines.element_line_id%TYPE ;
2075: l_new_position_assignment_id
2076: psb_position_assignments.position_assignment_id%TYPE ;
2420:
2421: FOR l_lines_pos_rec IN
2422: (
2423: SELECT positions.*
2424: FROM psb_ws_lines_positions lines ,
2425: psb_ws_position_lines positions
2426: WHERE lines.worksheet_id = p_source_worksheet_id
2427: AND lines.position_line_id = positions.position_line_id
2428:
2440: IF ( l_ws_position_lines_csr%NOTFOUND ) THEN
2441: --
2442: -- It means a new line was created in the p_source_worksheet_id.
2443: -- Putting this line in the p_target_worksheet_id. The API will
2444: -- also maintain psb_ws_lines_positions.
2445: --
2446: PSB_WS_Pos_Pvt.Create_Position_Lines
2447: (
2448: p_api_version => 1.0 ,
4210: +===========================================================================*/
4211: --
4212: -- This API adds a given position line to a worksheet. The addition is
4213: -- propagated to all the higher worksheets. The operation is performed only
4214: -- on the psb_ws_lines_positions table.
4215: --
4216: PROCEDURE Add_Worksheet_Position_Line
4217: (
4218: p_api_version IN NUMBER ,
4238: --
4239: CURSOR l_ws_lines_positions_csr
4240: IS
4241: SELECT *
4242: FROM psb_ws_lines_positions
4243: WHERE position_line_id = p_position_line_id ;
4244: --
4245: l_ws_lines_positions_row_type
4246: l_ws_lines_positions_csr%ROWTYPE ;
4454: --
4455: CURSOR l_ws_lines_positions_csr
4456: IS
4457: SELECT *
4458: FROM psb_ws_lines_positions
4459: WHERE position_line_id = p_position_line_id ;
4460: --
4461: l_ws_lines_positions_row_type l_ws_lines_positions_csr%ROWTYPE ;
4462: --
4739:
4740:
4741: IF l_budget_by_position = 'Y' THEN
4742: --
4743: -- Update freeze_flag in psb_ws_lines_positions.
4744: --
4745: UPDATE psb_ws_lines_positions
4746: SET freeze_flag = p_freeze_flag
4747: WHERE worksheet_id = p_worksheet_id;
4741: IF l_budget_by_position = 'Y' THEN
4742: --
4743: -- Update freeze_flag in psb_ws_lines_positions.
4744: --
4745: UPDATE psb_ws_lines_positions
4746: SET freeze_flag = p_freeze_flag
4747: WHERE worksheet_id = p_worksheet_id;
4748: --
4749: END IF;
4972: WHERE l_target_stage_seq > current_stage_seq
4973: AND end_stage_seq is null
4974: AND position_line_id IN
4975: ( SELECT position_line_id
4976: FROM psb_ws_lines_positions
4977: WHERE worksheet_id = p_worksheet_id ) ;
4978:
4979: --
4980: -- Update all the lines in psb_ws_element_lines as no service package
4985: WHERE l_target_stage_seq > current_stage_seq
4986: AND end_stage_seq is null
4987: AND position_line_id IN
4988: ( SELECT position_line_id
4989: FROM psb_ws_lines_positions
4990: WHERE worksheet_id = p_worksheet_id ) ;
4991: --
4992: END IF;
4993:
5022: WHERE l_target_stage_seq > current_stage_seq
5023: AND end_stage_seq is null
5024: AND position_line_id IN
5025: ( SELECT position_line_id
5026: FROM psb_ws_lines_positions
5027: WHERE worksheet_id = p_worksheet_id
5028: )
5029: AND service_package_id IN
5030: ( SELECT service_package_id
5041: WHERE l_target_stage_seq > current_stage_seq
5042: AND end_stage_seq is null
5043: AND position_line_id IN
5044: ( SELECT position_line_id
5045: FROM psb_ws_lines_positions
5046: WHERE worksheet_id = p_worksheet_id
5047: )
5048: AND service_package_id IN
5049: ( SELECT service_package_id
5679: l_target_global_worksheet_id psb_worksheets.worksheet_id%TYPE ;
5680: --
5681: l_budget_calendar_id psb_worksheets.budget_calendar_id%TYPE ;
5682: l_ws_lines_rec psb_ws_lines%ROWTYPE ;
5683: l_ws_lines_positions_rec psb_ws_lines_positions%ROWTYPE ;
5684: /* Bug No 2378285 Start */
5685: l_gl_cutoff_period DATE;
5686: /* Bug No 2378285 End */
5687:
5905: --
5906: FOR l_lines_pos_rec IN
5907: (
5908: SELECT lines.position_line_id
5909: FROM psb_ws_lines_positions lines ,
5910: psb_ws_position_lines pos
5911: WHERE lines.worksheet_id = p_source_worksheet_id
5912: AND lines.position_line_id = pos.position_line_id
5913: /*For Bug No : 2236283 Start*/
5951: )
5952: /*For Bug No : 2236283 End*/
5953: MINUS
5954: SELECT position_line_id
5955: FROM psb_ws_lines_positions
5956: WHERE worksheet_id = p_target_worksheet_id
5957: )
5958: LOOP
5959:
5957: )
5958: LOOP
5959:
5960: SELECT * INTO l_ws_lines_positions_rec
5961: FROM psb_ws_lines_positions
5962: WHERE worksheet_id = p_source_worksheet_id
5963: AND position_line_id = l_lines_pos_rec.position_line_id ;
5964:
5965: --
6043: PROCEDURE Create_Local_Dist_Pvt
6044: (
6045: p_account_line_id IN psb_ws_lines.account_line_id%TYPE ,
6046: p_new_worksheet_id IN psb_worksheets.worksheet_id%TYPE ,
6047: p_new_position_line_id IN psb_ws_lines_positions.position_line_id%TYPE ,
6048: p_return_status OUT NOCOPY VARCHAR2
6049: )
6050: IS
6051: --
6286: | PROCEDURE Delete_Worksheet_Pvt ( Private ) |
6287: +===========================================================================*/
6288: --
6289: -- This API deletes an official worksheet by performing deletes on
6290: -- psb_worksheets and matrix tables (psb_ws_lines and psb_ws_lines_positions).
6291: -- It also deletes worksheet related data from other tables.
6292: --
6293: PROCEDURE Delete_Worksheet_Pvt
6294: (
6301: --
6302: l_api_name CONSTANT VARCHAR2(30) := 'Delete_Worksheet_Pvt' ;
6303: --
6304: l_account_line_id psb_ws_lines.account_line_id%TYPE;
6305: l_position_line_id psb_ws_lines_positions.position_line_id%TYPE ;
6306: l_local_copy_flag psb_worksheets.local_copy_flag%TYPE;
6307: l_budget_by_position psb_worksheets.budget_by_position%TYPE ;
6308: l_return_status VARCHAR2(1) ;
6309: /*For Bug No : 2266309 Start*/
6319:
6320: CURSOR l_ws_position_lines_csr
6321: IS
6322: SELECT position_line_id
6323: FROM psb_ws_lines_positions
6324: WHERE worksheet_id = p_worksheet_id;
6325:
6326: BEGIN
6327: /*For Bug No : 2266309 Start*/
6429: SAVEPOINT Delete_Worksheet_Pvt;
6430: /*For Bug No : 2266309 End*/
6431:
6432: --
6433: -- Delete worksheet related position lines from psb_ws_lines_positions
6434: -- ( Position Matrix).
6435: --
6436: IF p_budget_by_position = 'Y' THEN
6437: --
6434: -- ( Position Matrix).
6435: --
6436: IF p_budget_by_position = 'Y' THEN
6437: --
6438: DELETE psb_ws_lines_positions
6439: WHERE worksheet_id = p_worksheet_id ;
6440: --
6441: /*For Bug No : 2266309 Start*/
6442: COMMIT WORK;
6818: WHERE worksheet_id = p_worksheet_id
6819: AND operation_id = NVL( p_service_package_operation_id ,
6820: FND_API.G_MISS_NUM ) ;
6821: --
6822: -- Maintain psb_ws_lines_positions table if worksheet contains positions.
6823: --
6824: IF l_budget_by_position = 'Y' THEN
6825:
6826: --
6830: FOR l_lines_pos_rec IN
6831: (
6832: SELECT pos_lines.* ,
6833: pos.position_id
6834: FROM psb_ws_lines_positions pos_lines ,
6835: psb_ws_position_lines pos ,
6836: psb_positions positions
6837: WHERE pos_lines.worksheet_id = p_worksheet_id
6838: AND pos.position_line_id = pos_lines.position_line_id