itemlist = list();
statulist = list();
sum1 = 0;
sum2 = 0;
nos = "";
//遍历多条数据的样例
for each a in ids.toList("|||")
{
//获取每张发票的信息
inv = zoho.crm.getRecordById("Invoice",a.toLong(),{"approved":"both"});
//发票名称
invname = inv.get("Name");
//将发票名称拼接
nos = invname + ";" + nos;
//客户名称
accn = inv.get("Customer_Name");
//将获取到的客户名称插入集合
accnlist.add(accn);
//发票状态
statu = inv.get("Invoice_Status");
//将获取到的发票状态插入集合
statulist.add(statu);
//发票金额
billga = inv.get("Billing_Gross_Amount").toDecimal();
//多张发票金额汇总求和
sum1 = billga + sum1;
//获取子表单
itemds = inv.get("Item_Details");
//子表单遍历
for each itemd in itemds
{
//下面是子表单的字段
Period = itemd.get("Period");
Description = ifnull(itemd.get("Description"),"");
Qty = ifnull(itemd.get("Qty"),"0");
UnitPrice = ifnull(itemd.get("Unit_Price"),"0");
DataCurrency = ifnull(itemd.get("Data_Currency"),"");
AmountDataCurrency = ifnull(itemd.get("Amount_Data_Currency"),"0");
Amount = ifnull(itemd.get("Amount"),"0");
Exchange_Rate1 = ifnull(itemd.get("Exchange_Rate1"),"0");
AmountLocal = ifnull(itemd.get("Amount_Local"),"0");
//将获取到的每个字段赋值
ms = Map();
ms.put("Period",Period);
ms.put("Description",Description);
ms.put("Qty",Qty);
ms.put("Unit_Price",UnitPrice);
ms.put("Data_Currency",DataCurrency);
ms.put("Amount_Data_Currency",AmountDataCurrency);
ms.put("Amount",Amount);
ms.put("Exchange_Rate1",Exchange_Rate1);
ms.put("Amount_Local",AmountLocal);
//将获取到的子表单每一行插入集合
itemlist.add(ms);
}
}
//客户名称集合先去重,再计算个数
accs = accnlist.distinct().size();
//发票状态集合先去重,再计算个数
status = statulist.distinct().size();
//判断客户集合和状态集合去重后是否唯一,如果客户名称和发票状态都唯一,则可以执行合并
if(accs == 1 && status == 1)
{
//将上面获取到的以及合并后的数据赋值
m = Map();
m.put("Original_Invoice_No",nos);
m.put("Combined_Invoice_ids",ids);
m.put("Invoice_Status","Pending");
m.put("Customer_Name",accn);
m.put("Billing_Gross_Amount",sum1);
//创建新数据
res = zoho.crm.createRecord("Invoice",m);
//按钮返回信息合并成功
return "Merged Invoice has been successfully created";
}
//如果客户名称不唯一,则返回失败及相应提示
else if(accs != 1 && status == 1)
{
return "Failed, Account name should be same";
}
//如果发票状态不唯一,则返回失败及相应提示
else if(accs == 1 && status != 1)
{
return "Failed, Invoice status should be Prepared";
}
//如果客户名称和发票状态都不唯一,则返回失败及相应提示
else if(accs != 1 && status != 1)
{
return "Failed, Please check Account Name and Invoice Status";
}
//除以上情况之外,同样返回失败
else
{
return "Failed, the select record doesn't matched";
}