標籤:crm建立銷售訂單 crm取消銷售訂單 crm將銷售訂單轉換為發票 crm完成銷售訂單 crm鎖定銷售訂單定價
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Crm.Sdk.Messages;
/// <summary>
/// 銷售訂單
/// </summary>
public class SoleOrderHelper
{
public static readonly string entityName = "salesorder";
public Guid soleorderId = Guid.Empty;
public IOrganizationService service;
/// <summary>
/// 建立銷售訂單
/// </summary>
public void Create(Guid accountId)
{
Entity en = new Entity() { LogicalName = entityName,Id = accountId };
en["name"] = "銷售訂單測試";
en["accountid"] = new EntityReference() { LogicalName = "account" ,Id = accountId };
soleorderId = service.Create(en);
}
/// <summary>
/// 將銷售訂單指派給其他使用者或團隊
/// </summary>
/// <param name="assignee">使用者或團隊引用</param>
public void Assign(EntityReference assignee)
{
AssignRequest request = new AssignRequest();
request.Target = new EntityReference() { LogicalName = entityName,Id = soleorderId };
request.Assignee = assignee;
AssignResponse response = (AssignResponse)service.Execute(request);
}
/// <summary>
/// 取消銷售訂單
/// </summary>
/// <param name="status">取消的狀態</param>
public void CancelSalesOrder(int status)
{
CancelSalesOrderRequest request = new CancelSalesOrderRequest();
request.OrderClose = new Entity() { LogicalName = entityName,Id = soleorderId };
request.Status = new OptionSetValue(status);
CancelSalesOrderResponse response = (CancelSalesOrderResponse)service.Execute(request);
}
/// <summary>
/// 將銷售訂單轉換為發票
/// </summary>
public void ConvertSalesOrderToInvoice()
{
ConvertSalesOrderToInvoiceRequest request = new ConvertSalesOrderToInvoiceRequest();
request.SalesOrderId = soleorderId;
request.ColumnSet = new ColumnSet("name","accountid");
ConvertSalesOrderToInvoiceResponse response = (ConvertSalesOrderToInvoiceResponse)service.Execute(request);
Entity invoiceEn = response.Entity;
}
/// <summary>
/// 完成銷售訂單
/// </summary>
/// <param name="status">完成的狀態</param>
public void FulfillSalesOrder(int status)
{
FulfillSalesOrderRequest request = new FulfillSalesOrderRequest();
request.OrderClose = new Entity() { LogicalName = entityName,Id = soleorderId };
request.Status = new OptionSetValue(status);
FulfillSalesOrderResponse response = (FulfillSalesOrderResponse)service.Execute(request);
}
/// <summary>
/// 從指定商機中檢索銷售訂單的產品組
/// </summary>
/// <param name="opportunityId">商機id</param>
public void GetSalesOrderProductsFromOpportunity(Guid opportunityId)
{
GetSalesOrderProductsFromOpportunityRequest request = new GetSalesOrderProductsFromOpportunityRequest();
request.OpportunityId = opportunityId;
request.SalesOrderId = soleorderId;
GetSalesOrderProductsFromOpportunityResponse response =
(GetSalesOrderProductsFromOpportunityResponse)service.Execute(request);
}
/// <summary>
/// 鎖定銷售訂單定價
/// </summary>
public void LockSalesOrderPricing()
{
LockSalesOrderPricingRequest request = new LockSalesOrderPricingRequest();
request.SalesOrderId = soleorderId;
LockSalesOrderPricingResponse response = (LockSalesOrderPricingResponse)service.Execute(request);
}
/// <summary>
/// 解鎖指定的銷售訂單(訂單)中產品的單價
/// </summary>
public void UnlockSalesOrderPricing()
{
UnlockSalesOrderPricingRequest request = new UnlockSalesOrderPricingRequest();
request.SalesOrderId = soleorderId;
UnlockSalesOrderPricingResponse response = (UnlockSalesOrderPricingResponse)service.Execute(request);
}
/// <summary>
/// 取消指定安全性主體(使用者或團隊)對銷售訂單的所有存取權限
/// </summary>
/// <param name="revokee">使用者或團隊引用</param>
public void RevokeAccess(EntityReference revokee)
{
RevokeAccessRequest request = new RevokeAccessRequest();
request.Target = new EntityReference() { LogicalName = entityName,Id = soleorderId };
request.Revokee = revokee;
RevokeAccessResponse response = (RevokeAccessResponse)service.Execute(request);
}
/// <summary>
/// 刪除銷售訂單
/// </summary>
public void Delete()
{
service.Delete(entityName, soleorderId);
}
}
crm操作銷售訂單實體