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," + "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")}); } BigDecimal zero = BigDecimal.ZERO; dynamicObjectCollection.clear(); if (im_purinblil != null) { 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"))}); masterid = BusinessDataServiceHelper.loadSingle("bd_material", new QFilter[]{new QFilter("id", QCP.equals, masterid.getLong("id"))}); String materialname = bd_materialpurchaseinfo.getString("masterid.name");//物料名称 DynamicObject baseunit = masterid.getDynamicObject("baseunit");//计量单位 DynamicObject entryreqorg = object.getDynamicObject("entryreqorg");//需求组织 DynamicObject taxrateid = object.getDynamicObject("taxrateid");//税率 BigDecimal taxrate = object.getBigDecimal("taxrate");//税率% 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");//批号 DynamicObject bd_lot = BusinessDataServiceHelper.loadSingle("bd_lot", new QFilter[]{new QFilter("number", QCP.equals, lotnumber)}); 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");//生产日期 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); dynamicObject1.set("taxrate", taxrate); 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); } } } } } } }