Bedingung für Steuerberechnung

18. November 2014 00:04

Hallo,

ich nutze folgendes Script zur Berechnung der Steuer im salesorderdetail Formular:

Code:
function quantity_onchange()
{
tax_onchange();
Xrm.Page.getAttribute("tax").fireOnChange();
Xrm.Page.getAttribute("tax").setSubmitMode("always");

}
function priceperunit_onchange()
{
tax_onchange();
Xrm.Page.getAttribute("tax").fireOnChange();
Xrm.Page.getAttribute("tax").setSubmitMode("always");
}
function tax_onchange()
{
Xrm.Page.getAttribute("tax").setValue(Xrm.Page.getAttribute("quantity").getValue() * Xrm.Page.getAttribute("priceperunit").getValue() * 0.19);
}


Funktioniert auch wunderbar. Nun möchte ich allerdings eine Bedingung einbinden, damit die Berechnung nur ausgeführt wird wenn keines der beiden Optionsfelder "eu_steuerfrei" und "ausland_steuerfrei" im übergeordneten Salesorder Formular angehakt sind.

Ich weiß nicht genau wie ich auf Felder von anderen Formularen zugreifen kann, und wie ich die beiden Bedingungen unterbringe.

Hat jemand einen Tipp?

Danke

Re: Bedingung für Steuerberechnung

18. November 2014 07:50

Hallo,
du kannst mit OData auf die Related SalesOrder zugreifen. Das OData Modul kann mein ich bei Codeplex heruntergeladen werden und als Solution auf dein Customizing System eingespielt werden.
In diesem Modul kannst du dann dein "Select"-Befehl entsprechend zammen basteln.
So kann deine query dann aussehen:
var serverUrl = Xrm.Page.context.getServerUrl();
if (serverUrl.length > 0 && serverUrl.charAt(serverUrl.length - 1) == '/')
{
serverUrl = serverUrl.substr(0, serverUrl.length - 1);
}
var oDataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc";
var retrieveReq = new XMLHttpRequest();
var Odata = oDataPath + hier dein gebastelter ODataSelect;
retrieveReq.open("GET", Odata, false);
retrieveReq.setRequestHeader("Accept", "application/json");
retrieveReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
retrieveReq.onreadystatechange = function() {RetrieveReqCallBack(this);};
retrieveReq.send();
}
}

function RetrieveReqCallBack(retrieveReq)
{
if(retrieveReq.readyState == 4 /*complete*/)
{
if(retrieveReq.status == 200)
{
Hier kannst du dann mit deinen felder arbeiten und dein Tax_onchange machen.
}
}

Grüße
gE3z

Re: Bedingung für Steuerberechnung

18. November 2014 09:44

alles was gE3z schreibt ist soweit richtig, du musst allerdings kein Odata Modul von Codeplex laden, um mit Odata im CRM arbeiten zu können.

OData wird nativ von CRM unterstützt.

Eventuell meint er ja das ODATA Query Designer Toll von Codeplex, das auch wir einsetzen.
Mit diesem Tool kannst du dir sehr einfach die OData Querys erstellen lassen. Diese sind nicht so einfach, wie es auf dem ersten Blick aussieht da sie unter anderem CaseSensitiv für die Schemanamen sind.

Re: Bedingung für Steuerberechnung

18. November 2014 12:21

Michael du hast recht, ich wollte darauf hinaus :), dass es eine Ergänzung ist, um sich besser die ODATA Querys zu erstellen.
Sorry falls es nicht so heraus kam =D