| @@ -298,6 +298,20 @@ public class WxFinanceController extends BaseController { | |||||
| return new ResultData(map); | 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("新增付款单") | @ApiOperation("新增付款单") | ||||
| @PostMapping("createPay") | @PostMapping("createPay") | ||||
| public ResultData createPay(@RequestBody WxFinanceReceive record) { | public ResultData createPay(@RequestBody WxFinanceReceive record) { | ||||
| @@ -83,6 +83,17 @@ public class WxFinanceReceive extends TenantEntity { | |||||
| return setOffMoneyChinese; | 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) | @TableField(exist = false) | ||||
| private String allReceiveMoney; | private String allReceiveMoney; | ||||
| public String getAllReceiveMoney() { | public String getAllReceiveMoney() { | ||||
| @@ -47,6 +47,8 @@ public interface WxAllBillService { | |||||
| void updatePayByMerchant(WxBillPayDTO dto,WxMerchantBUser user,boolean isOnline); | void updatePayByMerchant(WxBillPayDTO dto,WxMerchantBUser user,boolean isOnline); | ||||
| void updateCut(WxBillPayDTO dto,MallUserInfo user); | |||||
| void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user); | void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user); | ||||
| void bad(WxBillPayDTO dto,MallUserInfo user); | void bad(WxBillPayDTO dto,MallUserInfo user); | ||||
| @@ -36,6 +36,7 @@ public interface WxFinanceService { | |||||
| PageInfo<WxFinanceReceiveBill> receiveBillListAsPage(WxFinanceReceiveBill record, Integer pageIndex, Integer pageSize); | PageInfo<WxFinanceReceiveBill> receiveBillListAsPage(WxFinanceReceiveBill record, Integer pageIndex, Integer pageSize); | ||||
| List<WxFinanceReceive> findReceiveList(WxFinanceReceive record); | List<WxFinanceReceive> findReceiveList(WxFinanceReceive record); | ||||
| Map createReceive(WxFinanceReceive record,MallUserInfo user); | Map createReceive(WxFinanceReceive record,MallUserInfo user); | ||||
| Map createCut(WxFinanceReceive record,MallUserInfo user); | |||||
| Map createPay(WxFinanceReceive record,MallUserInfo user); | Map createPay(WxFinanceReceive record,MallUserInfo user); | ||||
| WxFinanceReceive getReceiveById(TenantEntity tenantEntity,Long id); | WxFinanceReceive getReceiveById(TenantEntity tenantEntity,Long id); | ||||
| void invalidReceive(WxFinanceReceive record,MallUserInfo user,String remark); | void invalidReceive(WxFinanceReceive record,MallUserInfo user,String remark); | ||||
| @@ -343,6 +343,10 @@ public class WxBillAllHelper { | |||||
| wxAllBillService.updatePay(dto, user); | wxAllBillService.updatePay(dto, user); | ||||
| } | } | ||||
| public void updateCut(WxBillPayDTO dto,MallUserInfo user) { | |||||
| wxAllBillService.updateCut(dto, user); | |||||
| } | |||||
| public void updatePayByMerchant(WxBillPayDTO dto,WxMerchantBUser user,boolean isOnline) { | public void updatePayByMerchant(WxBillPayDTO dto,WxMerchantBUser user,boolean isOnline) { | ||||
| wxAllBillService.updatePayByMerchant(dto, user,isOnline); | wxAllBillService.updatePayByMerchant(dto, user,isOnline); | ||||
| } | } | ||||
| @@ -404,6 +404,24 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill | |||||
| dto.getRemark(),null,null, user); | 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 | @Override | ||||
| public void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user) { | public void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user) { | ||||
| WxAllBill dbBill = wxAllBillMapper.selectById(dto.getId(),dto.getTenantId()); | WxAllBill dbBill = wxAllBillMapper.selectById(dto.getId(),dto.getTenantId()); | ||||
| @@ -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<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>(); | |||||
| //冲抵总金额 | |||||
| List<WxAllBill> 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}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| @Override | @Override | ||||
| public Map createPay(WxFinanceReceive record,MallUserInfo user) { | public Map createPay(WxFinanceReceive record,MallUserInfo user) { | ||||
| @@ -11,6 +11,7 @@ | |||||
| <result column="receive_money" jdbcType="VARCHAR" property="receiveMoney"/> | <result column="receive_money" jdbcType="VARCHAR" property="receiveMoney"/> | ||||
| <result column="pay_money" jdbcType="VARCHAR" property="payMoney"/> | <result column="pay_money" jdbcType="VARCHAR" property="payMoney"/> | ||||
| <result column="set_off_money" jdbcType="VARCHAR" property="setOffMoney"/> | <result column="set_off_money" jdbcType="VARCHAR" property="setOffMoney"/> | ||||
| <result column="cut_money" jdbcType="VARCHAR" property="cutMoney"/> | |||||
| <result column="status" jdbcType="INTEGER" property="status"/> | <result column="status" jdbcType="INTEGER" property="status"/> | ||||
| <result column="type" jdbcType="INTEGER" property="type"/> | <result column="type" jdbcType="INTEGER" property="type"/> | ||||
| <result column="money_detail" jdbcType="VARCHAR" property="moneyDetail"/> | <result column="money_detail" jdbcType="VARCHAR" property="moneyDetail"/> | ||||
| @@ -27,7 +28,7 @@ | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| `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`, | `money_detail`,`create_by`,`create_by_name`,`update_by`,`update_by_name`,`merchant_id`,`rent_shop_type`,`remark`, | ||||
| `fees_id`,`is_print`,`is_finish` | `fees_id`,`is_print`,`is_finish` | ||||
| </sql> | </sql> | ||||