Quote Product
エンティティからデータを取得するはずのプラグインを作成しています。 デフォルトでは、パーセント値に割引はなく、割引額のみです。割引率をフォームに追加しました(ad_discountpercent
)。今私はこのような新しい価格を計算する必要があります:CRMプラグインが動作しないC#
sum = (price - discount)*quantity*(100 - discount%)/100
私はそれのためのコードを作った。このコードをビルドするときにエラーはありませんが、CRMに変更はありません。私はまた、私のプラグインを登録しました。
通貨タイプフィールドである3つのフィールドmanualdiscountamount
,priceperunit
,extendedamount
があります。 quantity
は10進数で、ad_discountpercent
は整数です。私は通貨から価値を得るためのいくつかの方法を見つけました、いくつかはコメントされています、いくつかはない、私はどちらが適切かわからないので。
1つの通知が結果を確認したが、期待どおりであるため、フェッチは正常に動作しています。コードの長さのために私は1行で圧縮しました。
ここでは、ジョブを実行するコードの一部です。変換に何か問題があるという情報はありません。新しい値を設定する適切な方法を使用していますか? 私はこれで新しいので、任意のコメントは私を助けるだろう。
string fetch1 = @"<fetch count='50' ><entity name='quotedetail' ><attribute name='manualdiscountamount' /><attribute name='priceperunit' /><attribute name='ad_discountpercent' /><attribute name='quantity' /> <attribute name='extendedamount' /> <filter> <condition attribute='ad_discountpercent' operator='not-null'/> </filter > </ entity> </fetch>";
EntityCollection result = service.RetrieveMultiple(new FetchExpression(fetch1));
foreach (var c in result.Entities)
{
// int discountPer = (int)c.Attributes["ad_discountpercent"];
int discountPer = c.GetAttributeValue<int>("ad_discountpercent");
Money m = (Money)c.Attributes["priceperunit"];
decimal price = m.Value;
// decimal price = c.GetAttributeValue<decimal>("priceperunit");
Money m1 = (Money)c.Attributes["manualdiscountamount"];
decimal discount = m1.Value;
// decimal discount = c.GetAttributeValue<decimal>("manualdiscountamount");
//decimal discountPer = Convert.ToDecimal(c.Attributes["ad_discountpercent"]);
decimal quantity = Convert.ToDecimal(c.Attributes["quantity"]);
//decimal quantity = c.GetAttributeValue<decimal>("quantity");
decimal sum = (price - discount) * quantity * (100 - discountPer)/100;
Money summTotal = new Money();
summTotal.Value = sum;
entity["extendedamount"] = summTotal;
service.Update(entity);
ここで、結果を格納する 'entity'を取得しますか?また、どのステップでプラグインを登録しましたか( "QuoteProduct"の "Update")?ここでは、プラグインをデバッグする方法について説明します:[ステップバイステップ:CRM2011プラグインプロファイラを使って作業する](https://support.microsoft.com/en-us/kb/2778280) –
これはコードには、私のエンティティを取得する前の部分があります。私はこのプラグインをデバッグしようとします。 –
正しいエンティティがある場合は、値を更新する方法が有効です(同じエンティティを複数回更新することに注意してください)。あなたのプラグインが正しいステップに登録されていることを確認しましたか?プラグインのプロファイリングを開始すると、CRMからプラグインを起動するとエラーメッセージが表示されます。 –