package tqq9.lc123.cloud.app.plugin.form.pm; import com.google.gson.Gson; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.AfterDeleteRowEventArgs; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.operate.FormOperate; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import tqq9.lc123.cloud.app.eip.iscb.LCLogService; import tqq9.lc123.cloud.app.eip.iscb.impl.LCLogServiceImpl; import tqq9.lc123.cloud.app.plugin.utils.HttpRequestUtils; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; /** * 采购订单 * 值改变事件:现返、货返金额分摊;付款比例不超过100% */ public class PuroderBillShareRefundPlugin extends AbstractBillPlugIn { private final static Log logger = LogFactory.getLog(PuroderBillShareRefundPlugin.class); private final static String ENTRYENTITY = "billentry"; private static String URL; private static String FLXT_TOKEN; static { DynamicObject url = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", new QFilter[]{new QFilter("number", QCP.equals, "FLXT_Balance_Url")}); URL = url != null ? url.getString("name") : null; DynamicObject token = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", new QFilter[]{new QFilter("number", QCP.equals, "FLXT_TOKEN")}); FLXT_TOKEN = token != null ? token.getString("name") : null; } @Override public void registerListener(EventObject e) { super.registerListener(e); this.addItemClickListeners("tbmainentry"); this.addItemClickListeners("tqq9_advcontoolbarap2"); this.addItemClickListeners("tbmain"); } @Override public void afterDeleteRow(AfterDeleteRowEventArgs e) { super.afterDeleteRow(e); DynamicObject dataEntity = this.getModel().getDataEntity(true); BigDecimal tqq9_hsxfsyje = dataEntity.getBigDecimal("tqq9_hsxfsyje");//单头含税现返使用金额 if (tqq9_hsxfsyje.compareTo(BigDecimal.ZERO) > 0) { DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); if (billentries != null && billentries.size() > 0) { BigDecimal remainRefundAmt = tqq9_hsxfsyje;//拆分后剩余的金额 List seqs = new ArrayList<>(); BigDecimal tqq9_totalamount = BigDecimal.ZERO; for (int i = 0; i <= billentries.size() - 1; i++) { DynamicObject billentry = billentries.get(i); BigDecimal tqq9_pricecj = billentry.getBigDecimal("tqq9_pricecj");//明细折扣前价税合计 tqq9_totalamount = tqq9_totalamount.add(tqq9_pricecj); if (tqq9_pricecj.compareTo(BigDecimal.ZERO) > 0) { seqs.add(i); } } for (int i = 0; i < seqs.size(); i++) { int seq = seqs.get(i); if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_xfamount", remainRefundAmt, seq);//明细现返使用金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_xfamount", BigDecimal.ZERO, seq);//明细现返使用金额 } else { BigDecimal tqq9_xfamount = tqq9_hsxfsyje.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_xfamount", tqq9_xfamount, seq);//明细现返使用金额 remainRefundAmt = remainRefundAmt.subtract(tqq9_xfamount); } } } } } BigDecimal tqq9_hshfsyje = dataEntity.getBigDecimal("tqq9_hshfsyje");//单头含税货返使用金额 if (tqq9_hshfsyje.compareTo(BigDecimal.ZERO) > 0) { DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); if (billentries != null && billentries.size() > 0) { BigDecimal remainRefundAmt = tqq9_hshfsyje;//拆分后剩余的金额 List seqs = new ArrayList<>(); BigDecimal tqq9_totalamount = BigDecimal.ZERO; for (int i = 0; i <= billentries.size() - 1; i++) { DynamicObject billentry = billentries.get(i); BigDecimal tqq9_pricecj = billentry.getBigDecimal("tqq9_pricecj");//明细折扣前价税合计 tqq9_totalamount = tqq9_totalamount.add(tqq9_pricecj); if (tqq9_pricecj.compareTo(BigDecimal.ZERO) > 0) { seqs.add(i); } } for (int i = 0; i <= seqs.size() - 1; i++) { int seq = seqs.get(i); if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_hfamount", remainRefundAmt, seq);//明细货返使用金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_hfamount", BigDecimal.ZERO, seq);//明细货返使用金额 } else { BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_hfamount", tqq9_hfamount, seq);//明细货返使用金额 remainRefundAmt = remainRefundAmt.subtract(tqq9_hfamount); } } } } } BigDecimal tqq9_discountamount = dataEntity.getBigDecimal("tqq9_discountamount");//单头优惠金额 if (tqq9_discountamount.compareTo(BigDecimal.ZERO) > 0) { DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); if (billentries != null && billentries.size() > 0) { BigDecimal remainRefundAmt = tqq9_discountamount;//拆分后剩余的金额 List seqs = new ArrayList<>(); BigDecimal tqq9_totalamount = BigDecimal.ZERO; for (int i = 0; i <= billentries.size() - 1; i++) { DynamicObject billentry = billentries.get(i); BigDecimal tqq9_pricecj = billentry.getBigDecimal("tqq9_pricecj");//明细折扣前价税合计 tqq9_totalamount = tqq9_totalamount.add(tqq9_pricecj); if (tqq9_pricecj.compareTo(BigDecimal.ZERO) > 0) { seqs.add(i); } } for (int i = 0; i <= seqs.size() - 1; i++) { int seq = seqs.get(i); if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_disamount", remainRefundAmt, seq);//明细优惠金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_disamount", BigDecimal.ZERO, seq);//明细优惠金额 } else { BigDecimal tqq9_disamount = tqq9_discountamount.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_disamount", tqq9_disamount, seq);//明细优惠金额 remainRefundAmt = remainRefundAmt.subtract(tqq9_disamount); } } } } } } @Override public void propertyChanged(PropertyChangedArgs e) { // super.propertyChanged(e); String name = e.getProperty().getName(); DynamicObject dataEntity = this.getModel().getDataEntity(true); if ("tqq9_hsxfsyje".equals(name)) { //含税现返使用金额 BigDecimal tqq9_hsxfsyje = dataEntity.getBigDecimal(name);//单头含税现返使用金额 if (tqq9_hsxfsyje.compareTo(BigDecimal.ZERO) > 0) { DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); if (billentries != null && billentries.size() > 0) { BigDecimal remainRefundAmt = tqq9_hsxfsyje;//拆分后剩余的金额 List seqs = new ArrayList<>(); BigDecimal tqq9_totalamount = BigDecimal.ZERO; for (int i = 0; i <= billentries.size() - 1; i++) { DynamicObject billentry = billentries.get(i); BigDecimal tqq9_pricecj = billentry.getBigDecimal("tqq9_pricecj");//明细折扣前价税合计 tqq9_totalamount = tqq9_totalamount.add(tqq9_pricecj); if (tqq9_pricecj.compareTo(BigDecimal.ZERO) > 0) { seqs.add(i); } } for (int i = 0; i < seqs.size(); i++) { int seq = seqs.get(i); if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_xfamount", remainRefundAmt, seq);//明细现返使用金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_xfamount", BigDecimal.ZERO, seq);//明细现返使用金额 } else { BigDecimal tqq9_xfamount = tqq9_hsxfsyje.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_xfamount", tqq9_xfamount, seq);//明细现返使用金额 remainRefundAmt = remainRefundAmt.subtract(tqq9_xfamount); } } } } } this.getView().updateView("billentry"); } if ("tqq9_hshfsyje".equals(name)) { //含税货返使用金额 BigDecimal tqq9_hshfsyje = dataEntity.getBigDecimal(name);//单头含税货返使用金额 if (tqq9_hshfsyje.compareTo(BigDecimal.ZERO) > 0) { DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); if (billentries != null && billentries.size() > 0) { BigDecimal remainRefundAmt = tqq9_hshfsyje;//拆分后剩余的金额 List seqs = new ArrayList<>(); BigDecimal tqq9_totalamount = BigDecimal.ZERO; for (int i = 0; i <= billentries.size() - 1; i++) { DynamicObject billentry = billentries.get(i); BigDecimal tqq9_pricecj = billentry.getBigDecimal("tqq9_pricecj");//明细折扣前价税合计 tqq9_totalamount = tqq9_totalamount.add(tqq9_pricecj); if (tqq9_pricecj.compareTo(BigDecimal.ZERO) > 0) { seqs.add(i); } } for (int i = 0; i <= seqs.size() - 1; i++) { int seq = seqs.get(i); if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_hfamount", remainRefundAmt, seq);//明细货返使用金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_hfamount", BigDecimal.ZERO, seq);//明细货返使用金额 } else { BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_hfamount", tqq9_hfamount, seq);//明细货返使用金额 remainRefundAmt = remainRefundAmt.subtract(tqq9_hfamount); } } } } } this.getView().updateView("billentry"); } if ("tqq9_discountamount".equals(name)) { //优惠金额 BigDecimal tqq9_discountamount = dataEntity.getBigDecimal(name);//单头优惠金额 if (tqq9_discountamount.compareTo(BigDecimal.ZERO) > 0) { DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); if (billentries != null && billentries.size() > 0) { BigDecimal remainRefundAmt = tqq9_discountamount;//拆分后剩余的金额 List seqs = new ArrayList<>(); BigDecimal tqq9_totalamount = BigDecimal.ZERO; for (int i = 0; i <= billentries.size() - 1; i++) { DynamicObject billentry = billentries.get(i); BigDecimal tqq9_pricecj = billentry.getBigDecimal("tqq9_pricecj");//明细折扣前价税合计 tqq9_totalamount = tqq9_totalamount.add(tqq9_pricecj); if (tqq9_pricecj.compareTo(BigDecimal.ZERO) > 0) { seqs.add(i); } } for (int i = 0; i <= seqs.size() - 1; i++) { int seq = seqs.get(i); if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_disamount", remainRefundAmt, seq);//明细优惠金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_disamount", BigDecimal.ZERO, seq);//明细优惠金额 } else { BigDecimal tqq9_disamount = tqq9_discountamount.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_disamount", tqq9_disamount, seq);//明细优惠金额 remainRefundAmt = remainRefundAmt.subtract(tqq9_disamount); } } } } } this.getView().updateView("billentry"); } if (StringUtils.equals("payrate", name)) { //校验付款比例不能大于100% 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%,请修改"); } } if (StringUtils.equals("tqq9_pricecj", name)) { //单头金额下推 DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); if (billentries != null && billentries.size() > 0) { BigDecimal tqq9_hsxfsyje = dataEntity.getBigDecimal("tqq9_hsxfsyje");//单头含税现返使用金额 BigDecimal tqq9_hshfsyje = dataEntity.getBigDecimal("tqq9_hshfsyje");//单头含税货返使用金额 BigDecimal tqq9_discountamount = dataEntity.getBigDecimal("tqq9_discountamount");//单头优惠金额 BigDecimal remainRefundAmt_xf = tqq9_hsxfsyje;//拆分后剩余的金额-现返 BigDecimal remainRefundAmt_hf = tqq9_hshfsyje;//拆分后剩余的金额-货返 BigDecimal remainRefundAmt_yh = tqq9_discountamount;//拆分后剩余的金额-优惠 List seqs = new ArrayList<>(); BigDecimal tqq9_totalamount = BigDecimal.ZERO; for (int i = 0; i <= billentries.size() - 1; i++) { DynamicObject billentry = billentries.get(i); BigDecimal tqq9_pricecj = billentry.getBigDecimal("tqq9_pricecj");//明细折扣前价税合计 tqq9_totalamount = tqq9_totalamount.add(tqq9_pricecj); if (tqq9_pricecj.compareTo(BigDecimal.ZERO) > 0) { seqs.add(i); } } for (int i = 0; i <= seqs.size() - 1; i++) { Integer seq = seqs.get(i); //现返 if (tqq9_hsxfsyje.compareTo(BigDecimal.ZERO) > 0) { if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_xfamount", remainRefundAmt_xf, seq);//明细现返使用金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_xfamount", BigDecimal.ZERO, seq);//明细现返使用金额 } else { BigDecimal tqq9_xfamount = tqq9_hsxfsyje.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_xfamount", tqq9_xfamount, seq);//明细现返使用金额 remainRefundAmt_xf = remainRefundAmt_xf.subtract(tqq9_xfamount); } } } //货返 if (tqq9_hshfsyje.compareTo(BigDecimal.ZERO) > 0) { if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_hfamount", remainRefundAmt_hf, seq);//明细货返使用金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_hfamount", BigDecimal.ZERO, seq);//明细货返使用金额 } else { BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_hfamount", tqq9_hfamount, seq);//明细货返使用金额 remainRefundAmt_hf = remainRefundAmt_hf.subtract(tqq9_hfamount); } } } //优惠 if (tqq9_discountamount.compareTo(BigDecimal.ZERO) > 0) { if (i == seqs.size() - 1) { //如果是最后一行 this.getModel().setValue("tqq9_disamount", remainRefundAmt_yh, seq);//明细优惠金额 } else { //如果不是最后一行 BigDecimal tqq9_pricecj = (BigDecimal) this.getModel().getValue("tqq9_pricecj", seq);//明细折扣前价税合计 if (tqq9_pricecj.compareTo(BigDecimal.ZERO) == 0) { this.getModel().setValue("tqq9_disamount", BigDecimal.ZERO, seq);//明细优惠金额 } else { BigDecimal tqq9_disamount = tqq9_discountamount.multiply(tqq9_pricecj).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 this.getModel().setValue("tqq9_disamount", tqq9_disamount, seq);//明细优惠金额 remainRefundAmt_yh = remainRefundAmt_yh.subtract(tqq9_disamount); } } } } } this.getView().updateView("billentry"); } if (StringUtils.equals("material", name)) { ChangeData changeData = e.getChangeSet()[0]; int rowIndex = changeData.getRowIndex(); DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection(ENTRYENTITY); DynamicObject dynamicObject = dynamicObjectCollection.get(rowIndex); DynamicObject material = dynamicObject.getDynamicObject("material"); if (material != null) { DynamicObject masterid = material.getDynamicObject("masterid"); DynamicObject bd_material = BusinessDataServiceHelper.loadSingle(masterid.getLong("id"), "bd_material"); DynamicObject org = dataEntity.getDynamicObject("org"); //上海 if (StringUtils.equals("SHLC", org.getString("number"))) { BigDecimal tqq9_maxprice_sh = bd_material.getBigDecimal("tqq9_maxprice_sh"); if (tqq9_maxprice_sh.compareTo(BigDecimal.ZERO) > 0) { getModel().setValue("priceandtax", tqq9_maxprice_sh, rowIndex); getModel().setValue("tqq9_zgcgxj", tqq9_maxprice_sh, rowIndex); } //北京 } else if (StringUtils.equals("BJLC", org.getString("number"))) { BigDecimal tqq9_maxprice_bj = bd_material.getBigDecimal("tqq9_maxprice_bj"); if (tqq9_maxprice_bj.compareTo(BigDecimal.ZERO) > 0) { getModel().setValue("priceandtax", tqq9_maxprice_bj, rowIndex); getModel().setValue("tqq9_zgcgxj", tqq9_maxprice_bj, rowIndex); } //广州 } else if (StringUtils.equals("GZLC", org.getString("number"))) { BigDecimal tqq9_maxprice_gz = bd_material.getBigDecimal("tqq9_maxprice_gz"); if (tqq9_maxprice_gz.compareTo(BigDecimal.ZERO) > 0) { getModel().setValue("priceandtax", tqq9_maxprice_gz, rowIndex); getModel().setValue("tqq9_zgcgxj", tqq9_maxprice_gz, rowIndex); } } // OperateOption operateOption = OperateOption.create(); // OperationServiceHelper.executeOperate("pricequery",dataEntity.getDynamicObjectType().getName(),new DynamicObject[]{dataEntity},operateOption); } } if (StringUtils.equals("priceandtax", name)) { ChangeData changeData = e.getChangeSet()[0]; int rowIndex = changeData.getRowIndex(); int seq = rowIndex; DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection(ENTRYENTITY); DynamicObject dynamicObject = dynamicObjectCollection.get(rowIndex); DynamicObject material = dynamicObject.getDynamicObject("material"); BigDecimal tqq9_zgcgxj = (BigDecimal) getModel().getValue("tqq9_zgcgxj", seq); if (material != null) { DynamicObject masterid = material.getDynamicObject("masterid"); DynamicObject bd_material = BusinessDataServiceHelper.loadSingle(masterid.getLong("id"), "bd_material"); DynamicObject org = dataEntity.getDynamicObject("org"); //上海 if (StringUtils.equals("SHLC", org.getString("number"))) { tqq9_zgcgxj = bd_material.getBigDecimal("tqq9_maxprice_sh"); //北京 } else if (StringUtils.equals("BJLC", org.getString("number"))) { tqq9_zgcgxj = bd_material.getBigDecimal("tqq9_maxprice_bj"); //广州 } else if (StringUtils.equals("GZLC", org.getString("number"))) { tqq9_zgcgxj = bd_material.getBigDecimal("tqq9_maxprice_gz"); } BigDecimal newValue = (BigDecimal) changeData.getNewValue(); if (newValue.compareTo(tqq9_zgcgxj) > 0 && tqq9_zgcgxj.compareTo(BigDecimal.ZERO) > 0) { getModel().setValue("priceandtax", 0, seq); this.getView().showErrorNotification("物料明细分录行" + seq + "含税单价超过最高采购限价,请修改"); } } } if (StringUtils.equals("supplier", name)) { LCLogService lcLogService = new LCLogServiceImpl(); HashMap tokenMap = new HashMap(); tokenMap.put("Authorization", FLXT_TOKEN); IDataModel model = this.getModel(); ChangeData changeData = e.getChangeSet()[0]; DynamicObject newValue = (DynamicObject) changeData.getNewValue();//供应商 DynamicObject org = (DynamicObject) model.getValue("org");//组织 if (newValue != null && org != null) { String number = org.getString("number"); DynamicObject org_fl = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name", new QFilter[]{new QFilter("number", QCP.equals, number)}); if (org_fl == null) { this.getView().showErrorNotification("组织选择错误"); } String orgid_fl = org_fl != null ? org_fl.getString("name") : null; HashMap queryMap = new HashMap<>(); String tqq9_ztsupplierid = newValue.getString("tqq9_ztsupplierid"); if (StringUtils.isBlank(tqq9_ztsupplierid)) { tqq9_ztsupplierid = "0"; } queryMap.put("supplierId", tqq9_ztsupplierid); queryMap.put("companyId", orgid_fl); Gson gson = new Gson(); try { String bodyString = HttpRequestUtils.doGet(URL, queryMap, tokenMap); HashMap map = gson.fromJson(bodyString, HashMap.class); ArrayList> data = (ArrayList) map.get("data"); if (data != null) { for (Map datum : data) { Map dataMap = datum; String type = dataMap.get("type").toString();//类型 BigDecimal totalMoney = new BigDecimal((Double) dataMap.get("totalMoney"));//剩余总金额 BigDecimal totalMoneyAvailable = new BigDecimal((Double) dataMap.get("totalMoneyAvailable"));//可使用金额 if (StringUtils.equals(type, "0.0")) { //货返 model.setValue("tqq9_hshfzje", totalMoney);//含税货返总金额 model.setValue("tqq9_hshfkyje", totalMoneyAvailable);//含税货返可用金额 } else if (StringUtils.equals(type, "1.0")) { //现返 model.setValue("tqq9_hsxfzje", totalMoney);//含税现返总金额 model.setValue("tqq9_hsxfkyje", totalMoneyAvailable);//含税现返可用金额 } } lcLogService.savelog("查询返利金额", URL, false, true, queryMap.toString(), bodyString); } } catch (IOException ex) { lcLogService.savelog("查询返利金额", URL, false, false, queryMap.toString(), "接口调用报错,无返回值"); throw new RuntimeException(ex + ",请求返利系统失败"); } getView().updateView(); } } } @Override public void beforeDoOperation(BeforeDoOperationEventArgs args) { super.beforeDoOperation(args); FormOperate formOperate = (FormOperate) args.getSource(); if (StringUtils.equals("save", formOperate.getOperateKey())) { DynamicObject dataEntity = this.getModel().getDataEntity(true); BigDecimal totalallamount = dataEntity.getBigDecimal("totalallamount"); BigDecimal tqq9_payamount = dataEntity.getBigDecimal("tqq9_payamount"); if (totalallamount.compareTo(BigDecimal.ZERO) == 0) { DynamicObjectCollection purbillentry_pay = dataEntity.getDynamicObjectCollection("purbillentry_pay"); DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry"); for (DynamicObject dynamicObject : billentry) { dynamicObject.set("ispresent", true); } purbillentry_pay.clear(); } if (tqq9_payamount.compareTo(BigDecimal.ZERO) == 0) { DynamicObjectCollection purbillentry_pay = dataEntity.getDynamicObjectCollection("purbillentry_pay"); purbillentry_pay.clear(); } } } // /** // * 校验选择列 // * @param evt // */ // @Override // public void beforeItemClick(BeforeItemClickEvent evt) { // super.beforeItemClick(evt); // String itemKey = evt.getItemKey(); // if (StringUtils.equals("tqq9_choosereturn",itemKey)) { // EntryGrid billentry = this .getControl("billentry"); // int [] selectRows = billentry .getSelectRows(); // if (selectRows==null||selectRows.length==0) { // evt.setCancel(true); // this.getView().showErrorNotification("请选择物料明细执行该操作"); // } // DynamicObject dataEntity = this.getModel().getDataEntity(true); // String billno = dataEntity.getString("billno");//采购订单号 // DynamicObject[] im_purinblil = BusinessDataServiceHelper.load("im_purinbill", "id,name,billentry.material,billentry.entryreqorg," + // "billentry.taxrateid,billentry.discounttype,billentry.mainbillentity,billentry.mainbillid,billentry.mainbillnumber,billentry.mainbillentryid," + // "billentry.mainbillentryseq,billentry.entrycreator,billentry.entrycreatetime,billentry.entrymodifier," + // "billentry.entrymodifytime,billentry.linetype,billentry.tqq9_registration,billentry.tqq9_licenseno," + // "billentry.tqq9_brand,billentry.warehouse,billentry.qty,billentry.ispresent," + // "billentry.ownertype,billentry.mversion,billentry.unit2nd,billentry.qtyunit2nd," + // "billentry.auxpty,billentry.discountrate,billentry.price,billentry.priceandtax," + // "billentry.amount,billentry.curamount,billentry.taxamount,billentry.curtaxamount,billentry.tqq9_cs," + // "billentry.discountamount,billentry.amountandtax,billentry.curamountandtax,billentry.returnqty," + // "billentry.returnbaseqty,billentry.tqq9_yyhyflje,billentry.tqq9_yyhwflje,billentry.lotnumber," + // "billentry.tqq9_goods,billentry.tqq9_wmsdetailid,billentry.producedate,billentry.expirydate,creator,createtime,modifier,modifytime,billentry.owner,billentry.taxrate,billentry.srcbillnumber,billentry.tqq9_inwarebillentryid,billentry.invtype", new QFilter[]{new QFilter("billentry.mainbillnumber", QCP.equals, billno).and("billstatus", QCP.equals, "C")}); // if(im_purinblil==null||im_purinblil.length==0){ // evt.setCancel(true); // this.getView().showErrorNotification("所选物料明细没有入库记录"); // } // }else if(StringUtils.equals("tqq9_confirmreturn",itemKey)){ // Boolean falg=false; // DynamicObjectCollection tqq9_entryentity = this.getModel().getDataEntity(true).getDynamicObjectCollection("tqq9_entryentity"); // for (DynamicObject dynamicObject : tqq9_entryentity) { // falg=dynamicObject.getBoolean("dynamicObject"); // } // if(falg){ // this.getView().setVisible(true,"tqq9_combofield"); // this.getView().setVisible(true,"tqq9_textfield3"); // this.getView().updateView(); // }else{ // this.getView().showErrorNotification("请至少勾选一行退货信息"); // } // }else if(StringUtils.equals("bar_push",itemKey)){ // Object tqq9_combofield = getModel().getValue("tqq9_combofield"); // Object tqq9_textfield3 = getModel().getValue("tqq9_textfield3"); // if(tqq9_combofield==null||tqq9_textfield3==null){ // this.getView().showErrorNotification("请填写退货信息"); // }else{ // DynamicObject dataEntity = this.getModel().getDataEntity(true); // SaveServiceHelper.save(new DynamicObject[]{dataEntity}); // } // // } // } // // /** // * 根据选择列带出入库单分录 // * @param evt // */ // @Override // public void itemClick(ItemClickEvent evt) { // super.itemClick(evt); // String itemKey = evt.getItemKey(); // if (StringUtils.equals("tqq9_choosereturn",itemKey)) { // EntryGrid entry = this .getControl("billentry"); // int [] selectRows = entry .getSelectRows(); // HashSet ids=new HashSet(); // StringBuilder inWaresId = new StringBuilder(); // BigDecimal zero = BigDecimal.ZERO; // DynamicObject dataEntity = this.getModel().getDataEntity(true); // DynamicObjectCollection tqq9_entryentity = dataEntity.getDynamicObjectCollection("tqq9_entryentity"); // tqq9_entryentity.clear(); // String billno = dataEntity.getString("billno");//采购订单号 // //查询订单相关入库单 // // DynamicObject[] im_purinblil = BusinessDataServiceHelper.load("im_purinbill", "id,name,billno,bookdate,billentry.material,billentry.entryreqorg," + // "billentry.taxrateid,billentry.discounttype,billentry.mainbillentity,billentry.mainbillid,billentry.mainbillnumber,billentry.mainbillentryid," + // "billentry.mainbillentryseq,billentry.entrycreator,billentry.entrycreatetime,billentry.entrymodifier," + // "billentry.entrymodifytime,billentry.linetype,billentry.tqq9_registration,billentry.tqq9_licenseno," + // "billentry.tqq9_brand,billentry.warehouse,billentry.qty,billentry.ispresent," + // "billentry.ownertype,billentry.mversion,billentry.unit2nd,billentry.qtyunit2nd," + // "billentry.auxpty,billentry.discountrate,billentry.price,billentry.priceandtax," + // "billentry.amount,billentry.curamount,billentry.taxamount,billentry.curtaxamount,billentry.tqq9_cs," + // "billentry.discountamount,billentry.amountandtax,billentry.curamountandtax,billentry.returnqty," + // "billentry.returnbaseqty,billentry.tqq9_yyhyflje,billentry.tqq9_yyhwflje,billentry.lotnumber," + // "billentry.tqq9_goods,billentry.tqq9_wmsdetailid,billentry.producedate,billentry.expirydate,creator,createtime," + // "modifier,modifytime,billentry.owner,billentry.taxrate,billentry.srcbillnumber,billentry.tqq9_inwarebillentryid,billentry.invtype,billentry.tqq9_cksx," + // "billentry.invstatus", new QFilter[]{new QFilter("billentry.mainbillnumber", QCP.equals, billno).and("billstatus", QCP.equals, "C")}); // //采购退货申请单 // DynamicObject[] pm_purrefundapplybill = BusinessDataServiceHelper.load("pm_purrefundapplybill", "id,name,billno,billentry.material,billentry.qty,billentry.returnqty,billentry.tqq9_inwarebillentryid,tqq9_sourcebillno", new QFilter[]{new QFilter("billentry.mainbillnumber", QCP.equals, billno).and("tqq9_sourcebillno", QCP.equals,"")}); // //过滤选择列信息 // if (selectRows!=null&&selectRows.length>0) { // DynamicObjectCollection billentry1 = dataEntity.getDynamicObjectCollection("billentry"); // for (int selectRow : selectRows) { // DynamicObject dynamicObject = billentry1.get(selectRow); // //分录id // String id = dynamicObject.getString("id"); // ids.add(id); // } // } // if (im_purinblil != null) { // HashMap> map = new HashMap<>(); // for (DynamicObject dynamicObject : im_purinblil) { // DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry"); // // String purinBillno = dynamicObject.getString("billno");//入库单单号 // Date bookdate = dynamicObject.getDate("bookdate");//记账日期 // for (DynamicObject object : billentry) { // String mainbillentryid = object.getString("mainbillentryid");//核心单据行id // if (!ids.contains(mainbillentryid)) { // continue; // } // DynamicObject material = object.getDynamicObject("material");//物料库存信息 // DynamicObject masterid = material.getDynamicObject("masterid");//物料信息 // //物料采购信息 // DynamicObject bd_materialpurchaseinfo = BusinessDataServiceHelper.loadSingle("bd_materialpurchaseinfo", new QFilter[]{new QFilter("masterid", QCP.equals, masterid.getLong("id"))}); // masterid = BusinessDataServiceHelper.loadSingle("bd_material", new QFilter[]{new QFilter("id", QCP.equals, masterid.getLong("id"))}); // DynamicObject baseunit = masterid.getDynamicObject("baseunit");//计量单位 // DynamicObject tqq9_registration = object.getDynamicObject("tqq9_registration");//注册证 // String tqq9_cs = object.getString("tqq9_cs");//生产厂商 // String tqq9_licenseno = object.getString("tqq9_licenseno");//许可证 // DynamicObject tqq9_cksx = object.getDynamicObject("tqq9_cksx");//仓库属性 // DynamicObject warehouse = object.getDynamicObject("warehouse");//入库仓库 // BigDecimal qty = object.getBigDecimal("qty");//数量 // String lotnumber = object.getString("lotnumber");//批号 // DynamicObject bd_lot = BusinessDataServiceHelper.loadSingle("bd_lot", new QFilter[]{new QFilter("number", QCP.equals, lotnumber)}); // DynamicObject tqq9_goods = object.getDynamicObject("tqq9_goods");//商品 // Date producedate = object.getDate("producedate");//生产日期 // Date expirydate = object.getDate("expirydate");//失效日期 // String tqq9_inwarebillentryid = object.getString("id");//入库单分录id // inWaresId.append(",").append(tqq9_inwarebillentryid); // DynamicObject invtype = object.getDynamicObject("invtype");//入库库存类型 // DynamicObject invstatus = object.getDynamicObject("invstatus");//入库库存状态 // if (qty.compareTo(BigDecimal.ZERO) > 0) { // DynamicObject dynamicObject1 = tqq9_entryentity.addNew(); // dynamicObject1.set("tqq9_rkno", purinBillno);//入库单单号 // dynamicObject1.set("tqq9_rkck", warehouse);//入库仓库 // dynamicObject1.set("tqq9_sp", tqq9_goods);//商品 // dynamicObject1.set("tqq9_materielbm", masterid);//物料编码 // dynamicObject1.set("tqq9_wlmc", masterid.getString("name"));//物料名称 // dynamicObject1.set("tqq9_jldw", baseunit);//计量单位 // dynamicObject1.set("tqq9_rkqty", qty);//入库数量 //// dynamicObject1.set("tqq9_pckyamount", qty);//批次可用量 // dynamicObject1.set("tqq9_rkdate", bookdate);//入库日期 // dynamicObject1.set("tqq9_lot", bd_lot);//批号主档 // dynamicObject1.set("tqq9_lotnumber", bd_lot.getString("number"));//批号 // dynamicObject1.set("tqq9_prodate", producedate);//生产日期 // dynamicObject1.set("tqq9_enddate", expirydate);//失效日期 // dynamicObject1.set("tqq9_zcz", tqq9_registration);//注册证号 // dynamicObject1.set("tqq9_scs", tqq9_cs);//生产商 // dynamicObject1.set("tqq9_xkz", tqq9_licenseno);//许可证号 // dynamicObject1.set("tqq9_cksx1", tqq9_cksx);//仓库属性 // dynamicObject1.set("tqq9_kczt", invstatus);//入库库存状态 // dynamicObject1.set("tqq9_kclx", invtype);//入库库存类型 // dynamicObject1.set("tqq9_entryid", tqq9_inwarebillentryid);//分录id // } else { // if (map.containsKey(tqq9_inwarebillentryid)) { // ArrayList entry_qty = map.get(tqq9_inwarebillentryid); // entry_qty.add(qty); // map.put(tqq9_inwarebillentryid, entry_qty); // }else{ // ArrayList objects = new ArrayList<>(); // objects.add(qty); // map.put(tqq9_inwarebillentryid, objects); // } // } // } // } // for (Map.Entry> entrySet : map.entrySet()) { // String id = entrySet.getKey(); // ArrayList qtylist = entrySet.getValue(); // ListIterator iterator = tqq9_entryentity.listIterator(); // while (iterator.hasNext()) { // DynamicObject dynamicObject1 = iterator.next(); // String inwarebillentryid = dynamicObject1.getString("tqq9_entryid"); // if (com.alibaba.nacos.common.utils.StringUtils.equals(inwarebillentryid, id)) { // BigDecimal qty2 = dynamicObject1.getBigDecimal("tqq9_rkqty"); // BigDecimal add = qty2; // // for (BigDecimal bigDecimal : qtylist) { // add=add.add(bigDecimal); // } // if (add.compareTo(BigDecimal.ZERO) > 0) { // dynamicObject1.set("tqq9_rkqty", add); // } else { // iterator.remove(); // } // } // } // } // //采购退货申请锁定数量扣减 // if (pm_purrefundapplybill != null) { // for (DynamicObject dynamicObject : pm_purrefundapplybill) { // DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry"); // for (DynamicObject object : billentry) { // BigDecimal returnqty = object.getBigDecimal("returnqty"); // BigDecimal qty = object.getBigDecimal("qty"); // BigDecimal subtract = qty.subtract(returnqty); // if (subtract.compareTo(zero) > 0) { // String id = object.getString("tqq9_inwarebillentryid"); // ListIterator iterator = tqq9_entryentity.listIterator(); // while (iterator.hasNext()) { // DynamicObject dynamicObject1 = iterator.next(); // String inwarebillentryid = dynamicObject1.getString("tqq9_entryid"); // if (com.alibaba.nacos.common.utils.StringUtils.equals(inwarebillentryid, id)) { // BigDecimal qty1 = dynamicObject1.getBigDecimal("tqq9_rkqty"); // BigDecimal subtract1 = qty1.subtract(subtract); // if (subtract1.compareTo(BigDecimal.ZERO) > 0) { // dynamicObject1.set("tqq9_rkqty", subtract1); // } else { // iterator.remove(); // } // } // } // } // } // } // } // //物料 // DataSet materialpurchaseinfoDataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), // "bd_materialinventoryinfo", // "id as materialinventoryinfo,masterid as material ", // new QFilter[]{}, // null); // //采购入库sql // String purInSql="/*dialect*/select fentryid id,fwarehouseid warehouse,fk_tqq9_goods goods,fmaterialid inventoryinfo,flotnumber lot,fproducedate producedate,fexpirydate expirydate,\n" + // "fk_tqq9_registration registration,fk_tqq9_cksx tqq9_cksx,finvstatusid invstatus,finvtypeid invtype from t_im_purinbillentry where fentryid in("+inWaresId.substring(1)+")"; // logger.info("PuroderBillShareRefundPlugin-采购入库sql"+purInSql); // //即时库存余额表 // String realBalanceSql="/*dialect*/select fid realbalanceId,fwarehouseid warehouse,fk_tqq9_goods goods,fmaterialid material,flotnum lot,fproducedate producedate,fexpirydate expirydate,\n" + // "fk_tqq9_registration registration,fk_tqq9_cksx tqq9_cksx,finvstatusid invstatus,finvtypeid invtype,COALESCE(fqty,0) qty from t_im_inv_realbalance "; // logger.info("PuroderBillShareRefundPlugin-即时库存余额表sql"+realBalanceSql); // //预留记录 // String reserveRecordSql="/*dialect*/select f_bal_id realbalanceId,sum(COALESCE(f_qty,0)) s_qty from t_msmod_reserverecord group by f_bal_id"; // logger.info("PuroderBillShareRefundPlugin-预留记录sql"+reserveRecordSql); // DataSet purInDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("scm"), purInSql); // DataSet realBalanceDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("scm"), realBalanceSql); // DataSet reserveRecordDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("scm"), reserveRecordSql); // purInDataSet=purInDataSet.leftJoin(materialpurchaseinfoDataSet).on("inventoryinfo","materialinventoryinfo").select("id","warehouse","goods","material","lot","producedate","expirydate","registration" // ,"tqq9_cksx","invstatus","invtype").finish() // .leftJoin(realBalanceDataSet).on("warehouse","warehouse").on("goods","goods").on("material","material").on("lot","lot").on("producedate","producedate") // .on("expirydate","expirydate").on("registration","registration").on("tqq9_cksx","tqq9_cksx").on("invstatus","invstatus").on("invtype","invtype") // .select("id","realbalanceId","warehouse","goods","material","lot","producedate","expirydate","registration" // ,"tqq9_cksx","invstatus","invtype","qty").finish() // .leftJoin(reserveRecordDataSet).on("realbalanceId","realbalanceId").select("id","realbalanceId","warehouse","goods","material","lot","producedate","expirydate","registration" // ,"tqq9_cksx","invstatus","invtype","qty","(CASE WHEN qty IS NULL THEN 0 ELSE qty END) - (CASE WHEN s_qty IS NULL THEN 0 ELSE s_qty END) AS totalQty").finish(); // DataSet copy = purInDataSet.copy(); // DynamicObjectCollection dynamicObjects = ORM.create().toPlainDynamicObjectCollection(copy); // HashMap qtyMap=new HashMap<>(); // for (DynamicObject dynamicObject : dynamicObjects) { // String id = dynamicObject.getString("id"); // BigDecimal totalQty = dynamicObject.getBigDecimal("totalQty"); // qtyMap.put(id,totalQty); // } // for (DynamicObject dynamicObject : tqq9_entryentity) { // String tqq9_entryid = dynamicObject.getString("tqq9_entryid"); // BigDecimal totalQty = qtyMap.get(tqq9_entryid); // dynamicObject.set("tqq9_pckyamount",totalQty); // } // SaveServiceHelper.save(new DynamicObject[]{dataEntity}); // this.getView().updateView(); // } // } // } }