自动收款;费用支付公司带动费用承担

This commit is contained in:
“wyx12345678” 2024-06-27 16:22:24 +08:00
parent d90d9c64a2
commit 4bb5f6f8ec
4 changed files with 203 additions and 4 deletions

View File

@ -0,0 +1,105 @@
package kd.fi.er.botp;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.ExtendedDataEntitySet;
import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
import kd.bos.entity.botp.plugin.args.AfterConvertEventArgs;
import kd.bos.entity.botp.runtime.ConvertConst;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.scm.pds.common.util.TemplateUtil;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.util.List;
/**
* 单据转换插件
*/
public class ConvertBillPlugln extends AbstractConvertPlugIn implements Plugin {
@Override
public void afterConvert(AfterConvertEventArgs e) {
super.afterConvert(e);
//采购合同
ExtendedDataEntitySet targetExtDataEntitySet = e.getTargetExtDataEntitySet();
ExtendedDataEntity[] entities = targetExtDataEntitySet.FindByEntityKey(getTgtMainType().getName());
for (ExtendedDataEntity entity : entities) {
List<DynamicObject> srcRows = (List<DynamicObject>) entity.getValue(ConvertConst.ConvExtDataKey_SourceRows);
DynamicObject srcRow = srcRows.get(0);
Object sourceBillPK = e.getFldProperties().get("id").getValue(srcRow);
////付款处理单据
DynamicObject contract = entity.getDataEntity();
//对公报销
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(sourceBillPK, getSrcMainType().getName());
DynamicObjectCollection accountentry = dynamicObject.getDynamicObjectCollection("accountentry");
BigDecimal orireceiveamount = accountentry.get(0).getBigDecimal("orireceiveamount"); //实付金额
DynamicObjectCollection writeoffmoney = dynamicObject.getDynamicObjectCollection("writeoffmoney"); //预付
DynamicObjectCollection expenseentryentity = dynamicObject.getDynamicObjectCollection("expenseentryentity"); //预付
BigDecimal yuf = BigDecimal.ZERO; //预付金额
for(int i=0;i<writeoffmoney.size();i++){
DynamicObject enry = writeoffmoney.get(i);
BigDecimal loanamount = enry.getBigDecimal("loanamount");
yuf = yuf.add(loanamount);
}
if(yuf.compareTo(BigDecimal.ZERO) ==0){
return;
}
BigDecimal feiy = BigDecimal.ZERO; //报销金额的合计
for(int i=0;i<expenseentryentity.size();i++){
DynamicObject enry = expenseentryentity.get(i);
BigDecimal loanamount = enry.getBigDecimal("expenseamount");
feiy = feiy.add(loanamount);
}
// BigDecimal proportion = yuf.divide(feiy, 4, 4); // 预付/报销金额 = 已付比例
// BigDecimal supro = one.subtract(proportion); // 1-已付比例 = 未付比例
BigDecimal sfTatalo = BigDecimal.ZERO;
BigDecimal zft = BigDecimal.ZERO;
for(int i=0;i<expenseentryentity.size();i++){
DynamicObject enry = expenseentryentity.get(i);
BigDecimal loanamount = enry.getBigDecimal("expenseamount"); //报销金额
BigDecimal supro = loanamount.divide(feiy,4,4);
BigDecimal multiply = orireceiveamount.multiply(supro);
if(i==expenseentryentity.size()-1){
multiply = orireceiveamount.subtract(zft);
}
zft =zft.add(multiply);
DynamicObjectCollection entry = contract.getDynamicObjectCollection("entry");
entry.get(i).set("e_actamt",multiply); //付款单实付
entry.get(i).set("e_payableamt",loanamount); //应付
entry.get(i).set("e_unsettledlocalamt", multiply);
entry.get(i).set("e_unlockamt", multiply);
entry.get(i).set("e_unsettledamt", multiply);
entry.get(i).set("e_payableamt", multiply);
entry.get(i).set("e_payablelocamt", multiply);
entry.get(i).set("e_localamt", multiply);
sfTatalo = sfTatalo.add(multiply);
}
DynamicObjectCollection entry = contract.getDynamicObjectCollection("entry");
// entry.get(0).set("e_actamt",new BigDecimal(10) );
//签约单id
Object pkValue = dynamicObject.getPkValue();
//根据id找采购实施
contract.set("actpayamt",sfTatalo);
contract.set("localamt",sfTatalo);
}
}
}

View File

@ -173,9 +173,9 @@ public class CommonCostCenterBillFormPlugin extends AbstractBillPlugIn implement
if("costcompany".equals(name)){
DynamicObject applier = (DynamicObject) this.getModel().getValue("applier");
if (applier != null){
DynamicObject bos_user = BusinessDataServiceHelper.loadSingle(applier.getPkValue(), "bos_user");
DynamicObject shkd_labororg = bos_user.getDynamicObject("shkd_labororg");
this.getModel().setValue("paycompany",shkd_labororg);//设置支付公司为申请人员上的劳动主体
// DynamicObject bos_user = BusinessDataServiceHelper.loadSingle(applier.getPkValue(), "bos_user");
// DynamicObject shkd_labororg = bos_user.getDynamicObject("shkd_labororg");
// this.getModel().setValue("paycompany",shkd_labororg);//设置支付公司为申请人员上的劳动主体
}
}
}
@ -217,4 +217,4 @@ public class CommonCostCenterBillFormPlugin extends AbstractBillPlugIn implement
}
}
}
}
}

View File

@ -0,0 +1,43 @@
package shkd.fi.er.plugin.formplugin;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.sdk.plugin.Plugin;
import java.util.EventObject;
/**
* 单据界面插件,费用承担公司根据支付公司做变化
*/
public class CommonCostCompanyPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
ChangeData[] changeSet = e.getChangeSet();
ChangeData changeData = changeSet[0];
if("paycompany".equals(name)){
DynamicObject newValue = (DynamicObject)changeData.getNewValue();
this.getModel().setValue("costcompany",newValue);
}
}
@Override
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
Object paycompany = this.getModel().getValue("paycompany");
if(paycompany!=null){
DynamicObject value = (DynamicObject)paycompany;
this.getModel().setValue("costcompany",value);
}
}
}

View File

@ -0,0 +1,51 @@
package shkd.fi.er.plugin.formplugin;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.form.control.events.ItemClickEvent;
import kd.sdk.plugin.Plugin;
import java.util.EventObject;
/**
* 单据界面插件
* 收款信息生成
*/
public class GenerateSKClickPlugln extends AbstractBillPlugIn implements Plugin {
private final static String KEY_sku = "shkd_generatesku";
private final static String bar_save = "bar_save";
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
this.addItemClickListeners(KEY_sku);
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
System.out.println();
DynamicObjectCollection expenseentryentity = this.getModel().getEntryEntity("expenseentryentity");
DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("");
entryEntity.clear();
for(int i= 0;i<expenseentryentity.size();i++){
DynamicObject fymx = expenseentryentity.get(0);
DynamicObject shkd_entrypaycompany = fymx.getDynamicObject("shkd_entrypaycompany");
DynamicObject std_entrycostcenter = fymx.getDynamicObject("std_entrycostcenter");
DynamicObject dynamicObject = fymx.getDynamicObject("expenseitem");
// DynamicObject dynamicObject = entryEntity.addNew();
// dynamicObject.set("","");
// dynamicObject.set("","");
// dynamicObject.set("","");
// dynamicObject.set("","");
// dynamicObject.set("","");
// dynamicObject.set("","");
// dynamicObject.set("","");
}
this.getView().updateView("");
}
}