2025-10-30 07:47:33 +00:00
|
|
|
package tqq9.lc123.cloud.app.plugin.operate.im;
|
|
|
|
|
|
|
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
|
|
import kd.bos.entity.ExtendedDataEntity;
|
|
|
|
|
import kd.bos.entity.ExtendedDataEntitySet;
|
|
|
|
|
import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
|
|
|
|
|
import kd.bos.entity.botp.plugin.args.AfterConvertEventArgs;
|
|
|
|
|
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 kd.sdk.plugin.Plugin;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 单据转换插件
|
|
|
|
|
*/
|
|
|
|
|
public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn implements Plugin {
|
|
|
|
|
private final static Log logger = LogFactory.getLog(PurOrderPushPurRefundConverPlugin.class);
|
|
|
|
|
private static String PM_PURREFUNDAPPLYBILL = "pm_purrefundapplybill";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 采购订单下推采购退货申请
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void afterConvert(AfterConvertEventArgs e) {
|
|
|
|
|
super.afterConvert(e);
|
|
|
|
|
ExtendedDataEntitySet targetExtDataEntitySet = e.getTargetExtDataEntitySet();
|
|
|
|
|
ExtendedDataEntity[] extendedDataEntities = targetExtDataEntitySet.FindByEntityKey(PM_PURREFUNDAPPLYBILL);
|
|
|
|
|
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
|
|
|
|
|
//采购退货申请
|
|
|
|
|
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
|
|
|
|
|
DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("billentry");
|
|
|
|
|
DynamicObject[] im_purinblil = null;
|
|
|
|
|
for (DynamicObject entry : dynamicObjectCollection) {
|
|
|
|
|
String mainbillnumber = entry.getString("mainbillnumber");
|
|
|
|
|
//采购订单
|
|
|
|
|
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.discountamount,billentry.amountandtax,billentry.curamountandtax,billentry.returnqty," +
|
|
|
|
|
"billentry.returnbaseqty,billentry.tqq9_yyhyflje,billentry.tqq9_yyhwflje,billentry.lotnumber," +
|
2025-11-04 07:45:38 +00:00
|
|
|
"billentry.tqq9_goods,billentry.tqq9_wmsdetailid,billentry.producedate,billentry.expirydate,creator,createtime,modifier,modifytime,billentry.owner,billentry.taxrate", new QFilter[]{new QFilter("billentry.mainbillnumber", QCP.equals, mainbillnumber).and("billstatus", QCP.equals, "C")});
|
2025-10-30 07:47:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
BigDecimal zero = BigDecimal.ZERO;
|
|
|
|
|
dynamicObjectCollection.clear();
|
2025-11-03 10:21:37 +00:00
|
|
|
if (im_purinblil != null) {
|
2025-10-30 07:47:33 +00:00
|
|
|
for (DynamicObject dynamicObject : im_purinblil) {
|
|
|
|
|
DynamicObjectCollection billentry = dynamicObject.getDynamicObjectCollection("billentry");
|
|
|
|
|
String billid = dynamicObject.getString("id");
|
|
|
|
|
for (DynamicObject object : billentry) {
|
|
|
|
|
String billentryid = object.getString("id");
|
|
|
|
|
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"))});
|
2025-11-03 10:21:37 +00:00
|
|
|
masterid = BusinessDataServiceHelper.loadSingle("bd_material", new QFilter[]{new QFilter("id", QCP.equals, masterid.getLong("id"))});
|
2025-10-30 07:47:33 +00:00
|
|
|
String materialname = bd_materialpurchaseinfo.getString("masterid.name");//物料名称
|
|
|
|
|
DynamicObject baseunit = masterid.getDynamicObject("baseunit");//计量单位
|
|
|
|
|
DynamicObject entryreqorg = object.getDynamicObject("entryreqorg");//需求组织
|
|
|
|
|
DynamicObject taxrateid = object.getDynamicObject("taxrateid");//税率
|
2025-11-04 07:45:38 +00:00
|
|
|
BigDecimal taxrate = object.getBigDecimal("taxrate");//税率%
|
2025-10-30 07:47:33 +00:00
|
|
|
String discounttype = object.getString("discounttype");//折扣方式
|
|
|
|
|
String mainbillentity = object.getString("mainbillentity");//核心单据实体
|
|
|
|
|
String mainbillid = object.getString("mainbillid");//核心单据ID
|
|
|
|
|
String mainbillnumber = object.getString("mainbillnumber");//核心单据编号
|
|
|
|
|
String mainbillentryid = object.getString("mainbillentryid");//核心单据行ID
|
|
|
|
|
String mainbillentryseq = object.getString("mainbillentryseq");//核心单据分录序号
|
|
|
|
|
DynamicObject creator = dynamicObject.getDynamicObject("creator");//创建人
|
|
|
|
|
Date createtime = dynamicObject.getDate("createtime");//创建时间
|
|
|
|
|
DynamicObject modifier = dynamicObject.getDynamicObject("modifier");//修改人
|
|
|
|
|
Date modifytime = dynamicObject.getDate("modifytime");//修改时间
|
|
|
|
|
DynamicObject linetype = object.getDynamicObject("linetype");//行类型
|
|
|
|
|
DynamicObject tqq9_registration = object.getDynamicObject("tqq9_registration");//注册证
|
|
|
|
|
String tqq9_licenseno = object.getString("tqq9_licenseno");//许可证
|
|
|
|
|
DynamicObject tqq9_brand = masterid.getDynamicObject("tqq9_brand");//品牌
|
|
|
|
|
DynamicObject warehouse = object.getDynamicObject("warehouse");//入库仓库
|
|
|
|
|
BigDecimal qty = object.getBigDecimal("qty");//数量
|
|
|
|
|
Boolean ispresent = object.getBoolean("ispresent");//是否赠品
|
|
|
|
|
String ownertype = object.getString("ownertype");//货主类型
|
|
|
|
|
DynamicObject owner = object.getDynamicObject("owner");//货主
|
|
|
|
|
DynamicObject version = object.getDynamicObject("mversion");//物料版本
|
|
|
|
|
DynamicObject unit2nd = object.getDynamicObject("unit2nd");//辅助单位
|
|
|
|
|
BigDecimal qtyunit2nd = object.getBigDecimal("qtyunit2nd");//辅助数量
|
|
|
|
|
Object auxpty = object.get("auxpty");//辅助属性
|
|
|
|
|
BigDecimal discountrate = object.getBigDecimal("discountrate");//单位折扣(率)
|
|
|
|
|
BigDecimal price = object.getBigDecimal("price");//单价
|
|
|
|
|
BigDecimal priceandtax = object.getBigDecimal("priceandtax");//含税单价
|
|
|
|
|
BigDecimal amount = object.getBigDecimal("amount");//金额
|
|
|
|
|
BigDecimal curamount = object.getBigDecimal("curamount");//金额(本位币)
|
|
|
|
|
BigDecimal taxamount = object.getBigDecimal("taxamount");//税额
|
|
|
|
|
BigDecimal curtaxamount = object.getBigDecimal("curtaxamount");//税额(本位币)
|
|
|
|
|
BigDecimal discountamount = object.getBigDecimal("discountamount");//优惠(折扣)金额
|
|
|
|
|
BigDecimal amountandtax = object.getBigDecimal("amountandtax");//折扣后价税合计
|
|
|
|
|
BigDecimal curamountandtax = object.getBigDecimal("curamountandtax");//价税合计(本位币)
|
|
|
|
|
BigDecimal returnqty = object.getBigDecimal("returnqty");//退库数量
|
|
|
|
|
BigDecimal returnbaseqty = object.getBigDecimal("returnbaseqty");//退库数量
|
|
|
|
|
BigDecimal tqq9_yyhyflje = object.getBigDecimal("tqq9_yyhyflje");//有优惠有返利含税单价
|
|
|
|
|
BigDecimal tqq9_yyhwflje = object.getBigDecimal("tqq9_yyhwflje");//有优惠无返利含税单价
|
|
|
|
|
String lotnumber = object.getString("lotnumber");//批号
|
2025-11-03 10:21:37 +00:00
|
|
|
DynamicObject bd_lot = BusinessDataServiceHelper.loadSingle("bd_lot", new QFilter[]{new QFilter("number", QCP.equals, lotnumber)});
|
2025-10-30 07:47:33 +00:00
|
|
|
DynamicObject tqq9_goods = object.getDynamicObject("tqq9_goods");//商品
|
|
|
|
|
String tqq9_wmsdetailid = object.getString("tqq9_wmsdetailid");//WMS分录id
|
|
|
|
|
Date producedate = object.getDate("producedate");//生产日期
|
|
|
|
|
Date expirydate = object.getDate("expirydate");//生产日期
|
|
|
|
|
|
|
|
|
|
|
2025-11-03 10:21:37 +00:00
|
|
|
if (qty.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
DynamicObject dynamicObject1 = dynamicObjectCollection.addNew();
|
|
|
|
|
dynamicObject1.set("material", bd_materialpurchaseinfo);
|
|
|
|
|
dynamicObject1.set("materialname", materialname);
|
|
|
|
|
dynamicObject1.set("unit", baseunit);
|
|
|
|
|
dynamicObject1.set("baseunit", baseunit);
|
|
|
|
|
dynamicObject1.set("rowclosestatus", "A");
|
|
|
|
|
dynamicObject1.set("rowterminatestatus", "A");
|
|
|
|
|
dynamicObject1.set("entryreqorg", "A");
|
|
|
|
|
dynamicObject1.set("entryreqorg", entryreqorg);
|
|
|
|
|
dynamicObject1.set("entryinvcorg", entryreqorg);
|
|
|
|
|
dynamicObject1.set("entrysettleorg", entryreqorg);
|
|
|
|
|
dynamicObject1.set("taxrateid", taxrateid);
|
2025-11-04 07:45:38 +00:00
|
|
|
dynamicObject1.set("taxrate", taxrate);
|
2025-11-03 10:21:37 +00:00
|
|
|
dynamicObject1.set("discounttype", discounttype);
|
|
|
|
|
dynamicObject1.set("entrypayorg", entryreqorg);
|
|
|
|
|
dynamicObject1.set("mainbillentity", mainbillentity);
|
|
|
|
|
dynamicObject1.set("mainbillid", mainbillid);
|
|
|
|
|
dynamicObject1.set("mainbillnumber", mainbillnumber);
|
|
|
|
|
dynamicObject1.set("mainbillentryid", mainbillentryid);
|
|
|
|
|
dynamicObject1.set("mainbillentryseq", mainbillentryseq);
|
|
|
|
|
dynamicObject1.set("srcbillentity", mainbillentity);
|
|
|
|
|
dynamicObject1.set("srcbillid", mainbillid);
|
|
|
|
|
dynamicObject1.set("srcbillnumber", mainbillnumber);
|
|
|
|
|
dynamicObject1.set("srcbillentryid", mainbillentryid);
|
|
|
|
|
dynamicObject1.set("srcbillentryseq", mainbillentryseq);
|
|
|
|
|
dynamicObject1.set("entrycreator", creator);
|
|
|
|
|
dynamicObject1.set("entrycreatetime", createtime);
|
|
|
|
|
dynamicObject1.set("entrymodifier", modifier);
|
|
|
|
|
dynamicObject1.set("entrymodifytime", modifytime);
|
|
|
|
|
dynamicObject1.set("linetype", linetype);
|
|
|
|
|
dynamicObject1.set("tqq9_registration", tqq9_registration);
|
|
|
|
|
dynamicObject1.set("tqq9_licenseno", tqq9_licenseno);
|
|
|
|
|
dynamicObject1.set("tqq9_brand", tqq9_brand);
|
|
|
|
|
dynamicObject1.set("tqq9_thck", warehouse);
|
|
|
|
|
dynamicObject1.set("tqq9_kclx", "ZP");
|
|
|
|
|
dynamicObject1.set("tqq9_maxqty", qty);
|
|
|
|
|
dynamicObject1.set("qty", qty);
|
|
|
|
|
dynamicObject1.set("baseqty", qty);
|
|
|
|
|
dynamicObject1.set("ispresent", ispresent);
|
|
|
|
|
dynamicObject1.set("ownertype", ownertype);
|
|
|
|
|
dynamicObject1.set("owner", owner);
|
|
|
|
|
dynamicObject1.set("materialversion", version);
|
|
|
|
|
dynamicObject1.set("auxunit", unit2nd);
|
|
|
|
|
dynamicObject1.set("auxqty", qtyunit2nd);
|
|
|
|
|
dynamicObject1.set("auxpty", auxpty);
|
|
|
|
|
dynamicObject1.set("discountrate", discountrate);
|
|
|
|
|
dynamicObject1.set("price", price);
|
|
|
|
|
dynamicObject1.set("priceandtax", priceandtax);
|
|
|
|
|
dynamicObject1.set("amount", amount);
|
|
|
|
|
dynamicObject1.set("curamount", curamount);
|
|
|
|
|
dynamicObject1.set("taxamount", taxamount);
|
|
|
|
|
dynamicObject1.set("curtaxamount", curtaxamount);
|
|
|
|
|
dynamicObject1.set("discountamount", discountamount);
|
|
|
|
|
dynamicObject1.set("amountandtax", amountandtax);
|
|
|
|
|
dynamicObject1.set("curamountandtax", curamountandtax);
|
|
|
|
|
dynamicObject1.set("joinqty", zero);
|
|
|
|
|
dynamicObject1.set("joinbaseqty", zero);
|
|
|
|
|
dynamicObject1.set("returnqty", returnqty);
|
|
|
|
|
dynamicObject1.set("returnbaseqty", returnbaseqty);
|
|
|
|
|
dynamicObject1.set("tqq9_yyhyflje", tqq9_yyhyflje);
|
|
|
|
|
dynamicObject1.set("tqq9_yyhwflje", tqq9_yyhwflje);
|
|
|
|
|
dynamicObject1.set("tqq9_ph", bd_lot);
|
|
|
|
|
dynamicObject1.set("tqq9_goods", tqq9_goods);
|
|
|
|
|
dynamicObject1.set("tqq9_inwarebill", dynamicObject);
|
|
|
|
|
dynamicObject1.set("tqq9_inwarebillid", billid);
|
|
|
|
|
dynamicObject1.set("tqq9_inwarebillentryid", billentryid);
|
|
|
|
|
dynamicObject1.set("tqq9_inwarebillentryqty", qty);
|
|
|
|
|
dynamicObject1.set("tqq9_wmsdetailid", tqq9_wmsdetailid);
|
|
|
|
|
dynamicObject1.set("tqq9_productdate", producedate);
|
|
|
|
|
dynamicObject1.set("tqq9_expiredate", expirydate);
|
|
|
|
|
}
|
2025-10-30 07:47:33 +00:00
|
|
|
|
2025-11-03 10:21:37 +00:00
|
|
|
}
|
2025-10-30 07:47:33 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|