概述:
工作中遇到销售需要复制销售订单以及该订单下的产品的需求。然鹅,Salesforce自带的复制只能复制订单的主体信息。
解决思路:
1. 通过JS Button获取需要复制的订单记录的Id以及带参跳转VF页面进行下一步操作
window.open('/apex/deepCloneOrder?orderId={!Object__c.Id}')
2. 获取当前订单记录的必要信息,并一一赋值给新的订单记录,
3. 插入新的订单记录
4. 新建订单下的产品记录,并关联新建的订单记录
5. 插入新建的产品记录
扩展:
1. 当然在做的过程中,会考虑到操作上的方便,增加了可选择性的赋值订单下产品,
2. 相关列表的全选功能:VF Page里面添加Js代码来实现
```
// VisualForce Code
<apex:dataTable value="{!opiList}" var="opi" cellspacing="13px" style="width:80%;" >
<apex:column width="1%" >
<apex:facet name="header">
<apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>
</apex:facet>
<apex:inputCheckbox value="{!opi.ifCheck}" id="inputId"/>
</apex:column>
</apex:dataTable>
// JavaScript Code:
<script type="text/javascript">
function selectAllCheckboxes(obj,receivedInputID){
var inputCheckBox = document.getElementsByTagName("input");
for(var i=0; i<inputCheckBox.length; i++){
if(inputCheckBox[i].id.indexOf(receivedInputID)!=-1){
inputCheckBox[i].checked = obj.checked;
}
}
}
</script>
```
- 在后台逻辑里封装了一个class,用来储存可选与否以及产品信息。
具体的代码可以参见Github上—“带产品复制功能”
Reference:
https://developer.salesforce.com/forums/?id=9060G000000MSmvQAG
http://raviduttsharma.wixsite.com/salesforce/single-post/2016/03/22/Clone-with-Related-list