diff --git a/APPL/Shared/getkenmerksql.inc b/APPL/Shared/getkenmerksql.inc index 777fd37a8b..dae5274ebb 100644 --- a/APPL/Shared/getkenmerksql.inc +++ b/APPL/Shared/getkenmerksql.inc @@ -80,7 +80,9 @@ function getKenmerkSql(pmodule, pkeyColumn, prequestForm) var where1 = kwaarde; var where2 = ko; var where3 = ""; + var where4 = ""; var add_b = true; + var add_c = pmodule == "INS" && tablekey == "ins_deel_key" where = ""; var tablekey2 = tablekey; @@ -181,20 +183,46 @@ function getKenmerkSql(pmodule, pkeyColumn, prequestForm) + (pmodule == "INS"? " ik.ins_srtkenmerk_key = " + kk + " AND ik.ins_kenmerk_key = ins_kenmerkdeel.ins_kenmerk_key":"") + (pmodule == "MLD"? " mk.mld_srtkenmerk_key = " + kk + " AND mk.mld_kenmerk_key = "+ktable+".mld_kenmerk_key":"") + (pmodule != "INS" && pmodule != "MLD" ? pmodule.toLowerCase() + "_kenmerk_key = " + kk:"") - + " AND " + tablekey2 + " = " + tableref + "." + tablekey - + " AND " + where1 + " IS NOT NULL " - + andALG + andPRS - + where3 - + " AND " + kverwijder + " IS NULL) "; + + " AND " + (add_c ? "((" : "") + tablekey2 + " = " + tableref + "." + tablekey; + + if (add_c) + { + where += " AND ins_kenmerk_bewerkniveau <> 'S')" + + " OR (" + tablekey2 + " = " + tableref + ".ins_srtdeel_key" + + " AND ins_kenmerk_bewerkniveau = 'S'))"; + } + where += " AND " + where1 + " IS NOT NULL " + + andALG + andPRS + + where3 + + " AND " + kverwijder + " IS NULL) "; } // Ik zeg: een wat gekke constructie zo sql_k += " AND " + where; + if (add_c) + { + sql_k +=(add_b ? " OR " : "") + + " (" + tableref + ".ins_srtdeel_key" + " IN (SELECT " + tablekey2 + + " FROM " + ktable + + (pmodule == "INS"? ", ins_kenmerk ik":"") + + (pmodule == "MLD"? ", mld_kenmerk mk":"") + + " WHERE " + + (pmodule == "INS"? " ik.ins_srtkenmerk_key = " + kk + " AND ik.ins_kenmerk_key = ins_kenmerkdeel.ins_kenmerk_key":"") + + (pmodule == "MLD"? " mk.mld_srtkenmerk_key = " + kk + " AND mk.mld_kenmerk_key = "+ktable+".mld_kenmerk_key":"") + + (pmodule != "INS" && pmodule != "MLD" ? pmodule.toLowerCase() + "_kenmerk_key = " + kk:"") + + " AND " + where1 + " " + where2 + + andALG + andPRS + + where3 + + " AND ins_kenmerk_bewerkniveau = 'S'" + + " AND " + kverwijder + " IS NULL)"; + where4 = " AND ins_kenmerk_bewerkniveau <> 'S'"; + } + // voor filter Geen Waarde zou ook nog: Wel een record maar met een NULL waarde kunnen gelden // die nemen we ook nog mee. Alleen bij "Gevuld" (verwerkt in 'where') hoeven we niet verder naar de waarden te kijken // in alle andere gevallen komt hier de conditie 'kenmerk=waarde' erbij if (ko != "IS NOT NULL") { - sql_k +=(add_b ? " OR " : "") + sql_k +=((add_b || add_c) ? " OR " : "") + " " + tableref + "." + tablekey + " IN (SELECT " + tablekey2 + " FROM " + ktable + (pmodule == "INS"? ", ins_kenmerk ik":"") @@ -205,10 +233,11 @@ function getKenmerkSql(pmodule, pkeyColumn, prequestForm) + (pmodule != "INS" && pmodule != "MLD" ? pmodule.toLowerCase() + "_kenmerk_key = " + kk:"") + " AND " + where1 + " " + where2 + andALG + andPRS - + where3 + + where3 + where4 + " AND " + kverwijder + " IS NULL)"; } sql_k += (add_b ? ")" : ""); + sql_k += (add_c ? ")" : ""); } } }