|
|
|
@@ -543,15 +543,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//保存调整金额(预账单调整)
|
|
|
|
//if (saveBill) {
|
|
|
|
// savePreviewBill(record,user);
|
|
|
|
//保存商业管理费账单
|
|
|
|
// savePreviewManageFeeBill(record,user,EnumRentContractManageFeeType.RENT_BUSSINESS_MANAGE_FEE);
|
|
|
|
//保存营业管理费账单
|
|
|
|
// savePreviewManageFeeBill(record,user,EnumRentContractManageFeeType.RENT_OPERATING_MANAGE_FEE);
|
|
|
|
//}
|
|
|
|
|
|
|
|
WxRentContract wxRentContract = (WxRentContract)resultData.data;
|
|
|
|
wxRentContract.setPreviewBillRentList(resultList);
|
|
|
|
return new ResultData(wxRentContract);
|
|
|
|
@@ -614,207 +605,10 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
deletePrewBill(record);
|
|
|
|
resultList = buildRent(user, rentContract, EnumIsPreview.YES.getCode(),true);
|
|
|
|
rentContract.setPreviewBillRentList(resultList);
|
|
|
|
//savePreviewBill(rentContract,user);
|
|
|
|
//保存商业管理费账单
|
|
|
|
//savePreviewManageFeeBill(rentContract,user,EnumRentContractManageFeeType.RENT_BUSSINESS_MANAGE_FEE);
|
|
|
|
//保存营业管理费账单
|
|
|
|
//savePreviewManageFeeBill(rentContract,user,EnumRentContractManageFeeType.RENT_OPERATING_MANAGE_FEE);
|
|
|
|
|
|
|
|
rentContract.setRentalStartDate(oldDate);
|
|
|
|
return new ResultData(rentContract);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 重新生成账单(预账单调整)
|
|
|
|
*/
|
|
|
|
public void savePreviewBill(WxRentContract record,MallUserInfo user){
|
|
|
|
|
|
|
|
if(CollectionUtils.isEmpty(record.getPreviewBillRentList())){
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (null == record.getDecimalSize()) {
|
|
|
|
record.setDecimalSize(Constant.default_short_decimal_size);
|
|
|
|
}
|
|
|
|
wxAllBillMapper.deleteBillByContract(record);
|
|
|
|
final IdWorker idWorker = IdWorker.get();
|
|
|
|
List<Long> shopIds = record.shopIdsByRentInfo();
|
|
|
|
//根据关联的店铺面积来分金额
|
|
|
|
Map<Long, BigDecimal> shopAreaRateMap = record.getRentShopArea();
|
|
|
|
if (null == shopAreaRateMap) {
|
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"无店铺信息");
|
|
|
|
}
|
|
|
|
List<WxAllBill> billList = new ArrayList<WxAllBill>();
|
|
|
|
for (WxAllBill bill:record.getPreviewBillRentList()) {
|
|
|
|
bill.setId(idWorker.nextId());
|
|
|
|
Date date = new Date();
|
|
|
|
bill.setBillType(EnumBillAllType.RENT.getCode());
|
|
|
|
bill.setRentContractId(record.getId());
|
|
|
|
bill.setCreatetime(date);
|
|
|
|
bill.setCreateBy(user.getId());
|
|
|
|
bill.setCreateByName(user.getName()); |
|
|
|
bill.updateTenantInfo(record);
|
|
|
|
bill.setNeedPay(bill.getNeedPay());
|
|
|
|
bill.setReceivePay(bill.getNeedPay());
|
|
|
|
bill.setBussinessManageFeeNeedPay(bill.getBussinessManageFeeNeedPay());
|
|
|
|
bill.setOperatingManageFeeNeedPay(bill.getOperatingManageFeeNeedPay());
|
|
|
|
bill.setUpdatetime(date);
bill.setUpdateBy(user.getId());
|
|
|
|
bill.setUpdateByName(user.getName());
|
|
|
|
//bill.setPeriod(count);
|
|
|
|
bill.setIsPreview(EnumIsPreview.YES.getCode());
|
|
|
|
bill.setShopInfo(getShopInfoStr(record));
|
|
|
|
//bill.setRevenue("0");
|
|
|
|
//bill.setLatePayRatio(0);
|
|
|
|
bill.setPay("0");
|
|
|
|
//bill.setIsDel(EnumDelStatus.NOT_DEL.getCode());
|
|
|
|
if (null != shopIds && shopIds.size() == 1) {
|
|
|
|
bill.setShopId(shopIds.get(0));
|
|
|
|
}
|
|
|
|
bill.setEnergyFeesId(EnumBillAllType.RENT.getEnergyFeesId());
|
|
|
|
//setExpiredDay(bill,Calendar.MONTH,record.getReceivePeriod());
|
|
|
|
if (bill.getReceivePay().equals("0")) {
|
|
|
|
bill.setPayDate(date);
|
|
|
|
}
|
|
|
|
//计算手续费
|
|
|
|
//BigDecimal servicePay = new BigDecimal(bill.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), record.getDecimalSize(), BigDecimal.ROUND_HALF_UP);
|
|
|
|
//bill.setServiceChargePay(servicePay.toPlainString());
|
|
|
|
//bill.setOwe(bill.getReceivePay() + bill.getServiceChargePay());
|
|
|
|
//bill.setOwe(bill.getReceivePay());
|
|
|
|
|
|
|
|
//根据铺位来实际创建账单
|
|
|
|
for (int i = 0 ; i < shopIds.size(); i ++) {
|
|
|
|
WxAllBill b = new WxAllBill();
|
|
|
|
Long sid = shopIds.get(i);
|
|
|
|
BigDecimal shoprentArea = shopAreaRateMap.get(sid);
|
|
|
|
BigDecimal shoprate = shoprentArea.divide(new BigDecimal(record.getRentArea()),record.getDecimalSize(),BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
try {
|
|
|
|
BeanUtils.copyProperties(b, bill);
|
|
|
|
b.setId(idWorker.nextId());
|
|
|
|
b.setShopId(sid);
|
|
|
|
b.setNeedPay(new BigDecimal(bill.getNeedPay()).multiply(shoprate).toPlainString());
|
|
|
|
b.setReceivePay(b.getNeedPay());
|
|
|
|
if (StringUtils.isNotBlank(bill.getBussinessManageFeeNeedPay())){
|
|
|
|
b.setBussinessManageFeeNeedPay(new BigDecimal(bill.getBussinessManageFeeNeedPay()).multiply(shoprate).toPlainString());
|
|
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(bill.getOperatingManageFeeNeedPay())){
|
|
|
|
b.setOperatingManageFeeNeedPay(new BigDecimal(bill.getOperatingManageFeeNeedPay()).multiply(shoprate).toPlainString());
|
|
|
|
}
|
|
|
|
billList.add(b);
|
|
|
|
} catch (IllegalAccessException e) {
|
|
|
|
logger.error("savePreviewBill error.",e);
|
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单失败");
|
|
|
|
} catch (InvocationTargetException e) {
|
|
|
|
logger.error("savePreviewBill error.",e);
|
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单失败");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (billList.size() > 0 ){
|
|
|
|
wxAllBillMapper.insertBills(record.getTenantId(),billList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 重新生成其他管理费用账单(预账单调整)
|
|
|
|
*/
|
|
|
|
private void savePreviewManageFeeBill(WxRentContract record,MallUserInfo user,EnumRentContractManageFeeType feeType){
|
|
|
|
if(CollectionUtils.isEmpty(record.getPreviewBillRentList())){
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (null == record.getDecimalSize()) {
|
|
|
|
record.setDecimalSize(Constant.default_short_decimal_size);
|
|
|
|
}
|
|
|
|
//租金已经把这些账单都删除了
|
|
|
|
//WxAllBill wxBillRentManage = new WxAllBill();
|
|
|
|
//wxBillRentManage.setRentContractId(record.getId());
|
|
|
|
//wxBillRentManage.setBillType(EnumBillAllType.);
|
|
|
|
//wxBillRentManage.updateTenantInfo(record);
|
|
|
|
//wxAllBillManageMapper.deletePreviewBill(wxBillRentManage);
|
|
|
|
//WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(record);
|
|
|
|
final IdWorker idWorker = IdWorker.get();
|
|
|
|
int count = 1;
|
|
|
|
List<Long> shopIds = record.shopIdsByRentInfo();
|
|
|
|
//根据关联的店铺面积来分金额
|
|
|
|
Map<Long, BigDecimal> shopAreaRateMap = record.getRentShopArea();
|
|
|
|
if (null == shopAreaRateMap) {
|
|
|
|
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"无店铺信息");
|
|
|
|
}
|
|
|
|
List<WxAllBill> billList = new ArrayList<WxAllBill>();
|
|
|
|
for (WxAllBill _bi:record.getPreviewBillRentList()) {
|
|
|
|
BigDecimal needPay = new BigDecimal("0");
|
|
|
|
Integer billType = null;
|
|
|
|
if (feeType.getCode() == EnumRentContractManageFeeType.RENT_BUSSINESS_MANAGE_FEE.getCode()) {
|
|
|
|
if (null != _bi.getBussinessManageFeeNeedPay()) {
|
|
|
|
needPay = new BigDecimal(_bi.getBussinessManageFeeNeedPay());
|
|
|
|
}
|
|
|
|
billType = EnumBillAllType.RENT_BUSSINESS_MANAGE.getCode();
|
|
|
|
}else if (feeType.getCode() == EnumRentContractManageFeeType.RENT_OPERATING_MANAGE_FEE.getCode()) {
|
|
|
|
if (null != _bi.getOperatingManageFeeNeedPay()) {
|
|
|
|
needPay = new BigDecimal(_bi.getOperatingManageFeeNeedPay());
|
|
|
|
}
|
|
|
|
billType = EnumBillAllType.RENT_OPERATION_MANAGE.getCode();
|
|
|
|
}
|
|
|
|
if (needPay.compareTo(new BigDecimal(0)) <= 0) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
for (int i = 0 ; i < shopIds.size(); i ++) {
|
|
|
|
Long sid = shopIds.get(i);
|
|
|
|
BigDecimal shoprentArea = shopAreaRateMap.get(sid);
|
|
|
|
BigDecimal shoprate = shoprentArea.divide(new BigDecimal(record.getRentArea()),record.getDecimalSize(),BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
|
|
WxAllBill bill = new WxAllBill();
|
|
|
|
bill.setId(idWorker.nextId());
|
|
|
|
Date date = new Date();
|
|
|
|
bill.setBillType(billType);
|
|
|
|
bill.setRentContractId(record.getId());
|
|
|
|
bill.setCreatetime(date);
|
|
|
|
bill.setCreateBy(user.getId());
|
|
|
|
bill.setCreateByName(user.getName());; |
|
|
|
bill.updateTenantInfo(record);
|
|
|
|
bill.setStarttime(_bi.getStarttime());
|
|
|
|
bill.setEndtime(_bi.getEndtime());
|
|
|
|
bill.setIsPreview(_bi.getIsPreview());
|
|
|
|
//bill.setManageFeeType(feeType.getCode());
|
|
|
|
bill.setNeedPay(needPay.multiply(shoprate).toPlainString());
|
|
|
|
bill.setReceivePay(bill.getNeedPay());
|
|
|
|
bill.setUpdatetime(date);
|
|
|
|
bill.setUpdateBy(user.getId());
|
|
|
|
bill.setUpdateByName(user.getName());
|
|
|
|
//bill.setPeriod(count);
|
|
|
|
bill.setShopInfo(getShopInfoStr(record));
|
|
|
|
//bill.setLatePayRatio(0);
|
|
|
|
bill.setPay("0");
|
|
|
|
//bill.setIsDel(EnumDelStatus.NOT_DEL.getCode());
|
|
|
|
bill.setShopId(sid);
|
|
|
|
//setManageExpiredDay(bill,Calendar.MONTH,record.getReceivePeriod());
|
|
|
|
if (bill.getReceivePay().equals("0")) {
|
|
|
|
bill.setPayDate(date);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (feeType.getCode() == EnumRentContractManageFeeType.RENT_BUSSINESS_MANAGE_FEE.getCode()) {
|
|
|
|
bill.setEnergyFeesId(EnumBillAllType.RENT_BUSSINESS_MANAGE.getEnergyFeesId());
|
|
|
|
}else if (feeType.getCode() == EnumRentContractManageFeeType.RENT_OPERATING_MANAGE_FEE.getCode()) {
|
|
|
|
bill.setEnergyFeesId(EnumBillAllType.RENT_OPERATION_MANAGE.getEnergyFeesId());
|
|
|
|
}
|
|
|
|
bill.setCanEdit(EnumYesOrNo.NO.getCode()); |
|
|
|
|
|
|
|
//计算手续费
|
|
|
|
//BigDecimal servicePay = new BigDecimal(bill.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), record.getDecimalSize(), BigDecimal.ROUND_HALF_UP);
|
|
|
|
//bill.setServiceChargePay(servicePay.toPlainString());
|
|
|
|
//bill.setOwe(bill.getReceivePay() + bill.getServiceChargePay());
|
|
|
|
//bill.setOwe(bill.getReceivePay());
|
|
|
|
count++;
|
|
|
|
billList.add(bill);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (billList.size() > 0 ) {
|
|
|
|
wxAllBillMapper.insertBills(record.getTenantId(),billList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public ResultData getResultDataForUpdate(WxRentContract record, MallUserInfo user,int from,Date oldRentStartDate,boolean writeFinal,boolean setRevenJumps) {
|
|
|
|
//更新租赁合同信息
|
|
|
|
WxRentContract wxRentContract = wxRentContractMapper.selectById(record.getId());
|
|
|
|
|