|
@@ -20,6 +20,7 @@ import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
import kd.bos.servicehelper.QueryServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
+import kd.imc.bdm.common.constant.BotpCallBackLogConstant;
|
|
|
import nckd.base.helper.CommonHelperUtils;
|
|
|
import javax.validation.Valid;
|
|
|
import java.io.Serializable;
|
|
@@ -550,6 +551,10 @@ public class SRMSynPayApiPlugin implements Serializable {
|
|
|
return buildReturnData(code, srmBillNo, returnMessage, null, null, null);
|
|
|
}
|
|
|
|
|
|
+ //合同台账
|
|
|
+ qFilter = new QFilter("contractcode", QCP.equals, contract);
|
|
|
+ DynamicObject contractInfo = BusinessDataServiceHelper.loadSingle("er_contractbill", qFilter.toArray());
|
|
|
+
|
|
|
//单据类型
|
|
|
DynamicObject billTypeInfo = CommonHelperUtils.queryBaseDynamicObject("bos_billtype", "number", "er_prepaybill_BT_S");
|
|
|
|
|
@@ -562,6 +567,7 @@ public class SRMSynPayApiPlugin implements Serializable {
|
|
|
returnMessage = e.getMessage();
|
|
|
return buildReturnData(code, srmBillNo, returnMessage, null, null, null);
|
|
|
}
|
|
|
+// Date repaymentDate = CommonHelperUtils.getDateStringFormat("2099-12-31", "yyyy-MM-dd");
|
|
|
|
|
|
dailyLoanBill.set("bizdate", bizDate);//申请日期
|
|
|
dailyLoanBill.set("billstatus", "A");//单据状态
|
|
@@ -584,6 +590,7 @@ public class SRMSynPayApiPlugin implements Serializable {
|
|
|
dailyLoanBill.set("detailtype", "biztype_other");//关联业务
|
|
|
dailyLoanBill.set("ispush", "false");//合同下推生成
|
|
|
dailyLoanBill.set("nckd_srmstatus", "1");//srm状态,1:SRM已推送;2:已退回SRM;3:已反写SRM;4:反写SRM失败
|
|
|
+// dailyLoanBill.set("repaymentdate", repaymentDate);//预计冲销日期
|
|
|
|
|
|
BigDecimal totalReimburseAmount = BigDecimal.ZERO;//报销金额合计
|
|
|
|
|
@@ -632,6 +639,12 @@ public class SRMSynPayApiPlugin implements Serializable {
|
|
|
dailyLoanBill.set("expenseentryentity", expenseEntry);
|
|
|
|
|
|
//收款明细
|
|
|
+ //支付方式:默认为 银企直连
|
|
|
+ qFilter = new QFilter("number", QCP.equals, "BANK");
|
|
|
+
|
|
|
+ DynamicObject settleType = BusinessDataServiceHelper.loadSingle("bd_settlementtype", qFilter.toArray());
|
|
|
+ DynamicObject supplier = null;
|
|
|
+
|
|
|
DynamicObjectCollection accountEntry = dailyLoanBill.getDynamicObjectCollection("accountentry");
|
|
|
type = accountEntry.getDynamicObjectType();
|
|
|
JSONArray dailyLoanBillAccountEntry = inputData.getJSONArray("dailyLoanBillAccountEntry");
|
|
@@ -653,11 +666,13 @@ public class SRMSynPayApiPlugin implements Serializable {
|
|
|
return buildReturnData(code, srmBillNo, returnMessage, null, null, null);
|
|
|
}
|
|
|
|
|
|
- DynamicObject supplier = CommonHelperUtils.queryBaseDynamicObject("bd_supplier", "societycreditcode", payerName);
|
|
|
+ supplier = CommonHelperUtils.queryBaseDynamicObject("bd_supplier", "societycreditcode", payerName);
|
|
|
if(supplier == null){
|
|
|
returnMessage = "供应商(" + payerName + ")在星瀚系统中未匹配到数据!";
|
|
|
return buildReturnData(code, srmBillNo, returnMessage, null, null, null);
|
|
|
}
|
|
|
+ //供应商银行账号信息
|
|
|
+ DynamicObjectCollection entryBanks = supplier.getDynamicObjectCollection("entry_bank");
|
|
|
|
|
|
DynamicObject currency = CommonHelperUtils.queryBaseDynamicObject("bd_currency", "number", currencyType);
|
|
|
if(currency == null){
|
|
@@ -672,9 +687,24 @@ public class SRMSynPayApiPlugin implements Serializable {
|
|
|
BigDecimal amountOriLocal = amountOri.multiply(exchangeRate).setScale(4, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
DynamicObject entry = new DynamicObject(type);
|
|
|
+
|
|
|
+ entry.set("paymode", settleType);//支付方式
|
|
|
entry.set("payertype", "bd_supplier");//收款人类型
|
|
|
entry.set("supplier", supplier);//收款人
|
|
|
entry.set("payername", supplier.getString("name"));//收款人名称
|
|
|
+
|
|
|
+ if(entryBanks.size() > 0){
|
|
|
+ for(DynamicObject entryBank : entryBanks){
|
|
|
+ if(entryBank.getBoolean("isdefault_bank")){
|
|
|
+ entry.set("payeraccount", entryBank.getString("bankaccount"));//银行账号
|
|
|
+ entry.set("payeraccountname", entryBank.getString("accountname"));//账户名称
|
|
|
+ entry.set("payerbank", entryBank.getDynamicObject("bank"));//开户银行
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
entry.set("accountcurrency", currency);//币别
|
|
|
entry.set("accexchangerate", exchangeRate);//汇率
|
|
|
entry.set("orireceiveamount", amountOri);//收款金额
|
|
@@ -688,6 +718,83 @@ public class SRMSynPayApiPlugin implements Serializable {
|
|
|
}
|
|
|
dailyLoanBill.set("accountentry", accountEntry);
|
|
|
|
|
|
+ if(supplier == null){
|
|
|
+ returnMessage = "无收款供应商信息!";
|
|
|
+ return buildReturnData(code, srmBillNo, returnMessage, null, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ //合同信息
|
|
|
+ if(contractInfo != null){
|
|
|
+ DynamicObjectCollection contractEntry = dailyLoanBill.getDynamicObjectCollection("contractentry");
|
|
|
+ type = contractEntry.getDynamicObjectType();
|
|
|
+
|
|
|
+ DynamicObject currency = contractInfo.getDynamicObject("contractcurrency");
|
|
|
+ currency = CommonHelperUtils.queryBaseDynamicObject("bd_currency", "number", currency.getString("number"));
|
|
|
+
|
|
|
+ if(currency == null){
|
|
|
+ returnMessage = "币别(" + orgUnit + ")在星瀚系统中未匹配到数据!";
|
|
|
+ return buildReturnData(code, srmBillNo, returnMessage, null, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal exchangeRate = BigDecimal.ONE;
|
|
|
+ if(currency.getLong("id") != 1L){
|
|
|
+ exchangeRate = CommonHelperUtils.getExchangeRate(exchangeTableId, currency.getLong("id"), 1L, bizDate);
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal contractAmount = contractInfo.getBigDecimal("contractamount");//合同总额(初始)
|
|
|
+ BigDecimal oriapplyAmount = contractInfo.getBigDecimal("oriapplyamount");//合同总额(变更后)
|
|
|
+
|
|
|
+ DynamicObjectCollection contractPartyEntry = contractInfo.getDynamicObjectCollection("contractpartyentry"); //
|
|
|
+ if(contractPartyEntry.size() > 0){
|
|
|
+ for(DynamicObject partyEntry : contractPartyEntry){
|
|
|
+ DynamicObject entry = new DynamicObject(type);
|
|
|
+
|
|
|
+ DynamicObject contractparty = partyEntry.getDynamicObject("contractparty");
|
|
|
+ if(contractparty.getLong("id") != supplier.getLong("id")){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ entry.set("seq", 1);
|
|
|
+ entry.set("contractcode", contract);//合同号
|
|
|
+ entry.set("contractname", contractInfo.getString("contractname"));//合同名称
|
|
|
+ entry.set("signdate", contractInfo.getDate("signdate"));//签订日期
|
|
|
+ entry.set("contractdescription", contractInfo.getString("description"));//合同说明
|
|
|
+ entry.set("contractapplier", contractInfo.getDynamicObject("applier"));//经办人
|
|
|
+ entry.set("contractcostorg", contractInfo.getDynamicObject("costcompany"));//核算组织
|
|
|
+ entry.set("contractparta", contractInfo.getDynamicObject("parta"));//甲方old
|
|
|
+ entry.set("contractpartbtype", "bd_supplier");//乙方类型
|
|
|
+ entry.set("contractpartb", contractparty);//乙方
|
|
|
+
|
|
|
+ DynamicObjectCollection payplanEntrys = contractInfo.getDynamicObjectCollection("expenseentryentity");
|
|
|
+ if(payplanEntrys.size() > 0){
|
|
|
+ DynamicObject planEntry = payplanEntrys.get(0);
|
|
|
+
|
|
|
+ entry.set("contractexppaytypeid", planEntry.getDynamicObject("paymenttypeid"));//付款类型
|
|
|
+ entry.set("contractexphappendate", planEntry.getDate("happendate"));//预计付款日期
|
|
|
+ entry.set("contractexpproject", planEntry.getDynamicObject("std_project"));//项目
|
|
|
+ entry.set("contractexpenseitem", planEntry.getDynamicObject("expenseitem"));//费用项目
|
|
|
+ entry.set("contractexpcurrency", planEntry.getDynamicObject("entrycurrency"));//币种
|
|
|
+ entry.set("contractexpchangerate", planEntry.getBigDecimal("exchangerate"));//汇率
|
|
|
+ entry.set("contractexpquotetype", "0");//换算方式
|
|
|
+ entry.set("contractnotpayamount", planEntry.getBigDecimal("expnotpayamount"));//未付金额本位币
|
|
|
+ entry.set("contractcanloanamount", planEntry.getBigDecimal("canloanamount"));//可预付金额
|
|
|
+ entry.set("concurrcanloanamount", planEntry.getBigDecimal("canloancurramount"));//可预付金额本位币
|
|
|
+ }
|
|
|
+
|
|
|
+ entry.set("contractpartatypenew", "bos_org");//甲方类型
|
|
|
+ entry.set("contractpartanew", costCompany);//甲方
|
|
|
+ entry.set("nckd_contractamt", contractAmount);//合同总额(初始)
|
|
|
+ entry.set("nckd_oriapplyamt", oriapplyAmount);//合同总额(变更后)
|
|
|
+
|
|
|
+ contractEntry.add(entry);
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ dailyLoanBill.set("contractentry", contractEntry);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
dailyLoanBill.set("loanamount", totalReimburseAmount);//报销金额
|
|
|
dailyLoanBill.set("approveamount", totalReimburseAmount);//核定金额
|