收款单保存校验关联的销售订单实际收款金额是否超过价税合计-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