Skip to content
Snippets Groups Projects
Commit 768e611d authored by Johannes Goderbauer's avatar Johannes Goderbauer
Browse files

Merge branch 'SalesprojectFilter' into 'master'

Salesproject filter

See merge request xrm/basic!163
parents 30f4b45f b385ba44
No related branches found
No related tags found
No related merge requests found
Showing
with 210 additions and 0 deletions
......@@ -876,6 +876,20 @@
<filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtensionSet>
<filterExtensionSet>
<name>ClassificationSummary_filter</name>
<filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterFieldsProcess.js</filterFieldsProcess>
<filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtensionSet>
<filterExtensionSet>
<name>ClassificationScore_filter</name>
<filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterFieldsProcess.js</filterFieldsProcess>
<filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtensionSet>
</filterExtensions>
</dbRecordContainer>
<indexRecordContainer>
......
import("Sql_lib");
import("system.logging");
import("AttributeFilter_lib");
import("Entity_lib");
import("Context_lib");
import("system.vars");
import("system.result");
var operator = vars.get("$local.operator");
var rawvalue = vars.get("$local.rawvalue");
var columnPlaceholder = vars.get("$local.columnPlaceholder");
var filterCond = vars.get("$local.condition");
var classificationtypeid = AttributeSearchNameCoder.decode(vars.getString("$local.name")).id;
var sqlCond;
var subsqlclosed = newSelect("OBJECT_ROWID").from("CLASSIFICATION").where("CLASSIFICATION.OBJECT_TYPE", "Salesproject");
var subsqlExtra2 = subsqlclosed.andIfSet("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationtypeid);
var subsqlExtra = subsqlclosed.andIfSet("CLASSIFICATION.CLASSIFICATIONSCORE_ID", rawvalue);
if (operator == "1")//equal
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra, SqlBuilder.IN()).toString();
else if (operator == "2")//not equal
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra, SqlBuilder.NOT_IN()).toString();
else if (operator == "11")//is not empty
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra2, SqlBuilder.IN()).toString();
else if (operator == "12")//is empty
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra2, SqlBuilder.NOT_IN()).toString();
else sqlCond = "1=1";
result.string(sqlCond);
\ No newline at end of file
import("Sql_lib");
import("system.translate");
import("system.logging");
import("system.util");
import("KeywordRegistry_basic");
import("system.entities");
import("Attribute_lib");
import("AttributeFilter_lib");
import("system.result");
var res = [];
var data = newSelect("CLASSIFICATIONTYPEID, CLASSIFICATIONGROUP, SCORETYPE")
.from("classificationtype")
.orderBy("CLASSIFICATIONGROUP").table();
data.forEach(function(row){
var name = AttributeSearchNameCoder.encode(row[0], row[2]);
res.push({
name: name,
title: translate.text(row[1]) + " / " + translate.text(row[2]),
contentType: "TEXT",
hasDropDownValues: true
});
})
res = JSON.stringify(res);
result.string(res);
\ No newline at end of file
import("IndexSearch_lib");
import("system.logging");
import("system.vars");
import("Sql_lib");
import("AttributeFilter_lib");
import("Attribute_lib");
import("system.result");
import("system.translate");
var filter = JSON.parse(vars.get("$local.filter"));
var nameObject = AttributeSearchNameCoder.decode(filter.name);
var classID = nameObject.id;
var res = newSelect("CLASSIFICATIONSCOREID , TITLE")
.from("CLASSIFICATIONSCORE")
.where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classID)
.table();
for(var i = 0; i < res.length; i++)
{
res[i][1] = translate.text(res[i][1])
}
if (res == null)
res = [];
result.object(res);
\ No newline at end of file
import("Sql_lib");
import("Classification_lib");
import("system.logging");
import("AttributeFilter_lib");
import("Entity_lib");
import("Context_lib");
import("system.vars");
import("system.result");
var operator = vars.get("$local.operator");
var rawvalue = vars.get("$local.rawvalue");
var columnPlaceholder = vars.get("$local.columnPlaceholder");
var filterCond = vars.get("$local.condition");
var classificationTypeID = AttributeSearchNameCoder.decode(vars.getString("$local.name")).id;
var sqlCond;
//[["A","A"],["B","B"],["C","C"],["D","D"]]
var scoreValue = ClassificationUtils.mapClassLetter(rawvalue);
var havingCase;
if(scoreValue[0] == 0)
havingCase = "sum(SCORE) >= " + scoreValue[0];
else
havingCase = "sum(SCORE) > " + scoreValue[0];
var having = havingCase + " and sum(SCORE) <= " + scoreValue[1];
var subSqlCond = newSelect("OBJECT_ROWID").from("classification").join("classificationscore", "classiFICATIONSCOREID = CLASSIFICATIONSCORE_ID")
.where("classificationscore.CLASSIFICATIONTYPE_ID", newSelect("classificationtypeId").from("classificationtype")
.where("classificationtype.CLASSIFICATIONGROUP", classificationTypeID), SqlBuilder.IN()).groupBy("classification.OBJECT_ROWID");
if (operator == "1")//equal
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond.having(having), SqlBuilder.IN()).toString();
else if (operator == "2")//not equal
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond.having(having), SqlBuilder.NOT_IN()).toString();
else if (operator == "11")//is not empty
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond, SqlBuilder.IN()).toString();
else if (operator == "12")//is empty
sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond, SqlBuilder.NOT_IN()).or("SALESPROJECT.SALESPROJECTID", newSelect("OBJECT_ROWID").from("classification"), SqlBuilder.NOT_IN()).toString();
else sqlCond = "1=1";
result.string(sqlCond);
import("Sql_lib");
import("system.translate");
import("system.logging");
import("system.util");
import("KeywordRegistry_basic");
import("system.entities");
import("Attribute_lib");
import("AttributeFilter_lib");
import("system.result");
var res = [];
var data = newSelect("distinct CLASSIFICATIONGROUP, CLASSIFICATIONGROUP")
.from("classificationtype")
.orderBy("CLASSIFICATIONGROUP").table();
data.forEach(function(row){
var name = AttributeSearchNameCoder.encode(row[0], row[1]);
res.push({
name: name,
title: translate.text(row[1]),
contentType: "TEXT",
hasDropDownValues: true
});
})
res = JSON.stringify(res);
result.string(res);
\ No newline at end of file
import("system.result");
result.object([["A","A"],["B","B"],["C","C"],["D","D"]]);
\ No newline at end of file
......@@ -85,6 +85,40 @@ ClassificationUtils.mapToClass = function(pScore)
return "_";
}
/**
* get the lowest Score for a Letter.
* The classes are hardcoded like this:
* >=0 to 25: D
* > 25 to 50: C
* > 50 to 75: B
* > 75 to 100: A
*
* @return {Array} [min, max] Points the Letter is between
*/
ClassificationUtils.mapClassLetter = function(pLetter)
{
var res;
switch (pLetter) {
case 'A':
res = [75,100]
break;
case 'B':
res = [50, 75];
break;
case 'C':
res = [25, 50];
break;
case 'D':
res = [0, 25];
break;
}
if(!res)
res = false;
return res;
}
/**
* Get all possible groupnames for a classificationtype
* Either as [["group", "group"]] (for the possible items process)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment