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