779 lines
50 KiB
Java
779 lines
50 KiB
Java
package tqq9.lc123.cloud.app.plugin.form.pm;
|
||
|
||
import com.google.gson.Gson;
|
||
import kd.bos.algo.DataSet;
|
||
import kd.bos.bill.AbstractBillPlugIn;
|
||
import kd.bos.dataentity.OperateOption;
|
||
import kd.bos.dataentity.entity.DynamicObject;
|
||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||
import kd.bos.dataentity.utils.StringUtils;
|
||
import kd.bos.db.DB;
|
||
import kd.bos.db.DBRoute;
|
||
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.control.EntryGrid;
|
||
import kd.bos.form.control.events.BeforeItemClickEvent;
|
||
import kd.bos.form.control.events.ItemClickEvent;
|
||
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.ORM;
|
||
import kd.bos.orm.query.QCP;
|
||
import kd.bos.orm.query.QFilter;
|
||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||
import kd.bos.servicehelper.QueryServiceHelper;
|
||
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||
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");
|
||
}
|
||
|
||
@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_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计
|
||
tqq9_totalamount = tqq9_totalamount.add(tqq9_amount);
|
||
if (tqq9_amount.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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_xfamount", BigDecimal.ZERO, seq);//明细现返使用金额
|
||
} else {
|
||
BigDecimal tqq9_xfamount = tqq9_hsxfsyje.multiply(tqq9_amount).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_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计
|
||
tqq9_totalamount = tqq9_totalamount.add(tqq9_amount);
|
||
if (tqq9_amount.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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_hfamount", BigDecimal.ZERO, seq);//明细货返使用金额
|
||
} else {
|
||
BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(tqq9_amount).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_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计
|
||
tqq9_totalamount = tqq9_totalamount.add(tqq9_amount);
|
||
if (tqq9_amount.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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_disamount", BigDecimal.ZERO, seq);//明细优惠金额
|
||
} else {
|
||
BigDecimal tqq9_disamount = tqq9_discountamount.multiply(tqq9_amount).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_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计
|
||
tqq9_totalamount = tqq9_totalamount.add(tqq9_amount);
|
||
if (tqq9_amount.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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_xfamount", BigDecimal.ZERO, seq);//明细现返使用金额
|
||
} else {
|
||
BigDecimal tqq9_xfamount = tqq9_hsxfsyje.multiply(tqq9_amount).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_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计
|
||
tqq9_totalamount = tqq9_totalamount.add(tqq9_amount);
|
||
if (tqq9_amount.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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_hfamount", BigDecimal.ZERO, seq);//明细货返使用金额
|
||
} else {
|
||
BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(tqq9_amount).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_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计
|
||
tqq9_totalamount = tqq9_totalamount.add(tqq9_amount);
|
||
if (tqq9_amount.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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_disamount", BigDecimal.ZERO, seq);//明细优惠金额
|
||
} else {
|
||
BigDecimal tqq9_disamount = tqq9_discountamount.multiply(tqq9_amount).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_amount", 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_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计
|
||
tqq9_totalamount = tqq9_totalamount.add(tqq9_amount);
|
||
if (tqq9_amount.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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_xfamount", BigDecimal.ZERO, seq);//明细现返使用金额
|
||
} else {
|
||
BigDecimal tqq9_xfamount = tqq9_hsxfsyje.multiply(tqq9_amount).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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_hfamount", BigDecimal.ZERO, seq);//明细货返使用金额
|
||
} else {
|
||
BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(tqq9_amount).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_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计
|
||
if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) {
|
||
this.getModel().setValue("tqq9_disamount", BigDecimal.ZERO, seq);//明细优惠金额
|
||
} else {
|
||
BigDecimal tqq9_disamount = tqq9_discountamount.multiply(tqq9_amount).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;
|
||
BigDecimal newValue = (BigDecimal) changeData.getNewValue();
|
||
BigDecimal tqq9_zgcgxj = (BigDecimal) getModel().getValue("tqq9_zgcgxj", seq);
|
||
if (newValue.compareTo(tqq9_zgcgxj) > 0 && tqq9_zgcgxj.compareTo(BigDecimal.ZERO) > 0) {
|
||
getModel().setValue("priceandtax", 0, seq);
|
||
this.getView().showErrorNotification("物料明细分录行" + seq + "含税单价超过最高采购限价,请修改");
|
||
}
|
||
}
|
||
if(StringUtils.equals("tqq9_amount",name)||StringUtils.equals("tqq9_disamount",name)){
|
||
DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry");
|
||
for (int i = 0; i < billentries.size(); i++) {
|
||
DynamicObject billentry = billentries.get(i);
|
||
BigDecimal tqq9_amount = billentry.getBigDecimal("tqq9_amount");//折扣前价税合计
|
||
BigDecimal tqq9_disamount = billentry.getBigDecimal("tqq9_disamount");//优惠(折扣)金额
|
||
BigDecimal tqq9_xfamount = billentry.getBigDecimal("tqq9_xfamount");//现返使用金额
|
||
BigDecimal tqq9_hfamount = billentry.getBigDecimal("tqq9_hfamount");//优惠(折扣)金额
|
||
BigDecimal amountandtax = tqq9_amount.subtract(tqq9_disamount).subtract(tqq9_xfamount).subtract(tqq9_hfamount);//折扣后价税合计
|
||
getModel().setValue("amountandtax", amountandtax,i);
|
||
}
|
||
getView().updateView();
|
||
|
||
}
|
||
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("所选物料明细没有入库记录");
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 根据选择列带出入库单分录
|
||
* @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();
|
||
}
|
||
}
|
||
}
|
||
}
|