[Sample Code] 把原本有複數個 OrderItem 的 Order 拆成兩張 Order (Separate a existing order to 2 orders)

背景說明


原本我們把多個產品都放在同一張 Order 下,到時候就會是一張 Order 對應一張發票。
但CSM 說客戶希望發票分兩張比較清楚。

此 sample 的泛用性不高,主要目的是留給未來的我可以回頭來抄作業的。


Sample Code

產生新 Order

//總共一年有12張order,CSM已經手動示範了一張,所以程式只需要跑第二張到第十二張
for (Integer i = 2; i <= 12; i++) {
order sampleOrder = [select AccountId, ContractId, Issued_Invoice_Amount__c,
CurrencyIsoCode, EffectiveDate,EndDate, Id, OpportunityId,
OrderNumber, OwnerId, Pricebook2Id,
Status, StatusCode, SystemModstamp, TotalAmount,Type
from order where contractid = '800XXXXXXXXXXXXXXX'
and =: i limit 1];
System.debug(i);
order newOrder = sampleOrder.clone(false,true,false,false);
system.debug(newOrder);
newOrder.Issued_Invoice_Amount__c = 20000;
insert newOrder;
OrderItem lineItem = new OrderItem();
lineItem.OrderId = newOrder.id;
lineItem.Quantity = 1;
lineItem.UnitPrice = 20000;
lineItem.Product2id = '01tXXXXXXXXXXXXXXX';
lineItem.PricebookEntryId= '01uXXXXXXXXXXXXXXX';
insert lineItem;
}

修改舊 Order 

list<order> orders = [select id,Adjust_Reason__c,Issued_Invoice_Amount__c
from order
where contractid = '800XXXXXXXXXXXXXXX' and Issued_Invoice_Amount__c=200000];

for(order o: orders){
o.Issued_Invoice_Amount__c = 180000 ;
o.Adjust_Reason__c ='1. seperate AAA and EEE fee 2. quarterly payment discount';

orderitem oi = [select id from orderitem where orderid =: o.id and product2id = '01tXXXXXXXXXXXXXXX'];
system.debug(oi);

delete oi;
}

update orders;

留言

這個網誌中的熱門文章

Salesforce證照考試心得 (Administrator and Advanced Administrator)

ISC2 CC (Certified in Cybersecurity Certification) 考試心得