diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java b/mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java index 3a262681f..ca0bc9251 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java @@ -16,4 +16,5 @@ public class FinanceReceiveCalcuteDTO extends TenantEntity{ private BigDecimal totalRemainReceive; private BigDecimal totalSetoff; private BigDecimal totalRemainPay; + private BigDecimal totalCut; } diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java b/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java index a0d93b818..fa50abc27 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java @@ -18,6 +18,7 @@ public class WxBillPayDTO extends TenantEntity{ private String payToMerchant;//支付给商户金额 private String setOff="0";//冲抵金额 private Long payWay;//传值 + private String cut="0";//减免金额 private String payWayName;//传值 private String remark; private String image; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java index 1b6497d69..8c38c1e00 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java @@ -341,6 +341,9 @@ public class WxAllBill extends TenantEntity { @TableField(exist = false) private String currentReceive; + @TableField(exist = false) + private String currentCut; + @TableField(exist = false) private Date shopEndtime; diff --git a/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java b/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java index ccc4040d9..2b9912947 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxAllBillService.java @@ -61,6 +61,8 @@ public interface WxAllBillService { void backPay(WxBillPayDTO dto,MallUserInfo user); + void backCut(WxBillPayDTO dto,MallUserInfo user); + void toMechantBackPay(WxBillPayDTO dto,MallUserInfo user); void rentContractStop(WxRentContract rentContract,MallUserInfo user); 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 14f7b32df..6808c5257 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java @@ -313,6 +313,10 @@ public class WxBillAllHelper { wxAllBillService.backPay(dto, user); } + public void backCut(WxBillPayDTO dto,MallUserInfo user) { + wxAllBillService.backCut(dto, user); + } + public void toMechantBackPay(WxBillPayDTO dto,MallUserInfo user) { wxAllBillService.toMechantBackPay(dto, user); } 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 685921c74..213faba59 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java @@ -369,6 +369,10 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill } wxBillRent.setSetOff(new BigDecimal(oldSetOff).add(remainSetoff).toPlainString()); wxBillRent.setPayDate(new Date()); + if (StringUtils.isNotBlank(dto.getCut())) { + wxBillRent.setReceivePay(new BigDecimal(dbBill.getReceivePay()).subtract(new BigDecimal(dto.getCut())).toPlainString()); + sb.append(";本次减免金额").append(dto.getCut()); + } wxBillRent.setPayWay(dto.getPayWay()); wxAllBillMapper.updateById(wxBillRent); dto.setRemark(sb.toString()); @@ -521,6 +525,21 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill dto.getRemark(),null,null, user); } + @Override + public void backCut(WxBillPayDTO dto, MallUserInfo user) { + WxAllBill dbBill = wxAllBillMapper.selectById(dto.getId(),dto.getTenantId()); + WxAllBill wxBillRent = new WxAllBill(); + wxBillRent.setId(dto.getId()); + wxBillRent.updateTenantInfo(dto); + wxBillRent.setUpdatetime(new Date()); + wxBillRent.setReceivePay(new BigDecimal(dbBill.getReceivePay()).add(new BigDecimal(dto.getCut())).toPlainString()); + wxAllBillMapper.updateById(wxBillRent); + EnumBillAction action = EnumBillAction.RETURN; + this.addBillAction(action, dto.getBillTypeValue(),dto.getId(), + dto.getAddpay(), dto.getAddpay(),dto.getSetOff(),wxBillRent.getPayDate(),dto.getPayWay(),dto.getPayWayName(), + dto.getRemark(),null,null, user); + } + @Override public void toMechantBackPay(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 5e7b0558d..6f3f30296 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -198,6 +198,16 @@ public class WxFinanceServiceImpl implements WxFinanceService { payway3.setCreateTime(new Date()); payway3.setUpdateTime(new Date()); wxBillPayWayMapper.insert(payway3); + + WxBillPayWay payway4 = new WxBillPayWay(); + payway4.updateTenantInfo(tenantInfo); + payway4.setId(Constant.bill_pay_way_cut); + payway4.setName("减免"); + payway4.setIsDel(EnumYesOrNo.NO.getCode()); + payway4.setIsSystem(EnumYesOrNo.YES.getCode()); + payway4.setCreateTime(new Date()); + payway4.setUpdateTime(new Date()); + wxBillPayWayMapper.insert(payway4); } @Override @@ -586,6 +596,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { FinanceReceiveCalcuteDTO calcuteDto = new FinanceReceiveCalcuteDTO(); calcuteDto.setTotalRemainReceive(receiveTotal); calcuteDto.setTotalSetoff(setOffTotal); + calcuteDto.setTotalCut(new BigDecimal(0)); //建立子账单关联单 for (int i = 0 ; i < record.getBills().size(); i++) { WxAllBill be = record.getBills().get(i); @@ -682,6 +693,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { payDto.setAddpay(money); payDto.setPayWay(payway0.getId()); payDto.setPayWayName(payway0.getPayWayName()); + payDto.setCut(be.getCurrentCut()); payDto.setRemark("收款单收款["+addreceive.getId()+"]"+addreceive.getRemark()+"收款明细:"+sb.toString()); be.setCurrentReceive(money); bill.setCurrentReceive(money); @@ -694,6 +706,12 @@ public class WxFinanceServiceImpl implements WxFinanceService { //处理关联抵扣的预收单 createFinanceReceiveSetoff(addreceive,be,bill); } + //有减免 + if(StringUtils.isNotBlank(be.getCurrentCut())) { + calcuteDto.setTotalCut(calcuteDto.getTotalCut().add(new BigDecimal(be.getCurrentCut()))); + //创建一个减免收款单 + createFinanceReceiveBill(addreceive,bill,be.getCurrentCut(),null,Constant.bill_pay_way_cut); + } wxBillAllHelper.updatePay(payDto, user); }else if (StringUtils.isNotBlank(be.getCurrentSetOff())) { @@ -704,12 +722,21 @@ public class WxFinanceServiceImpl implements WxFinanceService { createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),null,Constant.bill_pay_way_setoff); //处理预充关联 createFinanceReceiveSetoff(addreceive,be,bill); + + //有减免 + if(StringUtils.isNotBlank(be.getCurrentCut())) { + calcuteDto.setTotalCut(calcuteDto.getTotalCut().add(new BigDecimal(be.getCurrentCut()))); + //创建一个减免收款单 + createFinanceReceiveBill(addreceive,bill,be.getCurrentCut(),null,Constant.bill_pay_way_cut); + } + WxBillPayDTO payDto = new WxBillPayDTO(); payDto.updateTenantInfo(addreceive); payDto.setId(be.getId()); payDto.setBillTypeValue(be.getBillType()); payDto.setAddpay("0"); payDto.setSetOff(be.getCurrentSetOff()); + payDto.setCut(be.getCurrentCut()); payDto.setPayWay(Constant.bill_pay_way_setoff); payDto.setPayWayName("冲抵"); payDto.setRemark("收款单收款["+addreceive.getId()+"]冲抵"+addreceive.getRemark()); @@ -1013,31 +1040,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { for (int i = 0 ; i < receiveBills.size() ; i ++) { WxFinanceReceiveBill rb = receiveBills.get(i); WxAllBill bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(rb.getBillType()), merchant, rb.getBillId()); - if (!rb.getPayWay().equals(Constant.bill_pay_way_setoff)) { - //账单回退 - WxBillPayDTO payDto = new WxBillPayDTO(); - payDto.updateTenantInfo(record); - payDto.setId(bill.getId()); - payDto.setBillTypeValue(bill.getBillType()); - if (record.getType().intValue() == EnumFinanceCashierType.RECEIVE.getCode().intValue()) { - payDto.setAddpay(rb.getReceive()); - if (isRedSetoff) { - payDto.setRemark("收款单红冲,自动回退"); - }else { - payDto.setRemark("收款单作废,自动回退"); - } - wxBillAllHelper.backPay(payDto, user); - }else { - payDto.setPayToMerchant(rb.getPay()); - if (isRedSetoff) { - payDto.setRemark("付款单红冲,自动回退"); - }else { - payDto.setRemark("付款单作废,自动回退"); - } - wxBillAllHelper.toMechantBackPay(payDto, user); - } - - }else { + if (rb.getPayWay().equals(Constant.bill_pay_way_setoff)) { //预收单冲抵回退 //查询账单关联的预充收款单,每个预售单的金额回退 WxFinanceReceiveSetoff rsq = new WxFinanceReceiveSetoff(); @@ -1079,6 +1082,55 @@ public class WxFinanceServiceImpl implements WxFinanceService { wxBillAllHelper.backPay(payDto, user); //记录删除 wxFinanceReceiveSetoffMapper.deleteByConditon(rsq); + + }if (rb.getPayWay().equals(Constant.bill_pay_way_cut)) { + //减免回退 + WxBillPayDTO payDto = new WxBillPayDTO(); + payDto.updateTenantInfo(record); + payDto.setId(bill.getId()); + payDto.setBillTypeValue(bill.getBillType()); + if (record.getType().intValue() == EnumFinanceCashierType.RECEIVE.getCode().intValue()) { + payDto.setCut(rb.getReceive()); + if (isRedSetoff) { + payDto.setRemark("收款单红冲,减免自动回退"); + }else { + payDto.setRemark("收款单作废,减免回退"); + } + wxBillAllHelper.backCut(payDto, user); + }else { + //付款无减免 +// payDto.setPayToMerchant(rb.getPay()); +// if (isRedSetoff) { +// payDto.setRemark("付款单红冲,自动回退"); +// }else { +// payDto.setRemark("付款单作废,自动回退"); +// } +// wxBillAllHelper.toMechantBackPay(payDto, user); + } + + }else { + //账单回退 + WxBillPayDTO payDto = new WxBillPayDTO(); + payDto.updateTenantInfo(record); + payDto.setId(bill.getId()); + payDto.setBillTypeValue(bill.getBillType()); + if (record.getType().intValue() == EnumFinanceCashierType.RECEIVE.getCode().intValue()) { + payDto.setAddpay(rb.getReceive()); + if (isRedSetoff) { + payDto.setRemark("收款单红冲,自动回退"); + }else { + payDto.setRemark("收款单作废,自动回退"); + } + wxBillAllHelper.backPay(payDto, user); + }else { + payDto.setPayToMerchant(rb.getPay()); + if (isRedSetoff) { + payDto.setRemark("付款单红冲,自动回退"); + }else { + payDto.setRemark("付款单作废,自动回退"); + } + wxBillAllHelper.toMechantBackPay(payDto, user); + } } } } diff --git a/mallinkService/src/main/java/com/iformall/utils/Constant.java b/mallinkService/src/main/java/com/iformall/utils/Constant.java index 3e277592c..2a07ed0fd 100644 --- a/mallinkService/src/main/java/com/iformall/utils/Constant.java +++ b/mallinkService/src/main/java/com/iformall/utils/Constant.java @@ -146,6 +146,7 @@ public class Constant { public static final Long bill_pay_way_minigrame = 1L; public static final Long bill_pay_way_system = 2L; public static final Long bill_pay_way_setoff = 3L; + public static final Long bill_pay_way_cut = 4L; }