67: p_code_combination_id IN NUMBER,
68: p_startdate_pp IN DATE,
69: p_enddate_cy IN DATE,
70: p_create_budget_account IN VARCHAR2,
71: p_worksheet_id IN NUMBER := FND_API.G_MISS_NUM,
72: p_return_code OUT NOCOPY NUMBER,
73: p_budget_group_id OUT NOCOPY NUMBER
74: ) ;
75:
83:
84: PROCEDURE Validate_Account
85: (
86: p_api_version IN NUMBER,
87: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
88: p_commit IN VARCHAR2 := FND_API.G_FALSE,
89: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
90: p_return_status OUT NOCOPY VARCHAR2,
91: p_msg_count OUT NOCOPY NUMBER,
84: PROCEDURE Validate_Account
85: (
86: p_api_version IN NUMBER,
87: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
88: p_commit IN VARCHAR2 := FND_API.G_FALSE,
89: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
90: p_return_status OUT NOCOPY VARCHAR2,
91: p_msg_count OUT NOCOPY NUMBER,
92: p_msg_data OUT NOCOPY VARCHAR2,
85: (
86: p_api_version IN NUMBER,
87: p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
88: p_commit IN VARCHAR2 := FND_API.G_FALSE,
89: p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
90: p_return_status OUT NOCOPY VARCHAR2,
91: p_msg_count OUT NOCOPY NUMBER,
92: p_msg_data OUT NOCOPY VARCHAR2,
93: --
95: p_startdate_pp IN DATE,
96: p_enddate_cy IN DATE,
97: p_set_of_books_id IN NUMBER,
98: p_flex_code IN NUMBER,
99: p_create_budget_account IN VARCHAR2 := FND_API.G_FALSE,
100: p_concatenated_segments IN VARCHAR2 := FND_API.G_MISS_CHAR,
101: p_worksheet_id IN NUMBER := FND_API.G_MISS_NUM,
102: p_in_ccid IN NUMBER := FND_API.G_MISS_NUM,
103: p_out_ccid OUT NOCOPY NUMBER,
96: p_enddate_cy IN DATE,
97: p_set_of_books_id IN NUMBER,
98: p_flex_code IN NUMBER,
99: p_create_budget_account IN VARCHAR2 := FND_API.G_FALSE,
100: p_concatenated_segments IN VARCHAR2 := FND_API.G_MISS_CHAR,
101: p_worksheet_id IN NUMBER := FND_API.G_MISS_NUM,
102: p_in_ccid IN NUMBER := FND_API.G_MISS_NUM,
103: p_out_ccid OUT NOCOPY NUMBER,
104: p_budget_group_id OUT NOCOPY NUMBER
97: p_set_of_books_id IN NUMBER,
98: p_flex_code IN NUMBER,
99: p_create_budget_account IN VARCHAR2 := FND_API.G_FALSE,
100: p_concatenated_segments IN VARCHAR2 := FND_API.G_MISS_CHAR,
101: p_worksheet_id IN NUMBER := FND_API.G_MISS_NUM,
102: p_in_ccid IN NUMBER := FND_API.G_MISS_NUM,
103: p_out_ccid OUT NOCOPY NUMBER,
104: p_budget_group_id OUT NOCOPY NUMBER
105: )
98: p_flex_code IN NUMBER,
99: p_create_budget_account IN VARCHAR2 := FND_API.G_FALSE,
100: p_concatenated_segments IN VARCHAR2 := FND_API.G_MISS_CHAR,
101: p_worksheet_id IN NUMBER := FND_API.G_MISS_NUM,
102: p_in_ccid IN NUMBER := FND_API.G_MISS_NUM,
103: p_out_ccid OUT NOCOPY NUMBER,
104: p_budget_group_id OUT NOCOPY NUMBER
105: )
106: IS
140:
141: --
142: SAVEPOINT Validate_Account_Pvt ;
143: -- Standard call to check for call compatibility.
144: IF not FND_API.Compatible_API_Call (l_api_version,
145: p_api_version,
146: l_api_name,
147: G_PKG_NAME)
148: THEN
145: p_api_version,
146: l_api_name,
147: G_PKG_NAME)
148: THEN
149: raise FND_API.G_EXC_UNEXPECTED_ERROR;
150: END IF;
151: --
152:
153: IF FND_API.to_Boolean ( p_init_msg_list ) THEN
149: raise FND_API.G_EXC_UNEXPECTED_ERROR;
150: END IF;
151: --
152:
153: IF FND_API.to_Boolean ( p_init_msg_list ) THEN
154: FND_MSG_PUB.initialize ;
155: END IF;
156: --
157: p_return_status := FND_API.G_RET_STS_SUCCESS ;
153: IF FND_API.to_Boolean ( p_init_msg_list ) THEN
154: FND_MSG_PUB.initialize ;
155: END IF;
156: --
157: p_return_status := FND_API.G_RET_STS_SUCCESS ;
158:
159: -- Call Flex API and get ccid
160:
161: IF p_in_ccid = FND_API.G_MISS_NUM THEN
157: p_return_status := FND_API.G_RET_STS_SUCCESS ;
158:
159: -- Call Flex API and get ccid
160:
161: IF p_in_ccid = FND_API.G_MISS_NUM THEN
162:
163: IF p_concatenated_segments = FND_API.G_MISS_CHAR THEN
164: FND_MESSAGE.Set_Name('PSB', 'PSB_INVALID_ARGUMENT');
165: FND_MESSAGE.Set_Token('ROUTINE', 'PSB_VALIDATE_ACCT_PVT.Validate_Account');
159: -- Call Flex API and get ccid
160:
161: IF p_in_ccid = FND_API.G_MISS_NUM THEN
162:
163: IF p_concatenated_segments = FND_API.G_MISS_CHAR THEN
164: FND_MESSAGE.Set_Name('PSB', 'PSB_INVALID_ARGUMENT');
165: FND_MESSAGE.Set_Token('ROUTINE', 'PSB_VALIDATE_ACCT_PVT.Validate_Account');
166: FND_MSG_PUB.Add;
167: RAISE FND_API.G_EXC_ERROR;
163: IF p_concatenated_segments = FND_API.G_MISS_CHAR THEN
164: FND_MESSAGE.Set_Name('PSB', 'PSB_INVALID_ARGUMENT');
165: FND_MESSAGE.Set_Token('ROUTINE', 'PSB_VALIDATE_ACCT_PVT.Validate_Account');
166: FND_MSG_PUB.Add;
167: RAISE FND_API.G_EXC_ERROR;
168: END IF;
169:
170: l_ccid := FND_FLEX_EXT.Get_CCID
171: (application_short_name => 'SQLGL',
176:
177: IF l_ccid = 0 then
178: FND_MESSAGE.Set_Name('PSB', 'PSB_INVALID_CC');
179: FND_MSG_PUB.Add;
180: RAISE FND_API.G_EXC_ERROR ;
181: END IF;
182:
183:
184: ELSE
212: /* Bug 3692601 Start */
213: FND_MESSAGE.Set_Token('ACCOUNT', l_concat_segments);
214: /* Bug 3692601 End */
215: FND_MSG_PUB.Add;
216: RAISE FND_API.G_EXC_ERROR ;
217: end if;
218: end loop;
219: END IF;
220: /*For Bug No : 2715705 End*/
240: RETURN;
241: ELSIF l_return_code = 1 THEN
242: FND_MESSAGE.Set_Name('PSB', 'PSB_INVALID_BG_CC');
243: FND_MSG_PUB.Add;
244: RAISE FND_API.G_EXC_ERROR ;
245: END IF;
246:
247: -- Return code status is 2 - CCID does not exist in Budget Accounts Table
248:
268: RETURN;
269: ELSIF l_return_code = 1 THEN
270: FND_MESSAGE.Set_Name('PSB', 'PSB_INVALID_BG_CC');
271: FND_MSG_PUB.Add;
272: RAISE FND_API.G_EXC_ERROR ;
273: END IF;
274:
275: EXCEPTION
276: --
273: END IF;
274:
275: EXCEPTION
276: --
277: WHEN FND_API.G_EXC_ERROR THEN
278: --
279: ROLLBACK TO Validate_Account_Pvt ;
280: p_return_status := FND_API.G_RET_STS_ERROR;
281: FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
276: --
277: WHEN FND_API.G_EXC_ERROR THEN
278: --
279: ROLLBACK TO Validate_Account_Pvt ;
280: p_return_status := FND_API.G_RET_STS_ERROR;
281: FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
282: p_data => p_msg_data );
283: --
284: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
280: p_return_status := FND_API.G_RET_STS_ERROR;
281: FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
282: p_data => p_msg_data );
283: --
284: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
285: --
286: ROLLBACK TO Validate_Account_Pvt ;
287: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
288: FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
283: --
284: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
285: --
286: ROLLBACK TO Validate_Account_Pvt ;
287: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
288: FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
289: p_data => p_msg_data );
290: --
291: WHEN OTHERS THEN
290: --
291: WHEN OTHERS THEN
292: --
293: ROLLBACK TO Validate_Account_Pvt ;
294: p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
295: --
296: IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
297: FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
298: l_api_name);
325:
326: -- Returns the specific budget group the ccid belongs to.
327: -- This is valid only if p_return_code is 0
328:
329: l_cc_in_ba_flag := FND_API.G_FALSE;
330: FOR ba_rec IN
331: (select 1 from PSB_BUDGET_ACCOUNTS
332: where code_combination_id = p_code_combination_id)
333: LOOP
330: FOR ba_rec IN
331: (select 1 from PSB_BUDGET_ACCOUNTS
332: where code_combination_id = p_code_combination_id)
333: LOOP
334: l_cc_in_ba_flag := FND_API.G_TRUE;
335: EXIT;
336: END LOOP;
337:
338: IF l_cc_in_ba_flag = FND_API.G_FALSE THEN
334: l_cc_in_ba_flag := FND_API.G_TRUE;
335: EXIT;
336: END LOOP;
337:
338: IF l_cc_in_ba_flag = FND_API.G_FALSE THEN
339: p_return_code := 2; --ccid doesn't exist in Budget Accounts Table
340: RETURN;
341: END IF;
342:
341: END IF;
342:
343: -- ccid is in the budget accounts table
344: -- now check if it belongs to the budget group
345: l_cc_in_bg_flag := FND_API.G_FALSE;
346: p_budget_group_id := 0;
347: FOR ba_rec IN
348: (
349: select sr.budget_group_id
361: and ba.code_combination_id = p_code_combination_id
362: )
363: LOOP
364: p_budget_group_id := ba_rec.budget_group_id;
365: l_cc_in_bg_flag := FND_API.G_TRUE;
366: --dbms_output.put.line('found ccid in bg');
367: EXIT;
368: END LOOP;
369:
366: --dbms_output.put.line('found ccid in bg');
367: EXIT;
368: END LOOP;
369:
370: IF l_cc_in_bg_flag = FND_API.G_TRUE THEN
371: p_return_code := 0; -- CCID exists and belongs to the budget group
372: ELSE
373: p_return_code := 1; -- CCID exists and does not belong to the budget group
374: END IF;
388: p_code_combination_id IN NUMBER,
389: p_startdate_pp IN DATE,
390: p_enddate_cy IN DATE,
391: p_create_budget_account IN VARCHAR2,
392: p_worksheet_id IN NUMBER := FND_API.G_MISS_NUM,
393: p_return_code OUT NOCOPY NUMBER,
394: p_budget_group_id OUT NOCOPY NUMBER
395: )
396: IS
468:
469: -- Find active segments for the chart of accounts
470: -- this is used by Check Range
471: IF NOT Get_Active_Segments( p_flex_code ) THEN
472: raise FND_API.G_EXC_UNEXPECTED_ERROR;
473: END IF;
474:
475: l_cc_in_bg_flag := FND_API.G_FALSE;
476:
471: IF NOT Get_Active_Segments( p_flex_code ) THEN
472: raise FND_API.G_EXC_UNEXPECTED_ERROR;
473: END IF;
474:
475: l_cc_in_bg_flag := FND_API.G_FALSE;
476:
477: -- Get account position sets for the budget group using set relations
478: FOR l_set_rec IN
479: (
496: IF Check_APS(l_set_rec.account_position_set_id,
497: p_code_combination_id
498: ) THEN
499:
500: l_cc_in_bg_flag := FND_API.G_TRUE;
501: p_budget_group_id := l_set_rec.budget_group_id;
502:
503: -- create record in budget accounts table only if flag is on
504: IF p_create_budget_account = FND_API.G_TRUE then
500: l_cc_in_bg_flag := FND_API.G_TRUE;
501: p_budget_group_id := l_set_rec.budget_group_id;
502:
503: -- create record in budget accounts table only if flag is on
504: IF p_create_budget_account = FND_API.G_TRUE then
505:
506: INSERT INTO psb_budget_accounts(
507: account_position_set_id,
508: set_of_books_id,
531: END LOOP;
532:
533:
534: -- Include CCID in Position or Non Position APS found on Root Budget Group
535: IF l_cc_in_bg_flag = FND_API.G_TRUE THEN
536:
537: -- Get the Root Budget Group for the Budget Group
538: FOR l_bg_rec IN
539: (
558: p_code_combination_id
559: ) THEN
560:
561: -- create record in budget accounts table only if flag is on
562: IF p_create_budget_account = FND_API.G_TRUE then
563:
564: INSERT INTO psb_budget_accounts(
565: account_position_set_id,
566: set_of_books_id,
588:
589: -- Added on May 29, 1999
590: -- Add CCIDs for Account Position Sets that belong the Allocation set assigned
591: -- to the Worksheet
592: IF l_cc_in_bg_flag = FND_API.G_TRUE and ( p_worksheet_id <> FND_API.G_MISS_NUM ) THEN
593:
594: FOR alloc_aps_rec IN
595: (
596: SELECT worksheet_id, w.allocrule_set_id , sr.account_position_set_id,
620: p_code_combination_id
621: ) THEN
622:
623: -- create record in budget accounts table only if flag is on
624: IF p_create_budget_account = FND_API.G_TRUE then
625:
626: INSERT INTO psb_budget_accounts(
627: account_position_set_id,
628: set_of_books_id,
654:
655:
656:
657:
658: IF l_cc_in_bg_flag = FND_API.G_TRUE THEN
659: p_return_code := 0;
660: ELSE
661: p_return_code := 1;
662: END IF;
674: p_code_combination_id IN NUMBER
675: )
676: RETURN BOOLEAN IS
677:
678: l_excluded_flag VARCHAR2(1) := FND_API.G_FALSE;
679: l_included_flag VARCHAR2(1) := FND_API.G_FALSE;
680:
681: BEGIN
682: -- First check exclusion
675: )
676: RETURN BOOLEAN IS
677:
678: l_excluded_flag VARCHAR2(1) := FND_API.G_FALSE;
679: l_included_flag VARCHAR2(1) := FND_API.G_FALSE;
680:
681: BEGIN
682: -- First check exclusion
683:
693:
694: IF Check_Account_Line(l_line_e_rec.line_sequence_id,
695: p_code_combination_id
696: ) THEN
697: l_excluded_flag := FND_API.G_TRUE;
698: EXIT; -- if it is excluded, no need to proceed
699: END IF;
700:
701: END LOOP;
700:
701: END LOOP;
702:
703: -- Check for Inclusion only if it is not excluded
704: IF l_excluded_flag = FND_API.G_FALSE then
705: FOR l_line_i_rec IN
706: (
707: SELECT line_sequence_id, include_or_exclude_type
708: FROM psb_account_position_set_lines
713: --
714: IF Check_Account_Line(l_line_i_rec.line_sequence_id,
715: p_code_combination_id
716: ) THEN
717: l_included_flag := FND_API.G_TRUE;
718:
719: EXIT; -- if it is included, no need to proceed
720: END IF;
721:
721:
722: END LOOP;
723: END IF;
724:
725: IF l_included_flag = FND_API.G_TRUE THEN
726: RETURN TRUE;
727: ELSE
728: RETURN FALSE;
729: END IF;