diff --git a/arap/src/private/nc/bs/arap/actions/GatheringbillEditSaveBatchBSAction.java b/arap/src/private/nc/bs/arap/actions/GatheringbillEditSaveBatchBSAction.java new file mode 100644 index 0000000..a49745c --- /dev/null +++ b/arap/src/private/nc/bs/arap/actions/GatheringbillEditSaveBatchBSAction.java @@ -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); + } +} diff --git a/arap/src/private/nc/bs/arap/actions/GatheringbillSaveBatchBSAction.java b/arap/src/private/nc/bs/arap/actions/GatheringbillSaveBatchBSAction.java new file mode 100644 index 0000000..00be7a2 --- /dev/null +++ b/arap/src/private/nc/bs/arap/actions/GatheringbillSaveBatchBSAction.java @@ -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 +"元,无法传输!请检查订单累计收款金额!】"); + } + } + } +}