收款单保存校验关联的销售订单实际收款金额是否超过价税合计-2005适配2312-liujie
This commit is contained in:
		
							parent
							
								
									c41f24380d
								
							
						
					
					
						commit
						71cfeb62ea
					
				|  | @ -0,0 +1,109 @@ | |||
| // | ||||
| // Source code recreated from a .class file by IntelliJ IDEA | ||||
| // (powered by FernFlower decompiler) | ||||
| // | ||||
| 
 | ||||
| package nc.bs.arap.actions; | ||||
| 
 | ||||
| import nc.bs.arap.bill.ArapBillPubUtil; | ||||
| import nc.bs.arap.util.ArapBillVOUtils; | ||||
| import nc.bs.arap.util.BillAccountCalendarUtils; | ||||
| import nc.bs.arap.util.BillDateUtils; | ||||
| import nc.bs.arap.validator.CrossRuleCheckValidator; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseBillVO; | ||||
| import nc.vo.arap.utils.StringUtil; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pub.lang.UFDouble; | ||||
| 
 | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction { | ||||
|     public GatheringbillEditSaveBatchBSAction() { | ||||
|         this.validatorCode.add(5); | ||||
|         this.validatorCode.add(34); | ||||
|         this.validatorCode.add(57); | ||||
|         this.validatorCode.add(59); | ||||
|         this.validatorCode.add(62); | ||||
|         this.validatorCode.add(93); | ||||
|         this.validatorCode.add(94); | ||||
|         this.validatorCode.add(100); | ||||
|     } | ||||
| 
 | ||||
|     protected void doBeforeUpdate(AggregatedValueObject[] bills, AggregatedValueObject[] orginBills) throws BusinessException { | ||||
|         ArapBillPubUtil.fillTradeTypeInfo(bills); | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             ArapBillPubUtil.processMoneyOnlySum(bill); | ||||
|         } | ||||
| 
 | ||||
|         /** | ||||
|          * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计 | ||||
|          */ | ||||
|         int i = 0; | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             AggregatedValueObject oriBill = orginBills[i++]; | ||||
|             BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单 | ||||
|             BaseBillVO billOriVO = (BaseBillVO) oriBill.getParentVO(); //之前的收款单 | ||||
|             UFDouble money = billVO.getMoney(); //修改后的金额 | ||||
|             UFDouble oriMoney = billOriVO.getMoney(); //修改前的金额 | ||||
|             String pk_tradetype = billVO.getPk_tradetype(); | ||||
|             if(!"F2-Cxx-02".equals(pk_tradetype)){ | ||||
|                 continue; | ||||
|             } | ||||
|             String def3 = billVO.getDef3(); //收款单对应的销售订单id | ||||
|             if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){ | ||||
|                 //无绑定的销售订单则下一次循环 | ||||
|                 continue; | ||||
|             } | ||||
|             //计算收款单金额差值 | ||||
|             UFDouble changeMoney = money.sub(oriMoney); | ||||
|             //根据销售订单id去查询销售订单 | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'"; | ||||
|             Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor()); | ||||
|             //销售订单价税合计 | ||||
|             UFDouble ntotalorigmny = UFDouble.ZERO_DBL; | ||||
|             //销售订单实际收款金额 | ||||
|             UFDouble nreceivedmny = UFDouble.ZERO_DBL; | ||||
|             if(saleMap != null) { | ||||
|                 nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString()); | ||||
|                 ntotalorigmny = new UFDouble(saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); | ||||
|             } | ||||
|             UFDouble moreMoney = nreceivedmny.add(changeMoney).sub(ntotalorigmny); | ||||
|             if(nreceivedmny.add(changeMoney).compareTo(ntotalorigmny) > 0){ | ||||
|                 throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】"); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         ArapBillVOUtils.prepareDefaultInfo(bills, true); | ||||
|         BillDateUtils.setBillDateByNow(bills); | ||||
|         int updateType = this.getUpdateType(bills, orginBills); | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             bill.getParentVO().setStatus(1); | ||||
|         } | ||||
| 
 | ||||
|         if (updateType == TEMP_2_SAVE || updateType == SAVE_2_SAVE) { | ||||
|             for(AggregatedValueObject bill : bills) { | ||||
|                 for(CircularlyAccessibleValueObject item : bill.getChildrenVO()) { | ||||
|                     if (item.getStatus() != 2 && item.getStatus() != 3) { | ||||
|                         item.setStatus(1); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (updateType == TEMP_2_SAVE || updateType == SAVE_2_SAVE) { | ||||
|             BillAccountCalendarUtils.setAccperiodYearMonth(bills); | ||||
|         } | ||||
| 
 | ||||
|         this.checkIsCorrdBillMoneyControl(bills, orginBills); | ||||
|         this.checkOtherSystemBill(bills, orginBills); | ||||
|         (new CrossRuleCheckValidator()).validate(bills); | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,96 @@ | |||
| // | ||||
| // Source code recreated from a .class file by IntelliJ IDEA | ||||
| // (powered by FernFlower decompiler) | ||||
| // | ||||
| 
 | ||||
| package nc.bs.arap.actions; | ||||
| 
 | ||||
| import nc.bs.arap.bill.ArapBillPubUtil; | ||||
| import nc.bs.arap.util.ArapBillVOUtils; | ||||
| import nc.bs.arap.util.BillAccountCalendarUtils; | ||||
| import nc.bs.arap.util.BillDateUtils; | ||||
| import nc.bs.arap.util.BillMoneyVUtils; | ||||
| import nc.bs.arap.validator.CrossRuleCheckValidator; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.arap.basebill.BaseBillVO; | ||||
| import nc.vo.arap.utils.StringUtil; | ||||
| import nc.vo.pub.AggregatedValueObject; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.lang.UFDouble; | ||||
| 
 | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { | ||||
|     public GatheringbillSaveBatchBSAction() { | ||||
|         this.validatorCode.add(5); | ||||
|         this.validatorCode.add(15); | ||||
|         this.validatorCode.add(29); | ||||
|         this.validatorCode.add(19); | ||||
|         this.validatorCode.add(8); | ||||
|         this.validatorCode.add(24); | ||||
|         this.validatorCode.add(28); | ||||
|         this.validatorCode.add(44); | ||||
|         this.validatorCode.add(46); | ||||
|         this.validatorCode.add(31); | ||||
|         this.validatorCode.add(36); | ||||
|         this.validatorCode.add(23); | ||||
|         this.validatorCode.add(49); | ||||
|         this.validatorCode.add(57); | ||||
|         this.validatorCode.add(59); | ||||
|         this.validatorCode.add(62); | ||||
|         this.validatorCode.add(93); | ||||
|         this.validatorCode.add(94); | ||||
|         this.validatorCode.add(100); | ||||
|     } | ||||
| 
 | ||||
|     protected void doBeforeInsert(AggregatedValueObject[] bills) throws BusinessException { | ||||
|         ArapBillPubUtil.fillTradeTypeInfo(bills); | ||||
|         BillDateUtils.setBillDateByNow(bills); | ||||
|         ArapBillPubUtil.resetBasedocVid(bills); | ||||
|         BillAccountCalendarUtils.setAccperiodYearMonth(bills); | ||||
|         ArapBillVOUtils.prepareDefaultInfo(bills); | ||||
|         BillMoneyVUtils.sumAllVoBodyToHead(bills); | ||||
|         (new CrossRuleCheckValidator()).validate(bills); | ||||
|         ArapBillPubUtil.resetDestVODoc(bills); | ||||
|         ArapBillVOUtils.setMaterialInfo(bills); | ||||
|         ArapBillVOUtils.setDefaultSagaFrozen(bills); | ||||
|         ArapBillVOUtils.setDefaultFeeundertaker(bills); | ||||
|         ArapBillVOUtils.setDefaultSettleFlag(bills); | ||||
| 
 | ||||
|         /** | ||||
|          * 收款单保存校验关联的销售订单实际收款金额是否超过价税合计 | ||||
|          */ | ||||
| 
 | ||||
|         for(AggregatedValueObject bill : bills) { | ||||
|             BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单 | ||||
|             UFDouble money = billVO.getMoney(); //金额 | ||||
|             String pk_tradetype = billVO.getPk_tradetype(); | ||||
|             if(!"F2-Cxx-02".equals(pk_tradetype)){ | ||||
|                 continue; | ||||
|             } | ||||
|             String def3 = billVO.getDef3(); //收款单对应的销售订单id | ||||
|             if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){ | ||||
|                 //无绑定的销售订单则下一次循环 | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             //根据销售订单id去查询销售订单 | ||||
|             BaseDAO dao = new BaseDAO(); | ||||
|             String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'"; | ||||
|             Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor()); | ||||
|             //销售订单价税合计 | ||||
|             UFDouble ntotalorigmny = UFDouble.ZERO_DBL; | ||||
|             //销售订单实际收款金额 | ||||
|             UFDouble nreceivedmny = UFDouble.ZERO_DBL; | ||||
|             if(saleMap != null) { | ||||
|                 nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString()); | ||||
|                 ntotalorigmny = new UFDouble(saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); | ||||
|             } | ||||
|             UFDouble moreMoney = nreceivedmny.add(money).sub(ntotalorigmny); | ||||
|             if(nreceivedmny.add(money).compareTo(ntotalorigmny) > 0){ | ||||
|                 throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】"); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue