diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index 520d68148..316de7c8d 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -878,13 +878,14 @@ public class WxRentContractController extends WxContractBaseController { if(StringUtils.isBlank(payAccountBill.getBankCardId())) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "甲方银行账户卡号未填写"); } - if (payAccountBill.getServiceChargeRate() == null) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "手续费费率未填写"); - } + //服务费暂时不支持配置。账单,财务收款等部分暂时不支持 +// if (payAccountBill.getServiceChargeRate() == null) { +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "手续费费率未填写"); +// } WxPayAccountBill payAccountBillNew = payAccountBillService.getByTenantInfo(getTenantInfo()); payAccountBillNew.setBankAccountName(payAccountBill.getBankAccountName()); payAccountBillNew.setBankCardId(payAccountBill.getBankCardId()); - payAccountBillNew.setServiceChargeRate(payAccountBill.getServiceChargeRate()); + //payAccountBillNew.setServiceChargeRate(payAccountBill.getServiceChargeRate()); payAccountBillService.saveOrUpdate(payAccountBillNew); return new ResultData(); } diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java b/mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java new file mode 100644 index 000000000..93776e590 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java @@ -0,0 +1,18 @@ +package com.iformall.domain.dto; + +import java.math.BigDecimal; +import java.util.List; + +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.po.base.WxBillBaseEntity; + +import lombok.Data; + +/** + */ +@Data +public class FinanceReceiveCalcuteDTO extends TenantEntity{ + private static final long serialVersionUID = 5653697108361199126L; + private BigDecimal totalRemainReceive; + private BigDecimal totalSetoff; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java index 972fcdb35..d4f93bd45 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java @@ -108,7 +108,8 @@ public class WxBillBaseEntity extends TenantEntity { returnPay = "0"; } if (StringUtils.isNotBlank(receivePay) && StringUtils.isNotBlank(pay)) { - return new BigDecimal(receivePay).subtract(new BigDecimal(pay)).subtract(new BigDecimal(returnPay)).subtract(new BigDecimal(setOff)).toPlainString(); + String o = new BigDecimal(receivePay).subtract(new BigDecimal(pay)).subtract(new BigDecimal(returnPay)).subtract(new BigDecimal(setOff)).toPlainString(); + return o; } return "0"; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java index 74d230b20..fb099ad12 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -8,6 +8,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.domain.dto.FinanceReceiveCalcuteDTO; import com.iformall.domain.dto.FinanceSetOffCalcuteDTO; import com.iformall.domain.dto.FinanceSetOffDTO; import com.iformall.domain.dto.WxBillPayDTO; @@ -521,11 +522,15 @@ public class WxFinanceServiceImpl implements WxFinanceService { WxMerchant merchant = new WxMerchant(); merchant.updateTenantInfo(record); boolean isAllEmpity = true; + + FinanceReceiveCalcuteDTO calcuteDto = new FinanceReceiveCalcuteDTO(); + calcuteDto.setTotalRemainReceive(receiveTotal); + calcuteDto.setTotalSetoff(setOffTotal); //建立子账单关联单 for (int i = 0 ; i < record.getBills().size(); i++) { WxBillBaseEntity be = record.getBills().get(i); //每个账单要创建一个收款关联单,如果有冲抵,要额外创建 - boolean noNeedCreate = createBillReceive(receiveTotal,setOffTotal,user,addreceive,be,merchant,payWay0); + boolean noNeedCreate = createBillReceive(calcuteDto,user,addreceive,be,merchant,payWay0); if (!noNeedCreate) { isAllEmpity = false; } @@ -541,24 +546,32 @@ public class WxFinanceServiceImpl implements WxFinanceService { return bills; } - public boolean createBillReceive(BigDecimal receiveTotal,BigDecimal setOffTotal,MallUserInfo user,WxFinanceReceive addreceive,WxBillBaseEntity be,WxMerchant merchant,WxBillPayWay payWay0) { + public boolean createBillReceive(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxBillBaseEntity be,WxMerchant merchant,WxBillPayWay payWay0) { //如果既没有收款,也没有冲抵,则不更新 boolean noNeedCreate = true; //计算账单收款费用,更新账单收款 BigDecimal b0 = new BigDecimal(0); WxBillBaseEntity bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId()); - if (receiveTotal.compareTo(b0) > 0) { + if (calcuteDto.getTotalRemainReceive().compareTo(b0) > 0) { noNeedCreate = false; //有收款,就要更新账单的收款 //更新账单收款信息 String money = ""; + if (StringUtils.isNotBlank(be.getCurrentSetOff())) { + if (StringUtils.isNotBlank(bill.getSetOff())) { + bill.setSetOff(new BigDecimal(bill.getSetOff()).add(new BigDecimal(be.getCurrentSetOff())).toPlainString() ); + }else { + bill.setSetOff(be.getCurrentSetOff()); + } + } + BigDecimal oweDecimal = new BigDecimal(bill.getOwe()); - if (oweDecimal.compareTo(receiveTotal) < 0 ) { + if (oweDecimal.compareTo(calcuteDto.getTotalRemainReceive()) < 0 ) { money = bill.getOwe(); - receiveTotal = receiveTotal.subtract(oweDecimal); + calcuteDto.setTotalRemainReceive(calcuteDto.getTotalRemainReceive().subtract(oweDecimal)); }else { - money = receiveTotal.toPlainString(); - receiveTotal = b0; + money = calcuteDto.getTotalRemainReceive().toPlainString(); + calcuteDto.setTotalRemainReceive(new BigDecimal(0)); } WxBillPayDTO payDto = new WxBillPayDTO(); payDto.updateTenantInfo(addreceive); @@ -575,6 +588,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { bill.setCurrentReceive(money); //并且有抵扣 if(StringUtils.isNotBlank(be.getCurrentSetOff())) { + calcuteDto.setTotalSetoff(calcuteDto.getTotalSetoff().add(new BigDecimal(be.getCurrentSetOff()))); payDto.setSetOff(be.getCurrentSetOff()); //创建一个冲抵收款单 createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),Constant.bill_pay_way_setoff); @@ -585,7 +599,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { }else if (StringUtils.isNotBlank(be.getCurrentSetOff())) { noNeedCreate = false; - setOffTotal = setOffTotal.add(new BigDecimal(be.getCurrentSetOff())); + calcuteDto.setTotalSetoff(calcuteDto.getTotalSetoff().add(new BigDecimal(be.getCurrentSetOff()))); //没收款,有冲抵,就要更新账单的冲抵,然后把对应的预充值使用金额更新,并进行关联 //创建一个冲抵收款单 createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),Constant.bill_pay_way_setoff);