销售订单保存时回写售价 + 开票云回写销售发票级下游单据逻辑
This commit is contained in:
parent
290b081039
commit
fed80fd269
|
@ -0,0 +1,223 @@
|
||||||
|
/* */ package nc.bs.so.m30.maintain;
|
||||||
|
/* */
|
||||||
|
/* */ import nc.bs.scmpub.rule.CrossRuleValidateRule;
|
||||||
|
import nc.bs.so.m30.maintain.rule.insert.JudgeMaterialPriceInsertRule;
|
||||||
|
/* */ 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.FeatureSelectSaveRule;
|
||||||
|
/* */ 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.CheckNumPriceMnyRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.maintaincheck.CheckSaveBillRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.maintaincheck.CheckSettleOrgRepeat;
|
||||||
|
/* */ 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.SourceToSaleOrderMsgRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.maintainprocess.ThisGatheringRule;
|
||||||
|
/* */ 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.pubapp.pattern.log.TimeLog;
|
||||||
|
/* */ import nc.vo.pubapp.util.SetAddAuditInfoRule;
|
||||||
|
/* */ 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 SaleOrderVO[] insert(SaleOrderVO[] bills) {
|
||||||
|
/* 56 */ AroundProcesser<SaleOrderVO> processer = new AroundProcesser(BP30PlugInPoint.InsertBP);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 60 */ TimeLog.logStart();
|
||||||
|
/* 61 */ this.addBeforeRule(processer);
|
||||||
|
/* 62 */ processer.before(bills);
|
||||||
|
/* 63 */ TimeLog.info("调用新增保存前BP插入点");
|
||||||
|
/* */
|
||||||
|
/* 65 */ TimeLog.logStart();
|
||||||
|
/* 66 */ BillInsert<SaleOrderVO> bo = new BillInsert();
|
||||||
|
/* 67 */ SaleOrderVO[] vos = (SaleOrderVO[])bo.insert(bills);
|
||||||
|
/* 68 */ TimeLog.info("保存单据到数据库");
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 71 */ TimeLog.logStart();
|
||||||
|
/* 72 */ this.addAfterRule(processer);
|
||||||
|
/* 73 */ processer.after(vos);
|
||||||
|
/* 74 */ TimeLog.info("调用新增保存后BP插入点");
|
||||||
|
/* */
|
||||||
|
/* 76 */ return vos;
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* */ private void addAfterRule(AroundProcesser<SaleOrderVO> processer) {
|
||||||
|
/* 80 */ IRule<SaleOrderVO> rule = null;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 83 */ rule = new InsertSoBalanceWhenAddNewRule();
|
||||||
|
/* 84 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 87 */ rule = new RenovateARByHidsEndRule(M30EngrossAction.M30Insert);
|
||||||
|
/* 88 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 91 */ rule = new ThisGatheringRule();
|
||||||
|
/* 92 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 95 */ rule = new CheckUniqueBillCodeRule();
|
||||||
|
/* 96 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 102 */ rule = new RewriteBillInsertRule();
|
||||||
|
/* 103 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 106 */ rule = new SaveTransferMsgRule();
|
||||||
|
/* 107 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 110 */ rule = new RewritePriceFormRule();
|
||||||
|
/* 111 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 114 */ rule = new SourceToSaleOrderMsgRule();
|
||||||
|
/* 115 */ processer.addAfterRule(rule);
|
||||||
|
|
||||||
|
rule = new WritebackMaterialPriceRule();
|
||||||
|
processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 117 */ boolean icEnable = SysInitGroupQuery.isICEnabled();
|
||||||
|
/* 118 */ if (icEnable) {
|
||||||
|
/* */
|
||||||
|
/* 120 */ rule = new SaleOrderVOATPAfterRule();
|
||||||
|
/* 121 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 123 */ rule = new AutoReserveRule();
|
||||||
|
/* 124 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 129 */ if (SysInitGroupQuery.isPRICEEnabled()) {
|
||||||
|
/* 130 */ rule = new RewritePromotePriceInsertRule();
|
||||||
|
/* 131 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 136 */ processer.addAfterRule(new MobAfterSaveMessageRule());
|
||||||
|
/* 137 */ }
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ private void addBeforeRule(AroundProcesser<SaleOrderVO> processer) {
|
||||||
|
/* 142 */ IRule<SaleOrderVO> rule = new SaleOrgEnableCheckRule();
|
||||||
|
/* 143 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 146 */ rule = new FillupRedundanceDataRule();
|
||||||
|
/* 147 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 150 */ rule = new FillupFretexchangeRule();
|
||||||
|
/* 151 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 154 */ rule = new AddNewBillCodeRule();
|
||||||
|
/* 155 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 158 */ rule = new CheckNumPriceMnyRule();
|
||||||
|
/* 159 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 161 */ rule = new CheckSettleOrgRepeat();
|
||||||
|
/* 162 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 164 */ rule = new CheckDateRule();
|
||||||
|
/* 165 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 167 */ rule = new CheckSaveBillRule();
|
||||||
|
/* 168 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 171 */ rule = new FillBillTailInfoRuleForIns();
|
||||||
|
/* 172 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 175 */ rule = new SetAddAuditInfoRule();
|
||||||
|
/* 176 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 179 */ rule = new RenovateARByHidsBeginRule(M30EngrossAction.M30Insert);
|
||||||
|
/* 180 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 182 */ boolean icEnable = SysInitGroupQuery.isICEnabled();
|
||||||
|
/* 183 */ if (icEnable) {
|
||||||
|
/* */
|
||||||
|
/* 185 */ rule = new SaleOrderVOATPBeforeRule();
|
||||||
|
/* 186 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 190 */ rule = new LrgCashMarCheckRule();
|
||||||
|
/* 191 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 194 */ rule = new ArsubOffsetBeforeSaveRule();
|
||||||
|
/* 195 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 198 */ rule = new CheckLrgTotalMoney();
|
||||||
|
/* 199 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 202 */ rule = new FeatureSelectSaveRule();
|
||||||
|
/* 203 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 206 */ rule = new UserDefSaveRule(new Class[]{SaleOrderHVO.class, SaleOrderBVO.class});
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 209 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 212 */ rule = new CrossRuleValidateRule();
|
||||||
|
/* 213 */ processer.addBeforeRule(rule);
|
||||||
|
|
||||||
|
rule = new JudgeMaterialPriceInsertRule();
|
||||||
|
processer.addBeforeRule(rule);
|
||||||
|
/* 214 */ }
|
||||||
|
/* */ }
|
|
@ -0,0 +1,229 @@
|
||||||
|
/* */ 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.JudgeMaterialPriceInsertRule;
|
||||||
|
/* */ 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.ClearMffileSRCRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.feature.FeatureSelectSaveRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.feature.RestMffileSRCRule;
|
||||||
|
/* */ 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.CheckNumPriceMnyRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.maintaincheck.CheckSaveBillRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.maintaincheck.CheckSettleOrgRepeat;
|
||||||
|
/* */ import nc.bs.so.m30.rule.maintainprocess.FillupFretexchangeRule;
|
||||||
|
/* */ import nc.bs.so.m30.rule.maintainprocess.FillupRedundanceDataRule;
|
||||||
|
/* */ 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.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.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.pubapp.pattern.log.TimeLog;
|
||||||
|
/* */ import nc.vo.pubapp.util.SetUpdateAuditInfoRule;
|
||||||
|
/* */ import nc.vo.so.m30.entity.SaleOrderVO;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ public class UpdateSaleOrderBP {
|
||||||
|
/* */ public SaleOrderVO[] update(SaleOrderVO[] bills, SaleOrderVO[] originBills) {
|
||||||
|
/* 53 */ CompareAroundProcesser<SaleOrderVO> processer = new CompareAroundProcesser(BP30PlugInPoint.UpdateBP);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 57 */ TimeLog.logStart();
|
||||||
|
/* 58 */ this.addBeforeRule(processer);
|
||||||
|
/* 59 */ processer.before(bills, originBills);
|
||||||
|
/* */
|
||||||
|
/* 61 */ TimeLog.info("???????????BP?????");
|
||||||
|
/* */
|
||||||
|
/* 63 */ TimeLog.logStart();
|
||||||
|
/* 64 */ BillUpdate<SaleOrderVO> bo = new BillUpdate();
|
||||||
|
/* 65 */ SaleOrderVO[] vos = (SaleOrderVO[])bo.update(bills, originBills);
|
||||||
|
/* */
|
||||||
|
/* 67 */ TimeLog.info("????????????????");
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 70 */ TimeLog.logStart();
|
||||||
|
/* 71 */ this.addAfterRule(processer);
|
||||||
|
/* 72 */ processer.after(vos, originBills);
|
||||||
|
/* */
|
||||||
|
/* 74 */ TimeLog.info("???????????BP?????");
|
||||||
|
/* */
|
||||||
|
/* 76 */ return vos;
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* */ private void addAfterRule(CompareAroundProcesser<SaleOrderVO> processer) {
|
||||||
|
/* 80 */ IRule<SaleOrderVO> rule = null;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 83 */ rule = new UpdateSoBalanceWhenUpdateRule();
|
||||||
|
/* 84 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 87 */ rule = new RenovateARByHidsEndRule(M30EngrossAction.M30Edit);
|
||||||
|
/* 88 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 91 */ rule = new ThisGatheringRule();
|
||||||
|
/* 92 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 95 */ rule = new CheckUniqueBillCodeRule();
|
||||||
|
/* 96 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 99 */ ICompareRule<SaleOrderVO> compareRule = new RewriteBillUpdateRule();
|
||||||
|
/* 100 */ processer.addAfterRule(compareRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 103 */ rule = new SaveTransferMsgRule();
|
||||||
|
/* 104 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 107 */ rule = new RewritePriceFormRule();
|
||||||
|
/* 108 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 111 */ rule = new UpdateSoBalanceWhenUpdateM30HeadRule();
|
||||||
|
/* 112 */ processer.addAfterRule(rule);
|
||||||
|
|
||||||
|
rule = new WritebackMaterialPriceRule();
|
||||||
|
processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 114 */ boolean icEnable = SysInitGroupQuery.isICEnabled();
|
||||||
|
/* 115 */ if (icEnable) {
|
||||||
|
/* */
|
||||||
|
/* 117 */ rule = new SaleOrderVOATPAfterRule();
|
||||||
|
/* 118 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 120 */ rule = new ReserveUpdateRule();
|
||||||
|
/* 121 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 123 */ rule = new AutoReserveRule();
|
||||||
|
/* 124 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 128 */ if (SysInitGroupQuery.isPRICEEnabled()) {
|
||||||
|
/* 129 */ compareRule = new RewritePromotePriceUpdateRule();
|
||||||
|
/* 130 */ processer.addAfterRule(compareRule);
|
||||||
|
/* */
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 134 */ compareRule = new RestMffileSRCRule();
|
||||||
|
/* 135 */ processer.addAfterRule(compareRule);
|
||||||
|
/* 136 */ }
|
||||||
|
/* */
|
||||||
|
/* */ private void addBeforeRule(CompareAroundProcesser<SaleOrderVO> processer) {
|
||||||
|
/* 139 */ IRule<SaleOrderVO> rule = null;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 142 */ rule = new VOSagaFrozenValidateRule();
|
||||||
|
/* 143 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 146 */ rule = new CheckCanUpdateWhenAuditing();
|
||||||
|
/* 147 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 151 */ rule = new CheckApproverRule();
|
||||||
|
/* 152 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 157 */ rule = new FillupRedundanceDataRule();
|
||||||
|
/* 158 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 161 */ rule = new FillupFretexchangeRule();
|
||||||
|
/* 162 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 165 */ rule = new SetUpdateAuditInfoRule();
|
||||||
|
/* 166 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 169 */ ICompareRule<SaleOrderVO> compareRule = new UpdateBillCodeRule();
|
||||||
|
/* 170 */ processer.addBeforeRule(compareRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 173 */ rule = new CheckNumPriceMnyRule();
|
||||||
|
/* 174 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 176 */ rule = new CheckSettleOrgRepeat();
|
||||||
|
/* 177 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 179 */ rule = new CheckDateRule();
|
||||||
|
/* 180 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 183 */ rule = new CheckSaveBillRule();
|
||||||
|
/* 184 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 187 */ rule = new RenovateARByHidsBeginRule(M30EngrossAction.M30Edit);
|
||||||
|
/* 188 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 190 */ boolean icEnable = SysInitGroupQuery.isICEnabled();
|
||||||
|
/* 191 */ if (icEnable) {
|
||||||
|
/* */
|
||||||
|
/* 193 */ rule = new SaleOrderVOATPBeforeRule();
|
||||||
|
/* 194 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 198 */ rule = new LrgCashMarCheckRule();
|
||||||
|
/* 199 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 202 */ rule = new ArsubOffsetBeforeSaveRule();
|
||||||
|
/* 203 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 206 */ rule = new CheckLrgTotalMoney();
|
||||||
|
/* 207 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 210 */ rule = new FeatureSelectSaveRule();
|
||||||
|
/* 211 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 214 */ rule = new CrossRuleValidateRule();
|
||||||
|
/* 215 */ processer.addBeforeRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 218 */ compareRule = new ClearMffileSRCRule();
|
||||||
|
/* 219 */ processer.addBeforeRule(compareRule);
|
||||||
|
/* */
|
||||||
|
rule = new JudgeMaterialPriceInsertRule();
|
||||||
|
processer.addBeforeRule(rule);
|
||||||
|
/* 221 */ }
|
||||||
|
/* */ }
|
|
@ -0,0 +1,59 @@
|
||||||
|
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<SaleOrderVO>{
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(SaleOrderVO[] vos) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
List<SaleOrderBVO> list = new ArrayList<SaleOrderBVO>();
|
||||||
|
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(); //无税单价
|
||||||
|
String whereSql = "nvl(bd_material.dr,0) = 0 and bd_material.code = '" + cmaterialvid + "' and bd_material.pk_org = '" + pk_org + "'";
|
||||||
|
// IMDPersistenceQueryService aggvoQueryService = ServiceLocator.find(IMDPersistenceQueryService.class);
|
||||||
|
IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
|
||||||
|
// 条件查询得到物料MaterialSaleVO
|
||||||
|
try {
|
||||||
|
whereSql = "nvl(bd_materialsale.dr,0) = 0 and bd_materialsale.pk_material = '" + cmaterialvid + "' and bd_materialsale.pk_org = '" + pk_org + "'";
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
ArrayList<MaterialSaleVO> materialSaleVOs = (ArrayList<MaterialSaleVO>)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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,212 @@
|
||||||
|
package nc.bs.uapbd.task;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Base64;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import javax.crypto.Mac;
|
||||||
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
import javax.net.ssl.SSLContext;
|
||||||
|
import javax.net.ssl.TrustManager;
|
||||||
|
|
||||||
|
import org.apache.http.client.config.CookieSpecs;
|
||||||
|
import org.apache.http.client.config.RequestConfig;
|
||||||
|
import org.apache.http.client.methods.HttpGet;
|
||||||
|
import org.apache.http.client.methods.HttpPost;
|
||||||
|
import org.apache.http.entity.StringEntity;
|
||||||
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
|
import org.apache.http.impl.client.HttpClients;
|
||||||
|
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
|
||||||
|
import org.apache.http.util.EntityUtils;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.yonyou.cloud.utils.StringUtils;
|
||||||
|
|
||||||
|
import nc.bs.dao.BaseDAO;
|
||||||
|
import nc.bs.pub.pa.PreAlertObject;
|
||||||
|
import nc.bs.pub.taskcenter.BgWorkingContext;
|
||||||
|
import nc.bs.pub.taskcenter.IBackgroundWorkPlugin;
|
||||||
|
import nc.bs.trade.business.HYSuperDMO;
|
||||||
|
import nc.bs.uapbd.util.IgnoreSslUtil;
|
||||||
|
import nc.jdbc.framework.processor.MapListProcessor;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.sscivm.ivsale.IVApplicationHeadVO;
|
||||||
|
import nc.vo.sscivm.ivsale.IVApplogVO;
|
||||||
|
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
|
|
||||||
|
public class InvoiceTaskPlugin implements IBackgroundWorkPlugin{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
try {
|
||||||
|
BaseDAO dao = new BaseDAO();
|
||||||
|
String sql = " SELECT sscivm_invoice.pk_invoice,so_saleinvoice.csaleinvoiceid,so_saleinvoice.vbillcode billcode, sscivm_invoice.fphm, " +
|
||||||
|
"sscivm_invoice.Gmfmc, sscivm_invoice.Jshj, sscivm_invoice.viewurl, sscivm_invoice.billno " +
|
||||||
|
" FROM sscivm_invoice " +
|
||||||
|
" left join sscivm_invoice_relation on sscivm_invoice_relation.PK_INVOICE = sscivm_invoice.pk_invoice " +
|
||||||
|
" left join so_saleinvoice on so_saleinvoice.csaleinvoiceid = sscivm_invoice_relation.billid " +
|
||||||
|
" left join sscivm_ivapplog on sscivm_ivapplog.fphm = sscivm_invoice.fphm " +
|
||||||
|
" where " +
|
||||||
|
" sscivm_invoice_relation.billtype = '32' " +
|
||||||
|
" and so_saleinvoice.vdef20 <> 'Y' " +
|
||||||
|
" and sscivm_invoice.dr = 0 " +
|
||||||
|
" and sscivm_ivapplog.kpzt = 2 ";
|
||||||
|
// + " so_saleinvoice.vbillcode = 'SI2024070400000738' ";
|
||||||
|
ArrayList<HashMap<String, Object>> al = (ArrayList<HashMap<String, Object>>)dao.executeQuery(sql, new MapListProcessor());
|
||||||
|
if(al.size() > 0) {
|
||||||
|
for(HashMap<String, Object> sscivm_invoice : al) {
|
||||||
|
Object pk_invoice = sscivm_invoice.get("pk_invoice"); //bip发票主键
|
||||||
|
Object csaleinvoiceid = sscivm_invoice.get("csaleinvoiceid"); //销售发票id
|
||||||
|
Object billcode = sscivm_invoice.get("billcode"); //销售发票编码
|
||||||
|
Object billno = sscivm_invoice.get("billno"); //bip单据编码编码
|
||||||
|
Object fphm = sscivm_invoice.get("fphm");
|
||||||
|
Object Gmfmc = sscivm_invoice.get("Gmfmc");
|
||||||
|
Object Jshj = sscivm_invoice.get("Jshj");
|
||||||
|
Object viewurl = sscivm_invoice.get("viewurl");
|
||||||
|
String ctcode="";
|
||||||
|
HYSuperDMO dmo = new HYSuperDMO();
|
||||||
|
IVApplogVO[] ivApplogVO=(IVApplogVO[]) dmo.queryByWhereClause(IVApplogVO.class, "fphm='"+fphm+"' and dr=0 ");
|
||||||
|
if(ivApplogVO!=null&&ivApplogVO.length>0) {
|
||||||
|
ivApplogVO[0].getLyid();//开票申请单主键
|
||||||
|
IVApplicationHeadVO ivApplicationHeadVO =(IVApplicationHeadVO) dmo.queryByPrimaryKey(IVApplicationHeadVO.class, ivApplogVO[0].getLyid());
|
||||||
|
ctcode=ivApplicationHeadVO.getDef2();//合同号
|
||||||
|
}
|
||||||
|
Object url = ctcode+"_"+Gmfmc+"_"+fphm+"_"+Jshj + ".pdf";
|
||||||
|
/**
|
||||||
|
* 回写逻辑:
|
||||||
|
* 1.修改发票关联关系单据编码
|
||||||
|
* 2.ERP销售发票回传,根据销售发票id,回写发票号和单据编号
|
||||||
|
* 3.根据销售发票id 回写下游应收单表头表体发票号
|
||||||
|
* 4.查询销售发票下游单据,如果有将下游单据表体字段【来源单据号】更新成新的发票号
|
||||||
|
*/
|
||||||
|
String updateRecbillAndItemSql = "BEGIN\n" +
|
||||||
|
"UPDATE sscivm_invoice_relation set billno = '" + billno +"' where pk_invoice = '"+ pk_invoice +"' and billid = '"+ csaleinvoiceid +"';\n" +
|
||||||
|
"UPDATE so_saleinvoice set vdef20 = 'Y' , vdef13 = '" + fphm + "', vbillcode = '" + billno +" where csaleinvoiceid = '" + csaleinvoiceid + "';\n" +
|
||||||
|
"MERGE INTO ar_recbill a USING ar_recitem b ON ( a.pk_recbill = b.pk_recbill AND b.top_billid = '" + csaleinvoiceid + "' AND b.top_billtype = '32' ) \n" +
|
||||||
|
"WHEN MATCHED THEN\n" +
|
||||||
|
"UPDATE \n" +
|
||||||
|
"SET a.invoiceno = '" + fphm + "';\n" +
|
||||||
|
"UPDATE ar_recitem \n" +
|
||||||
|
"SET invoiceno = '" + fphm + "' \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"top_billid = '" + csaleinvoiceid + "' \n" +
|
||||||
|
"AND top_billtype = '32';\n" +
|
||||||
|
"UPDATE ic_saleout_b \n" +
|
||||||
|
"SET vsourcebillcode = '"+ billno +"' \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"csourcetype = '32' \n" +
|
||||||
|
"AND csourcebillhid = '" + csaleinvoiceid +"';\n" +
|
||||||
|
"COMMIT;\n" +
|
||||||
|
"EXCEPTION \n" +
|
||||||
|
"WHEN OTHERS THEN\n" +
|
||||||
|
"ROLLBACK;\n" +
|
||||||
|
"RAISE;\n" +
|
||||||
|
"END;";
|
||||||
|
dao.executeUpdate(updateRecbillAndItemSql);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String doPost(String requestUrl, JSONObject json) throws IOException {
|
||||||
|
URL u = new URL(requestUrl);
|
||||||
|
try {
|
||||||
|
if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil
|
||||||
|
IgnoreSslUtil.ignoreSsl();
|
||||||
|
}
|
||||||
|
HttpsURLConnection connection = (HttpsURLConnection)u.openConnection();
|
||||||
|
// 设置请求方法
|
||||||
|
connection.setRequestMethod("POST");
|
||||||
|
// 设置请求属性
|
||||||
|
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
||||||
|
// 发送POST请求必须设置如下两行
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
connection.setDoInput(true);
|
||||||
|
byte[] outputInBytes = json.toJSONString().getBytes(StandardCharsets.UTF_8);
|
||||||
|
// 写入数据到请求体
|
||||||
|
OutputStream os = connection.getOutputStream();
|
||||||
|
os.write(outputInBytes);
|
||||||
|
// 获取响应码
|
||||||
|
int responseCode = connection.getResponseCode();
|
||||||
|
System.out.println("Response Code: " + responseCode);
|
||||||
|
// 读取响应
|
||||||
|
try(BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
|
||||||
|
String response = br.readLine();
|
||||||
|
System.out.println("Response: " + response);
|
||||||
|
}
|
||||||
|
// 关闭连接
|
||||||
|
connection.disconnect();
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String doGet(String requestUrl, Map<String, String> paramMap) throws IOException {
|
||||||
|
|
||||||
|
StringBuilder param = new StringBuilder("?");
|
||||||
|
if (paramMap != null) {
|
||||||
|
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
|
||||||
|
param.append(entry.getKey());
|
||||||
|
param.append("=");
|
||||||
|
param.append(entry.getValue());
|
||||||
|
param.append("&");
|
||||||
|
}
|
||||||
|
param.deleteCharAt(param.length() - 1);
|
||||||
|
}
|
||||||
|
String url = requestUrl + param;
|
||||||
|
URL u = new URL(url);
|
||||||
|
try {
|
||||||
|
if("https".equalsIgnoreCase(u.getProtocol())){//判定网址是否信任,不信任则调用忽略信任工具类SslUtil
|
||||||
|
IgnoreSslUtil.ignoreSsl();
|
||||||
|
}
|
||||||
|
HttpsURLConnection connection = (HttpsURLConnection)u.openConnection();
|
||||||
|
connection.setRequestMethod("GET");
|
||||||
|
connection.setConnectTimeout(5000);
|
||||||
|
connection.setReadTimeout(5000);
|
||||||
|
connection.connect();
|
||||||
|
StringBuilder response =new StringBuilder();
|
||||||
|
int responsecode = connection.getResponseCode();
|
||||||
|
if(responsecode == HttpsURLConnection.HTTP_OK) {
|
||||||
|
InputStream inputstream =connection.getInputStream();
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream));
|
||||||
|
String line;
|
||||||
|
|
||||||
|
while((line =reader.readLine()) != null) {
|
||||||
|
response.append(line);
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
}
|
||||||
|
connection.disconnect();
|
||||||
|
return response.toString();
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue