Creating a Partial Order from a Quote or Agreement
This API creates a partial order from a quote or agreement.
For detailed information on partial orders, refer to the Order Management for Users.
API Details
API |
Signature |
---|---|
CreateOrderRequest |
|
Parameters |
||
---|---|---|
Name |
Type |
Description |
request |
|
The request data object. |
Request Data Object - CPQApi.CPQ.CreateOrderRequestDO |
|||
---|---|---|---|
Field |
Type |
Required? |
Description |
CustomFields |
|
No |
List of custom fields on orderSO |
OrderInput |
|
Yes |
OrderSO |
OrderItems |
|
No |
List of order items |
OrderItemSource |
|
Yes |
Source of order items |
Properties |
|
No |
List of properties for cart created for order |
Request Data Object - CPQApi.CPQ.SelectedProductDO |
|||
---|---|---|---|
Field |
Type |
Required? |
Description |
AttributeValues |
|
No |
The product attribute value for the product |
Comments |
|
No |
Comments |
CopyBundleConfigurationFromSource |
|
No |
For bundles, to copy bundle configuration |
CustomData |
|
No |
Custom data line item |
CustomFields |
|
No |
List of custom fields |
EndDate |
|
No |
End date |
ProductId |
|
No |
Product Id |
Quantity |
|
No |
Quantity |
RelatedLineItems |
|
No |
List of related line items |
SellingTerm |
|
No |
Selling term |
SourceFields |
|
No |
List of source custom fields to be copied |
SourceId |
|
No |
Id of a source item |
StartDate |
|
No |
Start Date |
Code Sample
The following sample uses an explicit product definition for order items while creating partial order from quote/agreement.
Apttus_CPQApi.CPQ.CreateOrderRequestDO request = new Apttus_CPQApi.CPQ.CreateOrderRequestDO(); // order item source request.OrderItemSource = Apttus_CPQApi.CPQ.ITEMSOURCE_QUOTE_LINEITEM; // create order input Apttus_Config2__Order__c inputSO = new Apttus_Config2__Order__c(); inputSO.Apttus_Config2__SoldToAccountId__c = quote.Apttus_Proposal__Account__c; inputSO.Apttus_Config2__PriceListId__c = quote.Apttus_QPConfig__PriceListId__c; inputSO.Apttus_Config2__PricingDate__c = Datetime.now(); inputSO.Apttus_Config2__OrderDate__c = Datetime.now(); inputSO.Apttus_Config2__OrderStartDate__c = Date.today(); inputSO.Apttus_Config2__OrderEndDate__c = Date.today().addMonths(12); inputSO.Apttus_QPConfig__ProposalId__c = quote.Id; InputSO.Apttus_Config2__Source__c = 'Quote'; request.OrderInput = inputSO; // add order items Apttus_Proposal__Proposal_Line_Item__c quoteLine = [SELECT Id, Name, Apttus_Proposal__Product__c FROM Apttus_Proposal__Proposal_Line_Item__c WHERE Id =: quoteLineId]; // selected item Apttus_CPQApi.CPQ.SelectedProductDO productDO = new Apttus_CPQApi.CPQ.SelectedProductDO(); productDO.Comments = 'Test Create Order API'; productDO.StartDate = Date.today(); productDO.EndDate = Date.today().addMonths(12); productDO.SellingTerm = 12;DL productDO.Quantity = 2; productDO.ProductId = quoteLine.Apttus_Proposal__Product__c; productDO.SourceId = quoteLine.Id; productDO.CopyBundleConfigurationFromSource = true; request.OrderItems.add(productDO); // create order Apttus_CPQApi.CPQ.CreateOrderResponseDO result = Apttus_CPQApi.CPQWebService.createOrder(request); system.debug('result='+result);
Code Sample
This sample uses an explicit product definition for order items while creating a partial order from a quote or an agreement.
Apttus_CPQApi.CPQ.CreateOrderRequestDO request = new Apttus_CPQApi.CPQ.CreateOrderRequestDO(); // order item source request.OrderItemSource = Apttus_CPQApi.CPQ.ITEMSOURCE_QUOTE_LINEITEM; // create order input Apttus_Config2__Order__c inputSO = new Apttus_Config2__Order__c(); inputSO.Apttus_Config2__SoldToAccountId__c = '0014C00000F9Zz3'; inputSO.Apttus_Config2__PriceListId__c = 'a174C0000001MQ1'; inputSO.Apttus_Config2__PricingDate__c = Datetime.now(); inputSO.Apttus_Config2__OrderDate__c = Datetime.now(); inputSO.Apttus_Config2__OrderStartDate__c = Date.today(); inputSO.Apttus_Config2__OrderEndDate__c = Date.today().addMonths(12); // add custom fields to orderSO (optional) inputSO.put('Apttus_QPConfig__ProposalId__c','a0Y4C0000021Cm5'); request.OrderInput = inputSO; request.CustomFields.add('Apttus_QPConfig__ProposalId__c'); // add order items (optional) // selected item Apttus_CPQApi.CPQ.SelectedProductDO productDO = new Apttus_CPQApi.CPQ.SelectedProductDO(); productDO.Comments = 'Test Create Order API'; productDO.CopyBundleConfigurationFromSource = false; productDO.StartDate = Date.today(); productDO.EndDate = Date.today().addMonths(12); productDO.SellingTerm = 12; productDO.Quantity = 1; //productDO.ProductId = '01t4C000001pB1J'; // add attributes to the selected product (optional) Apttus_Config2__ProductAttributeValue__c attVal = new Apttus_Config2__ProductAttributeValue__c(); attVal.APTS_TestAttColor__c = 'Black'; productDO.AttributeValues.add(attVal); // add related line items to selected product (optional) Apttus_Config2__RelatedLineItem__c lineItem = new Apttus_Config2__RelatedLineItem__c(); lineItem.Apttus_Config2__RelationType__c = 'Wallet'; productDO.RelatedLineItems.add(lineItem); // source id and the explicit product definition are mutually exclusive productDO.SourceId = 'a0W4C000001MRRF'; request.OrderItems.add(productDO); // add order properties to use contract pricing (optional) // order properties (optional) // request.Properties.add(new Apttus_Config2.Property('useAdvancedApproval' 'false')); // request.Properties.add(new Apttus_Config2.Property('useDealOptimizer' 'false')); // request.Properties.add(new Apttus_Config2.Property('retId', 'a0Y4C0000021Cm5')); request.Properties.add(new Apttus_Config2.Property('cntrNbr_1', 'Q-00004442')); // Q-00004442 is the contract number in this example (Contract Number field on PriceList object) // create order api call Apttus_CPQApi.CPQ.CreateOrderResponseDO result = Apttus_CPQApi.CPQWebService.createOrder(request);