9: G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
10: G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
11: G_LINES_PER_FETCH CONSTANT NUMBER := 1000;
12:
13: G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14: G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
15: G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
16: G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17: G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
10: G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
11: G_LINES_PER_FETCH CONSTANT NUMBER := 1000;
12:
13: G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14: G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
15: G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
16: G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17: G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
18: G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
11: G_LINES_PER_FETCH CONSTANT NUMBER := 1000;
12:
13: G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14: G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
15: G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
16: G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17: G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
18: G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
19: G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
12:
13: G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14: G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
15: G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
16: G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17: G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
18: G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
19: G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
20: G_MODULE_NAME CONSTANT VARCHAR2(80) := 'AP_BANK_CHARGE_PKG';
13: G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
14: G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
15: G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
16: G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17: G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
18: G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
19: G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
20: G_MODULE_NAME CONSTANT VARCHAR2(80) := 'AP_BANK_CHARGE_PKG';
21:
14: G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
15: G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
16: G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17: G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
18: G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
19: G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
20: G_MODULE_NAME CONSTANT VARCHAR2(80) := 'AP_BANK_CHARGE_PKG';
21:
22: PROCEDURE get_bank_number(
15: G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
16: G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
17: G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
18: G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
19: G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
20: G_MODULE_NAME CONSTANT VARCHAR2(80) := 'AP_BANK_CHARGE_PKG';
21:
22: PROCEDURE get_bank_number(
23: P_bank_name IN VARCHAR2,
34: BEGIN
35:
36: l_debug_info := 'Getting the Bank Number';
37: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
38: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
39: END IF;
40:
41: OPEN C_bank(P_bank_name);
42: FETCH C_bank INTO P_bank_number;
56: BEGIN
57:
58: l_debug_info := 'Getting Bank Branch Info';
59: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
60: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
61: END IF;
62:
63: select bank_number, branch_number, bank_branch_name
64: into P_bank_number, P_branch_number, P_branch_name
101: begin
102:
103: l_debug_info := 'Checking Bank Combination';
104: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
105: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
106: END IF;
107:
108: unique_check := 0;
109: if (P_transferring_bank_branch_id is NULL) then
112: if (P_receiving_bank = 'ONE') then
113: /*1A1A*/
114: l_debug_info := '*1A1A*';
115: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
116: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
117: END IF;
118: select count(*) into unique_check
119: from ap_bank_charges
120: where transferring_bank_name = P_transferring_bank_name
125: and currency_code = P_currency_code;
126: else /*1AAA*/
127: l_debug_info := '*1AAA*';
128: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
129: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
130: END IF;
131:
132: select count(*) into unique_check
133: from ap_bank_charges
142: if (P_receiving_bank = 'ONE') then
143: /*AA1A*/
144: l_debug_info := '*AA1A*';
145: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
146: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
147: END IF;
148:
149: select count(*) into unique_check
150: from ap_bank_charges
156: and currency_code = P_currency_code;
157: else /*AAAA*/
158: l_debug_info := '*AAAA*';
159: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
160: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
161: END IF;
162:
163: select count(*) into unique_check
164: from ap_bank_charges
173: else /*1A11*/
174: if (P_transferring_bank = 'ONE') then
175: l_debug_info := '*1A11*';
176: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
177: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
178: END IF;
179:
180: select count(*) into unique_check
181: from ap_bank_charges
188: and receiving_bank_name = P_receiving_bank_name ;
189: else /*AA11*/
190: l_debug_info := '*AA11*';
191: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
192: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
193: END IF;
194:
195: select count(*) into unique_check
196: from ap_bank_charges
207: /* 11A1 */
208: if (P_receiving_bank = 'ONE') then
209: l_debug_info := '*11A1*';
210: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
211: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
212: END IF;
213:
214: select count(*) into unique_check
215: from ap_bank_charges
222: and transferring_bank_name = P_transferring_bank_name;
223: else
224: l_debug_info := '*111A*';
225: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
226: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
227: END IF;
228: select count(*) into unique_check
229: from ap_bank_charges
230: where transferring_bank_branch_id = P_transferring_bank_branch_id
237: end if/*P_receiving_bank_branch_id*/;
238: else /*1111*/
239: l_debug_info := '*1111*';
240: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
241: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
242: END IF;
243:
244: select count(*) into unique_check
245: from ap_bank_charges
300: BEGIN
301:
302: l_debug_info := 'Checking Amount Range Overlap';
303: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
304: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
305: END IF;
306:
307: overlap :=0;
308: OPEN C_lines(X_bank_charge_id);
314: EXIT WHEN C_lines%NOTFOUND;
315:
316: l_debug_info := 'Checking Whether any Amount Overlap exists';
317: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
318: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
319: END IF;
320:
321: select count(*) INTO overlap
322: from ap_bank_charge_lines
377: BEGIN
378:
379: l_debug_info := 'Checking Amount Range Gap';
380: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
381: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
382: END IF;
383:
384: gap :=0;
385: zero_check :=0;
392: EXIT WHEN C_lines%NOTFOUND;
393:
394: l_debug_info := 'Checking whether Amount Range Gap exists';
395: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
396: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
397: END IF;
398:
399: if (v_trans_amount_from <> 0) then
400: select count(*) INTO gap
457: BEGIN
458:
459: l_debug_info := 'Checking Amount Last Range ';
460: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
461: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
462: END IF;
463:
464: cursor_check := 0;
465: OPEN C_lines(X_bank_charge_id);
468: EXIT WHEN C_lines%NOTFOUND;
469:
470: l_debug_info := 'Checking whether it is Amount Last Range ';
471: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
472: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
473: END IF;
474:
475: cursor_check := 1;
476: select trans_amount_from into v_trans_amount_from
486:
487: if SQL%FOUND then
488: l_debug_info := 'Amount Last Range Found ';
489: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
490: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
491: END IF;
492:
493: select max(trans_amount_to)
494: into v_trans_amount_to
657: BEGIN
658:
659: l_debug_info := 'Get Bank Charge Begin';
660: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
661: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
662: END IF;
663:
664: v_precision := 0;
665: P_bank_charge_id := 0;
673: (P_transfer_priority is null) then
674:
675: l_debug_info := 'Opening cursor for transferring bank info';
676: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
677: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
678: END IF;
679: OPEN C_get_bank_name(P_transferring_bank_branch_id);
680: FETCH C_get_bank_name INTO P_transferring_bank_name;
681: CLOSE C_get_bank_name;
681: CLOSE C_get_bank_name;
682:
683: l_debug_info := 'Opening cursor for receiving bank info';
684: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
685: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
686: END IF;
687: OPEN C_get_bank_name(P_receiving_bank_branch_id);
688: FETCH C_get_bank_name INTO P_receiving_bank_name;
689: CLOSE C_get_bank_name;
689: CLOSE C_get_bank_name;
690:
691: l_debug_info := 'Opening cursor for charge header';
692: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
693: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
694: END IF;
695:
696: l_debug_info := 'Parameters for charge header -- P_transferring_bank_branch_id -- '||to_char(P_transferring_bank_branch_id)
697: ||' P_transferring_bank_name -- '||to_char(P_transferring_bank_name)||' P_receiving_bank_branch_id -- '||
697: ||' P_transferring_bank_name -- '||to_char(P_transferring_bank_name)||' P_receiving_bank_branch_id -- '||
698: to_char(P_receiving_bank_branch_id)||' P_receiving_bank_name -- '||to_char(P_receiving_bank_name)||
699: ' P_transfer_priority -- '||to_char(P_transfer_priority)||' P_currency_code -- '||to_char(P_currency_code);
700: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
701: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
702: END IF;
703:
704: OPEN C_CHARGE_HEADER(
705: P_transferring_bank_branch_id,
709: P_transfer_priority,
710: P_currency_code);
711: l_debug_info := 'Opened cursor for charge header';
712: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
713: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
714: END IF;
715:
716: LOOP
717: FETCH C_CHARGE_HEADER INTO
727: v_transfer_priority,
728: v_currency_code;
729: l_debug_info := 'fetch cursor for charge header -- 1';
730: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
731: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
732: END IF;
733:
734: EXIT WHEN C_CHARGE_HEADER%NOTFOUND;
735:
734: EXIT WHEN C_CHARGE_HEADER%NOTFOUND;
735:
736: l_debug_info := 'fetch cursor for charge header -- 2';
737: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
738: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
739: END IF;
740:
741: if((P_bank_charge_bearer is not null) and
742: (v_transfer_priority <>'AR')) or
809: END LOOP;
810: CLOSE C_CHARGE_HEADER;
811: l_debug_info := 'close cursor for charge header - p_bank_charge_id '||to_char(P_bank_charge_id);
812: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
813: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
814: END IF;
815:
816: if (P_bank_charge_id <>0) then
817: /**************************************************************/
821: /* N: Supplier/Negotiated */
822:
823: l_debug_info := 'Bank Charge Id exits';
824: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
825: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
826: END IF;
827:
828: if(P_transaction_amount is NULL) then
829: v_transaction_amount := 0;
834: ((P_bank_charge_bearer is null)and
835: (P_transfer_priority is null)) then
836: l_debug_info := 'Bank Charge Bearer is I';
837: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
838: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
839: END IF;
840:
841: SELECT bank_charge_standard,
842: bank_charge_negotiated,
856: (P_bank_charge_bearer = 'N') then
857:
858: l_debug_info := 'Bank Charge Bearer is not I';
859: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
860: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
861: END IF;
862:
863: OPEN C_CHARGE_LINE(P_bank_charge_id,
864: P_transaction_date);
918: CLOSE C_CHARGE_LINE;
919: if (amount_bank_charge <0) then
920: l_debug_info := 'amount_bank_charge is negative - '||to_char(amount_bank_charge);
921: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
922: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
923: END IF;
924:
925: RAISE NO_BANK_CHARGES;
926: end if;
926: end if;
927: else
928: l_debug_info := 'P_bank_charge_bearer is not valid - '||to_char(P_bank_charge_bearer);
929: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
930: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
931: END IF;
932:
933: RAISE NO_BANK_CHARGES;
934: end if;
934: end if;
935: else
936: l_debug_info := 'P_bank_charge_id is not valid - '||to_char(P_bank_charge_id);
937: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
938: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
939: END IF;
940:
941: NULL;
942: -- RAISE NO_BANK_CHARGES; bug8253986
944: else
945: l_debug_info := 'P_bank_charge_bearer is null - '||to_char(P_bank_charge_bearer)||
946: ' or P_transfer_priority is not null -- '||to_char(P_transfer_priority);
947: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
948: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
949: END IF;
950:
951: RAISE NO_BANK_CHARGES;
952: end if;
1098: BEGIN
1099:
1100: l_debug_info := 'Check Bank Charge Begin';
1101: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1102: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1103: END IF;
1104:
1105: v_precision := 0;
1106: P_bank_charge_id := 0;
1113: if (P_bank_charge_bearer is not null) or
1114: (P_transfer_priority is null) then
1115: l_debug_info := 'Opening Cursor for transferring bank info';
1116: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1117: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1118: END IF;
1119:
1120: OPEN C_get_bank_name(P_transferring_bank_branch_id);
1121: FETCH C_get_bank_name INTO P_transferring_bank_name;
1122: CLOSE C_get_bank_name;
1123:
1124: l_debug_info := 'Opening Cursor for receiving bank info';
1125: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1126: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1127: END IF;
1128:
1129: OPEN C_get_bank_name(P_receiving_bank_branch_id);
1130: FETCH C_get_bank_name INTO P_receiving_bank_name;
1131: CLOSE C_get_bank_name;
1132:
1133: l_debug_info := 'Opening Charge Header Cursor';
1134: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1135: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1136: END IF;
1137:
1138: l_debug_info := 'Parameters for charge header 1 -- P_transferring_bank_branch_id -- '||to_char(P_transferring_bank_branch_id)
1139: ||' P_transferring_bank_name -- '||to_char(P_transferring_bank_name)||' P_receiving_bank_branch_id -- '||
1139: ||' P_transferring_bank_name -- '||to_char(P_transferring_bank_name)||' P_receiving_bank_branch_id -- '||
1140: to_char(P_receiving_bank_branch_id)||' P_receiving_bank_name -- '||to_char(P_receiving_bank_name)||
1141: ' P_transfer_priority -- '||to_char(P_transfer_priority)||' P_currency_code -- '||to_char(P_currency_code);
1142: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1143: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1144: END IF;
1145:
1146: OPEN C_CHARGE_HEADER(
1147: P_transferring_bank_branch_id,
1152: P_currency_code);
1153:
1154: l_debug_info := 'Opened charge header cursor';
1155: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1156: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1157: END IF;
1158:
1159: LOOP
1160: FETCH C_CHARGE_HEADER INTO
1171: v_currency_code;
1172:
1173: l_debug_info := 'Fetched data from C_charge_header';
1174: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1175: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1176: END IF;
1177:
1178: EXIT WHEN C_CHARGE_HEADER%NOTFOUND;
1179:
1249: CLOSE C_CHARGE_HEADER;
1250:
1251: l_debug_info := 'P_BANK_CHARGE_ID EXISTS -- '||to_char(P_bank_charge_id);
1252: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1253: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1254: END IF;
1255:
1256: if (P_bank_charge_id <>0) then
1257: /**************************************************************/
1261: /* N: Supplier/Negotiated */
1262:
1263: l_debug_info := 'Bank Charge Id exits';
1264: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1265: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1266: END IF;
1267:
1268: if(P_transaction_amount is NULL) then
1269: v_transaction_amount := 0;
1274: ((P_bank_charge_bearer is null)and
1275: (P_transfer_priority is null)) then
1276: l_debug_info := 'Bank Charge Bearer is I';
1277: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1278: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1279: END IF;
1280:
1281: SELECT bank_charge_standard,
1282: bank_charge_negotiated,
1297: (P_bank_charge_bearer = 'N') then
1298:
1299: l_debug_info := 'Bank Charge Bearer is not I';
1300: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1301: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1302: END IF;
1303:
1304:
1305: OPEN C_CHARGE_LINE(P_bank_charge_id,
1340: end if;
1341: else
1342: l_debug_info := 'P_bank_charge_bearer is not valid - '||to_char(P_bank_charge_bearer);
1343: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1344: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1345: END IF;
1346:
1347:
1348: RAISE NO_BANK_CHARGES;
1350: else
1351:
1352: l_debug_info := 'P_bank_charge_id is not valid - '||to_char(P_bank_charge_id);
1353: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1354: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1355: END IF;
1356:
1357: P_check_bc_flag := 'Y';
1358: -- RAISE NO_BANK_CHARGES; bug8253986
1361:
1362: l_debug_info := 'P_bank_charge_bearer is null - '||to_char(P_bank_charge_bearer)||
1363: ' or P_transfer_priority is not null -- '||to_char(P_transfer_priority);
1364: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1365: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1366: END IF;
1367:
1368: RAISE NO_BANK_CHARGES;
1369: end if;
1408: BEGIN
1409:
1410: current_calling_sequence := 'bank_charge_get_info<-'||P_calling_sequence;
1411: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1412: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,current_calling_sequence);
1413: END IF;
1414:
1415: l_debug_info := 'Get bank charge bearer from po vendor sites';
1416: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1413: END IF;
1414:
1415: l_debug_info := 'Get bank charge bearer from po vendor sites';
1416: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1417: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1418: END IF;
1419:
1420: -- Bug7014739. Added nvl.
1421: IF p_supplier_site_id IS NOT NULL THEN
1428: END IF;
1429:
1430: l_debug_info := 'Get p_transferring_bank_branch_id';
1431: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1432: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1433: END IF;
1434:
1435: SELECT ABA.bank_branch_id
1436: INTO p_transferring_bank_branch_id
1438: WHERE aba.bank_account_id = p_internal_bank_account_id;
1439:
1440: l_debug_info := 'Get p_receiving_bank_branch_id';
1441: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1442: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1443: END IF;
1444:
1445: if p_external_bank_account_id is not null then
1446:
1452: end if;
1453:
1454: l_debug_info := 'Get transfer_priority and currency code';
1455: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1456: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1457: END IF;
1458:
1459: /* Commented for bug#12769134 Start
1460: SELECT AISC.transfer_priority
1477: /* Added for bug#12769134 End */
1478:
1479: l_debug_info := 'Get number of invoices for this check';
1480: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1481: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1482: END IF;
1483:
1484: SELECT count(*)
1485: INTO p_num_of_invoices
1487: WHERE payment_id = p_selected_check_id;
1488:
1489: l_debug_info := 'Get min_account_unit and precision for currency';
1490: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1491: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1492: END IF;
1493:
1494: SELECT minimum_accountable_unit,
1495: nvl(precision, 0)
1637: -------------------------------------------------------------------------
1638:
1639: l_debug_info := 'Creating Savepoint';
1640: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1641: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1642: END IF;
1643:
1644: -- Standard Start of API savepoint
1645: SAVEPOINT AP_JAPANBANKCHARGEHOOK;
1645: SAVEPOINT AP_JAPANBANKCHARGEHOOK;
1646:
1647: l_debug_info := 'Checking API Compatibility';
1648: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1649: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1650: END IF;
1651:
1652: -- Standard call to check for call compatibility.
1653: IF NOT FND_API.Compatible_API_Call (l_api_version,
1664: END IF;
1665:
1666: l_debug_info := 'Calling AP Void Pkg.Iby_Void_Check';
1667: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1668: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1669: END IF;
1670:
1671: -- Initialize API return status to success
1672: x_return_status := FND_API.G_RET_STS_SUCCESS;
1682: LOOP
1683:
1684: l_debug_info := 'Fetch selected_checks Cursor';
1685: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1686: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1687: END IF;
1688:
1689:
1690: FETCH selected_checks
1709: -- Step 2, Call Bank_charge_get_info for each check
1710: -------------------------------------------------------
1711: l_debug_info := 'Call Bank_charge_get_info';
1712: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1713: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1714: END IF;
1715:
1716:
1717: IF (bank_charge_get_info(
1730: l_supplier_site_id) <> TRUE) THEN
1731: x_msg_data := 'Failed to derive transferring/receiving bank/branch info';
1732: l_debug_info := 'Failed to derive transferring/receiving bank/branch info';
1733: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1734: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1735: END IF;
1736: RAISE bank_charge_failure;
1737: END IF;
1738:
1741: -- Step 3, Call Bank_charge_get_amt_due for each check
1742: -------------------------------------------------------
1743: l_debug_info := 'Call Bank_charge_get_amt_due';
1744: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1745: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1746: END IF;
1747:
1748:
1749: IF (bank_charge_get_amt_due(l_selected_check_id,
1751: current_calling_sequence) <> TRUE) THEN
1752: x_msg_data := 'Failed to derive bank charge amount due';
1753: l_debug_info := 'Failed to derive bank charge amount due';
1754: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1755: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1756: END IF;
1757: RAISE bank_charge_failure;
1758: END IF;
1759:
1770: -- Step 4.1
1771: -----------
1772: l_debug_info := 'Check all the mandatory parameters for ap_bank_charge_pkg.check_bank_charge';
1773: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1774: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1775: END IF;
1776:
1777: IF (l_bank_charge_bearer IS NULL OR
1778: l_transfer_priority IS NULL OR
1781: l_payment_date IS NULL) THEN
1782: x_msg_data := 'Can not call Check_Bank_Charge function because of mandatory parameter';
1783: l_debug_info := 'Can not call Check_Bank_Charge function because of mandatory parameter';
1784: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1785: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1786: END IF;
1787: RAISE bank_charge_failure;
1788:
1789: END IF;
1791: -- Step 4.2
1792: ------------
1793: l_debug_info := 'Call ap_bank_charge_pkg.check_bank_charge';
1794: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1795: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1796: END IF;
1797:
1798: CHECK_BANK_CHARGE(
1799: l_bank_charge_bearer,
1836: -------------------------------------------------
1837: if (NVL(l_bc_ok_to_pay_flag,'Y') = 'N') then
1838: l_debug_info := 'Update iby_hook_payments_t if ok_to_pay_flag is N';
1839: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1840: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1841: END IF;
1842:
1843: UPDATE iby_hook_payments_t
1844: SET payment_amount = 0,
1870: -- Step 5.1
1871: -----------
1872: l_debug_info := 'Check all the mandatory parameters for ap_bank_charge_pkg.get_bank_charge';
1873: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1874: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1875: END IF;
1876:
1877:
1878: IF (l_bank_charge_bearer IS NULL OR
1888: -- Step 5.2
1889: -----------
1890: l_debug_info := 'Call ap_bank_charge_pkg.get_bank_charge';
1891: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1892: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1893: END IF;
1894:
1895:
1896: GET_BANK_CHARGE(
1937: -- Step 6, Get the best deal for bank charge
1938: -------------------------------------------------------------
1939: l_debug_info := 'Get the best bank charge';
1940: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1941: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1942: END IF;
1943:
1944:
1945: IF (l_bank_charge_bearer = 'S') then
1964: -- 2, subtract the bank charge amount from the check amount
1965: ----------------------------------------------------------
1966: l_debug_info := 'Update iby_hook_payments_t';
1967: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1968: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1969: END IF;
1970:
1971: UPDATE iby_hook_payments_t
1972: SET DISCOUNT_AMOUNT_TAKEN= l_best_bank_charge,
1983: -- payment_amount and proposed_payment_amount
1984: ----------------------------------------------------------
1985: l_debug_info := 'Update iby_hook_docs_in_pmt_t';
1986: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1987: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1988: END IF;
1989:
1990:
1991: UPDATE iby_hook_docs_in_pmt_t
2023: -- for all invoices and the new check_amount
2024: ----------------------------------------------------------
2025: l_debug_info := 'Calculate the rounding error';
2026: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2027: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2028: END IF;
2029:
2030:
2031: /*Bug7394744 Changed query to make sure rounding amount is calculated properly*/
2040: -- proposed_payment_amount of the first invoice
2041: ----------------------------------------------------------
2042: l_debug_info := 'Fix rounding error';
2043: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2044: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2045: END IF;
2046:
2047: IF (l_rounding_error <> 0) then
2048:
2143: END LOOP;
2144:
2145: l_debug_info := 'Close selected_checks Cursor';
2146: IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2147: FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
2148: END IF;
2149:
2150:
2151: CLOSE selected_checks;