diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java index d66d03069..5061feeb0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java @@ -298,6 +298,20 @@ public class WxFinanceController extends BaseController { return new ResultData(map); } + @ApiOperation("新增减免") + @PostMapping("createCut") + public ResultData createCut(@RequestBody WxFinanceReceive record) { + record.updateTenantInfo(getTenantInfo()); + if (null == record.getMerchantId()) { + return new ResultData(Result.ERROR,"请选择商户"); + } + if (null == record.getBills()) { + return new ResultData(Result.ERROR,"请选择账单"); + } + Map map = wxFinanceService.createCut(record,this.getUser()); + return new ResultData(map); + } + @ApiOperation("新增付款单") @PostMapping("createPay") public ResultData createPay(@RequestBody WxFinanceReceive record) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java index 2bf97031f..998dd62d8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java @@ -83,6 +83,17 @@ public class WxFinanceReceive extends TenantEntity { return setOffMoneyChinese; } + @io.swagger.annotations.ApiModelProperty(value = "减免金额", name = "cutMoney") + private String cutMoney; + @TableField(exist = false) + private String cutMoneyChinese; + public String getCutMoneyChinese() { + if (StringUtils.isNotBlank(cutMoney)) { + cutMoneyChinese = PriceUtilV2.number2CNMontrayUnit(new BigDecimal(cutMoney)); + } + return cutMoneyChinese; + } + @TableField(exist = false) private String allReceiveMoney; public String getAllReceiveMoney() { diff --git a/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java b/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java index 44969a24e..d9d707c59 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java @@ -47,6 +47,8 @@ public interface WxAllBillService { void updatePayByMerchant(WxBillPayDTO dto,WxMerchantBUser user,boolean isOnline); + void updateCut(WxBillPayDTO dto,MallUserInfo user); + void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user); void bad(WxBillPayDTO dto,MallUserInfo user); diff --git a/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java b/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java index dc1fe2921..54e6aa84a 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java @@ -36,6 +36,7 @@ public interface WxFinanceService { PageInfo receiveBillListAsPage(WxFinanceReceiveBill record, Integer pageIndex, Integer pageSize); List findReceiveList(WxFinanceReceive record); Map createReceive(WxFinanceReceive record,MallUserInfo user); + Map createCut(WxFinanceReceive record,MallUserInfo user); Map createPay(WxFinanceReceive record,MallUserInfo user); WxFinanceReceive getReceiveById(TenantEntity tenantEntity,Long id); void invalidReceive(WxFinanceReceive record,MallUserInfo user,String remark); diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java index 451380d85..c255f85e1 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java @@ -343,6 +343,10 @@ public class WxBillAllHelper { wxAllBillService.updatePay(dto, user); } + public void updateCut(WxBillPayDTO dto,MallUserInfo user) { + wxAllBillService.updateCut(dto, user); + } + public void updatePayByMerchant(WxBillPayDTO dto,WxMerchantBUser user,boolean isOnline) { wxAllBillService.updatePayByMerchant(dto, user,isOnline); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java index 51ccb4d19..f7a65849d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java @@ -404,6 +404,24 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill dto.getRemark(),null,null, user); } + @Override + public void updateCut(WxBillPayDTO dto, MallUserInfo user) { + WxAllBill dbBill = wxAllBillMapper.selectById(dto.getId(),dto.getTenantId()); + BigDecimal oldReceivePay = new BigDecimal(0); + if (StringUtils.isNotBlank(dbBill.getReceivePay())) { + oldReceivePay = new BigDecimal(dbBill.getReceivePay()); + } + WxAllBill wxBillRent = new WxAllBill(); + wxBillRent.setId(dto.getId()); + wxBillRent.updateTenantInfo(dto); + wxBillRent.setUpdatetime(new Date()); + wxBillRent.setReceivePay(oldReceivePay.subtract(new BigDecimal(dto.getCut())).toPlainString()); + wxAllBillMapper.updateById(wxBillRent); + this.addBillAction(EnumBillAction.UPDATE_BILL, dto.getBillTypeValue(),dto.getId(), + oldReceivePay.toPlainString(), dto.getCut(),null,null,null,null, + dto.getRemark(),null,null, user); + } + @Override public void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user) { WxAllBill dbBill = wxAllBillMapper.selectById(dto.getId(),dto.getTenantId()); 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 27ca17259..4888443b0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -944,6 +944,57 @@ public class WxFinanceServiceImpl implements WxFinanceService { } } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public Map createCut(WxFinanceReceive record,MallUserInfo user) { + //单保存冲抵的时候,实收金额为0 + BigDecimal receiveTotal = new BigDecimal(0); + //WxBillPayWay payWay0 = null; + final IdWorker idWorker = IdWorker.get(); + Long receiveId = idWorker.nextId(); + List receivePayWayList = new ArrayList(); + //冲抵总金额 + List bills = record.getBills(); + + //创建主收款单 + WxFinanceReceive addreceive = generateReceive(receiveId,user, EnumFinanceCashierType.RECEIVE,"0",null, record.getMerchantId(), null, record.getRemark(),new Date()); + WxMerchant merchant = new WxMerchant(); + merchant.updateTenantInfo(record); + boolean isAllEmpity = true; + + FinanceReceiveCalcuteDTO calcuteDto = new FinanceReceiveCalcuteDTO(); + calcuteDto.setTotalCut(new BigDecimal(0)); + //建立子账单关联单 + for (int i = 0 ; i < record.getBills().size(); i++) { + WxAllBill be = record.getBills().get(i); + if(StringUtils.isNotBlank(be.getCurrentCut())) { + WxBillPayDTO payDto = new WxBillPayDTO(); + payDto.updateTenantInfo(addreceive); + payDto.setId(be.getId()); + payDto.setBillTypeValue(be.getBillType()); + payDto.setCut(be.getCurrentCut()); + payDto.setRemark("减免,关联收款单["+addreceive.getId()+"]"); + //创建一个减免收款单 + createFinanceReceiveBill(addreceive,be,be.getCurrentCut(),null,Constant.bill_pay_way_cut); + wxBillAllHelper.updateCut(payDto, user); + calcuteDto.setTotalCut(calcuteDto.getTotalCut().add(new BigDecimal(be.getCurrentCut()))); + isAllEmpity = false; + } + } + if (isAllEmpity) { + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"请收款或者冲抵"); + } + addreceive.setMerchantId(record.getMerchantId()); + addreceive.setRemark(record.getRemark()); + addreceive.setCutMoney(calcuteDto.getTotalCut().toPlainString()); + wxFinanceReceiveMapper.insert(addreceive); + Map retMap = new HashMap(); + retMap.put("addreceive", addreceive); + retMap.put("billlist", bills); + return retMap; + } + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override public Map createPay(WxFinanceReceive record,MallUserInfo user) { diff --git a/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml b/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml index 49d38e244..6de87b6b3 100644 --- a/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml @@ -11,6 +11,7 @@ + @@ -27,7 +28,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`receive_date`,`receive_money`,`pay_money`,`set_off_money`,`status`,`type`, + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`receive_date`,`receive_money`,`pay_money`,`set_off_money`,`cut_money`,`status`,`type`, `money_detail`,`create_by`,`create_by_name`,`update_by`,`update_by_name`,`merchant_id`,`rent_shop_type`,`remark`, `fees_id`,`is_print`,`is_finish`