Creating Orders from PO
This API creates a sales order from a Customer Purchase Order: single order, multiple order using split criteria, or partial order.
API Details
API |
Signature |
---|---|
createOrderForPO |
|
Parameter 1: Create Order for Customer Purchase Order Data Object |
||
---|---|---|
Name |
Type |
Description |
request |
|
The request data object. |
Request Data Object - CreateOrderForPORequestDO |
||
---|---|---|
Field |
Type |
Description |
orderInputSO |
|
To create the order inputs. |
PurchaseOrderId |
|
To create a single order. |
SplitGroupFields |
|
To group by orders |
Request Standard Object - orderInputSO |
|||
---|---|---|---|
Field |
Type |
Required? |
Description |
SoldToAccountId |
|
Yes |
The id of the Account to which the order is placed. |
PriceListId |
|
Yes |
The id of the PriceList to be associated with the order. |
PricingDate |
|
No |
Date and time associated with the order and represent the date when the order will be priced. |
OrderDate |
|
No |
Date and time when the order is created. |
OrderStartDate |
|
No |
Date and time when the order fulfillment starts. |
OrderEndDate |
|
No |
Date and time when the order fulfillment ends. |
useAdvancedApproval |
|
No |
Whether to use advanced approval. The default value is False. |
useDealOptimizer |
|
No |
Whether to use the Deal Optimizer. The default value is False. |
Parameter 2: Create Selected Purchase Order Item Data Object |
||
---|---|---|
Name |
Type |
Description |
request |
|
The request data object. |
Request Data Object - poItemDO (Required for partial order only) |
|||
---|---|---|---|
Field |
Type |
Required? |
Description |
POItemId |
|
Yes |
Customer PO item number. |
ProductId |
|
Yes |
Customer Product item number. |
Quantity |
|
Yes |
Quantity of the order. |
StartDate |
|
No |
Date and time when the PO fulfillment starts. |
EndDate |
|
No |
Date and time when the PO fulfillment ends. |
Selling Term |
|
No |
Duration of the customer PO. |
Comments |
|
No |
Any notes. |
SourceId |
|
Yes |
Source ID of the order. For example, Quote, Contract, or Agreement ID. |
Comments |
|
No |
Comments about the agreement. |
ContractNumbers |
|
No |
Contract number from the agreement. |
API Response
Response Data Object - Apttus_CPQApi.CPQ.CreateOrderForPOResponseDO |
||
---|---|---|
Name |
Type |
Description |
OrderId |
|
Order number which is created for customer PO. |
Code Sample
String ACCOUNT_NAME = 'RY_Account_002'; String PRICELIST_NAME = 'RY_PriceList'; Integer SELLING_TERM = 12; Id CUSTOMER_PO_ID = 'a440R0000002Tif'; String SPLIT_ORDER_FIELD = 'RY_GroupingTest__c'; Id PO_ITEM_ID = 'a430R000000O2tC'; Id SOURCE_ITEM_ID = 'a0W0R000000JT9F'; Account myAccount = [SELECT Id FROM Account WHERE Name =: ACCOUNT_NAME]; Apttus_Config2__PriceList__c myPriceList = [SELECT Id FROM Apttus_Config2__PriceList__c WHERE Name =: PRICELIST_NAME]; Apttus_Config2__CustomerPOItem__c poItem = [SELECT Id, RY_GroupingTest__c, Apttus_Config2__ProductId__c, Apttus_Config2__Quantity__c, Apttus_Config2__StartDate__c, Apttus_Config2__EndDate__c FROM Apttus_Config2__CustomerPOItem__c WHERE Apttus_Config2__PurchaseOrderId__c =: CUSTOMER_PO_ID AND Id =: PO_ITEM_ID LIMIT 1]; /* Create Order for Customer Purchase Order Data Object */ Apttus_CPQApi.CPQ.CreateOrderForPORequestDO request = new Apttus_CPQApi.CPQ.CreateOrderForPORequestDO(); // Create the Order Input Apttus_Config2__Order__c orderInputSO = new Apttus_Config2__Order__c(); orderInputSO.Apttus_Config2__SoldToAccountId__c = myAccount.Id; orderInputSO.Apttus_Config2__PriceListId__c = myPriceList.Id; orderInputSO.Apttus_Config2__PricingDate__c = Datetime.now(); orderInputSO.Apttus_Config2__OrderDate__c = Datetime.now(); orderInputSO.Apttus_Config2__OrderStartDate__c = Date.today(); orderInputSO.Apttus_Config2__OrderEndDate__c = Date.today().addMonths(SELLING_TERM); request.OrderInput = orderInputSO; // Add Order Properties (Optional) request.Properties.add(new Apttus_Config2.Property('useAdvancedApproval', 'false')); request.Properties.add(new Apttus_Config2.Property('useDealOptimizer', 'false')); // Assign the Customer Purchase Order (For single order) request.PurchaseOrderId = CUSTOMER_PO_ID; // Add Order Items (Optional) // Selecting Items // Create Selected Purchase Order Item Data Object Apttus_CPQApi.CPQ.SelectedPOItemDO poItemDO = new Apttus_CPQApi.CPQ.SelectedPOItemDO(); (For partial order) //webService Apttus_Config2__LineItem__c CustomData //webService List CustomFields poItemDO.POItemId = poItem.Id; poItemDO.ProductId = poItem.Apttus_Config2__ProductId__c; poItemDO.Quantity = poItem.Apttus_Config2__Quantity__c; poItemDO.StartDate = poItem.Apttus_Config2__StartDate__c; poItemDO.EndDate = poItem.Apttus_Config2__EndDate__c; poItemDO.SellingTerm = Apttus_Config2.CPQWebService.computeTerm(poItemDO.StartDate,poItemDO.EndDate,'Monthly'); poItemDO.Comments = 'Purchase order item test'; // Set Additional Parameters From Source Line Item poItemDO.SourceId = SOURCE_ITEM_ID; poItemDO.SourceFields.add('Apttus_QPConfig__Comments__c'); poItemDO.SourceFields.add('Apttus_QPConfig__ContractNumbers__c'); request.OrderItems.add(poItemDO); // Split Order Criteria //request.SplitGroupFields.add(SPLIT_ORDER_FIELD); (For group by orders) // Create the Order(s) Apttus_CPQApi.CPQ.CreateOrderForPOResponseDO result = Apttus_CPQApi.CPQWebService.createOrderForPO(request); system.debug('Order Id = ' + result.OrderId);