| @@ -521,7 +521,8 @@ public class WxAllBillController extends BillBaseController { | |||
| if (null == payWay) { | |||
| return new ResultData(Result.ERROR,"支付方式未查询到"); | |||
| } | |||
| dto.setPayWayObject(payWay); | |||
| dto.setPayWay(payWay.getId()); | |||
| dto.setPayWayName(payWay.getName()); | |||
| billAllHelper.updatePay(dto, getUser()); | |||
| return new ResultData(); | |||
| //return wxBillAllService.updateReceivePay(wxBillAll, getUser(),false); | |||
| @@ -39,7 +39,6 @@ public class WxUserDataRuleController extends BaseController { | |||
| @ApiOperation("编辑") | |||
| @PostMapping("/modify") | |||
| @SystemControllerLog(description = "用户数据权限-新增") | |||
| public ResultData modify(@RequestBody WxUserDataRule wxUserDataRule) { | |||
| logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::modify"); | |||
| MallUserInfo currentUser = getUser(); | |||
| @@ -55,7 +54,6 @@ public class WxUserDataRuleController extends BaseController { | |||
| @ApiOperation("根据用户ID查看") | |||
| @GetMapping("/findByUserId") | |||
| @ApiImplicitParam(name = "userId", value = "userId", dataType = "Long", paramType = "query", required = true) | |||
| @SystemControllerLog(description = "用户数据权限-根据用户ID查看") | |||
| public ResultData findByUserId(Long userId) { | |||
| logger.debug("[" + getIpAddr() + "] wxDataRuleTarget::modify"); | |||
| WxUserDataRule wxUserDataRule = wxUserDataRuleService.findByUserId(userId); | |||
| @@ -17,8 +17,8 @@ public class WxBillPayDTO extends TenantEntity{ | |||
| private String addpay;//支付金额 | |||
| private String payToMerchant;//支付给商户金额 | |||
| private String setOff="0";//冲抵金额 | |||
| private WxBillPayWay payWayObject;//支付方式 | |||
| private Long payWay;//传值 | |||
| private String payWayName;//传值 | |||
| private String remark; | |||
| private String image; | |||
| } | |||
| @@ -46,18 +46,18 @@ public enum EnumBillAction { | |||
| return message; | |||
| } | |||
| public String getDescription(String oldMoney,String newMoney,String setoffMoney,WxBillPayWay payWay,EnumBillStatus oldStatus,EnumBillStatus newStatus) { | |||
| public String getDescription(String oldMoney,String newMoney,String setoffMoney,String payWay,EnumBillStatus oldStatus,EnumBillStatus newStatus) { | |||
| StringBuffer sb = new StringBuffer("[").append(this.message).append("]"); | |||
| if (code.intValue() == SELF_SERVICE_PAY.code.intValue()) { | |||
| if (null != payWay) { | |||
| sb.append(payWay.getName()).append("支付"); | |||
| sb.append(payWay).append("支付"); | |||
| } | |||
| sb.append(newMoney).append("元"); | |||
| }else if (code.intValue() == UPDATE_BILL.code.intValue()) { | |||
| sb.append("应付金额").append(oldMoney).append("元变更成").append(newMoney).append("元"); | |||
| }else if (code.intValue() == OFFLINE_PAY.code.intValue()) { | |||
| if (null != payWay) { | |||
| sb.append(payWay.getName()).append("支付"); | |||
| sb.append(payWay).append("支付"); | |||
| } | |||
| sb.append(newMoney).append("元"); | |||
| if (StringUtils.isNotBlank(setoffMoney) && new BigDecimal(setoffMoney).compareTo(new BigDecimal(0)) > 0 ) { | |||
| @@ -236,7 +236,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| wxBillRent.setLastOweCallUser(user.getName()+"(账号:"+user.getUsername()+")"); | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| this.addBillAction(EnumBillAction.NOTIFY, dto.getBillTypeValue(),dto.getId(), | |||
| null, null,null,null,null,dto.getRemark(),null,null, user); | |||
| null, null,null,null,null,null,dto.getRemark(),null,null, user); | |||
| } | |||
| @Override | |||
| @@ -253,23 +253,25 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| String remark = StringUtils.trimToEmpty(dto.getRemark())+ ";【系统】账单被强制为支付完成,自动归结为结清。"; | |||
| this.addBillAction(EnumBillAction.UPDATE_BILL, dto.getBillTypeValue(),dto.getId(), dbBill.getPay(), dbBill.getPay(),null,null,null,remark,null,null, user); | |||
| this.addBillAction(EnumBillAction.UPDATE_BILL, dto.getBillTypeValue(),dto.getId(), dbBill.getPay(), dbBill.getPay(),null,null,null,null,remark,null,null, user); | |||
| }else { | |||
| if (StringUtils.isNotBlank(dto.getOldLatePrice()) && StringUtils.isNotBlank(dto.getNewLatePrice())) { | |||
| wxBillRent.setBillLatePay(dto.getNewLatePrice()); | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| this.addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, dto.getBillTypeValue(), dto.getId(), | |||
| dto.getOldLatePrice(), dto.getNewLatePrice(),null,null,null,dto.getRemark(),null,null, user); | |||
| dto.getOldLatePrice(), dto.getNewLatePrice(),null,null,null,null,dto.getRemark(),null,null, user); | |||
| }else if (StringUtils.isNotBlank(dto.getServiceChargePayBefore()) && StringUtils.isNotBlank(dto.getServiceChargePayUpdate())) { | |||
| wxBillRent.setServiceChargePay(dto.getServiceChargePayUpdate()); | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| this.addBillAction(EnumBillAction.UPDATE_SERVICE_MONEY, dto.getBillTypeValue(), dto.getId(), | |||
| dto.getServiceChargePayBefore(), dto.getServiceChargePayUpdate(),null,null,null,dto.getRemark(),null,null, user); | |||
| dto.getServiceChargePayBefore(), dto.getServiceChargePayUpdate(),null,null,null,null,dto.getRemark(),null,null, user); | |||
| }else { | |||
| //租赁账单更新 | |||
| wxBillRent.setReceivePay(dto.getNewPrice()); | |||
| Date payDate = null; | |||
| WxBillPayWay payWay = null; | |||
| Long paywayId = null; | |||
| String paywayname = null; | |||
| String remark = StringUtils.trimToEmpty(dto.getRemark()); | |||
| if (new BigDecimal(dto.getNewPrice()).compareTo(new BigDecimal(dbBill.getPay())) <= 0) { | |||
| wxBillRent.setStatus(EnumBillStatus.PAID.getCode()); | |||
| @@ -279,8 +281,12 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| } | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| //账单日志 | |||
| if (null != payWay) { | |||
| paywayId = payWay.getId(); | |||
| paywayname = payWay.getName(); | |||
| } | |||
| this.addBillAction(EnumBillAction.UPDATE_BILL, dto.getBillTypeValue(),dto.getId(), | |||
| dto.getOldPrice(), dto.getNewPrice(),null,payDate,payWay,remark,null,null, user); | |||
| dto.getOldPrice(), dto.getNewPrice(),null,payDate,paywayId,paywayname,remark,null,null, user); | |||
| } | |||
| } | |||
| } | |||
| @@ -289,8 +295,9 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| public void updatePay(WxBillPayDTO dto, MallUserInfo user) { | |||
| WxAllBill wxBillRent = updateBillPay(dto); | |||
| EnumBillAction action = EnumBillAction.OFFLINE_PAY; | |||
| this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), | |||
| dto.getAddpay(), dto.getAddpay(),dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); | |||
| this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), dto.getAddpay(), dto.getAddpay(), | |||
| dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), | |||
| dto.getRemark(),null,null, user); | |||
| } | |||
| private WxAllBill updateBillPay(WxBillPayDTO dto) { | |||
| @@ -369,7 +376,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| } | |||
| wxBillRent.setSetOff(new BigDecimal(oldSetOff).add(remainSetoff).toPlainString()); | |||
| wxBillRent.setPayDate(new Date()); | |||
| wxBillRent.setPayWay(dto.getPayWayObject().getId()); | |||
| wxBillRent.setPayWay(dto.getPayWay()); | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| dto.setRemark(sb.toString()); | |||
| return wxBillRent; | |||
| @@ -385,7 +392,8 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| action = EnumBillAction.OFFLINE_PAY; | |||
| } | |||
| this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), | |||
| dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); | |||
| dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), | |||
| dto.getRemark(),null,null, user); | |||
| } | |||
| @Override | |||
| @@ -425,7 +433,8 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| this.addBillAction(EnumBillAction.RETURN, dto.getBillTypeValue(),dto.getId(), | |||
| dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); | |||
| dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), | |||
| dto.getRemark(),null,null, user); | |||
| } | |||
| @Override | |||
| @@ -441,7 +450,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| String badMoney = dbBill.getOwe(); | |||
| this.addBillAction(EnumBillAction.BAD, dto.getBillTypeValue(),dto.getId(), | |||
| badMoney, badMoney,null,null,null,dto.getRemark(),null,null, user); | |||
| badMoney, badMoney,null,null,null,null,dto.getRemark(),null,null, user); | |||
| } | |||
| @Override | |||
| @@ -518,7 +527,8 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| EnumBillAction action = EnumBillAction.RETURN; | |||
| this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), | |||
| dto.getAddpay(), dto.getAddpay(),dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user); | |||
| dto.getAddpay(), dto.getAddpay(),dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), | |||
| dto.getRemark(),null,null, user); | |||
| } | |||
| @Override | |||
| @@ -536,7 +546,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||
| wxAllBillMapper.updateById(wxBillRent); | |||
| EnumBillAction action = EnumBillAction.RETURN; | |||
| this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), | |||
| oldreturnPay.toPlainString(), dto.getPayToMerchant(),null,null,null,dto.getRemark(),null,null, user); | |||
| oldreturnPay.toPlainString(), dto.getPayToMerchant(),null,null,null,null,dto.getRemark(),null,null, user); | |||
| } | |||
| @Override | |||
| @@ -24,35 +24,31 @@ public class WxBillBaseService{ | |||
| @Autowired | |||
| private WxBillActionService wxBillActionService; | |||
| protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,WxBillPayWay payWay,String remark, EnumBillStatus oldStatus,EnumBillStatus newStatus,MallUserInfo mallUserInfo) { | |||
| protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,Long payWayId,String payWayName,String remark, EnumBillStatus oldStatus,EnumBillStatus newStatus,MallUserInfo mallUserInfo) { | |||
| WxBillAction wxBillAction = new WxBillAction(); | |||
| wxBillAction.setBillId(billId); | |||
| wxBillAction.setBillType(billType); | |||
| wxBillAction.setOldMoney(oldMoney); | |||
| wxBillAction.setNewMoney(newMoney); | |||
| wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWay,oldStatus,newStatus)); | |||
| wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWayName,oldStatus,newStatus)); | |||
| wxBillAction.setAction(billAction.getCode()); | |||
| wxBillAction.setPayDate(payDate); | |||
| if (null != payWay) { | |||
| wxBillAction.setPayWay(payWay.getId()); | |||
| } | |||
| wxBillAction.setPayWay(payWayId); | |||
| wxBillAction.setRemark(remark); | |||
| wxBillAction.setUserType(EnumSystemUserType.ADMIN.getCode()); | |||
| wxBillActionService.modifyBill(wxBillAction, mallUserInfo); | |||
| } | |||
| protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,WxBillPayWay payWay,String remark,EnumBillStatus oldStatus,EnumBillStatus newStatus, WxMerchantBUser bUser) { | |||
| protected void addBillAction(EnumBillAction billAction, Integer billType,Long billId, String oldMoney, String newMoney,String setoff,Date payDate,Long payWayId,String payWayName,String remark,EnumBillStatus oldStatus,EnumBillStatus newStatus, WxMerchantBUser bUser) { | |||
| WxBillAction wxBillAction = new WxBillAction(); | |||
| wxBillAction.setBillId(billId); | |||
| wxBillAction.setBillType(billType); | |||
| wxBillAction.setOldMoney(oldMoney); | |||
| wxBillAction.setNewMoney(newMoney); | |||
| wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWay,oldStatus,newStatus)); | |||
| wxBillAction.setDetails(billAction.getDescription(oldMoney, newMoney,setoff,payWayName,oldStatus,newStatus)); | |||
| wxBillAction.setAction(billAction.getCode()); | |||
| wxBillAction.setPayDate(payDate); | |||
| if (null != payWay) { | |||
| wxBillAction.setPayWay(payWay.getId()); | |||
| } | |||
| wxBillAction.setPayWay(payWayId); | |||
| wxBillAction.setRemark(remark); | |||
| wxBillAction.setUserType(EnumSystemUserType.MERCHANT.getCode()); | |||
| wxBillActionService.modifyBill(wxBillAction, bUser); | |||
| @@ -554,7 +554,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| //单保存冲抵的时候,实收金额为0 | |||
| BigDecimal receiveTotal = new BigDecimal(0); | |||
| WxBillPayWay payWay0 = null; | |||
| //WxBillPayWay payWay0 = null; | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| Long receiveId = idWorker.nextId(); | |||
| List<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | |||
| @@ -567,14 +567,12 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"收款方式不能为空"); | |||
| } | |||
| receiveTotal = receiveTotal.add(new BigDecimal(payWay.getMoney())); | |||
| if (null == payWay0) { | |||
| payWay0 = payWay; | |||
| } | |||
| WxFinanceReceivePayway rpw = new WxFinanceReceivePayway(); | |||
| rpw.updateTenantInfo(record); | |||
| rpw.setReceiveId(receiveId); | |||
| rpw.setReceive(payWay.getMoney()); | |||
| rpw.setPayWay(payWay.getId()); | |||
| rpw.setPayWayName(payWay.getName()); | |||
| rpw.setCreateTime(new Date()); | |||
| rpw.setUpdateTime(new Date()); | |||
| rpw.setIsDel(EnumYesOrNo.NO.getCode()); | |||
| @@ -605,7 +603,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| for (int i = 0 ; i < record.getBills().size(); i++) { | |||
| WxAllBill be = record.getBills().get(i); | |||
| //每个账单要创建一个收款关联单,如果有冲抵,要额外创建 | |||
| boolean noNeedCreate = createBillReceive(calcuteDto,user,addreceive,be,merchant,payWay0); | |||
| boolean noNeedCreate = createBillReceive(calcuteDto,user,addreceive,be,merchant,receivePayWayList); | |||
| if (!noNeedCreate) { | |||
| isAllEmpity = false; | |||
| } | |||
| @@ -627,7 +625,36 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| return retMap; | |||
| } | |||
| public boolean createBillReceive(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,WxBillPayWay payWay0) { | |||
| private void calcuteReceiveMoney(StringBuffer sb,WxFinanceReceive addreceive,WxAllBill bill,List<WxFinanceReceivePayway> receivePayWayList,BigDecimal moneyDecimal) { | |||
| if (moneyDecimal.compareTo(new BigDecimal(0)) <= 0 ) { | |||
| return ; | |||
| } | |||
| for (int i = 0 ; i < receivePayWayList.size(); i ++) { | |||
| WxFinanceReceivePayway payway = receivePayWayList.get(i); | |||
| //能够覆盖账单金额 | |||
| if (moneyDecimal.compareTo(new BigDecimal(payway.getReceive())) <= 0 ) { | |||
| //创建一个实收款单关联 | |||
| createFinanceReceiveBill(addreceive,bill,moneyDecimal.toPlainString(),null,payway.getId()); | |||
| sb.append(payway.getPayWayName()).append("收款").append(moneyDecimal.toPlainString()).append(","); | |||
| BigDecimal remain = new BigDecimal(payway.getReceive()).subtract(moneyDecimal); | |||
| if (remain.compareTo(new BigDecimal(0))==0) { | |||
| receivePayWayList.remove(i); | |||
| }else { | |||
| payway.setReceive(remain.toPlainString()); | |||
| } | |||
| break; | |||
| }else { | |||
| //创建一个实收款单关联 | |||
| createFinanceReceiveBill(addreceive,bill,payway.getReceive(),null,payway.getId()); | |||
| sb.append(payway.getPayWayName()).append("收款").append(payway.getReceive()).append(","); | |||
| receivePayWayList.remove(i); | |||
| BigDecimal needlat = moneyDecimal.subtract(new BigDecimal(payway.getReceive())); | |||
| calcuteReceiveMoney(sb,addreceive,bill,receivePayWayList,needlat); | |||
| } | |||
| } | |||
| } | |||
| public boolean createBillReceive(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,List<WxFinanceReceivePayway> receivePayWayList) { | |||
| //如果既没有收款,也没有冲抵,则不更新 | |||
| boolean noNeedCreate = true; | |||
| //计算账单收款费用,更新账单收款 | |||
| @@ -654,18 +681,23 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| money = calcuteDto.getTotalRemainReceive().toPlainString(); | |||
| calcuteDto.setTotalRemainReceive(new BigDecimal(0)); | |||
| } | |||
| WxFinanceReceivePayway payway0 = receivePayWayList.get(0); | |||
| StringBuffer sb = new StringBuffer(); | |||
| BigDecimal moneyDecimal = new BigDecimal(money); | |||
| //根据金额循环创建 | |||
| calcuteReceiveMoney(sb,addreceive, bill, receivePayWayList, moneyDecimal); | |||
| WxBillPayDTO payDto = new WxBillPayDTO(); | |||
| payDto.updateTenantInfo(addreceive); | |||
| payDto.setId(be.getId()); | |||
| payDto.setBillTypeValue(be.getBillType()); | |||
| payDto.setAddpay(money); | |||
| payDto.setPayWay(payWay0.getId()); | |||
| payDto.setPayWayObject(payWay0); | |||
| payDto.setRemark("收款单收款["+addreceive.getId()+"]"+addreceive.getRemark()); | |||
| payDto.setPayWay(payway0.getId()); | |||
| payDto.setPayWayName(payway0.getPayWayName()); | |||
| payDto.setRemark("收款单收款["+addreceive.getId()+"]"+addreceive.getRemark()+"收款明细:"+sb.toString()); | |||
| be.setCurrentReceive(money); | |||
| //创建一个实收款单关联 | |||
| createFinanceReceiveBill(addreceive,bill,money,null,payWay0.getId()); | |||
| bill.setCurrentReceive(money); | |||
| //并且有抵扣 | |||
| if(StringUtils.isNotBlank(be.getCurrentSetOff())) { | |||
| @@ -693,11 +725,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| payDto.setAddpay("0"); | |||
| payDto.setSetOff(be.getCurrentSetOff()); | |||
| payDto.setPayWay(Constant.bill_pay_way_setoff); | |||
| if (null == payWay0) { | |||
| payWay0 = new WxBillPayWay(); | |||
| payWay0.setId(Constant.bill_pay_way_setoff); | |||
| } | |||
| payDto.setPayWayObject(payWay0); | |||
| payDto.setPayWayName("冲抵"); | |||
| payDto.setRemark("收款单收款["+addreceive.getId()+"]冲抵"+addreceive.getRemark()); | |||
| wxBillAllHelper.updatePay(payDto, user); | |||
| } | |||
| @@ -825,7 +853,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| for (int i = 0 ; i < record.getBills().size(); i++) { | |||
| WxAllBill be = record.getBills().get(i); | |||
| //每个账单要创建一个收款关联单,如果有冲抵,要额外创建 | |||
| boolean noNeedCreate = createBillPay(calcuteDto,user,addreceive,be,merchant,payWay0); | |||
| boolean noNeedCreate = createBillPay(calcuteDto,user,addreceive,be,merchant,receivePayWayList); | |||
| if (!noNeedCreate) { | |||
| isAllEmpity = false; | |||
| } | |||
| @@ -843,7 +871,36 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| return retMap; | |||
| } | |||
| public boolean createBillPay(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,WxBillPayWay payWay0) { | |||
| private void calcutePayMoney(StringBuffer sb,WxFinanceReceive addreceive,WxAllBill bill,List<WxFinanceReceivePayway> receivePayWayList,BigDecimal moneyDecimal) { | |||
| if (moneyDecimal.compareTo(new BigDecimal(0)) <= 0 ) { | |||
| return ; | |||
| } | |||
| for (int i = 0 ; i < receivePayWayList.size(); i ++) { | |||
| WxFinanceReceivePayway payway = receivePayWayList.get(i); | |||
| //能够覆盖账单金额 | |||
| if (moneyDecimal.compareTo(new BigDecimal(payway.getReceive())) <= 0 ) { | |||
| //创建一个实收款单关联 | |||
| createFinanceReceiveBill(addreceive,bill,null,moneyDecimal.toPlainString(),payway.getId()); | |||
| sb.append(payway.getPayWayName()).append("付款").append(moneyDecimal.toPlainString()).append(","); | |||
| BigDecimal remain = new BigDecimal(payway.getReceive()).subtract(moneyDecimal); | |||
| if (remain.compareTo(new BigDecimal(0))==0) { | |||
| receivePayWayList.remove(i); | |||
| }else { | |||
| payway.setReceive(remain.toPlainString()); | |||
| } | |||
| break; | |||
| }else { | |||
| //创建一个实收款单关联 | |||
| createFinanceReceiveBill(addreceive,bill,null,payway.getReceive(),payway.getId()); | |||
| sb.append(payway.getPayWayName()).append("付款").append(payway.getReceive()).append(","); | |||
| receivePayWayList.remove(i); | |||
| BigDecimal needlat = moneyDecimal.subtract(new BigDecimal(payway.getReceive())); | |||
| calcutePayMoney(sb,addreceive,bill,receivePayWayList,needlat); | |||
| } | |||
| } | |||
| } | |||
| public boolean createBillPay(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,List<WxFinanceReceivePayway> receivePayWayList) { | |||
| //如果既没有收款,也没有冲抵,则不更新 | |||
| boolean noNeedCreate = true; | |||
| //计算账单收款费用,更新账单收款 | |||
| @@ -868,18 +925,24 @@ public class WxFinanceServiceImpl implements WxFinanceService { | |||
| money = calcuteDto.getTotalRemainPay().toPlainString(); | |||
| calcuteDto.setTotalRemainPay(new BigDecimal(0)); | |||
| } | |||
| WxFinanceReceivePayway payway0 = receivePayWayList.get(0); | |||
| WxBillPayDTO payDto = new WxBillPayDTO(); | |||
| payDto.updateTenantInfo(addreceive); | |||
| payDto.setId(be.getId()); | |||
| payDto.setBillTypeValue(be.getBillType()); | |||
| payDto.setPayToMerchant(money); | |||
| payDto.setPayWay(payWay0.getId()); | |||
| payDto.setPayWayObject(payWay0); | |||
| payDto.setPayWay(payway0.getId()); | |||
| payDto.setPayWayName(payway0.getPayWayName()); | |||
| payDto.setRemark("付款单付款["+addreceive.getId()+"]"+addreceive.getRemark()); | |||
| be.setCurrentReceive(money); | |||
| //创建一个实收款单关联 | |||
| createFinanceReceiveBill(addreceive,bill,null,money,payWay0.getId()); | |||
| //根据金额循环创建 | |||
| StringBuffer sb = new StringBuffer(); | |||
| BigDecimal moneyDecimal = new BigDecimal(money); | |||
| calcutePayMoney(sb, addreceive, bill, receivePayWayList, moneyDecimal); | |||
| bill.setCurrentReceive(money); | |||
| wxBillAllHelper.updatePayToMerchant(payDto, user); | |||
| @@ -24,7 +24,8 @@ public class PayBillBaseService { | |||
| dto.setId(billId); | |||
| dto.setBillTypeValue(billType.getCode()); | |||
| dto.setAddpay(paid); | |||
| dto.setPayWayObject(payWay); | |||
| dto.setPayWay(payWay.getId()); | |||
| dto.setPayWayName(payWay.getName()); | |||
| dto.setRemark(remark); | |||
| WxMerchantBUser buser = wxMerchantBUserService.getById(merchantBUserId); | |||