Skip to content
Snippets Groups Projects
Commit 14eae775 authored by Sebastian Pongratz's avatar Sebastian Pongratz :ping_pong:
Browse files

Merge branch 'sales_2001140_FixVisitrecommendation' into '2021.2.0'

Sales 2001140 fix visitrecommendation

See merge request xrm/basic!1355
parents a26cb35e 593b70c3
No related branches found
No related tags found
No related merge requests found
......@@ -133,6 +133,21 @@ var semiannually = parseInt(datetime.ONE_DAY * 183);
var quarterly = parseInt(datetime.ONE_DAY * 93);
var yearly = parseInt(datetime.ONE_DAY * 365);
//ToDo: use once it's possible to use this (Problem with date comparison)
//var today = vars.get("$sys.today");
//var visitfrequencyCaseWhen = SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$yearly()))
// .then((eMath.subInt(today, yearly)).toString())
// .elseValue(SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$semiannualy()))
// .then((eMath.subInt(today, semiannually)).toString())
// .elseValue(SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$quarterly()))
// .then((eMath.subInt(today, quarterly)).toString())
// .elseValue(SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$monthly()))
// .then((eMath.subInt(today, monthly)).toString())
// .elseValue((eMath.subInt(today, weekly)).toString())
// )
// )
// ).toString()
//dynamic Recommendations
//recommended Organisations containing the attribute Visit Frequency
if(idValues == false)
......@@ -161,16 +176,17 @@ if(idValues == false)
var recommendationEntryCountSubSelect = "(" + newSelect("count(VISITPLANENTRYID)")
.from("VISITPLANENTRY")
.where(newWhere("VISITPLANENTRY.CONTACT_ID = DISTRICTCONTACT.ADVISER_CONTACT_ID ")
.or("VISITPLANENTRY.ORGANISATION_CONTACT_ID = DISTRICTCONTACT.ADVISER_CONTACT_ID "))
.and(newWhere("VISITPLANENTRY.ENTRYDATE", eMath.subInt(vars.get("$sys.today"), datetime.ONE_DAY * 7), SqlBuilder.LESS_OR_EQUAL())
.and("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.NOT_EQUAL()))
.or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.EQUAL())
.where(newWhere("VISITPLANENTRY.CONTACT_ID = CONTACT.CONTACTID ")
.or("VISITPLANENTRY.ORGANISATION_CONTACT_ID = CONTACT.CONTACTID ")
// .and(newWhere("VISITPLANENTRY.ENTRYDATE", visitfrequencyCaseWhen, SqlBuilder.LESS_OR_EQUAL()) use this instead of the next line once possible
.and(newWhere("VISITPLANENTRY.ENTRYDATE", eMath.subInt(vars.get("$sys.today"), datetime.ONE_DAY * 7), SqlBuilder.LESS_OR_EQUAL())
.and("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.EQUAL())))
+ ") + (" + newSelect("count(VISITRECOMMENDATIONID)")
.from("VISITRECOMMENDATION")
.where("VISITRECOMMENDATION.RESPONSIBLE = CONTACT.CONTACTID")
.where("VISITRECOMMENDATION.CONTACT_PERSON_ID = CONTACT.CONTACTID")
.or("VISITRECOMMENDATION.CONTACT_ID = CONTACT.CONTACTID") + ")"
var visitFrequencyData = newSelect(["''" //0
, "CONTACT.CONTACTID" //1
, contactPointSubSelect
......@@ -201,12 +217,13 @@ if(idValues == false)
.leftJoin("ADDRESS", "ADDRESS_ID = ADDRESSID")
.where("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$active())
.and("DISTRICTCONTACT.VISITFREQUENCY is not null")
.and("DISTRICTCONTACT.VALID_FROM", vars.get("$sys.date"), SqlBuilder.LESS_OR_EQUAL())
.and(newWhere("DISTRICTCONTACT.VALID_FROM", vars.get("$sys.date"), SqlBuilder.LESS_OR_EQUAL()).or("DISTRICTCONTACT.VALID_FROM is null"))
.and(newWhere("DISTRICTCONTACT.VALID_UNTIL", vars.get("$sys.date"), SqlBuilder.GREATER_OR_EQUAL())
.or("DISTRICTCONTACT.VALID_UNTIL is null"))
.and("CONTACT.STATUS", $KeywordRegistry.contactStatus$inactive(), SqlBuilder.NOT_EQUAL())
.orderBy("(" + newSelect("AB_KEYWORD_ENTRY.SORTING").from("AB_KEYWORD_ENTRY").where("AB_KEYWORD_ENTRY.KEYID = DISTRICTCONTACT.VISITFREQUENCY") + ") desc")
.table();
visitFrequencyData = visitFrequencyData.table()
var alreadyRecommended = {}; //orgContactId+contactId
for (var i = 0; i < visitFrequencyData.length; i++)
......@@ -278,7 +295,7 @@ if(idValues == false)
visitFrequencyData[i][20] //district_id.value
];
if(visitFrequencyData[i][16] == 0 && (!helperObj.hasOwnProperty(visitFrequencyData[i][1]) || !helperObj[visitFrequencyData[i][1]].hasOwnProperty(visitFrequencyData[i][14])))
if((visitFrequencyData[i][16] == 0) && (!helperObj.hasOwnProperty(visitFrequencyData[i][1]) || !helperObj[visitFrequencyData[i][1]].hasOwnProperty(visitFrequencyData[i][14])))
{
recommendationData.push(tmpData);
}
......
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