1.采购订单新增采购入库分录
This commit is contained in:
parent
b98eb948ac
commit
b5a58d181c
|
|
@ -1,23 +1,32 @@
|
|||
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;
|
||||
|
|
@ -25,10 +34,7 @@ import tqq9.lc123.cloud.app.plugin.utils.HttpRequestUtils;
|
|||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 采购订单
|
||||
|
|
@ -51,22 +57,11 @@ public class PuroderBillShareRefundPlugin extends AbstractBillPlugIn {
|
|||
FLXT_TOKEN = token != null ? token.getString("name") : null;
|
||||
}
|
||||
|
||||
|
||||
// @Override
|
||||
// public void afterAddRow(AfterAddRowEventArgs e) {
|
||||
// super.afterAddRow(e);
|
||||
// if (StringUtils.equals(e.getEntryProp().getName(), ENTRYENTITY)) {
|
||||
// BigDecimal tqq9_discountamount = (BigDecimal) this.getModel().getValue("tqq9_discountamount");
|
||||
// if (tqq9_discountamount.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// RowDataEntity[] rowDataEntities = e.getRowDataEntities();
|
||||
// for (RowDataEntity rowDataEntity : rowDataEntities) {
|
||||
// int rowIndex = rowDataEntity.getRowIndex();
|
||||
// this.getModel().setValue("discounttype", "C", rowIndex);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
this.addItemClickListeners("tbmainentry");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterDeleteRow(AfterDeleteRowEventArgs e) {
|
||||
|
|
@ -181,7 +176,7 @@ public class PuroderBillShareRefundPlugin extends AbstractBillPlugIn {
|
|||
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
super.propertyChanged(e);
|
||||
// super.propertyChanged(e);
|
||||
String name = e.getProperty().getName();
|
||||
DynamicObject dataEntity = this.getModel().getDataEntity(true);
|
||||
if ("tqq9_hsxfsyje".equals(name)) {
|
||||
|
|
@ -518,15 +513,265 @@ public class PuroderBillShareRefundPlugin extends AbstractBillPlugIn {
|
|||
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 (tqq9_payamount.compareTo(BigDecimal.ZERO) == 0) {
|
||||
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();
|
||||
// SaveServiceHelper.save(new DynamicObject[]{dataEntity});
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
|
|||
DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("billentry");
|
||||
DynamicObject[] im_purinblil = null;
|
||||
DynamicObject[] pm_purrefundapplybill = null;
|
||||
DynamicObject pm_purorderbill = null;
|
||||
for (DynamicObject entry : dynamicObjectCollection) {
|
||||
String mainbillnumber = entry.getString("mainbillnumber");
|
||||
//采购订单
|
||||
|
|
@ -52,21 +53,43 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
|
|||
"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, mainbillnumber).and("billstatus", QCP.equals, "C")});
|
||||
"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", new QFilter[]{new QFilter("billentry.mainbillnumber", QCP.equals, mainbillnumber).and("billstatus", QCP.equals, "C")});
|
||||
//采购退货申请单
|
||||
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, mainbillnumber).and("tqq9_sourcebillno", QCP.equals,"")});
|
||||
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, mainbillnumber).and("tqq9_sourcebillno", QCP.equals, "")});
|
||||
pm_purorderbill = BusinessDataServiceHelper.loadSingle("pm_purorderbill", new QFilter[]{new QFilter("billno", QCP.equals, mainbillnumber)});
|
||||
|
||||
}
|
||||
BigDecimal zero = BigDecimal.ZERO;
|
||||
if(im_purinblil!=null){
|
||||
if (im_purinblil != null) {
|
||||
dynamicObjectCollection.clear();
|
||||
}
|
||||
DynamicObjectCollection tqq9_entryentity = pm_purorderbill.getDynamicObjectCollection("tqq9_entryentity");
|
||||
HashMap<String, BigDecimal> pckyMap = new HashMap();
|
||||
for (DynamicObject dynamicObject : tqq9_entryentity) {
|
||||
String tqq9_entryid = dynamicObject.getString("tqq9_entryid");
|
||||
BigDecimal tqq9_pckyamount = dynamicObject.getBigDecimal("tqq9_pckyamount");
|
||||
pckyMap.put(tqq9_entryid, tqq9_pckyamount);
|
||||
|
||||
}
|
||||
if (im_purinblil != null) {
|
||||
HashMap<String, ArrayList<BigDecimal>> map = new HashMap<>();
|
||||
for (DynamicObject dynamicObject : im_purinblil) {
|
||||
DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry");
|
||||
String billid = dynamicObject.getString("id");
|
||||
for (DynamicObject object : billentry) {
|
||||
BigDecimal qty = object.getBigDecimal("qty");//数量
|
||||
String tqq9_inwarebillentryid ="";
|
||||
if (qty.compareTo(BigDecimal.ZERO) > 0) {
|
||||
tqq9_inwarebillentryid = object.getString("id");//入库单分录id
|
||||
}else{
|
||||
tqq9_inwarebillentryid = object.getString("tqq9_inwarebillentryid");//入库单分录id
|
||||
}
|
||||
BigDecimal tqq9_pckyamount = BigDecimal.ZERO;//批次可用量
|
||||
if (pckyMap.containsKey(tqq9_inwarebillentryid) || qty.compareTo(BigDecimal.ZERO) < 0) {
|
||||
tqq9_pckyamount = pckyMap.get(tqq9_inwarebillentryid);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
String billentryid = object.getString("id");
|
||||
DynamicObject material = object.getDynamicObject("material");//物料库存信息
|
||||
DynamicObject masterid = material.getDynamicObject("masterid");//物料信息
|
||||
|
|
@ -94,7 +117,7 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
|
|||
String tqq9_licenseno = object.getString("tqq9_licenseno");//许可证
|
||||
DynamicObject tqq9_brand = masterid.getDynamicObject("tqq9_brand");//品牌
|
||||
DynamicObject warehouse = object.getDynamicObject("warehouse");//入库仓库
|
||||
BigDecimal qty = object.getBigDecimal("qty");//数量
|
||||
// BigDecimal qty = object.getBigDecimal("qty");//数量
|
||||
Boolean ispresent = object.getBoolean("ispresent");//是否赠品
|
||||
String ownertype = object.getString("ownertype");//货主类型
|
||||
DynamicObject owner = object.getDynamicObject("owner");//货主
|
||||
|
|
@ -123,8 +146,8 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
|
|||
Date producedate = object.getDate("producedate");//生产日期
|
||||
Date expirydate = object.getDate("expirydate");//生产日期
|
||||
String srcbillnumber = object.getString("srcbillnumber");//来源单据编号(收货单)
|
||||
String tqq9_inwarebillentryid = object.getString("tqq9_inwarebillentryid");//入库单分录id
|
||||
DynamicObject invtype = object.getDynamicObject("invtype");//入库库存类型
|
||||
DynamicObject tqq9_cksx = object.getDynamicObject("tqq9_cksx");//仓库属性
|
||||
|
||||
|
||||
if (qty.compareTo(BigDecimal.ZERO) > 0) {
|
||||
|
|
@ -167,6 +190,7 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
|
|||
dynamicObject1.set("tqq9_maxqty", qty);
|
||||
dynamicObject1.set("qty", qty);
|
||||
dynamicObject1.set("baseqty", qty);
|
||||
dynamicObject1.set("tqq9_pckyamount", tqq9_pckyamount);
|
||||
dynamicObject1.set("ispresent", ispresent);
|
||||
dynamicObject1.set("ownertype", ownertype);
|
||||
dynamicObject1.set("owner", owner);
|
||||
|
|
@ -201,12 +225,13 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
|
|||
dynamicObject1.set("tqq9_expiredate", expirydate);
|
||||
dynamicObject1.set("tqq9_shbillno", srcbillnumber);
|
||||
dynamicObject1.set("tqq9_basedatafield1", invtype);
|
||||
dynamicObject1.set("tqq9_assistantfield", tqq9_cksx);
|
||||
} 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{
|
||||
} else {
|
||||
ArrayList<BigDecimal> objects = new ArrayList<>();
|
||||
objects.add(qty);
|
||||
map.put(tqq9_inwarebillentryid, objects);
|
||||
|
|
@ -226,7 +251,7 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
|
|||
BigDecimal add = qty2;
|
||||
|
||||
for (BigDecimal bigDecimal : qtylist) {
|
||||
add=add.add(bigDecimal);
|
||||
add = add.add(bigDecimal);
|
||||
}
|
||||
if (add.compareTo(BigDecimal.ZERO) > 0) {
|
||||
dynamicObject1.set("tqq9_inwarebillentryqty", add);
|
||||
|
|
|
|||
Loading…
Reference in New Issue