2 neue Fragen zum Mapping

7. Mai 2012 09:00

Guten Morgen und eine schöne Woche wünsche ich.

Als erstes stelle ich kurz meine Idee vor:

Ich möchte für unseren Vertrieb die Marge darstellen, das sowohl für die einzelnen Produkte in "Quote Product" als auch "Gesamt-Marge" in "einem Feld in der Form "Quote".

Dazu sehe ich folgende Schritte:

1. ein neues Feld erstellen "standardcost" in der Form "Quote Product"
2. Mappen von "Standard Cost" der Form "Product" nach "standardcost" in der Form "Quote Product"
3. Sicherstellen dass bei dem Hinzufügen eines neuen Produktes in "Quote" im Feld "standardcost" von "Quote Product" auch der Wert von "Standard Cost" von Produkt ankommt.
4. Erstellen eines Feldes "Marge" in der Form "Quote Product" und berechnung der Marge.
4. Erstellen eines neunen Feldes "standardcost Total" in der Form "Quote"
5. Aufsummieren aller "standardcost" * "Quantity" der Produkte
6. Erstellen eines Feldes "Marge" in der Form "Quote" und deren Berechnung

Durch die Hilfe von Michael habe ich letzte Woche Schritt 1 und 2 schaffen können. Das Mapping konnte ich anlegen.

Nach dem was ich aus dem Buch "Arbeiten mit Microsoft Dynamics CRM 2011" verstanden haben, müsste nach dem erfolgreichen Erstellen der Entitätszuordnung
im Folgenden bei jedem neu erstellten Eintrag in "Quote Product" das gemappte Feld "standardcost" automatisch mit dem Wert aus "Product"->"Standard Cost" gefüllt werden.
Dem ist nicht so, das Feld bleibt leer.

Hier jetzt meine Frage No. 1:
Was habe ich übersehen? Fehlt mir hier noch ein Step?

die 2. Frage betrifft den noch zu erstellenden Schritt 5:
Wenn ich in der Form "Quote" die "standardcost" der einzelnen Produkte aufsummerien möchte geht das nicht mit JS alleine da dieses nach meinem bisherigen Verständnis nur in der aktuellen Form "operiert". Hier suche ich nach einem Tipp, wo ich weiterlesen sollte.
Kann ich die Aufgabe "durchwandern aller Produkte und aufsummieren der Werte" mit einem Workflow erledigen oder brauche ich ein Plugin und ich sollte mich als nächstes mit dem SDK beschäftrigen?

Grüße

Klaus

Re: 2 neue Fragen zum Mapping

7. Mai 2012 09:46

Hallo Klaus,

bitte nur eine Frage je Beitrag im Forum stellen.
Die Antwort für die erste Frage ist einfach, das Mapping kannst du in der Beziehung zwischen den beiden Entitäten einstellen. Wenn du diese Beziehung geöffnet hast, findest du das Mapping in der linken Navigation als zweiten Menüpunkt.

Re: 2 neue Fragen zum Mapping

7. Mai 2012 10:38

Hallo Michael,

in Zukunft gibts nur noch 1 Frage pro Beitrag.
Dieser Beitrag sollte sich dann auf Frage 1 konzentrieren.

Das Mapping von standardcost habe ich angelegt. Füge ich einer Quote ein neues Quote Product hinzu, wird das Feld aber nicht gefüllt es bleibt leer.

Ich habe ein Relationship "Product to Quote Product" angelegt.
Hier im Menüpunkt Common->Mappings in der Tabelle ist u.a. folgender Eintrag zu finden:

Scource Name: standardcost
Soruce Display Name : Standard Cost
Target Name : new_standardcostv2
Target Display Name : StandardCostV2

in der Form von "Quote Produkt" habe ich das Feld auf die Form gezogen und somit sichtbar.

Ich meine verstanden zu haben, dass damit beim hinzufügen eines neuen Produktes zur Quote der Wert von "Product"->"Standard Cost" in "Quote Product"->"StandardCostV2" automatisch erscheinen soll. Das Feld "StandardCostV2" in "Quote Product" bleibt aber leer beim hinzufügen eines neuen Produktes.

Nun vermute ich, dass noch ein Schritt / Flag irgendwo fehlt.

Grüße

Klaus

Re: 2 neue Fragen zum Mapping

7. Mai 2012 10:55

Hallo Klaus,
ich bin bis morgen bei einem Kunden, ich sehe es mir danach einmal im Detail an

Re: 2 neue Fragen zum Mapping

7. Mai 2012 10:58

Hallo,

eine Information habe ich noch.
Lösche ich im Product den Wert in "Standard Cost" und füge anschliessend ein Product in Quote hinzu, so bekomme ich eine Fehlermeldung in rot "Missing: Standard Cost ...".
Das scheint mir ein Hinweis zu sein, dass das Mapping funktioniert, nur bleibt mein Feld "StandartCostV2" dennoch leer, auch wenn ich wieder einen Wert in "Standard Cost" im Produkt eintrage.

Grüße

Klaus

Re: 2 neue Fragen zum Mapping

7. Mai 2012 10:58

Hallo Michael,

vielen Dank :)

Grüße

Klaus

Re: 2 neue Fragen zum Mapping

9. Mai 2012 09:36

Hallo Klaus,

ich versuche mal, die Anforderung ein bisschen umzuformulieren, damit ich sicher bin, deine Anforderung richtig verstanden zu haben.

1. ein neues Feld erstellen "standardcost" in der Form "Quote Product"

Du meinst die Entität "quotedetail" (Angebot(Produkt))?

2. Mappen von "Standard Cost" der Form "Product" nach "standardcost" in der Form "Quote Product"

Da du in der Standardbeziehung "product_quote_Details" kein Mapping hinzufügen kannst, hast du eine neue n:1 Beziehung zwischen "Angebot(Produkt)" und "Produkt" erstellt?

3. Sicherstellen dass bei dem Hinzufügen eines neuen Produktes in "Quote" im Feld "standardcost" von "Quote Product" auch der Wert von "Standard Cost" von Produkt ankommt.

Du meinst beim Hinzufügen eines neuen Datensatzes "Angebot(Produkt)" im "Angebot" soll das Feld "standardcost" des Produktes in das Feld "standardcost" des neuen "Angebot(Produkt)" übernommen werden?

Wenn meine obigen Annahmen stimmen, musst du das zweite Lookup für das zweite Mapping mit dem Produkt auf das Formular "Angebot(Produkt)" bringen und per JavaScript auf das OnChange des ersten Produktfeldes reagieren. In dem OnChange kopierst du das Produkt aus dem ersten Lookup in das zweite Lookup. Beim speichern des Datensatzes werden dann die Standardkosten des Produktes auch in den Angebotsdetaildatensatz übernommen.

Re: 2 neue Fragen zum Mapping

9. Mai 2012 15:57

Hallo Michael,

vielen Dank für die Hilfe. Ich habe nun etwas Zeit verwand um das zu erreichen, was ich verstanden habe. Deshalb der Reply erst heute Nachmittag.

1. ein neues Feld erstellen "standardcost" in der Form "Quote Product"

Du meinst die Entität "quotedetail" (Angebot(Produkt))?


Ja hier. Ich teste nur auf der englischen Version, weil ich meine gelesen zu haben, dass dieses potentiell weniger Probleme bereitet.
Deshalb benenne ich die Forms mit ihren englischen Namen.

2. Mappen von "Standard Cost" der Form "Product" nach "standardcost" in der Form "Quote Product"

Da du in der Standardbeziehung "product_quote_Details" kein Mapping hinzufügen kannst, hast du eine neue n:1 Beziehung zwischen "Angebot(Produkt)" und "Produkt" erstellt?


Vom Produkt ausgehend habe ich eine neue Beziehung 1:n zwischen "Produkt" und "Angebot(Produkt)"erstellt.

3. Sicherstellen dass bei dem Hinzufügen eines neuen Produktes in "Quote" im Feld "standardcost" von "Quote Product" auch der Wert von "Standard Cost" von Produkt ankommt.

Du meinst beim Hinzufügen eines neuen Datensatzes "Angebot(Produkt)" im "Angebot" soll das Feld "standardcost" des Produktes in das Feld "standardcost" des neuen "Angebot(Produkt)" übernommen werden?


Genau das ist mein Wunsch.

Wenn meine obigen Annahmen stimmen, musst du das zweite Lookup für das zweite Mapping mit dem Produkt auf das Formular "Angebot(Produkt)" bringen und per JavaScript auf das OnChange des ersten Produktfeldes reagieren. In dem OnChange kopierst du das Produkt aus dem ersten Lookup in das zweite Lookup. Beim speichern des Datensatzes werden dann die Standardkosten des Produktes auch in den Angebotsdetaildatensatz übernommen.


Den Punkt habe ich noch nicht ganz verstanden.


Hier der Stand:
Die von mir erstellte Beziehung von "Product" nach "Quote Product" finde ich unter Settungs->Custoimisations->Entities->Product-> 1:n Relationships unter dem Namen new_product_quotedetail.
Den "Display Name" habe ich auf "LUPtoQP" gesetzt, der "Name" wurde auf "new_luptoqpid" gesetzt.

In der Form "Quote Product" welches identisch sein sollte mit "Angebot(Produkt)" habe ich das Feld "LUPtoQP" hinzugefügt.
In der Form "Quote Product" habe bei dem Feld "Existing Product" für das Event "OnChanged" folgende Funtion hinzugefügt:

Code:
function MapProductStandardCost()
{
// Existing Product :: OnChanged
// alert("HIHO");
var lookup = new Array();
lookup = Xrm.Page.getAttribute("productid").getValue();
  if (lookup != null)
  {
    Xrm.Page.getAttribute("new_luptoqpid").setValue(lookup);
  }
}



Wenn ich nun ein neues Produkt hinzufüge wird dieses bei der Auswahl im Feld "Existing Product" automatisch auch übernommen und auf mein neu hinzu gefügtes Feld "LUPtoQP" übertragen.
Daraus schliesse ich, dass der Event gut funktioniert.

Mein Feld "StandartCostV2" bleibt aber nach wie vor leer, auch nach dem Speichern.

Grüße

Klaus
Zuletzt geändert von Klaus W am 9. Mai 2012 16:34, insgesamt 1-mal geändert.

Re: 2 neue Fragen zum Mapping

9. Mai 2012 16:25

Hallo Klaus,

der Code zum füllen des neuen Lookups, du musst zumindestens ein neues Objekt erstellen.

Code:
//Den Wert eines Lookup-Feldes auslesen
var lookup = new Array();
lookup =Xrm.Page.getAttribute(‘Feldname’).getValue();
lookup[0].id;
lookup[0].name;
lookup[0].entityType

//Den Wert eines Lookup-Feldes setzen
var lookupneu = new Array();
lookupneu[0] = new Object();
lookupneu[0].id = lookup[0].id;
lookupneu[0].name = lookup[0].name;
lookupneu[0].entityType = lookup[0].entityType;
Xrm.Page.getAttribute(‘Feldname’).setValue(lookupneu);

Re: 2 neue Fragen zum Mapping

9. Mai 2012 16:36

Hallo Michael,

ich probiers gleich aus und melde mich zurück.

Grüße

Klaus

Re: 2 neue Fragen zum Mapping

9. Mai 2012 16:49

Hallo,

da bin ich wieder.
Der Code sieht nun so aus:

Code:
function MapProductStandardCost()
{
// Existing Product :: OnChanged

// alert("HIHO");
var lookup = new Array();
lookup = Xrm.Page.getAttribute("productid").getValue();
//alert(lookup[0].name);

  if (lookup != null)
  {
   //Den Wert eines Lookup-Feldes setzen
   var lookupneu = new Array();
   lookupneu[0] = new Object();
   lookupneu[0].id = lookup[0].id;
   lookupneu[0].name = lookup[0].name;
   lookupneu[0].entityType = lookup[0].entityType;
   alert(lookupneu[0].name);                                                                    -> hier wir der Name auch richtig ausgegeben
    try {
       Xrm.Page.getAttribute("new_luptoqpid").setValue(lookupneu);
      } catch (ex) {
          alert(ex.message);
      }
  }
}


Wie vorher bereits, ist am Ende des Events in dem neuen Lookup das Produkt richtig übertragen. Ich kann auch auf das Produkt klicken und es wird geöffnet.
Dennoch bleibt "StandartCostV2" leer, auch nach dem Speichern.

Grüße

Klaus

Re: 2 neue Fragen zum Mapping

9. Mai 2012 16:58

Hallo Klaus,

stimmt und ist auch logisch, da es ja nicht die Primäre Verknüpfung ist, da habe ich nicht aufgepasst.

Dann benötigst du die zweite Verknüpfung nicht und musst dir die Daten über JavaScript und den Webservice holen. Diese Technik benötigst du eh noch für die Berechnung auf dem Angebot :-)

Re: 2 neue Fragen zum Mapping

9. Mai 2012 17:55

Hallo Michael,

kannst Du mir einen Tipp geben, wo ich da einsteigen könnte bei den Webservices. Ich bin noch ziemlich neu im CRM. Daher wäre ein Hinweis wo ich da beginnen sollte schon sehr hilfreich.

Vielen Dank

Klaus

Re: 2 neue Fragen zum Mapping

9. Mai 2012 17:57

z.B. http://andreaswijayablog.blogspot.com/2 ... ecord.html

Re: 2 neue Fragen zum Mapping

9. Mai 2012 18:11

Merci.

wenn ich das hinbekommen habe für diesen Fall, habe ich auch die Basis für den Rest.

Grüße

Klaus