This commit is contained in:
龚豆豆 2025-07-31 18:07:09 +08:00
parent 940d77c017
commit f81442fec3
9 changed files with 402 additions and 76 deletions

View File

@ -0,0 +1,42 @@
package tqq9.lc123.cloud.app.plugin.form.conm;
import kd.bos.form.CloseCallBack;
import kd.bos.form.FormShowParameter;
import kd.bos.form.ShowType;
import kd.bos.form.control.events.BeforeItemClickEvent;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.sdk.plugin.Plugin;
import java.util.Map;
/**
* 动态表单插件
*/
public class purconmAddRebateRulesPlugin extends AbstractFormPlugin implements Plugin {
@Override
public void beforeItemClick(BeforeItemClickEvent evt) {
super.beforeItemClick(evt);
String itemKey = evt.getItemKey();
if ("tqq9_pur_rebate".equals(itemKey)) {
FormShowParameter param = new FormShowParameter();
param.setFormId("tqq9_pur_rebate");
param.setCloseCallBack(new CloseCallBack(this, "syncFilter"));
param.getOpenStyle().setShowType(ShowType.Modal);
this.getView().showForm(param);
}
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
if (closedCallBackEvent.getActionId().equals("syncFilter")) {
Object returnData = closedCallBackEvent.getReturnData();
if (returnData != null) {
Map data = (Map) returnData;
//调用接口同步数据
}
}
}
}

View File

@ -0,0 +1,19 @@
package tqq9.lc123.cloud.app.plugin.form.im;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.sdk.plugin.Plugin;
/**
* 动态表单插件
*/
public class ReturnStockSyncNoticePlugin extends AbstractFormPlugin implements Plugin {
@Override
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
super.afterDoOperation(afterDoOperationEventArgs);
OperationResult operationResult = afterDoOperationEventArgs.getOperationResult();
String message = operationResult.getMessage();
System.out.println(111);
}
}

View File

@ -0,0 +1,68 @@
package tqq9.lc123.cloud.app.plugin.form.pm;
import com.alibaba.nacos.common.utils.StringUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import java.util.EventObject;
import java.util.Map;
/**
* 表单通用插件带出创建人部门许可证号
* 注册证号tqq9_registration
* 许可证号tqq9_licenseno
* 创建部门tqq9_dept
* 需保持一致
*/
public class BaseDataPlugin extends AbstractFormPlugin implements Plugin {
@Override
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
IDataModel model = this.getModel();
DynamicObject dataEntity = model.getDataEntity();
DynamicObject creator = dataEntity.getDynamicObject("creator");
DynamicObject bos_user = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{new QFilter("id", QCP.equals, creator.getLong("id"))});
DynamicObjectCollection entryentity = bos_user.getDynamicObjectCollection("entryentity");
DynamicObject dept=null;
for (DynamicObject dynamicObject : entryentity) {
boolean ispartjob = dynamicObject.getBoolean("ispartjob");
if (!ispartjob){
dept=dynamicObject.getDynamicObject("dpt");
}
}
model.setValue("tqq9_dept",dept);
this.getView().updateView();
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String key = e.getProperty().getName();
if (StringUtils.equals("tqq9_registration", key)) {
StringBuilder stringBuilder=new StringBuilder();
ChangeData[] changeSet = e.getChangeSet();
ChangeData changeData = changeSet[0];
int rowIndex = changeData.getRowIndex();
DynamicObject newValue = (DynamicObject)changeData.getNewValue();
if(newValue!=null){
DynamicObject tqq9_registration = BusinessDataServiceHelper.loadSingle("tqq9_registration", new QFilter[]{new QFilter("id", QCP.equals, newValue.getLong("id"))});
DynamicObjectCollection tqq9_entry = tqq9_registration.getDynamicObjectCollection("tqq9_entry");
for (DynamicObject entry : tqq9_entry) {
String supno = entry.getString("tqq9_e_supno");
stringBuilder.append(",").append(supno);
}
String substring = stringBuilder.substring(1);
this.getModel().setValue("tqq9_licenseno",substring,rowIndex);
}
}
this.getView().updateView();
}
}

View File

@ -70,25 +70,25 @@ public class PuroderBillShareRefundPlugin extends AbstractBillPlugIn {
}
this.getView().updateView("billentry");
}
if("tqq9_disamount".equals(name)){
if("tqq9_discountamount".equals(name)){
//优惠金额
BigDecimal tqq9_hshfsyje = dataEntity.getBigDecimal(name);//单头优惠金额
if(tqq9_hshfsyje.compareTo(BigDecimal.ZERO) > 0){
BigDecimal tqq9_discountamount = dataEntity.getBigDecimal(name);//单头优惠金额
if(tqq9_discountamount.compareTo(BigDecimal.ZERO) > 0){
BigDecimal totalallamount = dataEntity.getBigDecimal("totalallamount");//单头价税合计
DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry");
if(billentries != null && billentries.size() > 0){
BigDecimal remainRefundAmt = tqq9_hshfsyje;//拆分后剩余的金额
BigDecimal remainRefundAmt = tqq9_discountamount;//拆分后剩余的金额
for (int i = 0; i <= billentries.size() - 1; i++) {
DynamicObject billentry = billentries.get(i);
if(i == billentries.size() - 1){
//如果是最后一行
this.getModel().setValue("tqq9_hfamount", remainRefundAmt, i);//明细货返使用金额
this.getModel().setValue("tqq9_disamount", remainRefundAmt, i);//明细优惠金额
}else{
//如果不是最后一行
BigDecimal amountandtax = billentry.getBigDecimal("amountandtax");//明细价税合计
BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(amountandtax).divide(totalallamount, 2, RoundingMode.HALF_UP);//分录行含税金额比例
this.getModel().setValue("tqq9_hfamount", tqq9_hfamount, i);//明细货返使用金额
remainRefundAmt = remainRefundAmt.subtract(tqq9_hfamount);
BigDecimal tqq9_disamount = tqq9_discountamount.multiply(amountandtax).divide(totalallamount, 2, RoundingMode.HALF_UP);//分录行含税金额比例
this.getModel().setValue("tqq9_disamount", tqq9_disamount, i);//明细优惠金额
remainRefundAmt = remainRefundAmt.subtract(tqq9_disamount);
}
}
}

View File

@ -11,10 +11,14 @@ import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.form.*;
import kd.bos.form.control.Control;
import kd.bos.form.control.EntryGrid;
import kd.bos.form.control.events.BeforeClickEvent;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.events.HyperLinkClickEvent;
import kd.bos.form.events.HyperLinkClickListener;
@ -26,6 +30,7 @@ import kd.bos.list.ListFilterParameter;
import kd.bos.list.ListShowParameter;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.plugin.sample.dynamicform.pcform.field.template.PropertyChanged;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.workflow.bpmn.model.basedata.BaseDataHelper;
import kd.sdk.plugin.Plugin;
@ -37,7 +42,7 @@ import java.util.EventObject;
import java.util.List;
/**
* 单据界面插件
* 点击付款计划分录付款单弹出与预付款选择界面进行预付
*/
public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implements HyperLinkClickListener {
@Override
@ -48,22 +53,9 @@ public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implemen
preEntry.addHyperClickListener(this);
}
// @Override
// public void beforeF7Select(BeforeF7SelectEvent event) {
// IDataModel model = this.getModel();
// DynamicObject org =model.getDataEntity().getDynamicObject("org");
// if (org!=null) {
// ListShowParameter param = (ListShowParameter) event.getFormShowParameter();
// QFilter qF1 = new QFilter("org.number", QCP.in, org.getString("number"));
// QFilter qF2 = new QFilter("yem_iscontactpaybill", QCP.equals, false);
// param.getListFilterParameter().getQFilters().add(qF1.and(qF2));
// }
// CloseCallBack closeCallBack = new CloseCallBack(this.getPluginName(), "zbBill");
//
//
// }
/**
* 点击付款单反写本次结算金额
*/
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
@ -71,43 +63,48 @@ public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implemen
IFormView view = this.getView();
String actionId = closedCallBackEvent.getActionId();
Object returnData = closedCallBackEvent.getReturnData();
if(returnData==null){
if (returnData != null) {
if ("paybill".equals(actionId)) {
DynamicObjectCollection purbillentry_pay = this.getModel().getDataEntity(true).getDynamicObjectCollection("purbillentry_pay");
int seq=0;
int seq = 0;
for (DynamicObject dynamicObject : purbillentry_pay) {
boolean isprepay = dynamicObject.getBoolean("isprepay");
if (isprepay){
seq = dynamicObject.getInt("seq")-1;
if (isprepay) {
seq = dynamicObject.getInt("seq") - 1;
}
}
ListSelectedRow listSelectedRow = ((ListSelectedRowCollection) returnData).get(0);
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(listSelectedRow.toString(), "cas_paybill");
BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount");
model.setValue("tqq9_paybillno", dynamicObject.getString("billno"));
// model.setValue("tqq9_paybillid", dynamicObject.getString("id"));
model.setValue("paidpreallamount", unsettleamount);
model.setValue("paidallamount", unsettleamount);
model.setValue("joinpayamount", unsettleamount,seq);
model.setValue("paidamount", unsettleamount,seq);
view.setVisible(true,"paidpreallamount,paidallamount,joinpayamount,paidamount");
model.setValue("tqq9_paybillno", dynamicObject.getString("billno"));//付款单
model.setValue("joinpayamount", unsettleamount, seq);//关联付款金额
model.setValue("paidamount", unsettleamount, seq);//已付金额
model.setValue("tqq9_settleamount", unsettleamount, seq);//本次结算金额
view.setVisible(true, "paidpreallamount,paidallamount,joinpayamount,paidamount,tqq9_settleamount");
}
}
this.getView().updateView();
}
/**
* 选择付款单前置条件校验订货供应商不能为空勾选是否预付价税合计不能为空
*/
@Override
public void beforeClick(BeforeClickEvent evt) {
super.beforeClick(evt);
IDataModel model = this.getModel();
IDataModel model = this.getModel();
Control c = (Control) evt.getSource();
String key = c.getKey().toLowerCase();
if ("tqq9_paybillno".equals(key)) {
EntryGrid entryGrid = this.getControl("purbillentry_pay");
int length = entryGrid.getSelectRows()[0];//获取点击分录序号从0开始
DynamicObject pm_purorderbill = model.getDataEntity(true);//采购订单
BigDecimal totalallamount = pm_purorderbill.getBigDecimal("totalallamount");//价税合计
if (totalallamount.compareTo(BigDecimal.ZERO)<0) {
this.getView().showMessage("价税合计不能为空");
evt.setCancel(true);
}
DynamicObjectCollection entries = pm_purorderbill.getDynamicObjectCollection("purbillentry_pay");//付款计划分录
DynamicObject supplier = pm_purorderbill.getDynamicObject("supplier");//订货供应商
DynamicObject dynamicObject = entries.get(length);
@ -123,14 +120,17 @@ public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implemen
}
}
/**
* 点击付款单字段选择付款单
*/
@Override
public void click(EventObject evt) {
super.click(evt);
Control c = (Control) evt.getSource();
String key = c.getKey().toLowerCase();
IDataModel model = this.getModel();
if ("tqq9_paybillno".equals(key)) {
IDataModel model = this.getModel();
int entryRowCount = model.getEntryRowCount("purbillentry_pay");
List<String> selectedNos = new ArrayList(entryRowCount);
DynamicObject pm_purorderbill = model.getDataEntity(true);//采购订单
@ -145,21 +145,47 @@ public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implemen
}
}
QFilter filter = new QFilter("billstatus", "=", "D");//已付款
if (ObjectUtils.isEmpty(selectedNos)) {
if (!ObjectUtils.isEmpty(selectedNos)) {
filter.and(new QFilter("billno", "not in", selectedNos));
}
filter.and(new QFilter("itempayeetype", "=", "bd_supplier"));//收款人类型为供应商
filter.and(new QFilter("itempayee", "=", supplier.getLong("id")));//收款人为采购订单供应商
filter.and(new QFilter("paymenttype.number", "=", "202"));
filter.and("unsettleamount", QCP.large_than, BigDecimal.ZERO);
// //组织一致
// DynamicObject org = (DynamicObject)model.getValue("org");
// filter.and(new QFilter("entry.settleorg", "=", org.getLong("id")));
//组织一致
DynamicObject org = (DynamicObject) model.getValue("org");
filter.and(new QFilter("entry.settleorg", "=", org.getLong("id")));
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{filter});
showZbBillF7(this.getView(), this.getPluginName(), filter);
}
}
/**
* 校验付款比例不能大于100%
*/
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String key = e.getProperty().getName();
ChangeData[] changeSet = e.getChangeSet();
if (StringUtils.equals("payrate", key)) {
IDataModel model = this.getModel();
DynamicObject pm_purorderbill = model.getDataEntity(true);//采购订单
DynamicObjectCollection entries = pm_purorderbill.getDynamicObjectCollection("purbillentry_pay");//付款计划分录
BigDecimal zero = BigDecimal.ZERO;
for (DynamicObject entry : entries) {
BigDecimal payrate = entry.getBigDecimal("payrate");
zero=zero.add(payrate);
}
if (zero.compareTo(new BigDecimal(100)) > 0) {
this.getView().showErrorNotification("付款计划付款比例总计大于100%,请修改");
}
}
}
@Override
public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) {
int rowIndex = hyperLinkClickEvent.getRowIndex();
@ -188,5 +214,9 @@ public class PurorderEntryIntroPaybillPlugin extends AbstractBillPlugIn implemen
view.showForm(lsp);
}
@Override
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
super.afterDoOperation(afterDoOperationEventArgs);
OperationResult operationResult = afterDoOperationEventArgs.getOperationResult();
}
}

View File

@ -0,0 +1,59 @@
package tqq9.lc123.cloud.app.plugin.form.sys;
import com.alibaba.fastjson.JSON;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.field.ComboEdit;
import kd.bos.form.field.ComboItem;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 单据界面插件
*/
public class CustomerBillPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String itemKey = e.getProperty().getName();
ChangeData[] changeSet = e.getChangeSet();
if (StringUtils.equals("tqq9_settlementtype", itemKey)) {
String settlementtype = (String) changeSet[0].getNewValue();
List<ComboItem> comboItems = new ArrayList<>();
ComboEdit comboEdit = (ComboEdit) this.getControl("tqq9_khjslx");
if ("B".equals(settlementtype)) {
ComboItem comboItem = new ComboItem();
ComboItem comboItem1 = new ComboItem();
comboItem.setCaption(new LocaleString("现结"));
comboItem1.setCaption(new LocaleString("货到付款"));
comboItem.setValue("A");
comboItem1.setValue("B");
comboItems.add(comboItem);
comboItems.add(comboItem1);
comboEdit.setComboItems(comboItems);
} else if ("A".equals(settlementtype)) {
ComboItem comboItem = new ComboItem();
ComboItem comboItem1 = new ComboItem();
comboItem.setCaption(new LocaleString("单店月结"));
comboItem1.setCaption(new LocaleString("连锁月结"));
comboItem.setValue("C");
comboItem1.setValue("D");
comboItems.add(comboItem);
comboItems.add(comboItem1);
comboEdit.setComboItems(comboItems);
}else{
comboEdit.setComboItems(comboItems);
}
}
}
}

View File

@ -15,11 +15,12 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.util.HashMap;
/**
* 采购订单操作插件
* 1.校验器未结算金额大于0校验
* 2.审核插件付款计划分录对应付款单的未结算金额转化为已结算金额
* 1.校验器校验本次结算金额
* 2.审核插件反写本次结算金额
*/
public class PurOrderReversePayBillPlugin extends AbstractOperationServicePlugIn implements Plugin {
@Override
@ -29,9 +30,15 @@ public class PurOrderReversePayBillPlugin extends AbstractOperationServicePlugIn
}
/**
* 采购订单操作插件
* 1.校验器未结算金额大于0校验
* 2.审核插件付款计划分录对应付款单的未结算金额转化为已结算金额
*/
class UnSettleAmountValidator extends AbstractValidator {
@Override
public void validate() {
HashMap<String, BigDecimal> paybillMap = new HashMap();
for (ExtendedDataEntity dataEntity : this.getDataEntities()) {
String billno = dataEntity.getDataEntity().getString("billno");//采购订单单据号
//查询采购订单
@ -39,16 +46,33 @@ public class PurOrderReversePayBillPlugin extends AbstractOperationServicePlugIn
//获取付款计划分录
DynamicObjectCollection purbillentry_pay = purorderbill.getDynamicObjectCollection("purbillentry_pay");
for (DynamicObject dynamicObject : purbillentry_pay) {
//付款单单据编号
String tqq9_paybillno = dynamicObject.getString("tqq9_paybillno");
String tqq9_paybillno = dynamicObject.getString("tqq9_paybillno");//付款单单据编号
BigDecimal tqq9_settleamount = dynamicObject.getBigDecimal("tqq9_settleamount");//本次结算金额
BigDecimal payamount = dynamicObject.getBigDecimal("payamount");//付款金额
if (tqq9_settleamount.compareTo(payamount) > 0) {
this.addErrorMessage(dataEntity, "单据号:" + billno + "付款计划分录的付款单:" + tqq9_paybillno + "本次结算金额为大于付款金额,请修改");
}
//查询付款单
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_paybillno)});
BigDecimal unsettleamount = paybill.getBigDecimal("unsettleamount");//未结算金额
if (unsettleamount.compareTo(BigDecimal.ZERO) <= 0) {
this.addErrorMessage(dataEntity, "单据号:" + billno + "付款计划分录的付款单:" + tqq9_paybillno + "未结算金额为:" + unsettleamount+"无法审核");
if (paybill != null) {
BigDecimal unsettleamount = paybill.getBigDecimal("unsettleamount");//未结算金额
String paybillno = paybill.getString("billno");//未结算金额
if (!paybillMap.containsKey(paybillno)) {
if (unsettleamount.compareTo(tqq9_settleamount) < 0) {
this.addErrorMessage(dataEntity, "单据号:" + billno + "付款计划分录的付款单:" + tqq9_paybillno + "未结算金额为小于本次结算金额,请修改");
}
paybillMap.put(paybillno, tqq9_settleamount);
} else {
BigDecimal total_tqq9_settleamount = paybillMap.get(paybillno);
tqq9_settleamount=tqq9_settleamount.add(total_tqq9_settleamount);
if (unsettleamount.compareTo(tqq9_settleamount) < 0) {
this.addErrorMessage(dataEntity, "审核订单中付款计划针对付款单:"+paybillno+",本次结算金额总和为大于未结算金额,请修改");
}
paybillMap.put(paybillno, tqq9_settleamount);
}
}
}
}
}
}
@ -67,27 +91,39 @@ public class PurOrderReversePayBillPlugin extends AbstractOperationServicePlugIn
for (DynamicObject dynamicObject : purbillentry_pay) {
//付款单单据编号
String tqq9_paybillno = dynamicObject.getString("tqq9_paybillno");
BigDecimal tqq9_settleamount = dynamicObject.getBigDecimal("tqq9_settleamount");
//查询付款单
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", new QFilter[]{new QFilter("billno", QCP.equals, tqq9_paybillno)});
if (paybill != null) {
//获取付款明细分录
DynamicObjectCollection entries = paybill.getDynamicObjectCollection("entry");
BigDecimal unsettleamount = paybill.getBigDecimal("unsettleamount");//未结算金额
BigDecimal unsettleamountbase = paybill.getBigDecimal("unsettleamountbase");//未结算金额(本位币)
//单头未结算金额转化为已结算金额
paybill.set("unsettleamount", BigDecimal.ZERO);
paybill.set("unsettleamountbase", BigDecimal.ZERO);
paybill.set("settleamount", unsettleamount);//已结算金额
paybill.set("settleamountbase", unsettleamountbase);//已结算金额(本位币)
BigDecimal unsettleamount = BigDecimal.ZERO;//未结算金额
BigDecimal unsettleamountbase = BigDecimal.ZERO;//未结算金额(本位币)
BigDecimal settleamount = BigDecimal.ZERO;//已结算金额
BigDecimal settleamountbase = BigDecimal.ZERO;//已结算金额(本位币)
for (DynamicObject entry : entries) {
BigDecimal e_unsettledamt = entry.getBigDecimal("e_unsettledamt");//未结算金额
BigDecimal e_unsettledlocalamt = entry.getBigDecimal("e_unsettledlocalamt");//未结算金额折本位币
BigDecimal e_settledamt = entry.getBigDecimal("e_settledamt");//已结算金额
BigDecimal e_settledlocalamt = entry.getBigDecimal("e_settledlocalamt");//已结算金额折本位币
//分录未结算金额转化为已结算金额
entry.set("e_unsettledamt", BigDecimal.ZERO);
entry.set("e_unsettledlocalamt", BigDecimal.ZERO);
entry.set("e_settledamt", e_unsettledamt);//已结算金额
entry.set("e_settledlocalamt", e_unsettledlocalamt);//已结算金额折本币
entry.set("e_unsettledamt", e_unsettledamt.subtract(tqq9_settleamount));//未结算金额
entry.set("e_unlockamt", e_unsettledamt.subtract(tqq9_settleamount));//未锁定金额
unsettleamount = unsettleamount.add(e_unsettledamt.subtract(tqq9_settleamount));
entry.set("e_unsettledlocalamt", e_unsettledlocalamt.subtract(tqq9_settleamount));//未结算金额(本位币)
unsettleamountbase = unsettleamountbase.add(e_unsettledlocalamt.subtract(tqq9_settleamount));
entry.set("e_settledamt", e_settledamt.add(tqq9_settleamount));//已结算金额
entry.set("e_lockamt", e_settledamt.add(tqq9_settleamount));//已锁定金额
settleamount = settleamount.add(e_settledamt.add(tqq9_settleamount));
entry.set("e_settledlocalamt", e_settledlocalamt.add(tqq9_settleamount));//已结算金额折本币
settleamountbase = settleamountbase.add(e_settledlocalamt.add(tqq9_settleamount));
}
//结合本次结算金额计算
paybill.set("unsettleamount", unsettleamount);//未结算金额
paybill.set("unsettleamountbase", unsettleamountbase);//未结算金额(本位币)
paybill.set("settleamount", settleamount);//已结算金额
paybill.set("settleamountbase", settleamountbase);//已结算金额(本位币)
paybill.set("entry", entries);
//保存
SaveServiceHelper.save(new DynamicObject[]{paybill});
@ -95,4 +131,5 @@ public class PurOrderReversePayBillPlugin extends AbstractOperationServicePlugIn
}
}
}
}

View File

@ -34,22 +34,35 @@ public class PurOrderUnReversePayBillPlugin extends AbstractOperationServicePlug
if (paybill != null) {
//获取付款明细分录
DynamicObjectCollection entries = paybill.getDynamicObjectCollection("entry");
BigDecimal settleamount = paybill.getBigDecimal("settleamount");//已结算金额
BigDecimal settleamountbase = paybill.getBigDecimal("settleamountbase");//已结算金额(本位币)
//单头已结算金额转化为未结算金额
paybill.set("settleamount", BigDecimal.ZERO);
paybill.set("settleamountbase", BigDecimal.ZERO);
paybill.set("unsettleamount", settleamount);//未结算金额
paybill.set("unsettleamountbase", settleamountbase);//已结算金额(本位币)
BigDecimal tqq9_settleamount = dynamicObject.getBigDecimal("tqq9_settleamount");
BigDecimal settleamount = BigDecimal.ZERO;//已结算金额
BigDecimal settleamountbase = BigDecimal.ZERO;//已结算金额(本位币)
BigDecimal unsettleamount = BigDecimal.ZERO;//未结算金额
BigDecimal unsettleamountbase = BigDecimal.ZERO;//未结算金额(本位币)
for (DynamicObject entry : entries) {
//分录结算金额计算
BigDecimal e_unsettledamt = entry.getBigDecimal("e_unsettledamt");//未结算金额
BigDecimal e_unsettledlocalamt = entry.getBigDecimal("e_unsettledlocalamt");//未结算金额折本位币
BigDecimal e_settledamt = entry.getBigDecimal("e_settledamt");//已结算金额
BigDecimal e_settledlocalamt = entry.getBigDecimal("e_settledlocalamt");//已结算金额折本币
//分录已结算金额转化为未结算金额
entry.set("e_settledamt", BigDecimal.ZERO);
entry.set("e_settledlocalamt", BigDecimal.ZERO);
entry.set("e_unsettledamt", e_settledamt);//未结算金额
entry.set("e_unsettledlocalamt", e_settledlocalamt);//未结算金额折本币
BigDecimal e_settledlocalamt = entry.getBigDecimal("e_settledlocalamt");//已结算金额折本位币
//分录未结算金额转化为已结算金额
entry.set("e_unsettledamt", e_unsettledamt.add(tqq9_settleamount));//未结算金额
entry.set("e_unlockamt", e_unsettledamt.add(tqq9_settleamount));//未锁定金额
unsettleamount = unsettleamount.add(e_unsettledamt.add(tqq9_settleamount));
entry.set("e_unsettledlocalamt", e_unsettledlocalamt.add(tqq9_settleamount));//未结算金额(本位币)
unsettleamountbase = unsettleamountbase.add(e_unsettledlocalamt.add(tqq9_settleamount));
entry.set("e_settledamt", e_settledamt.subtract(tqq9_settleamount));//已结算金额
entry.set("e_lockamt", e_settledamt.subtract(tqq9_settleamount));//已锁定金额
settleamount = settleamount.add(e_settledamt.subtract(tqq9_settleamount));
entry.set("e_settledlocalamt", e_settledlocalamt.subtract(tqq9_settleamount));//已结算金额折本币
settleamountbase = settleamountbase.add(e_settledlocalamt.subtract(tqq9_settleamount));
}
//单头结算金额汇总
paybill.set("settleamount", settleamount);
paybill.set("settleamountbase", settleamountbase);
paybill.set("unsettleamount", unsettleamount);//未结算金额
paybill.set("unsettleamountbase", unsettleamountbase);//未结算金额(本位币)
paybill.set("entry", entries);
SaveServiceHelper.save(new DynamicObject[]{paybill});// }
}

View File

@ -0,0 +1,58 @@
package tqq9.lc123.cloud.app.plugin.operate.im;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.operate.result.IOperateInfo;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.sdk.plugin.Plugin;
import java.util.ArrayList;
import java.util.List;
/**
* 采购退货申请单采购退补货下推红字采购入库单审核后根据来源的采购订单生成收货通知单
*/
public class ReturnStockSyncNotifierPlugin extends AbstractOperationServicePlugIn implements Plugin {
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] dataEntities = e.getDataEntities();
for (DynamicObject dataEntity : dataEntities) {
DynamicObject biztype = dataEntity.getDynamicObject("biztype");//业务类型
String number = biztype.getString("number");
//业务类型为物料类采购退补货
if ("1102".equals(number)) {
String billno = dataEntity.getString("billno");//采购入库单单据编号
//采购入库单
DynamicObject im_purinbill = BusinessDataServiceHelper.loadSingle("im_purinbill", new QFilter[]{new QFilter("billno", QCP.equals, billno)});
DynamicObjectCollection billentry = im_purinbill.getDynamicObjectCollection("billentry");
List<String> selectedNos = new ArrayList(billentry.size());
DynamicObject[] pm_purorderbills = new DynamicObject[billentry.size()];
for (int i = 0; i < billentry.size(); i++) {
//核心单据编号
String mainbillnumber = billentry.get(i).getString("mainbillnumber");
//查询采购订单
DynamicObject pm_purorderbill = BusinessDataServiceHelper.loadSingle("pm_purorderbill", new QFilter[]{new QFilter("billno", QCP.equals, mainbillnumber).and(new QFilter("billno", QCP.not_in, selectedNos))});
selectedNos.add(mainbillnumber);
pm_purorderbills[i] = pm_purorderbill;
}
OperateOption option = OperateOption.create();
OperationResult result = OperationServiceHelper.executeOperate("pushandsave", "pm_purorderbill", pm_purorderbills, option);
if (result.isSuccess()) {
result.setMessage("系统已自动进行退货补货,相关收货通知单已自动生成,请手动调整补货数量,再提交审核");
}else{
result.setMessage("补货失败,请手动操作");
}
}
}
}
}