20250731
This commit is contained in:
parent
940d77c017
commit
f81442fec3
|
|
@ -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;
|
||||
//调用接口同步数据
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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});// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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("补货失败,请手动操作");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue