lc/lc123/cloud/app/plugin/form/pm/PuroderBillShareRefundPlugi...

799 lines
52 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<String, String> tokenMap = new HashMap<String, String>();
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<String, Object> 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<Map<String, Object>> data = (ArrayList) map.get("data");
if (data != null) {
for (Map datum : data) {
Map<String, Object> 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<String> 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<String, ArrayList<BigDecimal>> 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<BigDecimal> entry_qty = map.get(tqq9_inwarebillentryid);
// entry_qty.add(qty);
// map.put(tqq9_inwarebillentryid, entry_qty);
// }else{
// ArrayList<BigDecimal> objects = new ArrayList<>();
// objects.add(qty);
// map.put(tqq9_inwarebillentryid, objects);
// }
// }
// }
// }
// for (Map.Entry<String, ArrayList<BigDecimal>> entrySet : map.entrySet()) {
// String id = entrySet.getKey();
// ArrayList<BigDecimal> qtylist = entrySet.getValue();
// ListIterator<DynamicObject> 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<DynamicObject> 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<String,BigDecimal> 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();
// }
// }
// }
}