441:
442: PROCEDURE set_proc_error_message (p_proc IN VARCHAR2)
443: IS
444: BEGIN
445: okc_api.set_message (p_app_name => g_app_name,
446: p_msg_name => 'OKC_I_ERROR_PROCEDURE',
447: p_token1 => 'PROCEDURE',
448: p_token1_value => p_proc
449: );
451:
452: PROCEDURE set_rec_num_message (p_rec_num IN NUMBER)
453: IS
454: BEGIN
455: okc_api.set_message (p_app_name => g_app_name,
456: p_msg_name => 'OKC_I_RECORD_NUM',
457: p_token1 => 'RECORD_NUM',
458: p_token1_value => p_rec_num
459: );
560: ),
561: p_intent => p_rule_intent
562: ) <> 'Y'
563: THEN
564: okc_api.set_message (p_app_name => g_app_name,
565: p_msg_name => 'OKC_I_INVALID_COND_VALUE',
566: p_token1 => 'ENTITY',
567: p_token1_value => p_object_value_type
568: );
582: p_intent => p_rule_intent,
583: p_question_datatype => 'N'
584: ) <> 'Y'
585: THEN
586: okc_api.set_message (p_app_name => g_app_name,
587: p_msg_name => 'OKC_I_INVALID_COND_VALUE',
588: p_token1 => 'ENTITY',
589: p_token1_value => p_object_value_type
590: );
603: ),
604: p_intent => p_rule_intent
605: ) <> 'Y'
606: THEN
607: okc_api.set_message (p_app_name => g_app_name,
608: p_msg_name => 'OKC_I_INVALID_COND_VALUE',
609: p_token1 => 'ENTITY',
610: p_token1_value => p_object_value_type
611: );
622: (p_variable_code => p_rule_cond_vals_tbl (i).object_value_code,
623: p_intent => p_rule_intent
624: ) <> 'Y'
625: THEN
626: okc_api.set_message (p_app_name => g_app_name,
627: p_msg_name => 'OKC_I_INVALID_COND_VALUE',
628: p_token1 => 'ENTITY',
629: p_token1_value => p_object_value_type
630: );
650: );
651:
652: IF l_value IS NULL
653: THEN
654: okc_api.set_message (p_app_name => g_app_name,
655: p_msg_name => 'OKC_I_INVALID_COND_VALUE',
656: p_token1 => 'ENTITY',
657: p_token1_value => p_object_value_type
658: );
703: l_rec.object_type,
704: TO_NUMBER (l_rec.object_code)
705: ) = 'Y'
706: THEN
707: okc_api.set_message (p_app_name => g_app_name,
708: p_msg_name => 'OKC_XPRT_COND_OUTCOME_ERR'
709: );
710: set_proc_error_message (p_proc => l_proc);
711: RETURN 'N';
721: g_clause,
722: clause_rec.clause_id
723: ) = 'Y'
724: THEN
725: okc_api.set_message
726: (p_app_name => g_app_name,
727: p_msg_name => 'OKC_XPRT_COND_OUTCOME_ERR'
728: );
729: set_proc_error_message (p_proc => l_proc);
788: p_rule_header_rec.status_code := 'DRAFT';
789: p_rule_header_rec.published_flag := 'N';
790: p_rule_header_rec.object_version_number := 1;
791:
792: IF p_rule_header_rec.org_id = okc_api.g_miss_num
793: THEN
794: -- Derive the operating info
795: p_rule_header_rec.org_id := mo_utils.get_default_org_id;
796: END IF;
794: -- Derive the operating info
795: p_rule_header_rec.org_id := mo_utils.get_default_org_id;
796: END IF;
797:
798: -- IF p_rule_header_rec.status_code = OKC_API.G_MISS_CHAR THEN
799: -- END IF;
800: IF p_rule_header_rec.org_wide_flag = okc_api.g_miss_char
801: THEN
802: p_rule_header_rec.org_wide_flag := 'N';
796: END IF;
797:
798: -- IF p_rule_header_rec.status_code = OKC_API.G_MISS_CHAR THEN
799: -- END IF;
800: IF p_rule_header_rec.org_wide_flag = okc_api.g_miss_char
801: THEN
802: p_rule_header_rec.org_wide_flag := 'N';
803: END IF;
804:
801: THEN
802: p_rule_header_rec.org_wide_flag := 'N';
803: END IF;
804:
805: --IF p_rule_header_rec.PUBLISHED_FLAG=OKC_API.G_MISS_CHAR THEN
806: --END IF;
807: IF p_rule_header_rec.line_level_flag = okc_api.g_miss_char
808: THEN
809: p_rule_header_rec.line_level_flag := NULL;
803: END IF;
804:
805: --IF p_rule_header_rec.PUBLISHED_FLAG=OKC_API.G_MISS_CHAR THEN
806: --END IF;
807: IF p_rule_header_rec.line_level_flag = okc_api.g_miss_char
808: THEN
809: p_rule_header_rec.line_level_flag := NULL;
810: END IF;
811:
809: p_rule_header_rec.line_level_flag := NULL;
810: END IF;
811:
812: -- Start Defaulting 'WHO' columns
813: IF p_rule_header_rec.created_by = okc_api.g_miss_num
814: THEN
815: p_rule_header_rec.created_by := fnd_global.user_id;
816: END IF;
817:
814: THEN
815: p_rule_header_rec.created_by := fnd_global.user_id;
816: END IF;
817:
818: IF p_rule_header_rec.creation_date = okc_api.g_miss_date
819: THEN
820: p_rule_header_rec.creation_date := SYSDATE;
821: END IF;
822:
819: THEN
820: p_rule_header_rec.creation_date := SYSDATE;
821: END IF;
822:
823: IF p_rule_header_rec.last_updated_by = okc_api.g_miss_num
824: THEN
825: p_rule_header_rec.last_updated_by := fnd_global.user_id;
826: END IF;
827:
824: THEN
825: p_rule_header_rec.last_updated_by := fnd_global.user_id;
826: END IF;
827:
828: IF p_rule_header_rec.last_update_date = okc_api.g_miss_date
829: THEN
830: p_rule_header_rec.last_update_date := SYSDATE;
831: END IF;
832:
829: THEN
830: p_rule_header_rec.last_update_date := SYSDATE;
831: END IF;
832:
833: IF p_rule_header_rec.last_update_login = okc_api.g_miss_num
834: THEN
835: p_rule_header_rec.last_update_login := fnd_global.login_id;
836: END IF;
837:
874: l_validate_flag VARCHAR2 (1);
875: BEGIN
876: IF p_rule_header_rec.org_id IS NULL
877: THEN
878: okc_api.set_message (p_app_name => g_app_name,
879: p_msg_name => l_okc_i_not_null,
880: p_token1 => l_field,
881: p_token1_value => 'ORG_ID'
882: );
884: END IF;
885:
886: IF p_rule_header_rec.intent IS NULL
887: THEN
888: okc_api.set_message (p_app_name => g_app_name,
889: p_msg_name => l_okc_i_not_null,
890: p_token1 => l_field,
891: p_token1_value => 'INTENT'
892: );
893: RAISE fnd_api.g_exc_error;
894: ELSE
895: IF p_rule_header_rec.intent NOT IN ('B', 'S')
896: THEN
897: okc_api.set_message (p_app_name => g_app_name,
898: p_msg_name => l_okc_i_invalid_value,
899: p_token1 => l_field,
900: p_token1_value => 'INTENT'
901: );
904: END IF;
905:
906: IF p_rule_header_rec.rule_name IS NULL
907: THEN
908: okc_api.set_message (p_app_name => g_app_name,
909: p_msg_name => l_okc_i_not_null,
910: p_token1 => l_field,
911: p_token1_value => 'RULE_NAME'
912: );
922: CLOSE cur_rule_name_exists;
923:
924: IF NVL (l_validate_flag, 'X') = 'Y'
925: THEN
926: okc_api.set_message (p_app_name => g_app_name,
927: p_msg_name => 'OKC_XPRT_RULE_NAME_EXISTS'
928: );
929: RAISE fnd_api.g_exc_error;
930: END IF;
933: END IF;
934:
935: IF p_rule_header_rec.rule_type IS NULL
936: THEN
937: okc_api.set_message (p_app_name => g_app_name,
938: p_msg_name => l_okc_i_not_null,
939: p_token1 => l_field,
940: p_token1_value => 'RULE_TYPE'
941: );
944: -- verify the lookup from OKC_XPRT_RULE_TYPE and execlude the 'All' Type
945: IF p_rule_header_rec.rule_type NOT IN
946: (g_clause_rule_type, g_term_dev_rule_type)
947: THEN
948: okc_api.set_message (p_app_name => g_app_name,
949: p_msg_name => l_okc_i_invalid_value,
950: p_token1 => l_field,
951: p_token1_value => 'RULE_TYPE'
952: );
955: END IF;
956:
957: IF p_rule_header_rec.condition_expr_code IS NULL
958: THEN
959: okc_api.set_message (p_app_name => g_app_name,
960: p_msg_name => l_okc_i_not_null,
961: p_token1 => l_field,
962: p_token1_value => 'CONDITION_EXPR_CODE'
963: );
968: -- ALL -> Match all Conditions => All Conditions must be true
969: -- ANY -> Match Any Condition
970: IF p_rule_header_rec.condition_expr_code NOT IN ('ALL', 'ANY')
971: THEN
972: okc_api.set_message (p_app_name => g_app_name,
973: p_msg_name => l_okc_i_invalid_value,
974: p_token1 => l_field,
975: p_token1_value => 'CONDITION_EXPR_CODE'
976: );
978: END IF;
979: END IF;
980:
981: IF p_rule_header_rec.org_wide_flag NOT IN ('Y' , 'N') THEN
982: okc_api.set_message (p_app_name => g_app_name,
983: p_msg_name => l_okc_i_invalid_value,
984: p_token1 => l_field,
985: p_token1_value => 'ORG_WIDE_FLAG'
986: );
1010: CLOSE cur_val_ou;
1011:
1012: IF NVL (l_validate_flag, 'Y') <> 'X'
1013: THEN
1014: okc_api.set_message (p_app_name => g_app_name,
1015: p_msg_name => l_okc_i_invalid_value,
1016: p_token1 => l_field,
1017: p_token1_value => 'ORG_ID'
1018: );
1166: p_rule_condition_rec IN OUT NOCOPY rule_condition_rec_type
1167: )
1168: IS
1169: BEGIN
1170: IF p_rule_condition_rec.object_type = okc_api.g_miss_char
1171: THEN
1172: p_rule_condition_rec.object_type := NULL;
1173: END IF;
1174:
1171: THEN
1172: p_rule_condition_rec.object_type := NULL;
1173: END IF;
1174:
1175: IF p_rule_condition_rec.object_code = okc_api.g_miss_char
1176: THEN
1177: p_rule_condition_rec.object_code := NULL;
1178: END IF;
1179:
1176: THEN
1177: p_rule_condition_rec.object_code := NULL;
1178: END IF;
1179:
1180: IF p_rule_condition_rec.object_code_datatype = okc_api.g_miss_char
1181: THEN
1182: p_rule_condition_rec.object_code_datatype := NULL;
1183: END IF;
1184:
1181: THEN
1182: p_rule_condition_rec.object_code_datatype := NULL;
1183: END IF;
1184:
1185: IF p_rule_condition_rec.OPERATOR = okc_api.g_miss_char
1186: THEN
1187: p_rule_condition_rec.OPERATOR := NULL;
1188: END IF;
1189:
1186: THEN
1187: p_rule_condition_rec.OPERATOR := NULL;
1188: END IF;
1189:
1190: IF p_rule_condition_rec.object_value_set_name = okc_api.g_miss_char
1191: THEN
1192: p_rule_condition_rec.object_value_set_name := NULL;
1193: END IF;
1194:
1191: THEN
1192: p_rule_condition_rec.object_value_set_name := NULL;
1193: END IF;
1194:
1195: IF p_rule_condition_rec.object_value_type = okc_api.g_miss_char
1196: THEN
1197: p_rule_condition_rec.object_value_type := NULL;
1198: END IF;
1199:
1196: THEN
1197: p_rule_condition_rec.object_value_type := NULL;
1198: END IF;
1199:
1200: IF p_rule_condition_rec.object_value_code = okc_api.g_miss_char
1201: THEN
1202: p_rule_condition_rec.object_value_code := NULL;
1203: END IF;
1204:
1201: THEN
1202: p_rule_condition_rec.object_value_code := NULL;
1203: END IF;
1204:
1205: IF p_rule_condition_rec.object_version_number = okc_api.g_miss_num
1206: THEN
1207: p_rule_condition_rec.object_version_number := 1;
1208: END IF;
1209: END default_rule_condition;
1248:
1249: */
1250: IF p_rule_condition_rec.rule_id IS NULL
1251: THEN
1252: okc_api.set_message (p_app_name => g_app_name,
1253: p_msg_name => l_okc_i_not_null,
1254: p_token1 => l_field,
1255: p_token1_value => 'RULE_ID'
1256: );
1258: END IF;
1259:
1260: IF p_rule_condition_rec.object_type IS NULL
1261: THEN
1262: okc_api.set_message (p_app_name => g_app_name,
1263: p_msg_name => l_okc_i_not_null,
1264: p_token1 => l_field,
1265: p_token1_value => 'OBJECT_TYPE'
1266: );
1269:
1270: IF p_rule_condition_rec.object_type <> 'CLAUSE'
1271: AND p_rule_condition_rec.object_code IS NULL
1272: THEN
1273: okc_api.set_message (p_app_name => g_app_name,
1274: p_msg_name => l_okc_i_not_null,
1275: p_token1 => l_field,
1276: p_token1_value => 'OBJECT_CODE'
1277: );
1281:
1282:
1283: IF p_rule_condition_rec.OPERATOR IS NULL
1284: THEN
1285: okc_api.set_message (p_app_name => g_app_name,
1286: p_msg_name => l_okc_i_not_null,
1287: p_token1 => l_field,
1288: p_token1_value => 'OPERATOR'
1289: );
1292:
1293: IF p_rule_condition_rec.object_type <> 'CLAUSE'
1294: AND p_rule_condition_rec.object_value_type IS NULL
1295: THEN
1296: okc_api.set_message (p_app_name => g_app_name,
1297: p_msg_name => l_okc_i_not_null,
1298: p_token1 => l_field,
1299: p_token1_value => 'OBJECT_VALUE_TYPE'
1300: );
1302: END IF;
1303:
1304: IF NOT (p_rule_condition_rec.rule_cond_vals_tbl.COUNT > 0)
1305: THEN
1306: okc_api.set_message (p_app_name => g_app_name,
1307: p_msg_name => l_okc_i_not_null,
1308: p_token1 => l_field,
1309: p_token1_value => 'RULE_COND_VALS_TBL'
1310: );
1314: IF l_rule_type = g_clause_rule_type
1315: AND p_rule_condition_rec.object_type NOT IN
1316: ('CLAUSE', 'QUESTION', 'VARIABLE')
1317: THEN
1318: okc_api.set_message (p_app_name => g_app_name,
1319: p_msg_name => l_okc_i_invalid_value,
1320: p_token1 => l_field,
1321: p_token1_value => 'OBJECT_TYPE'
1322: );
1326: IF l_rule_type = g_term_dev_rule_type
1327: AND p_rule_condition_rec.object_type NOT IN
1328: ('QUESTION', 'VARIABLE')
1329: THEN
1330: okc_api.set_message (p_app_name => g_app_name,
1331: p_msg_name => l_okc_i_invalid_value,
1332: p_token1 => l_field,
1333: p_token1_value => 'OBJECT_TYPE'
1334: );
1353: INTO l_validate_flag;
1354:
1355: IF c_validate_lookup%NOTFOUND
1356: THEN
1357: okc_api.set_message (p_app_name => g_app_name,
1358: p_msg_name => l_okc_i_invalid_value,
1359: p_token1 => l_field,
1360: p_token1_value => 'OPERATOR'
1361: );
1381: (p_rule_condition_rec.object_code),
1382: p_intent => l_rule_intent
1383: ) <> 'Y'
1384: THEN
1385: okc_api.set_message (p_app_name => g_app_name,
1386: p_msg_name => l_okc_i_invalid_value,
1387: p_token1 => l_field,
1388: p_token1_value => 'OBJECT_CODE'
1389: );
1406: IF p_rule_condition_rec.object_code_datatype = 'B'
1407: THEN
1408: IF p_rule_condition_rec.OPERATOR NOT IN ('IS', 'IS_NOT')
1409: THEN
1410: okc_api.set_message (p_app_name => g_app_name,
1411: p_msg_name => l_okc_i_invalid_value,
1412: p_token1 => l_field,
1413: p_token1_value => 'OPERATOR'
1414: );
1433: INTO l_validate_flag;
1434:
1435: IF c_validate_lookup%NOTFOUND
1436: THEN
1437: okc_api.set_message (p_app_name => g_app_name,
1438: p_msg_name => l_okc_i_invalid_value,
1439: p_token1 => l_field,
1440: p_token1_value => 'OPERATOR'
1441: );
1447:
1448: IF p_rule_condition_rec.object_value_type NOT IN
1449: ('VALUE', 'QUESTION', 'VARIABLE', 'CONSTANT')
1450: THEN
1451: okc_api.set_message (p_app_name => g_app_name,
1452: p_msg_name => l_okc_i_invalid_value,
1453: p_token1 => l_field,
1454: p_token1_value => 'OBJECT_VALUE_TYPE'
1455: );
1458:
1459: IF p_rule_condition_rec.object_type <> 'CLAUSE'
1460: AND p_rule_condition_rec.object_code_datatype IS NULL
1461: THEN
1462: okc_api.set_message (p_app_name => g_app_name,
1463: p_msg_name => l_okc_i_not_null,
1464: p_token1 => l_field,
1465: p_token1_value => 'OBJECT_CODE_DATATYPE'
1466: );
1485: );
1486:
1487: IF x_valid_variable <> 'Y'
1488: THEN
1489: okc_api.set_message (p_app_name => g_app_name,
1490: p_msg_name => l_okc_i_invalid_value,
1491: p_token1 => l_field,
1492: p_token1_value => 'OBJECT_CODE'
1493: );
1513: INTO l_validate_flag;
1514:
1515: IF c_validate_lookup%NOTFOUND
1516: THEN
1517: okc_api.set_message (p_app_name => g_app_name,
1518: p_msg_name => l_okc_i_invalid_value,
1519: p_token1 => l_field,
1520: p_token1_value => 'OPERATOR'
1521: );
1526:
1527: IF p_rule_condition_rec.object_value_type NOT IN
1528: ('VALUE', 'QUESTION', 'VARIABLE', 'CONSTANT')
1529: THEN
1530: okc_api.set_message (p_app_name => g_app_name,
1531: p_msg_name => l_okc_i_invalid_value,
1532: p_token1 => l_field,
1533: p_token1_value => 'OBJECT_VALUE_TYPE'
1534: );
1623: FOR i IN p_rule_condition_tbl.FIRST .. p_rule_condition_tbl.LAST
1624: LOOP
1625: l_failed_rec_num := i;
1626:
1627: IF p_rule_condition_tbl (i).rule_id <> okc_api.g_miss_num
1628: AND g_rule_id <> NVL (p_rule_condition_tbl (i).rule_id, g_rule_id)
1629: THEN
1630: okc_api.set_message (p_app_name => g_app_name,
1631: p_msg_name => 'OKC_I_RULE_NO_MATCH',
1626:
1627: IF p_rule_condition_tbl (i).rule_id <> okc_api.g_miss_num
1628: AND g_rule_id <> NVL (p_rule_condition_tbl (i).rule_id, g_rule_id)
1629: THEN
1630: okc_api.set_message (p_app_name => g_app_name,
1631: p_msg_name => 'OKC_I_RULE_NO_MATCH',
1632: p_token1 => 'ENTITY',
1633: p_token1_value => 'CONDITION'
1634: );
1703: l_proc VARCHAR2 (60) := 'VALIDATE_RULE_OUTCOME';
1704: BEGIN
1705: IF p_rule_outcome_rec.rule_id IS NULL
1706: THEN
1707: okc_api.set_message (p_app_name => g_app_name,
1708: p_msg_name => l_okc_i_not_null,
1709: p_token1 => l_field,
1710: p_token1_value => 'RULE_ID'
1711: );
1713: END IF;
1714:
1715: IF p_rule_outcome_rec.object_type IS NULL
1716: THEN
1717: okc_api.set_message (p_app_name => g_app_name,
1718: p_msg_name => l_okc_i_not_null,
1719: p_token1 => l_field,
1720: p_token1_value => 'OBJECT_TYPE'
1721: );
1722: RAISE fnd_api.g_exc_error;
1723: ELSE
1724: IF p_rule_outcome_rec.object_type NOT IN ('QUESTION', 'CLAUSE')
1725: THEN
1726: okc_api.set_message (p_app_name => g_app_name,
1727: p_msg_name => l_okc_i_invalid_value,
1728: p_token1 => l_field,
1729: p_token1_value => 'OBJECT_TYPE'
1730: );
1733: END IF;
1734:
1735: IF p_rule_outcome_rec.object_value_id IS NULL
1736: THEN
1737: okc_api.set_message (p_app_name => g_app_name,
1738: p_msg_name => l_okc_i_not_null,
1739: p_token1 => l_field,
1740: p_token1_value => 'OBJECT_VALUE_ID'
1741: );
1743: END IF;
1744:
1745: IF is_valid_rule (p_rule_id => p_rule_outcome_rec.rule_id) <> 'Y'
1746: THEN
1747: okc_api.set_message (p_app_name => g_app_name,
1748: p_msg_name => l_okc_i_invalid_value,
1749: p_token1 => l_field,
1750: p_token1_value => 'RULE_ID'
1751: );
1753: END IF;
1754:
1755: IF g_rule_type <> g_clause_rule_type
1756: THEN
1757: okc_api.set_message (p_app_name => g_app_name,
1758: p_msg_name => l_okc_i_invalid_value,
1759: p_token1 => l_field,
1760: p_token1_value => 'RULE_TYPE'
1761: );
1767: p_object_type => p_rule_outcome_rec.object_type,
1768: p_object_value_id => p_rule_outcome_rec.object_value_id
1769: ) <> 'Y'
1770: THEN
1771: okc_api.set_message (p_app_name => g_app_name,
1772: p_msg_name => l_okc_i_invalid_value,
1773: p_token1 => l_field,
1774: p_token1_value => 'OUTCOME'
1775: );
1782: p_object_value_id => p_rule_outcome_rec.object_value_id
1783: ) = 'Y'
1784: THEN
1785: -- Duplicate Outcome
1786: okc_api.set_message (p_app_name => g_app_name,
1787: p_msg_name => l_okc_i_invalid_value,
1788: p_token1 => l_field,
1789: p_token1_value => 'OUTCOME'
1790: );
1793: /* RWA Changes Start */
1794: IF p_rule_outcome_rec.mandatory_yn IS NOT NULL
1795: AND p_rule_outcome_rec.mandatory_yn NOT IN ('Y','N') THEN
1796:
1797: okc_api.set_message (p_app_name => g_app_name,
1798: p_msg_name => l_okc_i_invalid_value,
1799: p_token1 => l_field,
1800: p_token1_value => 'MANDATORY_YN'
1801: );
1804:
1805: IF p_rule_outcome_rec.mandatory_rwa IS NOT NULL
1806: AND isValidLookup('OKC_CLAUSE_RWA', p_rule_outcome_rec.mandatory_rwa) = 'N' THEN
1807:
1808: okc_api.set_message (p_app_name => g_app_name,
1809: p_msg_name => l_okc_i_invalid_value,
1810: p_token1 => l_field,
1811: p_token1_value => 'MANDATORY_RWA'
1812: );
1819: BEGIN
1820:
1821: /* RWA Changes Start */
1822: -- Default
1823: IF p_rule_outcome_rec.mandatory_yn = OKC_API.G_MISS_CHAR
1824: THEN
1825: p_rule_outcome_rec.mandatory_yn := NULL;
1826: END IF;
1827:
1824: THEN
1825: p_rule_outcome_rec.mandatory_yn := NULL;
1826: END IF;
1827:
1828: IF p_rule_outcome_rec.mandatory_rwa = OKC_API.G_MISS_CHAR
1829: THEN
1830: p_rule_outcome_rec.mandatory_rwa := NULL;
1831: END IF;
1832: /* RWA Changes End */
1869: FOR i IN p_rule_outcome_tbl.FIRST .. p_rule_outcome_tbl.LAST
1870: LOOP
1871: l_failed_rec_num := i;
1872:
1873: IF p_rule_outcome_tbl (i).rule_id <> okc_api.g_miss_num
1874: AND g_rule_id <>
1875: NVL (p_rule_outcome_tbl (i).rule_id, g_rule_id)
1876: THEN
1877: okc_api.set_message (p_app_name => g_app_name,
1873: IF p_rule_outcome_tbl (i).rule_id <> okc_api.g_miss_num
1874: AND g_rule_id <>
1875: NVL (p_rule_outcome_tbl (i).rule_id, g_rule_id)
1876: THEN
1877: okc_api.set_message (p_app_name => g_app_name,
1878: p_msg_name => 'OKC_I_RULE_NO_MATCH',
1879: p_token1 => 'ENTITY',
1880: p_token1_value => 'OUTCOME'
1881: );
1907: FOR i IN p_template_rules_tbl.FIRST .. p_template_rules_tbl.LAST
1908: LOOP
1909: l_failed_rec_num := i;
1910:
1911: IF p_template_rules_tbl (i).rule_id <> okc_api.g_miss_num
1912: AND g_rule_id <>
1913: NVL (p_template_rules_tbl (i).rule_id, g_rule_id)
1914: THEN
1915: okc_api.set_message (p_app_name => g_app_name,
1911: IF p_template_rules_tbl (i).rule_id <> okc_api.g_miss_num
1912: AND g_rule_id <>
1913: NVL (p_template_rules_tbl (i).rule_id, g_rule_id)
1914: THEN
1915: okc_api.set_message (p_app_name => g_app_name,
1916: p_msg_name => 'OKC_I_RULE_NO_MATCH',
1917: p_token1 => 'ENTITY',
1918: p_token1_value => 'TEMPLATE_RULE'
1919: );
1976:
1977: -- Validate
1978: IF p_template_rules_rec.template_id IS NULL
1979: THEN
1980: okc_api.set_message (p_app_name => g_app_name,
1981: p_msg_name => l_okc_i_not_null,
1982: p_token1 => l_field,
1983: p_token1_value => 'TEMPLATE_ID'
1984: );
1992: CLOSE cur_val_template;
1993:
1994: IF NVL (l_val_flag, 'X') <> 'Y'
1995: THEN
1996: okc_api.set_message (p_app_name => g_app_name,
1997: p_msg_name => l_okc_i_invalid_value,
1998: p_token1 => l_field,
1999: p_token1_value => 'OUTCOME'
2000: );
2012: CLOSE cur_dup_template;
2013:
2014: IF NVL (l_dup_flag, 'N') = 'Y'
2015: THEN
2016: okc_api.set_message (p_app_name => g_app_name,
2017: p_msg_name => 'OKC_XPRT_DUPLICATE_TMPL_ASSIGN'
2018: );
2019: RAISE fnd_api.g_exc_error;
2020: END IF;
2087: p_rule_header_rec.last_updated_by := fnd_global.user_id;
2088: p_rule_header_rec.last_update_date := SYSDATE;
2089: p_rule_header_rec.last_update_login := fnd_global.login_id;
2090:
2091: IF p_rule_header_rec.org_id = okc_api.g_miss_num
2092: THEN
2093: p_rule_header_rec.org_id := p_db_rule_header.org_id;
2094: END IF;
2095:
2092: THEN
2093: p_rule_header_rec.org_id := p_db_rule_header.org_id;
2094: END IF;
2095:
2096: IF p_rule_header_rec.intent = okc_api.g_miss_char
2097: THEN
2098: p_rule_header_rec.intent := p_db_rule_header.intent;
2099: END IF;
2100:
2097: THEN
2098: p_rule_header_rec.intent := p_db_rule_header.intent;
2099: END IF;
2100:
2101: IF p_rule_header_rec.status_code = okc_api.g_miss_char
2102: THEN
2103: p_rule_header_rec.status_code := p_db_rule_header.status_code;
2104: END IF;
2105:
2102: THEN
2103: p_rule_header_rec.status_code := p_db_rule_header.status_code;
2104: END IF;
2105:
2106: IF p_rule_header_rec.rule_name = okc_api.g_miss_char
2107: THEN
2108: p_rule_header_rec.rule_name := p_db_rule_header.rule_name;
2109: END IF;
2110:
2107: THEN
2108: p_rule_header_rec.rule_name := p_db_rule_header.rule_name;
2109: END IF;
2110:
2111: IF p_rule_header_rec.rule_description = okc_api.g_miss_char
2112: THEN
2113: p_rule_header_rec.rule_description :=
2114: p_db_rule_header.rule_description;
2115: END IF;
2113: p_rule_header_rec.rule_description :=
2114: p_db_rule_header.rule_description;
2115: END IF;
2116:
2117: IF p_rule_header_rec.org_wide_flag = okc_api.g_miss_char
2118: THEN
2119: p_rule_header_rec.org_wide_flag := p_db_rule_header.org_wide_flag;
2120: END IF;
2121:
2118: THEN
2119: p_rule_header_rec.org_wide_flag := p_db_rule_header.org_wide_flag;
2120: END IF;
2121:
2122: IF p_rule_header_rec.condition_expr_code = okc_api.g_miss_char
2123: THEN
2124: p_rule_header_rec.condition_expr_code :=
2125: p_db_rule_header.condition_expr_code;
2126: END IF;
2124: p_rule_header_rec.condition_expr_code :=
2125: p_db_rule_header.condition_expr_code;
2126: END IF;
2127:
2128: IF p_rule_header_rec.rule_type = okc_api.g_miss_char
2129: THEN
2130: p_rule_header_rec.rule_type := p_db_rule_header.rule_type;
2131: END IF;
2132: EXCEPTION
2151: l_validate_flag VARCHAR2 (1);
2152: BEGIN
2153: IF p_rule_header_rec.rule_name IS NULL
2154: THEN
2155: okc_api.set_message (p_app_name => g_app_name,
2156: p_msg_name => l_okc_i_not_null,
2157: p_token1 => l_field,
2158: p_token1_value => 'RULE_NAME'
2159: );
2171: CLOSE cur_rule_name_exists;
2172:
2173: IF NVL (l_validate_flag, 'X') = 'Y'
2174: THEN
2175: okc_api.set_message
2176: (p_app_name => g_app_name,
2177: p_msg_name => 'OKC_XPRT_RULE_NAME_EXISTS'
2178: );
2179: RAISE fnd_api.g_exc_error;
2181: END IF;
2182: END IF;
2183:
2184: IF p_rule_header_rec.org_wide_flag NOT IN ('Y' , 'N') THEN
2185: okc_api.set_message (p_app_name => g_app_name,
2186: p_msg_name => l_okc_i_invalid_value,
2187: p_token1 => l_field,
2188: p_token1_value => 'ORG_WIDE_FLAG'
2189: );
2191: END IF;
2192:
2193: IF p_rule_header_rec.condition_expr_code NOT IN ('ALL', 'ANY')
2194: THEN
2195: okc_api.set_message (p_app_name => g_app_name,
2196: p_msg_name => l_okc_i_invalid_value,
2197: p_token1 => l_field,
2198: p_token1_value => 'CONDITION_EXPR_CODE'
2199: );
2261: WHERE rule_id = p_rule_header_rec.rule_id;
2262: EXCEPTION
2263: WHEN OTHERS
2264: THEN
2265: okc_api.set_message (p_app_name => g_app_name,
2266: p_msg_name => l_okc_i_invalid_value,
2267: p_token1 => l_field,
2268: p_token1_value => 'RULE_ID'
2269: );
2278: ('PENDINGPUB', 'PENDINGDISABLE', 'INACTIVE')
2279: THEN
2280: l_progress := '025';
2281: -- Can't update anything just return the error.
2282: okc_api.set_message (p_app_name => g_app_name,
2283: p_msg_name => 'OKC_I_RULE_STS_NO_UPD',
2284: p_token1 => 'STATUS',
2285: p_token1_value => l_rule_header_row.status_code
2286: );
2289:
2290: l_progress := '030';
2291:
2292: -- Irrespective of status(draft,revision,active the following fields can't be updated by the user)
2293: IF ( p_rule_header_rec.org_id <> okc_api.g_miss_num
2294: AND NVL (p_rule_header_rec.org_id, -100) <> l_rule_header_row.org_id
2295: )
2296: THEN
2297: l_progress := '035';
2295: )
2296: THEN
2297: l_progress := '035';
2298: -- You can not change Org_Id.
2299: okc_api.set_message
2300: (p_app_name => g_app_name,
2301: p_msg_name => 'OKC_I_RULE_STS_NO_UPD_FIELD',
2302: p_token1 => 'STATUS',
2303: p_token1_value => l_rule_header_row.status_code,
2308: END IF;
2309:
2310: l_progress := '040';
2311:
2312: IF ( p_rule_header_rec.intent <> okc_api.g_miss_char
2313: AND NVL (p_rule_header_rec.intent, 'ABC') <>
2314: l_rule_header_row.intent
2315: )
2316: THEN
2315: )
2316: THEN
2317: l_progress := '045';
2318: -- You can not change Intent.
2319: okc_api.set_message
2320: (p_app_name => g_app_name,
2321: p_msg_name => 'OKC_I_RULE_STS_NO_UPD_FIELD',
2322: p_token1 => 'STATUS',
2323: p_token1_value => l_rule_header_row.status_code,
2328: END IF;
2329:
2330: l_progress := '050';
2331:
2332: IF ( p_rule_header_rec.rule_type <> okc_api.g_miss_char
2333: AND NVL (p_rule_header_rec.rule_type, 'ABC') <>
2334: l_rule_header_row.rule_type
2335: )
2336: THEN
2335: )
2336: THEN
2337: l_progress := '055';
2338: -- You can not change Rule Type
2339: okc_api.set_message
2340: (p_app_name => g_app_name,
2341: p_msg_name => 'OKC_I_RULE_STS_NO_UPD_FIELD',
2342: p_token1 => 'STATUS',
2343: p_token1_value => l_rule_header_row.status_code,
2348: END IF;
2349:
2350: l_progress := '060';
2351:
2352: IF ( p_rule_header_rec.status_code <> okc_api.g_miss_char
2353: AND NVL (p_rule_header_rec.status_code, 'ABC') <>
2354: l_rule_header_row.status_code
2355: )
2356: THEN
2355: )
2356: THEN
2357: l_progress := '065';
2358: -- You can not change Status
2359: okc_api.set_message (p_app_name => g_app_name,
2360: p_msg_name => 'OKC_I_RULE_STS_CHANGE'
2361: );
2362: RAISE fnd_api.g_exc_error;
2363: END IF;
2378: Apply to All Templates =>
2379: */
2380: l_progress := '075';
2381:
2382: IF ( p_rule_header_rec.rule_name <> okc_api.g_miss_char
2383: AND p_rule_header_rec.rule_name <> l_rule_header_row.rule_name
2384: )
2385: THEN
2386: l_progress := '080';
2384: )
2385: THEN
2386: l_progress := '080';
2387: -- You can not change rule_name
2388: okc_api.set_message
2389: (p_app_name => g_app_name,
2390: p_msg_name => 'OKC_I_RULE_STS_NO_UPD_FIELD',
2391: p_token1 => 'STATUS',
2392: p_token1_value => l_rule_header_row.status_code,
2397: END IF;
2398:
2399: l_progress := '085';
2400:
2401: IF ( p_rule_header_rec.org_wide_flag <> okc_api.g_miss_char
2402: AND NVL (p_rule_header_rec.org_wide_flag, 'X') <>
2403: l_rule_header_row.org_wide_flag
2404: )
2405: THEN
2404: )
2405: THEN
2406: l_progress := '090';
2407: -- You can not change org_wide_flag
2408: okc_api.set_message
2409: (p_app_name => g_app_name,
2410: p_msg_name => 'OKC_I_RULE_STS_NO_UPD_FIELD',
2411: p_token1 => 'STATUS',
2412: p_token1_value => l_rule_header_row.status_code,
2501: AND (p_rule_rec.rule_outcome_tbl.COUNT > 0)
2502: )
2503: THEN
2504: p_rule_rec.status := g_ret_sts_error;
2505: okc_api.set_message (p_app_name => g_app_name,
2506: p_msg_name => 'OKC_XPRT_RULE_INCOMPLETE'
2507: );
2508: RAISE fnd_api.g_exc_error;
2509: END IF;
2511: THEN
2512: IF NOT ((p_rule_rec.rule_condition_tbl.COUNT > 0))
2513: THEN
2514: p_rule_rec.status := g_ret_sts_error;
2515: okc_api.set_message
2516: (p_app_name => g_app_name,
2517: p_msg_name => 'OKC_XPRT_POLICYRULE_INCOMPLETE'
2518: );
2519: RAISE fnd_api.g_exc_error;
2519: RAISE fnd_api.g_exc_error;
2520: END IF;
2521: ELSE
2522: p_rule_rec.status := g_ret_sts_error;
2523: okc_api.set_message (p_app_name => g_app_name,
2524: p_msg_name => l_okc_i_invalid_value,
2525: p_token1 => l_field,
2526: p_token1_value => 'RULE_TYPE'
2527: );
2705: EXCEPTION
2706: WHEN OTHERS
2707: THEN
2708: p_rule_child_entities_rec.status := g_ret_sts_error;
2709: okc_api.set_message (p_app_name => g_app_name,
2710: p_msg_name => l_okc_i_invalid_value,
2711: p_token1 => l_field,
2712: p_token1_value => 'RULE_ID'
2713: );
2720: IF g_rule_status_code NOT IN ('DRAFT', 'REVISION', 'ACTIVE')
2721: THEN
2722: -- Can't update anything just return the error
2723: p_rule_child_entities_rec.status := g_ret_sts_error;
2724: okc_api.set_message (p_app_name => g_app_name,
2725: p_msg_name => 'OKC_I_RULE_STS_NO_UPD',
2726: p_token1 => 'STATUS',
2727: p_token1_value => g_rule_status_code
2728: );
2748: EXCEPTION
2749: WHEN OTHERS
2750: THEN
2751: p_rule_child_entities_rec.status := g_ret_sts_error;
2752: okc_api.set_message (p_app_name => g_app_name,
2753: p_msg_name => l_okc_i_invalid_value,
2754: p_token1 => l_field,
2755: p_token1_value => 'RULE_CONDITION_ID'
2756: );
2781:
2782: IF l_conditions_count = 0
2783: THEN
2784: p_rule_child_entities_rec.status := g_ret_sts_error;
2785: okc_api.set_message (p_app_name => g_app_name,
2786: p_msg_name => 'OKC_XPRT_RULE_INCOMPLETE'
2787: );
2788: RAISE fnd_api.g_exc_error;
2789: END IF;
2809: EXCEPTION
2810: WHEN OTHERS
2811: THEN
2812: p_rule_child_entities_rec.status := g_ret_sts_error;
2813: okc_api.set_message (p_app_name => g_app_name,
2814: p_msg_name => l_okc_i_invalid_value,
2815: p_token1 => l_field,
2816: p_token1_value => 'RULE_OUTCOME_ID'
2817: );
2834:
2835: IF l_outcomes_count = 0
2836: THEN
2837: p_rule_child_entities_rec.status := g_ret_sts_error;
2838: okc_api.set_message (p_app_name => g_app_name,
2839: p_msg_name => 'OKC_XPRT_RULE_INCOMPLETE'
2840: );
2841: RAISE fnd_api.g_exc_error;
2842: END IF;
2861: EXCEPTION
2862: WHEN OTHERS
2863: THEN
2864: p_rule_child_entities_rec.status := g_ret_sts_error;
2865: okc_api.set_message (p_app_name => g_app_name,
2866: p_msg_name => l_okc_i_invalid_value,
2867: p_token1 => l_field,
2868: p_token1_value => 'TEMPLATE_RULE_ID'
2869: );
2948: THEN
2949: p_rule_tbl (i).status := g_ret_sts_error;
2950: set_proc_error_message (p_proc => l_proc);
2951: set_rec_num_message (p_rec_num => l_failed_rec_num);
2952: okc_api.set_message (p_app_name => g_app_name,
2953: p_msg_name => g_unexpected_error,
2954: p_token1 => g_sqlcode_token,
2955: p_token1_value => SQLCODE,
2956: p_token2 => g_sqlerrm_token,
3017: THEN
3018: p_rule_tbl (i).status := g_ret_sts_error;
3019: set_proc_error_message (p_proc => l_proc);
3020: set_rec_num_message (p_rec_num => l_failed_rec_num);
3021: okc_api.set_message (p_app_name => g_app_name,
3022: p_msg_name => g_unexpected_error,
3023: p_token1 => g_sqlcode_token,
3024: p_token1_value => SQLCODE,
3025: p_token2 => g_sqlerrm_token,