diff --git a/so/src/private/nc/bs/so/m30/maintain/InsertSaleOrderBP.java b/so/src/private/nc/bs/so/m30/maintain/InsertSaleOrderBP.java new file mode 100644 index 0000000..4d595cd --- /dev/null +++ b/so/src/private/nc/bs/so/m30/maintain/InsertSaleOrderBP.java @@ -0,0 +1,176 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.so.m30.maintain; + +import nc.bs.scmpub.rule.CrossRuleValidateRule; +import nc.bs.so.m30.maintain.rule.insert.RewriteBillInsertRule; +import nc.bs.so.m30.maintain.rule.insert.RewritePromotePriceInsertRule; +import nc.bs.so.m30.maintain.rule.insert.WritebackMaterialPriceRule; +import nc.bs.so.m30.plugin.BP30PlugInPoint; +import nc.bs.so.m30.rule.atp.SaleOrderVOATPAfterRule; +import nc.bs.so.m30.rule.atp.SaleOrderVOATPBeforeRule; +import nc.bs.so.m30.rule.billcode.AddNewBillCodeRule; +import nc.bs.so.m30.rule.billcode.CheckUniqueBillCodeRule; +import nc.bs.so.m30.rule.businessinfo.SaveTransferMsgRule; +import nc.bs.so.m30.rule.credit.RenovateARByHidsBeginRule; +import nc.bs.so.m30.rule.credit.RenovateARByHidsEndRule; +import nc.bs.so.m30.rule.feature.CfgMatchCheckRule; +import nc.bs.so.m30.rule.feature.CfgMatchSaveRule; +import nc.bs.so.m30.rule.m35.ArsubOffsetBeforeSaveRule; +import nc.bs.so.m30.rule.m35.LrgCashMarCheckRule; +import nc.bs.so.m30.rule.maintaincheck.CheckDateRule; +import nc.bs.so.m30.rule.maintaincheck.CheckLrgTotalMoney; +import nc.bs.so.m30.rule.maintaincheck.CheckMaterilaOVidRule; +import nc.bs.so.m30.rule.maintaincheck.CheckNumPriceMnyRule; +import nc.bs.so.m30.rule.maintaincheck.CheckSaveBillRule; +import nc.bs.so.m30.rule.maintaincheck.CheckSettleOrgRepeat; +import nc.bs.so.m30.rule.maintaincheck.CheckValueWhenIsdeliveryRule; +import nc.bs.so.m30.rule.maintainprocess.FillupFretexchangeRule; +import nc.bs.so.m30.rule.maintainprocess.FillupRedundanceDataRule; +import nc.bs.so.m30.rule.maintainprocess.InsertSoBalanceWhenAddNewRule; +import nc.bs.so.m30.rule.maintainprocess.SaleOrderCheckNumAndMnyRule; +import nc.bs.so.m30.rule.maintainprocess.SourceToSaleOrderMsgRule; +import nc.bs.so.m30.rule.maintainprocess.ThisGatheringRule; +import nc.bs.so.m30.rule.pm.CheckBusiForPMRule; +import nc.bs.so.m30.rule.pm.CheckProjectMFGRule; +import nc.bs.so.m30.rule.pm.CheckProjectValueRule; +import nc.bs.so.m30.rule.reserve.AutoReserveRule; +import nc.bs.so.m30.rule.rewrite.price.RewritePriceFormRule; +import nc.bs.so.pub.rule.FillBillTailInfoRuleForIns; +import nc.impl.pubapp.bd.userdef.UserDefSaveRule; +import nc.impl.pubapp.pattern.data.bill.BillInsert; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.impl.pubapp.pattern.rule.processer.AroundProcesser; +import nc.itf.scmpub.reference.uap.group.SysInitGroupQuery; +import nc.vo.credit.engrossmaintain.pub.action.M30EngrossAction; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pubapp.pattern.log.TimeLog; +import nc.vo.pubapp.util.SetAddAuditInfoRule; +import nc.vo.scmpub.rule.AutoMaterialAssignRule; +import nc.vo.scmpub.rule.SaleOrgEnableCheckRule; +import nc.vo.so.m30.entity.SaleOrderBVO; +import nc.vo.so.m30.entity.SaleOrderHVO; +import nc.vo.so.m30.entity.SaleOrderVO; +import nccloud.bs.so.mobile.saleorder.operation.rule.MobAfterSaveMessageRule; + +public class InsertSaleOrderBP { + public InsertSaleOrderBP() { + } + + public SaleOrderVO[] insert(SaleOrderVO[] bills) { + AroundProcesser processer = new AroundProcesser(BP30PlugInPoint.InsertBP); + TimeLog.logStart(); + this.addBeforeRule(processer); + processer.before(bills); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0066")); + TimeLog.logStart(); + BillInsert bo = new BillInsert(); + SaleOrderVO[] vos = (SaleOrderVO[])bo.insert(bills); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0067")); + TimeLog.logStart(); + this.addAfterRule(processer); + processer.after(vos); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0068")); + return vos; + } + + private void addAfterRule(AroundProcesser processer) { + IRule rule = null; + IRule var4 = new InsertSoBalanceWhenAddNewRule(); + processer.addAfterRule(var4); + IRule var5 = new RenovateARByHidsEndRule(M30EngrossAction.M30Insert); + processer.addAfterRule(var5); + IRule var6 = new ThisGatheringRule(); + processer.addAfterRule(var6); + IRule var7 = new CheckUniqueBillCodeRule(); + processer.addAfterRule(var7); + IRule var8 = new RewriteBillInsertRule(); + processer.addAfterRule(var8); + IRule var9 = new SaveTransferMsgRule(); + processer.addAfterRule(var9); + IRule var10 = new RewritePriceFormRule(); + processer.addAfterRule(var10); + IRule var11 = new SourceToSaleOrderMsgRule(); + processer.addAfterRule(var11); + boolean icEnable = SysInitGroupQuery.isICEnabled(); + if (icEnable) { + IRule var12 = new SaleOrderVOATPAfterRule(); + processer.addAfterRule(var12); + IRule var13 = new AutoReserveRule(); + processer.addAfterRule(var13); + } + + if (SysInitGroupQuery.isPRICEEnabled()) { + IRule var14 = new RewritePromotePriceInsertRule(); + processer.addAfterRule(var14); + } + /** + * 销售订单新增回写参考物料售价规则 + */ + IRule var15 = new WritebackMaterialPriceRule(); + processer.addAfterRule(var15); + + processer.addAfterRule(new MobAfterSaveMessageRule()); + } + + private void addBeforeRule(AroundProcesser processer) { + IRule rule = new SaleOrgEnableCheckRule(); + processer.addBeforeRule(rule); + IRule var4 = new FillupRedundanceDataRule(); + processer.addBeforeRule(var4); + IRule var5 = new FillupFretexchangeRule(); + processer.addBeforeRule(var5); + IRule var6 = new AddNewBillCodeRule(); + processer.addBeforeRule(var6); + IRule var7 = new CheckNumPriceMnyRule(); + processer.addBeforeRule(var7); + IRule var8 = new SaleOrderCheckNumAndMnyRule(); + processer.addBeforeRule(var8); + IRule var9 = new CheckMaterilaOVidRule(); + processer.addBeforeRule(var9); + IRule var10 = new CheckSettleOrgRepeat(); + processer.addBeforeRule(var10); + IRule var11 = new CheckDateRule(); + processer.addBeforeRule(var11); + processer.addBeforeRule(new AutoMaterialAssignRule("cmaterialid", new String[]{"pk_org"}, new String[]{"pk_org", "csendstockorgid", "csettleorgid", "carorgid", "cprofitcenterid", "csprofitcenterid"})); + IRule var12 = new CfgMatchSaveRule(); + processer.addBeforeRule(var12); + IRule var13 = new CfgMatchCheckRule(); + processer.addBeforeRule(var13); + IRule var14 = new CheckSaveBillRule(); + processer.addBeforeRule(var14); + IRule var15 = new FillBillTailInfoRuleForIns(); + processer.addBeforeRule(var15); + IRule var16 = new SetAddAuditInfoRule(); + processer.addBeforeRule(var16); + IRule var17 = new RenovateARByHidsBeginRule(M30EngrossAction.M30Insert); + processer.addBeforeRule(var17); + boolean icEnable = SysInitGroupQuery.isICEnabled(); + if (icEnable) { + IRule var18 = new SaleOrderVOATPBeforeRule(); + processer.addBeforeRule(var18); + } + + IRule var19 = new LrgCashMarCheckRule(); + processer.addBeforeRule(var19); + IRule var20 = new ArsubOffsetBeforeSaveRule(); + processer.addBeforeRule(var20); + IRule var21 = new CheckLrgTotalMoney(); + processer.addBeforeRule(var21); + IRule var22 = new UserDefSaveRule(new Class[]{SaleOrderHVO.class, SaleOrderBVO.class}); + processer.addBeforeRule(var22); + IRule var23 = new CrossRuleValidateRule(); + processer.addBeforeRule(var23); + IRule var24 = new CheckProjectValueRule(); + processer.addBeforeRule(var24); + IRule var25 = new CheckBusiForPMRule(); + processer.addBeforeRule(var25); + IRule var26 = new CheckValueWhenIsdeliveryRule(); + processer.addBeforeRule(var26); + IRule var27 = new CheckProjectMFGRule(); + processer.addBeforeRule(var27); + } +} diff --git a/so/src/private/nc/bs/so/m30/maintain/UpdateSaleOrderBP.java b/so/src/private/nc/bs/so/m30/maintain/UpdateSaleOrderBP.java new file mode 100644 index 0000000..175b315 --- /dev/null +++ b/so/src/private/nc/bs/so/m30/maintain/UpdateSaleOrderBP.java @@ -0,0 +1,183 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.so.m30.maintain; + +import nc.bs.scmpub.rule.CrossRuleValidateRule; +import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; +import nc.bs.so.m30.maintain.rule.insert.WritebackMaterialPriceRule; +import nc.bs.so.m30.maintain.rule.update.RewriteBillUpdateRule; +import nc.bs.so.m30.maintain.rule.update.RewritePromotePriceUpdateRule; +import nc.bs.so.m30.plugin.BP30PlugInPoint; +import nc.bs.so.m30.rule.atp.SaleOrderVOATPAfterRule; +import nc.bs.so.m30.rule.atp.SaleOrderVOATPBeforeRule; +import nc.bs.so.m30.rule.billcode.CheckUniqueBillCodeRule; +import nc.bs.so.m30.rule.billcode.UpdateBillCodeRule; +import nc.bs.so.m30.rule.businessinfo.SaveTransferMsgRule; +import nc.bs.so.m30.rule.credit.RenovateARByHidsBeginRule; +import nc.bs.so.m30.rule.credit.RenovateARByHidsEndRule; +import nc.bs.so.m30.rule.feature.CfgMatchCheckRule; +import nc.bs.so.m30.rule.feature.CfgMatchSaveRule; +import nc.bs.so.m30.rule.m35.ArsubOffsetBeforeSaveRule; +import nc.bs.so.m30.rule.m35.LrgCashMarCheckRule; +import nc.bs.so.m30.rule.maintaincheck.CheckCanUpdateWhenAuditing; +import nc.bs.so.m30.rule.maintaincheck.CheckDateRule; +import nc.bs.so.m30.rule.maintaincheck.CheckLrgTotalMoney; +import nc.bs.so.m30.rule.maintaincheck.CheckMaterilaOVidRule; +import nc.bs.so.m30.rule.maintaincheck.CheckNumPriceMnyRule; +import nc.bs.so.m30.rule.maintaincheck.CheckSaveBillRule; +import nc.bs.so.m30.rule.maintaincheck.CheckSettleOrgRepeat; +import nc.bs.so.m30.rule.maintaincheck.CheckValueWhenIsdeliveryRule; +import nc.bs.so.m30.rule.maintainprocess.FillupFretexchangeRule; +import nc.bs.so.m30.rule.maintainprocess.FillupRedundanceDataRule; +import nc.bs.so.m30.rule.maintainprocess.SaleOrderCheckNumAndMnyRule; +import nc.bs.so.m30.rule.maintainprocess.ThisGatheringRule; +import nc.bs.so.m30.rule.maintainprocess.UpdateSoBalanceWhenUpdateM30HeadRule; +import nc.bs.so.m30.rule.maintainprocess.UpdateSoBalanceWhenUpdateRule; +import nc.bs.so.m30.rule.pm.CheckBusiForPMRule; +import nc.bs.so.m30.rule.pm.CheckProjectMFGRule; +import nc.bs.so.m30.rule.pm.CheckProjectValueRule; +import nc.bs.so.m30.rule.reserve.AutoReserveRule; +import nc.bs.so.m30.rule.reserve.ReserveUpdateRule; +import nc.bs.so.m30.rule.rewrite.price.RewritePriceFormRule; +import nc.bs.so.pub.rule.CheckApproverRule; +import nc.impl.pubapp.bd.userdef.UserDefSaveRule; +import nc.impl.pubapp.pattern.data.bill.BillUpdate; +import nc.impl.pubapp.pattern.rule.ICompareRule; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; +import nc.itf.scmpub.reference.uap.group.SysInitGroupQuery; +import nc.vo.credit.engrossmaintain.pub.action.M30EngrossAction; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pubapp.pattern.log.TimeLog; +import nc.vo.pubapp.util.SetUpdateAuditInfoRule; +import nc.vo.scmpub.rule.AutoMaterialAssignRule; +import nc.vo.so.m30.entity.SaleOrderBVO; +import nc.vo.so.m30.entity.SaleOrderHVO; +import nc.vo.so.m30.entity.SaleOrderVO; + +public class UpdateSaleOrderBP { + public UpdateSaleOrderBP() { + } + + public SaleOrderVO[] update(SaleOrderVO[] bills, SaleOrderVO[] originBills) { + CompareAroundProcesser processer = new CompareAroundProcesser(BP30PlugInPoint.UpdateBP); + TimeLog.logStart(); + this.addBeforeRule(processer); + processer.before(bills, originBills); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0069")); + TimeLog.logStart(); + BillUpdate bo = new BillUpdate(); + SaleOrderVO[] vos = (SaleOrderVO[])bo.update(bills, originBills); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0070")); + TimeLog.logStart(); + this.addAfterRule(processer); + processer.after(vos, originBills); + TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0071")); + return vos; + } + + private void addAfterRule(CompareAroundProcesser processer) { + IRule rule = null; + IRule var5 = new UpdateSoBalanceWhenUpdateRule(); + processer.addAfterRule(var5); + IRule var6 = new RenovateARByHidsEndRule(M30EngrossAction.M30Edit); + processer.addAfterRule(var6); + IRule var7 = new ThisGatheringRule(); + processer.addAfterRule(var7); + IRule var8 = new CheckUniqueBillCodeRule(); + processer.addAfterRule(var8); + ICompareRule compareRule = new RewriteBillUpdateRule(); + processer.addAfterRule(compareRule); + IRule var9 = new SaveTransferMsgRule(); + processer.addAfterRule(var9); + IRule var10 = new RewritePriceFormRule(); + processer.addAfterRule(var10); + IRule var11 = new UpdateSoBalanceWhenUpdateM30HeadRule(); + processer.addAfterRule(var11); + boolean icEnable = SysInitGroupQuery.isICEnabled(); + if (icEnable) { + IRule var12 = new SaleOrderVOATPAfterRule(); + processer.addAfterRule(var12); + IRule var13 = new ReserveUpdateRule(); + processer.addAfterRule(var13); + IRule var14 = new AutoReserveRule(); + processer.addAfterRule(var14); + } + + if (SysInitGroupQuery.isPRICEEnabled()) { + ICompareRule var15 = new RewritePromotePriceUpdateRule(); + processer.addAfterRule(var15); + } + + /** + * 销售订单新增回写参考物料售价规则 + */ + IRule var16 = new WritebackMaterialPriceRule(); + processer.addAfterRule(var16); + + } + + private void addBeforeRule(CompareAroundProcesser processer) { + IRule rule = null; + IRule var5 = new VOSagaFrozenValidateRule(); + processer.addBeforeRule(var5); + IRule var6 = new CheckCanUpdateWhenAuditing(); + processer.addBeforeRule(var6); + IRule var7 = new CheckApproverRule(); + processer.addBeforeRule(var7); + IRule var8 = new CfgMatchSaveRule(); + processer.addBeforeRule(var8); + IRule var9 = new CfgMatchCheckRule(); + processer.addBeforeRule(var9); + IRule var10 = new FillupRedundanceDataRule(); + processer.addBeforeRule(var10); + IRule var11 = new FillupFretexchangeRule(); + processer.addBeforeRule(var11); + IRule var12 = new SetUpdateAuditInfoRule(); + processer.addBeforeRule(var12); + ICompareRule compareRule = new UpdateBillCodeRule(); + processer.addBeforeRule(compareRule); + IRule var13 = new CheckMaterilaOVidRule(); + processer.addBeforeRule(var13); + IRule var14 = new CheckNumPriceMnyRule(); + processer.addBeforeRule(var14); + IRule var15 = new SaleOrderCheckNumAndMnyRule(); + processer.addBeforeRule(var15); + IRule var16 = new CheckSettleOrgRepeat(); + processer.addBeforeRule(var16); + IRule var17 = new CheckDateRule(); + processer.addBeforeRule(var17); + processer.addBeforeRule(new AutoMaterialAssignRule("cmaterialid", new String[]{"pk_org"}, new String[]{"pk_org", "csendstockorgid", "csettleorgid", "carorgid", "cprofitcenterid", "csprofitcenterid"})); + IRule var18 = new CheckSaveBillRule(); + processer.addBeforeRule(var18); + IRule var19 = new RenovateARByHidsBeginRule(M30EngrossAction.M30Edit); + processer.addBeforeRule(var19); + boolean icEnable = SysInitGroupQuery.isICEnabled(); + if (icEnable) { + IRule var20 = new SaleOrderVOATPBeforeRule(); + processer.addBeforeRule(var20); + } + + IRule var21 = new LrgCashMarCheckRule(); + processer.addBeforeRule(var21); + IRule var22 = new ArsubOffsetBeforeSaveRule(); + processer.addBeforeRule(var22); + IRule var23 = new CheckLrgTotalMoney(); + processer.addBeforeRule(var23); + IRule var24 = new CrossRuleValidateRule(); + processer.addBeforeRule(var24); + IRule var25 = new UserDefSaveRule(new Class[]{SaleOrderHVO.class, SaleOrderBVO.class}); + processer.addBeforeRule(var25); + IRule var26 = new CheckProjectValueRule(); + processer.addBeforeRule(var26); + IRule var27 = new CheckBusiForPMRule(); + processer.addBeforeRule(var27); + IRule var28 = new CheckValueWhenIsdeliveryRule(); + processer.addBeforeRule(var28); + IRule var29 = new CheckProjectMFGRule(); + processer.addBeforeRule(var29); + } +} diff --git a/so/src/private/nc/bs/so/m30/maintain/rule/insert/WritebackMaterialPriceRule.java b/so/src/private/nc/bs/so/m30/maintain/rule/insert/WritebackMaterialPriceRule.java new file mode 100644 index 0000000..0605716 --- /dev/null +++ b/so/src/private/nc/bs/so/m30/maintain/rule/insert/WritebackMaterialPriceRule.java @@ -0,0 +1,56 @@ +package nc.bs.so.m30.maintain.rule.insert; + +import nc.bs.framework.common.NCLocator; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.itf.bd.material.sale.IMaterialSaleService; +import nc.md.persist.framework.IMDPersistenceQueryService; +import nc.vo.bd.material.sale.MaterialSaleVO; +import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFDouble; +import nc.vo.so.m30.entity.SaleOrderBVO; +import nc.vo.so.m30.entity.SaleOrderVO; + +import java.util.ArrayList; +import java.util.List; + +public class WritebackMaterialPriceRule implements IRule{ + + + @Override + public void process(SaleOrderVO[] vos) { + // TODO Auto-generated method stub + for (SaleOrderVO vo : vos) { + //根据销售订单子表的物料编码和销售组织查询物料主表 + SaleOrderBVO[] saleOrderitems = vo.getChildrenVO(); + //循环销售订单子表 + for(int i = 0; i < saleOrderitems.length; i++) { + SaleOrderBVO item = saleOrderitems[i]; + //取销售订单子表的物料编码和销售组织 + String cmaterialvid = item.getCmaterialvid(); //物料主键 + String pk_org = item.getPk_org(); //销售组织 + UFDouble nqtorigprice = item.getNqtorigprice(); //无税单价 + IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class); + // 条件查询得到物料MaterialSaleVO + try { + String whereSql = "nvl(bd_materialsale.dr,0) = 0 and bd_materialsale.pk_material = '" + cmaterialvid + "' and bd_materialsale.pk_org = '" + pk_org + "'"; + @SuppressWarnings("unchecked") + ArrayList materialSaleVOs = (ArrayList)aggvoQueryService.queryBillOfVOByCond(MaterialSaleVO.class, whereSql, true, false); + if(materialSaleVOs.size() <= 0) { + continue; + } + for(MaterialSaleVO materialSaleVO : materialSaleVOs) { + materialSaleVO.setResaleprice(nqtorigprice); + //实体更新物料销售表 +// IMaterialSaleService iMaterialSaleService = ServiceLocator.find(IMaterialSaleService.class); + IMaterialSaleService iMaterialSaleService = NCLocator.getInstance().lookup(IMaterialSaleService.class); + iMaterialSaleService.updateMaterialSaleVO(materialSaleVO); + } + }catch(BusinessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + +}