C# Dynamic CRM 2011删除报价产品并推送新报价产品

C# Dynamic CRM 2011删除报价产品并推送新报价产品,c#,dynamic,crm,quote,C#,Dynamic,Crm,Quote,我正在开发动态CRM SDK,以便从外部应用程序推送报价产品。以下代码可以很好地将产品推送到CRM。这些产品从外部应用程序的SQL数据库中提取,并推送到动态crm DataSet DS = GetAllCRM_Details(oppid); DataTable table = DS.Tables[0]; foreach (DataRow row in table.Rows) { string prodid = DbCommon.ToStr(row["txtcrmprodid"]); doub

我正在开发动态CRM SDK,以便从外部应用程序推送报价产品。以下代码可以很好地将产品推送到CRM。这些产品从外部应用程序的SQL数据库中提取,并推送到动态crm

DataSet DS = GetAllCRM_Details(oppid);
DataTable table = DS.Tables[0];

foreach (DataRow row in table.Rows)
{

string prodid = DbCommon.ToStr(row["txtcrmprodid"]);
double Qty = DbCommon.ToDouble(row["intquantity"]);
string Note = DbCommon.ToStr(row["txtproduct_note_internal"]);
string ProdDesc = DbCommon.ToStr(row["txtproductdiscription"]);
string qid = DbCommon.ToStr(row["txtcrmquoteid"]);
string UnitCrmID = DbCommon.ToStr(row["UnitID"]);
string price = DbCommon.ToStr(row["floatlistprice"]);
string lineid = DbCommon.ToStr(row["intQlinID"]);
string price_fltTotal = DbCommon.ToStr(row["floattotal"]);
string quotedetailid = DbCommon.ToStr(row["txtcrmquotedetailid"]);
string productname_qt = DbCommon.ToStr(row["txtproductname_qt"]);


decimal nprice = 0;
decimal ManualDiscountPrice = 0;
decimal pricefltotal = 0;


if (price != "")
{
    nprice = Convert.ToDecimal(price);
}

if (price_fltTotal != "")
{
    pricefltotal = Convert.ToDecimal(price_fltTotal);
}


ManualDiscountPrice = (nprice - pricefltotal) ;



decimal extamount = nprice * Convert.ToDecimal(Qty);


// Set the quote's product quantity to a negative value.

QuoteDetail quoteDetail = new QuoteDetail()
{

    ProductId = new EntityReference(Product.EntityLogicalName, new Guid(prodid)),                            
    IsProductOverridden = true,
    ProductDescription = productname_qt,
    IsPriceOverridden = true,
    Quantity = Convert.ToDecimal(Qty),
    PricePerUnit = new Money(nprice),
    CTDescription = ProdDesc,
    CTInternalNote = Note,
    ManualDiscountAmount = new Money(ManualDiscountPrice),              
    QuoteId = new EntityReference(Quote.EntityLogicalName, new Guid(qid)),
    UoMId = new EntityReference(UoM.EntityLogicalName, new Guid(UnitCrmID))
};

_quoteDetailId = _serviceProxy.Create(quoteDetail);
第一次尝试工作正常,当用户进行修改并尝试将产品推送到crm时,crm中的现有产品需要更新/删除现有产品并添加新产品。 产品报价详细信息id(guid)存储在外部工具数据库中。
请给出建议。

您正在正确的轨道上创建产品

请按照以下步骤进行更新

  • 使用源中的信息,从CRM检索信息以获取要更新的记录的GUID。为此,您可以使用_serviceProxy.Retrieve()或_serviceProxy.RetrieveMultiple()方法
  • 记录可用后,为产品创建一个实体,并将该实体的id分配给我们在第一步中检索到的记录,然后使用_serviceProxy.Update()。这将更新您现有的产品
  • 现在,如果要删除并创建新记录,请执行以下步骤

  • 检索要更新的案例中的记录
  • 使用_serviceProxy.Delete()方法从CRM中删除该特定记录
  • 按照现有代码创建具有更新信息的新产品
  • 建议更新记录,而不是总是删除和创建新记录


    希望这对您有所帮助,如果您有任何疑问,请告诉我。

    我们希望删除报价的所有产品详细信息,并添加新产品将加快流程。我无法使用上述代码

    代码示例将非常有用