86: x_return_status );
87: END IF;
88:
89:
90: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
91:
92: IF p_action_flag = 'I' THEN /* Insertion of a record */
93:
94: INSERT_BANK_BALANCE ( p_balance_rec, x_return_status);
101:
102: DELETE_BANK_BALANCE( l_balance_rec, x_return_status);
103:
104: ELSE
105: x_return_status := FND_API.G_RET_STS_ERROR;
106: LOG_ERR_MSG('XTR_INV_PARAM','ACTION_FLAG');
107:
108: END IF;
109:
111:
112:
113: IF (p_action_flag in ('I','U') )THEN
114:
115: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
116: UPDATE_BANK_ACCOUNT ( p_balance_rec.company_code,
117: p_balance_rec.account_number,
118: p_balance_rec.balance_date ,
119: p_action_flag ,
124: END IF;
125:
126: IF (p_action_flag in ('D') )THEN
127:
128: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
129: UPDATE_BANK_ACCOUNT ( l_balance_rec.company_code,
130: l_balance_rec.account_number,
131: l_balance_rec.balance_date ,
132: 'D' ,
146: p_balance_rec.statement_balance+p_balance_rec.balance_adjustment,
147: p_balance_rec.balance_cflow,
148: 'D',
149: x_return_status );
150: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
151: DELETE_BANK_BALANCE( p_balance_rec, x_return_status);
152: END IF;
153: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
154: UPDATE_BANK_ACCOUNT ( p_balance_rec.company_code,
149: x_return_status );
150: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
151: DELETE_BANK_BALANCE( p_balance_rec, x_return_status);
152: END IF;
153: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
154: UPDATE_BANK_ACCOUNT ( p_balance_rec.company_code,
155: p_balance_rec.account_number,
156: p_balance_rec.balance_date ,
157: 'D' ,
157: 'D' ,
158: x_return_status );
159:
160: END IF;
161: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
162: VALIDATE_BANK_BALANCE(
163: p_balance_rec.company_code,
164: p_balance_rec.account_number,
165: p_balance_rec.balance_date,
168: p_balance_rec.balance_cflow,
169: 'I',
170: x_return_status );
171: END IF;
172: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
173: INSERT_BANK_BALANCE( p_balance_rec, x_return_status);
174: END IF;
175: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
176: UPDATE_BANK_ACCOUNT ( p_balance_rec.company_code,
171: END IF;
172: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
173: INSERT_BANK_BALANCE( p_balance_rec, x_return_status);
174: END IF;
175: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
176: UPDATE_BANK_ACCOUNT ( p_balance_rec.company_code,
177: p_balance_rec.account_number,
178: p_balance_rec.balance_date ,
179: 'I',
192:
193: EXCEPTION
194:
195: WHEN others THEN
196: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
197: LOG_ERR_MSG ('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
198:
199: FND_MSG_PUB.Count_And_Get -- Returns the error message if there is only 1 error
200: ( p_count => x_msg_count ,
284: p_balance_date);
285:
286: else
287: close c_conc_cashpool_id;
288: x_return_status := FND_API.G_RET_STS_SUCCESS;
289:
290: end if;
291:
292:
298:
299: EXCEPTION
300:
301: WHEN others THEN
302: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
303: LOG_ERR_MSG ('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
304:
305: FND_MSG_PUB.Count_And_Get -- Returns the error message if there is only 1 error
306: ( p_count => x_msg_count ,
420:
421:
422:
423: BEGIN
424: -- x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
425: x_return_status := FND_API.G_RET_STS_SUCCESS;
426: OPEN PREV_DETAILS;
427: FETCH PREV_DETAILS INTO l_prv_date,l_prv_bal,l_int_bf,l_prv_rate,l_prv_accrual_int,
428: l_prv_rounding_type, l_prv_day_count_type;
421:
422:
423: BEGIN
424: -- x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
425: x_return_status := FND_API.G_RET_STS_SUCCESS;
426: OPEN PREV_DETAILS;
427: FETCH PREV_DETAILS INTO l_prv_date,l_prv_bal,l_int_bf,l_prv_rate,l_prv_accrual_int,
428: l_prv_rounding_type, l_prv_day_count_type;
429: IF PREV_DETAILS%NOTFOUND THEN
581:
582: ELSE
583: CLOSE BANK_ACCT_DETAILS;
584: LOG_ERR_MSG('XTR_INV_PARAM', p_balance_rec.ce_bank_account_balance_id);
585: x_return_status := FND_API.G_RET_STS_ERROR;
586:
587: END IF;
588:
589: EXCEPTION
588:
589: EXCEPTION
590:
591: WHEN others THEN
592: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
593: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
594:
595: END INSERT_BANK_BALANCE ;
596:
615: l_ce_bank_acct_bal_id xtr_bank_balances.ce_bank_account_balance_id%TYPE;
616:
617:
618: BEGIN
619: --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
620: x_return_status := FND_API.G_RET_STS_SUCCESS;
621: OPEN c_chk_lock;
622: FETCH c_chk_lock INTO l_ce_bank_acct_bal_id;
623: IF c_chk_lock%FOUND THEN
616:
617:
618: BEGIN
619: --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
620: x_return_status := FND_API.G_RET_STS_SUCCESS;
621: OPEN c_chk_lock;
622: FETCH c_chk_lock INTO l_ce_bank_acct_bal_id;
623: IF c_chk_lock%FOUND THEN
624:
647: IF C_CHK_LOCK%ISOPEN THEN
648: CLOSE C_CHK_LOCK;
649: END IF;
650: LOG_ERR_MSG('CHK_LOCK');
651: x_return_status := FND_API.G_RET_STS_ERROR;
652: WHEN others THEN
653: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
654: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
655:
649: END IF;
650: LOG_ERR_MSG('CHK_LOCK');
651: x_return_status := FND_API.G_RET_STS_ERROR;
652: WHEN others THEN
653: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
654: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
655:
656: END UPDATE_BANK_BALANCE;
657:
713: FOR UPDATE NOWAIT;
714:
715:
716: BEGIN
717: --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
718: x_return_status := FND_API.G_RET_STS_SUCCESS;
719: OPEN c_chk_acct_lock;
720: FETCH c_chk_acct_lock INTO l_ce_bank_acct_bal_id;
721: IF c_chk_acct_lock%FOUND THEN
714:
715:
716: BEGIN
717: --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
718: x_return_status := FND_API.G_RET_STS_SUCCESS;
719: OPEN c_chk_acct_lock;
720: FETCH c_chk_acct_lock INTO l_ce_bank_acct_bal_id;
721: IF c_chk_acct_lock%FOUND THEN
722:
780: CLOSE C_CHK_DDA_LOCK;
781: END IF;
782:
783: LOG_ERR_MSG('CHK_LOCK');
784: x_return_status := FND_API.G_RET_STS_ERROR;
785:
786:
787: WHEN others THEN
788:
786:
787: WHEN others THEN
788:
789: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
790: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
791:
792: END DELETE_BANK_BALANCE;
793:
794:
858:
859:
860: BEGIN
861:
862: x_return_status := FND_API.G_RET_STS_SUCCESS;
863:
864: OPEN c_portfolio;
865: FETCH c_portfolio INTO l_portfolio_code, l_currency,l_bank_code, l_pricing_model, l_ce_bank_account_id ;
866:
870: IF p_action_flag IN ( 'I' , 'U') THEN
871:
872: IF p_action_flag = 'I' AND (l_portfolio_code Is null) THEN
873: -- Checking whether the portfolio code exists for the bank account
874: x_return_status := FND_API.G_RET_STS_ERROR;
875: LOG_ERR_MSG ( 'XTR_PORTFOLIO');
876: END IF;
877:
878: CLOSE c_portfolio;
878: CLOSE c_portfolio;
879:
880: -- Checking whether the balance date is greater than sysdate
881: IF p_balance_date > sysdate THEN
882: x_return_status := FND_API.G_RET_STS_ERROR;
883: LOG_ERR_MSG ( 'XTR_104');
884: END IF;
885:
886: -- Checking whether an interest schedule is assigned to the bank account
889: fetch c_int_schedule into l_int_schedule_id ;
890: close c_int_schedule ;
891:
892: If l_int_schedule_id is Null Then
893: x_return_status := FND_API.G_RET_STS_ERROR;
894: LOG_ERR_MSG ( 'CE_NO_SCHED_BANK_ACCT');
895: End If ;
896:
897: -- Checking whether the pricing model is authorised
898: If l_pricing_model Is Not Null Then
899: OPEN c_pm_authorized;
900: FETCH c_pm_authorized into l_authorised;
901: if c_pm_authorized%NOTFOUND then
902: x_return_status := FND_API.G_RET_STS_ERROR;
903: LOG_ERR_MSG ( 'XTR_INV_PRICING_MODEL');
904: end if;
905: close c_pm_authorized;
906: End If ;
908: -- Checking the balance does not exist for the date being entered by the user
909: OPEN c_duplicate_date;
910: FETCH c_duplicate_date INTO l_duplicate;
911: IF c_duplicate_date%FOUND AND p_action_flag = 'I' THEN
912: x_return_status := FND_API.G_RET_STS_ERROR;
913: LOG_ERR_MSG ( 'XTR_1237');
914: END IF;
915: CLOSE c_duplicate_date;
916: -- Checking for interest includes/ interest rounding
914: END IF;
915: CLOSE c_duplicate_date;
916: -- Checking for interest includes/ interest rounding
917: IF ((NOT CHK_ROUNDING_CHANGE ( p_company_code ,p_account_number ,p_balance_date )) AND p_interest_calc_balance IS NOT NULL) THEN
918: x_return_status := FND_API.G_RET_STS_ERROR;
919: LOG_ERR_MSG ( 'XTR_TYPES_CHANGED');
920: END IF;
921:
922: -- Checking for revaluations
931: 'E');
932:
933:
934: IF nvl(l_return_error, 'XXX') = 'XTR_CA_REVAL_DONE' THEN
935: x_return_status := FND_API.G_RET_STS_ERROR;
936: LOG_ERR_MSG ( 'XTR_CA_REVAL_DONE');
937: ELSIF nvl(l_return_error, 'XXX') = 'XTR_REVAL_ACCRL_DATE' THEN
938: x_return_status := FND_API.G_RET_STS_ERROR;
939: LOG_ERR_MSG ( 'XTR_REVAL_ACCRL_DATE',p_balance_date);
934: IF nvl(l_return_error, 'XXX') = 'XTR_CA_REVAL_DONE' THEN
935: x_return_status := FND_API.G_RET_STS_ERROR;
936: LOG_ERR_MSG ( 'XTR_CA_REVAL_DONE');
937: ELSIF nvl(l_return_error, 'XXX') = 'XTR_REVAL_ACCRL_DATE' THEN
938: x_return_status := FND_API.G_RET_STS_ERROR;
939: LOG_ERR_MSG ( 'XTR_REVAL_ACCRL_DATE',p_balance_date);
940: ELSIF nvl(l_return_error, 'XXX') = 'XTR_BANK_REVAL_DONE' THEN
941: x_return_status := FND_API.G_RET_STS_ERROR;
942: LOG_ERR_MSG ( 'XTR_BANK_REVAL_DONE',p_balance_date);
937: ELSIF nvl(l_return_error, 'XXX') = 'XTR_REVAL_ACCRL_DATE' THEN
938: x_return_status := FND_API.G_RET_STS_ERROR;
939: LOG_ERR_MSG ( 'XTR_REVAL_ACCRL_DATE',p_balance_date);
940: ELSIF nvl(l_return_error, 'XXX') = 'XTR_BANK_REVAL_DONE' THEN
941: x_return_status := FND_API.G_RET_STS_ERROR;
942: LOG_ERR_MSG ( 'XTR_BANK_REVAL_DONE',p_balance_date);
943: END IF;
944:
945:
954: p_action_flag,
955: 'E');
956:
957: IF nvl(l_return_error, 'XXX') = 'XTR_BANK_ACCRLS_EXIST' THEN
958: x_return_status := FND_API.G_RET_STS_ERROR;
959: LOG_ERR_MSG ( 'XTR_BANK_ACCRLS_EXIST',p_balance_date);
960:
961: ELSIF nvl(l_return_error, 'XXX') = 'XTR_REVAL_ACCRL_DATE' THEN
962: x_return_status := FND_API.G_RET_STS_ERROR;
958: x_return_status := FND_API.G_RET_STS_ERROR;
959: LOG_ERR_MSG ( 'XTR_BANK_ACCRLS_EXIST',p_balance_date);
960:
961: ELSIF nvl(l_return_error, 'XXX') = 'XTR_REVAL_ACCRL_DATE' THEN
962: x_return_status := FND_API.G_RET_STS_ERROR;
963: LOG_ERR_MSG ( 'XTR_REVAL_ACCRL_DATE',p_balance_date);
964: END IF;
965:
966: ELSIF p_action_flag = 'D' THEN
970:
971: -- Checking for interest includes/ interest rounding
972:
973: IF ((NOT CHK_ROUNDING_CHANGE( p_company_code ,p_account_number ,p_balance_date )) AND p_interest_calc_balance IS NOT NULL) THEN
974: x_return_status := FND_API.G_RET_STS_ERROR;
975: LOG_ERR_MSG ( 'XTR_CHANGED_DAYCOUNT_ROUND');
976: END IF;
977:
978: -- Checking for revaluations
985: 'D',
986: 'E');
987:
988: IF nvl(l_return_error, 'XXX') = 'XTR_ACCT_DELETE' THEN
989: x_return_status := FND_API.G_RET_STS_ERROR;
990: LOG_ERR_MSG ( 'XTR_ACCT_DELETE');
991: END IF;
992:
993:
1001: 'D',
1002: 'E');
1003:
1004: IF nvl(l_return_error, 'XXX') = 'XTR_DEAL_ACCRLS_EXIST' THEN
1005: x_return_status := FND_API.G_RET_STS_ERROR;
1006: LOG_ERR_MSG ( 'XTR_DEAL_ACCRLS_EXIST',p_balance_date);
1007: END IF;
1008:
1009: END IF ; -- p_action_flag
1011: EXCEPTION
1012: WHEN others THEN
1013:
1014: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
1015: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1016:
1017: END VALIDATE_BANK_BALANCE;
1018:
1019:
1040: l_balance_rec XTR_BANK_BALANCES%ROWTYPE;
1041:
1042: BEGIN
1043:
1044: x_return_status := FND_API.G_RET_STS_SUCCESS;
1045: l_balance_date_updated := FALSE;
1046: FND_MSG_PUB.Initialize;
1047: IF(p_action_flag in ('U','D')) THEN
1048:
1098: p_available_balance,
1099: 'D',
1100: x_return_status );
1101:
1102: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1103: VALIDATE_BANK_BALANCE(
1104: p_company_code,
1105: p_account_number,
1106: p_balance_date,
1122:
1123: EXCEPTION
1124:
1125: WHEN others THEN
1126: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1127: LOG_ERR_MSG ('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
1128:
1129: FND_MSG_PUB.Count_And_Get -- Returns the error message if there is only 1 error
1130: ( p_count => x_msg_count ,
1445: AND COMPANY_CODE = P_COMPANY_CODE);
1446:
1447: BEGIN
1448:
1449: x_return_status := FND_API.G_RET_STS_SUCCESS; -- Added Bug 4546183
1450: OPEN C_ACCT_DETAILS;
1451: FETCH C_ACCT_DETAILS INTO l_ccy,l_portfolio_code, l_bank_code;
1452: CLOSE C_ACCT_DETAILS;
1453:
1955:
1956:
1957: BEGIN
1958:
1959: x_return_status := FND_API.G_RET_STS_SUCCESS;
1960:
1961: OPEN c_old_types;
1962: FETCH c_old_types INTO l_old_rounding_type, l_old_day_count_type,l_party_code,l_account_number;
1963: CLOSE c_old_types;
2026: IF C_CHK_LOCK%ISOPEN THEN
2027: CLOSE C_CHK_LOCK;
2028: END IF;
2029: LOG_ERR_MSG('CHK_LOCK');
2030: x_return_status := FND_API.G_RET_STS_ERROR;
2031: WHEN others THEN
2032: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2033: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
2034:
2028: END IF;
2029: LOG_ERR_MSG('CHK_LOCK');
2030: x_return_status := FND_API.G_RET_STS_ERROR;
2031: WHEN others THEN
2032: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2033: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
2034:
2035: END UPDATE_ROUNDING_DAYCOUNT;
2036:
2182: p_balance_cflow,
2183: p_action_flag,
2184: 'W');
2185: IF nvl(l_return_error, '$$$') = 'XTR_DEALS_BEFORE_REVAL' THEN
2186: x_return_status := FND_API.G_RET_STS_ERROR;
2187: LOG_ERR_MSG ( 'XTR_DEALS_BEFORE_REVAL',p_balance_date);
2188: END IF;
2189:
2190: l_return_error := chk_accrual(l_company_code,
2196: p_action_flag,
2197: 'W');
2198:
2199: IF nvl(l_return_error, '$$$') = 'XTR_DEALS_BEFORE_ACCRUAL' THEN
2200: x_return_status := FND_API.G_RET_STS_ERROR;
2201: LOG_ERR_MSG ( 'XTR_DEALS_BEFORE_ACCRUAL',p_balance_date);
2202: END IF;
2203:
2204: ELSE
2202: END IF;
2203:
2204: ELSE
2205: CLOSE c_bank_acct_details;
2206: x_return_status := FND_API.G_RET_STS_ERROR;
2207: LOG_ERR_MSG('XTR_INV_PARAM','ACTION_FLAG');
2208: END IF;
2209:
2210: FND_MSG_PUB.Count_And_Get -- Returns the error message if there is only 1 error
2214:
2215: EXCEPTION
2216:
2217: WHEN others THEN
2218: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2219: LOG_ERR_MSG('XTR_UNEXP_ERROR',SQLERRM(SQLCODE));
2220: FND_MSG_PUB.Count_And_Get -- Returns the error message if there is only 1 error
2221: ( p_count => x_msg_count ,
2222: p_data => x_msg_data