Browse Source

fix

release_toaliyun_real
winter 1 year ago
parent
commit
a5258aba5a
4 changed files with 47 additions and 13 deletions
  1. +5
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
  2. +18
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java
  3. +2
    -1
      mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java
  4. +22
    -8
      mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java

+ 5
- 4
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java View File

@@ -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();
}


+ 18
- 0
mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java View File

@@ -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;
}

+ 2
- 1
mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java View File

@@ -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";
}


+ 22
- 8
mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java View File

@@ -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);


Loading…
Cancel
Save