DBA Data[Home] [Help]

APPS.OKC_XPRT_RULES_ENGINE_PVT dependencies on OKC_XPRT_RULE_EVAL_RESULT_T

Line 43: populate_rule_cond_eval_table(); --populating okc_xprt_rule_eval_result_t table with all rules and conditions

39: p_doc_type := doc_type;
40: p_template_id := template_id;
41:
42: --populating all temp tables and evaluating conditions
43: populate_rule_cond_eval_table(); --populating okc_xprt_rule_eval_result_t table with all rules and conditions
44: populate_doc_var_values(); --populating okc_xprt_rule_eval_condval_t with variables values
45: populate_doc_questions(); --populating okc_xprt_rule_eval_condval_t with questions for the VO to render in Questions UI page
46: populate_rule_cond_dep(); --populating rule, cond clause lvel dependency into a gt table
47: evaluate_rules_and_conditions(); --evaluating rules and conditions. evaluate variable based conditions and question based condition if it has a response

Line 126: DELETE okc_xprt_rule_eval_result_t WHERE doc_id = p_doc_id and doc_type = p_doc_type;

122: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
123: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '100: Entering method');
124: END IF;
125:
126: DELETE okc_xprt_rule_eval_result_t WHERE doc_id = p_doc_id and doc_type = p_doc_type;
127:
128: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
129: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '110: Deleted entries in okc_xprt_rule_eval_result_t for this document before populating');
130: END IF;

Line 129: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '110: Deleted entries in okc_xprt_rule_eval_result_t for this document before populating');

125:
126: DELETE okc_xprt_rule_eval_result_t WHERE doc_id = p_doc_id and doc_type = p_doc_type;
127:
128: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
129: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '110: Deleted entries in okc_xprt_rule_eval_result_t for this document before populating');
130: END IF;
131:
132: OPEN c_rules;
133: FETCH c_rules BULK COLLECT INTO rule_ids, cond_expr_codes;

Line 135: INSERT INTO okc_xprt_rule_eval_result_t(rule_condition_result_id, doc_id, doc_type, rule_id, condition_id, condition_type, object_code, rule_expr_type, object_value_type, cond_operator, result)

131:
132: OPEN c_rules;
133: FETCH c_rules BULK COLLECT INTO rule_ids, cond_expr_codes;
134: FORALL i IN 1 .. rule_ids.count
135: INSERT INTO okc_xprt_rule_eval_result_t(rule_condition_result_id, doc_id, doc_type, rule_id, condition_id, condition_type, object_code, rule_expr_type, object_value_type, cond_operator, result)
136: VALUES(OKC_XPRT_RULE_EVAL_RESULT_S.nextval, p_doc_id, p_doc_type, rule_ids(i), null, null, null, cond_expr_codes(i), null, null, null);
137: CLOSE c_rules;
138:
139: OPEN c_rule_conditions;

Line 142: INSERT INTO okc_xprt_rule_eval_result_t(rule_condition_result_id, doc_id, doc_type, rule_id, condition_id, condition_type, object_code, rule_expr_type, object_value_type, object_value_code, cond_operator, result)

138:
139: OPEN c_rule_conditions;
140: FETCH c_rule_conditions BULK COLLECT INTO rule_ids, cond_ids, cond_types, cond_object_codes, cond_expr_codes, cond_value_type, cond_object_value_codes, cond_operator;
141: FORALL i IN 1 .. rule_ids.count
142: INSERT INTO okc_xprt_rule_eval_result_t(rule_condition_result_id, doc_id, doc_type, rule_id, condition_id, condition_type, object_code, rule_expr_type, object_value_type, object_value_code, cond_operator, result)
143: VALUES(OKC_XPRT_RULE_EVAL_RESULT_S.nextval, p_doc_id, p_doc_type, rule_ids(i), cond_ids(i), cond_types(i), cond_object_codes(i), cond_expr_codes(i), cond_value_type(i), cond_object_value_codes(i), cond_operator(i), null);
144: CLOSE c_rule_conditions;
145:
146: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN

Line 147: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '120: Populated entries in okc_xprt_rule_eval_result_t for this document');

143: VALUES(OKC_XPRT_RULE_EVAL_RESULT_S.nextval, p_doc_id, p_doc_type, rule_ids(i), cond_ids(i), cond_types(i), cond_object_codes(i), cond_expr_codes(i), cond_value_type(i), cond_object_value_codes(i), cond_operator(i), null);
144: CLOSE c_rule_conditions;
145:
146: IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
147: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '120: Populated entries in okc_xprt_rule_eval_result_t for this document');
148: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '120: No. of rules populated: ' || cond_expr_codes.count);
149: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '120: No. of rule conditions populated: ' || cond_ids.count);
150: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '120: Leaving method');
151: END IF;

Line 271: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_question_orders q

267: PROCEDURE populate_doc_questions IS
268:
269: CURSOR c_question is
270: SELECT distinct cond.object_code, q.mandatory_flag display_flag
271: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_question_orders q
272: WHERE cond.doc_id = p_doc_id
273: AND cond.doc_type = p_doc_type
274: AND cond.condition_type = 'QUESTION'
275: AND q.template_id = p_template_id

Line 279: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_question_orders q

275: AND q.template_id = p_template_id
276: AND cond.object_code = q.question_id
277: UNION
278: SELECT distinct cond.object_value_code, q.mandatory_flag display_flag
279: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_question_orders q
280: WHERE cond.doc_id = p_doc_id
281: AND cond.doc_type = p_doc_type
282: AND cond.object_value_type = 'QUESTION'
283: AND q.template_id = p_template_id

Line 304: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_doc_ques_response resp, okc_xprt_question_orders q

300: AND outcome.object_value_id = q.question_id;
301:
302: CURSOR c_question_and_response is
303: SELECT distinct cond.object_code, resp.response, q.mandatory_flag display_flag
304: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_doc_ques_response resp, okc_xprt_question_orders q
305: WHERE cond.doc_id = p_doc_id
306: AND cond.doc_type = p_doc_type
307: AND cond.condition_type = 'QUESTION'
308: AND resp.doc_id (+) = cond.doc_id

Line 315: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_doc_ques_response resp, okc_xprt_question_orders q

311: AND q.template_id = p_template_id
312: AND cond.object_code = q.question_id
313: UNION
314: SELECT distinct cond.object_value_code, resp.response, q.mandatory_flag display_flag
315: FROM okc_xprt_rule_eval_result_t cond, okc_xprt_doc_ques_response resp, okc_xprt_question_orders q
316: WHERE cond.doc_id = p_doc_id
317: AND cond.doc_type = p_doc_type
318: AND cond.object_value_type = 'QUESTION'
319: AND resp.doc_id (+) = cond.doc_id

Line 438: FROM okc_xprt_rule_eval_result_t

434: PROCEDURE evaluate_rules_and_conditions IS
435:
436: CURSOR c_rules IS
437: SELECT rule_id, rule_expr_type
438: FROM okc_xprt_rule_eval_result_t
439: WHERE doc_id = p_doc_id
440: AND doc_type = p_doc_type
441: AND condition_id IS NULL;
442:

Line 451: FROM okc_xprt_rule_eval_result_t cond

447: NULL) lhs_response,
448: DECODE(cond.object_value_type, 'QUESTION', (SELECT value_or_response FROM okc_xprt_rule_eval_condval_t WHERE doc_id = p_doc_id AND doc_type = p_doc_type
449: AND object_type = 'QUESTION' AND object_code = cond.object_value_code),
450: NULL) rhs_response
451: FROM okc_xprt_rule_eval_result_t cond
452: WHERE cond.doc_id = p_doc_id
453: AND cond.doc_type = p_doc_type
454: AND cond.condition_id IS NOT NULL
455: AND cond.rule_id = c_rule_id;

Line 619: UPDATE okc_xprt_rule_eval_result_t result_tmp

615: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '140: failure_rule_id: ' || failure_rule_ids(a)); END LOOP;
616: END IF;
617:
618: FORALL k IN 1 .. result_tbl.count
619: UPDATE okc_xprt_rule_eval_result_t result_tmp
620: SET result = result_tbl(k).result
621: WHERE result_tmp.rule_id = result_tbl(k).rule_id
622: AND nvl(result_tmp.condition_id, -999) = nvl(result_tbl(k).condition_id, -999)
623: AND result_tmp.doc_id = p_doc_id

Line 628: WHERE EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE doc_id = p_doc_id AND doc_type = p_doc_type AND condition_type = 'CLAUSE');

624: AND result_tmp.doc_type = p_doc_type;
625:
626: BEGIN
627: SELECT 'Y' INTO has_clauses FROM dual
628: WHERE EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE doc_id = p_doc_id AND doc_type = p_doc_type AND condition_type = 'CLAUSE');
629: EXCEPTION
630: WHEN NO_DATA_FOUND THEN
631: NULL;
632: END;

Line 658: UPDATE okc_xprt_rule_eval_result_t cond

654:
655: --Step II: Dependent Clause based conditions handling:
656: IF has_clauses = 'Y' THEN
657: IF success_rule_ids.count > 0 THEN
658: UPDATE okc_xprt_rule_eval_result_t cond
659: SET result = decode(cond_operator, 'IS', 'Y', 'IN', 'Y', 'N')
660: WHERE doc_id = p_doc_id
661: AND doc_type = p_doc_type
662: AND condition_type = 'CLAUSE'

Line 677: UPDATE okc_xprt_rule_eval_result_t cond

673: END IF;
674: END IF;
675:
676: IF failure_rule_ids.count > 0 THEN
677: UPDATE okc_xprt_rule_eval_result_t cond
678: SET cond.result = 'N'
679: WHERE cond.doc_id = p_doc_id
680: AND cond.doc_type = p_doc_type
681: AND condition_type = 'CLAUSE'

Line 686: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id AND d.doc_type = cond.doc_type

682: AND cond.cond_operator IN ('IS', 'IN') --as the condition result wont change in other cases
683: AND cond.result IS NULL --if the result is Y, then it wont change and the result will not be N in any case
684: AND cond.condition_id IN (SELECT distinct dep_clause_cond_id FROM okc_xprt_rule_eval_condval_t WHERE doc_id = cond.doc_id and doc_type = cond.doc_type
685: and object_type = 'RULE' and object_code IN (SELECT * FROM table(failure_rule_ids)))
686: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id AND d.doc_type = cond.doc_type
687: AND d.object_type = 'RULE' AND d.dep_clause_cond_id = cond.condition_id
688: AND t.doc_id = d.doc_id AND t.doc_type = d.doc_type AND t.condition_id IS NULL
689: AND t.result IS NULL AND d.object_code = t.rule_id)
690: RETURNING cond.rule_id BULK COLLECT INTO clause_rules2;

Line 992: UPDATE okc_xprt_rule_eval_result_t result_tmp

988: rule_ids2.extend(reeval_rules.count);
989: rule_ids3.extend(reeval_rules.count);
990:
991: FOR j IN 1 .. reeval_rules.count LOOP
992: UPDATE okc_xprt_rule_eval_result_t result_tmp
993: SET result = 'Y'
994: WHERE result_tmp.rule_id = reeval_rules(j)
995: AND result_tmp.condition_id IS NULL
996: AND result_tmp.doc_id = p_doc_id

Line 999: AND ((result_tmp.rule_expr_type = 'ALL' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'Y'

995: AND result_tmp.condition_id IS NULL
996: AND result_tmp.doc_id = p_doc_id
997: AND result_tmp.doc_type = p_doc_type
998: AND nvl(result_tmp.result, '*') <> 'Y'
999: AND ((result_tmp.rule_expr_type = 'ALL' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'Y'
1000: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1001: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1002: OR (result_tmp.rule_expr_type = 'ANY' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'Y'
1003: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL

Line 1002: OR (result_tmp.rule_expr_type = 'ANY' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'Y'

998: AND nvl(result_tmp.result, '*') <> 'Y'
999: AND ((result_tmp.rule_expr_type = 'ALL' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'Y'
1000: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1001: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1002: OR (result_tmp.rule_expr_type = 'ANY' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'Y'
1003: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1004: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1)))
1005: RETURNING n + 1, result_tmp.rule_id INTO n, rule_ids1(n);
1006: IF SQL%FOUND THEN

Line 1017: UPDATE okc_xprt_rule_eval_result_t result_tmp

1013: continue;
1014: END IF;
1015:
1016:
1017: UPDATE okc_xprt_rule_eval_result_t result_tmp
1018: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1019: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1020: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1021: decode(result, NULL, 1, 2)) WHERE rownum = 1),

Line 1018: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t

1014: END IF;
1015:
1016:
1017: UPDATE okc_xprt_rule_eval_result_t result_tmp
1018: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1019: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1020: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1021: decode(result, NULL, 1, 2)) WHERE rownum = 1),
1022: 'ALL', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t

Line 1022: 'ALL', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t

1018: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1019: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1020: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1021: decode(result, NULL, 1, 2)) WHERE rownum = 1),
1022: 'ALL', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1023: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1024: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1025: decode(result, 'N', 1, NULL, 2, 3)) WHERE rownum = 1))
1026: WHERE result_tmp.rule_id = reeval_rules(j)

Line 1031: AND ((result_tmp.rule_expr_type = 'ALL' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'Y'

1027: AND result_tmp.condition_id IS NULL
1028: AND result_tmp.doc_id = p_doc_id
1029: AND result_tmp.doc_type = p_doc_type
1030: AND nvl(result_tmp.result, '*') = 'Y'
1031: AND ((result_tmp.rule_expr_type = 'ALL' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'Y'
1032: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1033: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1034: OR (result_tmp.rule_expr_type = 'ANY' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'Y'
1035: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL

Line 1034: OR (result_tmp.rule_expr_type = 'ANY' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'Y'

1030: AND nvl(result_tmp.result, '*') = 'Y'
1031: AND ((result_tmp.rule_expr_type = 'ALL' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'Y'
1032: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1033: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1034: OR (result_tmp.rule_expr_type = 'ANY' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'Y'
1035: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1036: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1)))
1037: RETURNING k + 1, result_tmp.rule_id INTO k, rule_ids2(k);
1038: IF SQL%FOUND THEN

Line 1049: UPDATE okc_xprt_rule_eval_result_t result_tmp

1045: continue;
1046: END IF;
1047:
1048: --there is not need to consider nul to success and failure to success case as they will be already handled in first update statement
1049: UPDATE okc_xprt_rule_eval_result_t result_tmp
1050: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1051: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1052: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1053: decode(result, NULL, 1, 2)) WHERE rownum = 1),

Line 1050: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t

1046: END IF;
1047:
1048: --there is not need to consider nul to success and failure to success case as they will be already handled in first update statement
1049: UPDATE okc_xprt_rule_eval_result_t result_tmp
1050: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1051: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1052: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1053: decode(result, NULL, 1, 2)) WHERE rownum = 1),
1054: 'ALL', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t

Line 1054: 'ALL', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t

1050: SET result = decode(result_tmp.rule_expr_type, 'ANY', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1051: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1052: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1053: decode(result, NULL, 1, 2)) WHERE rownum = 1),
1054: 'ALL', (SELECT result FROM (SELECT result FROM okc_xprt_rule_eval_result_t
1055: WHERE rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1056: AND doc_id = p_doc_id AND doc_type = p_doc_type ORDER BY
1057: decode(result, 'N', 1, NULL, 2, 3)) WHERE rownum = 1))
1058: WHERE result_tmp.rule_id = reeval_rules(j)

Line 1063: AND ((result_tmp.rule_expr_type = 'ALL' AND result_tmp.result IS NULL AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'N'

1059: AND result_tmp.condition_id IS NULL
1060: AND result_tmp.doc_id = p_doc_id
1061: AND result_tmp.doc_type = p_doc_type
1062: AND nvl(result_tmp.result, '*') <> 'Y'
1063: AND ((result_tmp.rule_expr_type = 'ALL' AND result_tmp.result IS NULL AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'N'
1064: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1065: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1066: OR (result_tmp.rule_expr_type = 'ALL' AND nvl(result_tmp.result, '*') = 'N' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'N'
1067: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL

Line 1066: OR (result_tmp.rule_expr_type = 'ALL' AND nvl(result_tmp.result, '*') = 'N' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'N'

1062: AND nvl(result_tmp.result, '*') <> 'Y'
1063: AND ((result_tmp.rule_expr_type = 'ALL' AND result_tmp.result IS NULL AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'N'
1064: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1065: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1066: OR (result_tmp.rule_expr_type = 'ALL' AND nvl(result_tmp.result, '*') = 'N' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'N'
1067: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1068: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1069: OR (result_tmp.rule_expr_type = 'ANY' AND result_tmp.result IS NULL AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') IS NULL
1070: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL

Line 1069: OR (result_tmp.rule_expr_type = 'ANY' AND result_tmp.result IS NULL AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') IS NULL

1065: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1066: OR (result_tmp.rule_expr_type = 'ALL' AND nvl(result_tmp.result, '*') = 'N' AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') = 'N'
1067: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1068: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1069: OR (result_tmp.rule_expr_type = 'ANY' AND result_tmp.result IS NULL AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') IS NULL
1070: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1071: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1072: OR (result_tmp.rule_expr_type = 'ANY' AND nvl(result_tmp.result, '*') = 'N' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'N'
1073: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL

Line 1072: OR (result_tmp.rule_expr_type = 'ANY' AND nvl(result_tmp.result, '*') = 'N' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'N'

1068: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1069: OR (result_tmp.rule_expr_type = 'ANY' AND result_tmp.result IS NULL AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') IS NULL
1070: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1071: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1))
1072: OR (result_tmp.rule_expr_type = 'ANY' AND nvl(result_tmp.result, '*') = 'N' AND EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE nvl(result, '*') <> 'N'
1073: AND rule_id = reeval_rules(j) AND condition_id IS NOT NULL
1074: AND doc_id = p_doc_id AND doc_type = p_doc_type AND rownum = 1)))
1075: RETURNING l + 1, result_tmp.rule_id INTO l, rule_ids3(l);
1076: IF SQL%FOUND THEN

Line 1093: WHERE EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE doc_id = p_doc_id AND doc_type = p_doc_type AND condition_type = 'CLAUSE');

1089: rule_ids3.trim(reeval_rules.count - (l - 1));
1090:
1091: BEGIN
1092: SELECT 'Y' INTO has_clauses FROM dual
1093: WHERE EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t WHERE doc_id = p_doc_id AND doc_type = p_doc_type AND condition_type = 'CLAUSE');
1094: EXCEPTION
1095: WHEN NO_DATA_FOUND THEN
1096: NULL;
1097: END;

Line 1139: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_outcomes_act_v d, okc_xprt_rule_eval_result_t t

1135: AND ques.doc_type = p_doc_type
1136: AND ques.object_type = 'QUESTION'
1137: AND ques.display_flag <> 'N'
1138: AND ques.object_code IN (SELECT object_value_id FROM okc_xprt_rule_outcomes_act_v WHERE rule_id = rule_ids2(i) and object_type = 'QUESTION')
1139: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_outcomes_act_v d, okc_xprt_rule_eval_result_t t
1140: WHERE d.rule_id = t.rule_id AND t.doc_id = ques.doc_id AND t.doc_type = ques.doc_type AND nvl(t.result, '*') = 'Y' AND t.condition_id IS NULL
1141: AND to_char(d.object_value_id) = ques.object_code AND d.object_type = 'QUESTION');
1142: IF SQL%FOUND AND rule_ids2.count > 0 THEN
1143: rows2 := sql%rowcount;

Line 1161: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_outcomes_act_v d, okc_xprt_rule_eval_result_t t

1157: AND ques.doc_type = p_doc_type
1158: AND ques.object_type = 'QUESTION'
1159: AND ques.value_or_response IS NOT NULL --it won't update if it is already NULL, so that re-evaluation of rules for additional questions take place only when it is an actual update
1160: AND ques.object_code IN (SELECT object_value_id FROM okc_xprt_rule_outcomes_act_v WHERE rule_id = rule_ids2(i) and object_type = 'QUESTION')
1161: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_outcomes_act_v d, okc_xprt_rule_eval_result_t t
1162: WHERE d.rule_id = t.rule_id AND t.doc_id = ques.doc_id AND t.doc_type = ques.doc_type AND nvl(t.result, '*') = 'Y' AND t.condition_id IS NULL
1163: AND to_char(d.object_value_id) = ques.object_code AND d.object_type = 'QUESTION')
1164: RETURNING ques.object_code BULK COLLECT INTO question_ids;
1165:

Line 1177: UPDATE okc_xprt_rule_eval_result_t

1173: --updating the result of all the conditions to null which contains this additional question
1174: --question_ids will have unique question ids
1175: --question_rules can have duplicate rule_ids as it can have two questions updated to result Null so it comes twice in the question_rules
1176: IF question_ids.count > 0 THEN
1177: UPDATE okc_xprt_rule_eval_result_t
1178: SET result = NULL
1179: WHERE object_code IN (SELECT * FROM table(question_ids))
1180: AND doc_id = p_doc_id
1181: AND doc_type = p_doc_type

Line 1218: UPDATE okc_xprt_rule_eval_result_t cond

1214: --A) rule_ids1--- which have changed their result from null to Y or N to Y
1215: --updated dependent clause conditions result to Y if op IN (IS,IN) OR N if op IN (IS_NOT,NOT_IN)
1216:
1217: IF rule_ids1.count > 0 THEN
1218: UPDATE okc_xprt_rule_eval_result_t cond
1219: SET result = decode(cond_operator, 'IS', 'Y', 'IN', 'Y', 'N')
1220: WHERE doc_id = p_doc_id
1221: AND doc_type = p_doc_type
1222: AND condition_type = 'CLAUSE'

Line 1240: UPDATE okc_xprt_rule_eval_result_t cond

1236: --B) rule_ids2--- which have changed their result from Y to N or Y to null
1237: --updated dependent clause conditions result by considering all the other rules result
1238:
1239: IF rule_ids2.count > 0 THEN
1240: UPDATE okc_xprt_rule_eval_result_t cond
1241: SET cond.result = decode(cond.cond_operator, 'IS_NOT', 'Y', 'NOT_IN', 'Y', decode((SELECT nvl(t.result, 1) FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d
1242: WHERE d.doc_id = cond.doc_id and d.doc_type = cond.doc_type AND d.object_type = 'RULE'
1243: AND d.dep_clause_cond_id = cond.condition_id AND d.object_code = t.rule_id AND t.doc_id = d.doc_id
1244: AND t.doc_type = d.doc_type AND t.condition_id IS NULL AND t.result IS NULL AND ROWNUM = 1),

Line 1241: SET cond.result = decode(cond.cond_operator, 'IS_NOT', 'Y', 'NOT_IN', 'Y', decode((SELECT nvl(t.result, 1) FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d

1237: --updated dependent clause conditions result by considering all the other rules result
1238:
1239: IF rule_ids2.count > 0 THEN
1240: UPDATE okc_xprt_rule_eval_result_t cond
1241: SET cond.result = decode(cond.cond_operator, 'IS_NOT', 'Y', 'NOT_IN', 'Y', decode((SELECT nvl(t.result, 1) FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d
1242: WHERE d.doc_id = cond.doc_id and d.doc_type = cond.doc_type AND d.object_type = 'RULE'
1243: AND d.dep_clause_cond_id = cond.condition_id AND d.object_code = t.rule_id AND t.doc_id = d.doc_id
1244: AND t.doc_type = d.doc_type AND t.condition_id IS NULL AND t.result IS NULL AND ROWNUM = 1),
1245: 1, NULL, 'N'))

Line 1251: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id AND d.doc_type = cond.doc_type

1247: AND cond.doc_type = p_doc_type
1248: AND condition_type = 'CLAUSE'
1249: AND cond.condition_id IN (SELECT distinct dep_clause_cond_id FROM okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id AND d.doc_type = cond.doc_type
1250: AND d.object_type = 'RULE' AND d.object_code IN (SELECT * FROM table(rule_ids2)))
1251: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id AND d.doc_type = cond.doc_type
1252: AND d.object_type = 'RULE' AND d.dep_clause_cond_id = cond.condition_id AND d.object_code = t.rule_id
1253: AND t.doc_id = d.doc_id AND t.doc_type = d.doc_type AND t.condition_id IS NULL AND nvl(t.result, '*') = 'Y')
1254: --it their exists a sucess condition, then the result of the rule reamins same i.e T in case of IN,IS operator and F in case of IS_NOT, NOT_IN operator
1255: RETURNING cond.rule_id BULK COLLECT INTO clause_rules2;

Line 1271: UPDATE okc_xprt_rule_eval_result_t cond

1267: --for this case (null to N or N to null), when the clasue condition operator is IS_NOT or NOT_IN, the condition result wont change
1268: --for operator 'IS' or 'IN', the result wont change if it is already 'y'
1269:
1270: IF rule_ids3.count > 0 THEN
1271: UPDATE okc_xprt_rule_eval_result_t cond
1272: SET cond.result = decode((SELECT nvl(t.result, 1) FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d
1273: WHERE d.doc_id = cond.doc_id and d.doc_type = cond.doc_type AND d.object_type = 'RULE'
1274: AND d.dep_clause_cond_id = cond.condition_id AND d.object_code = t.rule_id AND t.doc_id = d.doc_id
1275: AND t.doc_type = d.doc_type AND t.condition_id IS NULL AND t.result IS NULL AND ROWNUM = 1),

Line 1272: SET cond.result = decode((SELECT nvl(t.result, 1) FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d

1268: --for operator 'IS' or 'IN', the result wont change if it is already 'y'
1269:
1270: IF rule_ids3.count > 0 THEN
1271: UPDATE okc_xprt_rule_eval_result_t cond
1272: SET cond.result = decode((SELECT nvl(t.result, 1) FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d
1273: WHERE d.doc_id = cond.doc_id and d.doc_type = cond.doc_type AND d.object_type = 'RULE'
1274: AND d.dep_clause_cond_id = cond.condition_id AND d.object_code = t.rule_id AND t.doc_id = d.doc_id
1275: AND t.doc_type = d.doc_type AND t.condition_id IS NULL AND t.result IS NULL AND ROWNUM = 1),
1276: 1, NULL, 'N')

Line 1284: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id AND d.doc_type = cond.doc_type

1280: AND cond.cond_operator IN ('IS', 'IN') --as the condition result wont change in other cases
1281: AND nvl(cond.result, '*') <> 'Y' --if the result is already Y, then it wont change
1282: AND cond.condition_id IN (SELECT distinct dep_clause_cond_id FROM okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id and d.doc_type = cond.doc_type
1283: AND d.object_type = 'RULE' and d.object_code IN (SELECT * FROM table(rule_ids3)))
1284: AND NOT EXISTS (SELECT 1 FROM okc_xprt_rule_eval_result_t t, okc_xprt_rule_eval_condval_t d WHERE d.doc_id = cond.doc_id AND d.doc_type = cond.doc_type
1285: AND d.object_type = 'RULE' AND d.dep_clause_cond_id = cond.condition_id AND t.doc_id = d.doc_id
1286: AND t.doc_type = d.doc_type AND d.object_code = t.rule_id AND t.condition_id IS NULL AND t.result IS NULL AND cond.result IS NULL)
1287: RETURNING cond.rule_id BULK COLLECT INTO clause_rules3;
1288:

Line 1345: FROM okc_xprt_rule_eval_result_t cond

1341: AND object_type = 'QUESTION' AND object_code = cond.object_code) lhs_response,
1342: DECODE(cond.object_value_type, 'QUESTION', (SELECT value_or_response FROM okc_xprt_rule_eval_condval_t WHERE doc_id = p_doc_id AND doc_type = p_doc_type
1343: AND object_type = 'QUESTION' AND object_code = cond.object_value_code),
1344: NULL) rhs_response
1345: FROM okc_xprt_rule_eval_result_t cond
1346: WHERE doc_id = p_doc_id
1347: AND doc_type = p_doc_type
1348: AND object_code = p_question_id
1349: AND condition_type = 'QUESTION'

Line 1359: FROM okc_xprt_rule_eval_result_t cond

1355: AND object_type = 'QUESTION' AND object_code = cond.object_code),
1356: NULL) lhs_response,
1357: (SELECT value_or_response FROM okc_xprt_rule_eval_condval_t WHERE doc_id = p_doc_id AND doc_type = p_doc_type
1358: AND object_type = 'QUESTION' AND object_code = cond.object_value_code) rhs_response
1359: FROM okc_xprt_rule_eval_result_t cond
1360: WHERE doc_id = p_doc_id
1361: AND doc_type = p_doc_type
1362: AND object_value_code = p_question_id
1363: AND object_value_type = 'QUESTION';

Line 1478: UPDATE okc_xprt_rule_eval_result_t result_tmp

1474: FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT, l_module, '130: rule_ids rule_id: ' || rule_ids(a)); END LOOP;
1475: END IF;
1476:
1477: FORALL j IN 1 .. result_tbl.count
1478: UPDATE okc_xprt_rule_eval_result_t result_tmp
1479: SET result = result_tbl(j).result
1480: WHERE result_tmp.rule_id = result_tbl(j).rule_id
1481: AND result_tmp.condition_id = result_tbl(j).condition_id
1482: AND result_tmp.doc_id = p_doc_id