@@ -2525,15 +2525,22 @@ public class WxRentContractServiceImpl implements WxRentContractService {
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxRentContractRevenueSetSalesVo setRevenueSales(WxRentContract rentcontract, String sales, Long billId , Long propertyContractId) {
public WxRentContractRevenueSetSalesVo setRevenueSales(WxRentContract rentcontract, String sales, Date startime, Date endtime , Long propertyContractId) {
//如果账单存在缴费,付款,减免,冲抵,等情况,则不允许。
WxAllBill rentBill = wxAllBillMapper.selectById(billId, rentcontract.getTenantId());
if ((StringUtils.isNotBlank(rentBill.getPay()) && new BigDecimal(rentBill.getPay()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(rentBill.getSetOff()) && new BigDecimal(rentBill.getSetOff()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(rentBill.getReturnPay()) && new BigDecimal(rentBill.getReturnPay()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(rentBill.getUseMoney()) && new BigDecimal(rentBill.getUseMoney()).compareTo(new BigDecimal(0)) > 0 ) ) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"账单存在已经已经缴费或付款,扣减,减免,冲抵的情况,不允许操作");
}
WxAllBill bq = wxBillAllHelper.generateRentContractQueryBill(rentcontract, rentcontract.getId(),startime,endtime);
List<WxAllBill> rentBillList = wxAllBillMapper.findList(bq);
if (null == rentBillList || rentBillList.size() <= 0 ) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"未查询到账单");
}
for (int i = 0 ; i < rentBillList.size() ; i ++) {
WxAllBill rentBill = rentBillList.get(i);
if ((StringUtils.isNotBlank(rentBill.getPay()) && new BigDecimal(rentBill.getPay()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(rentBill.getSetOff()) && new BigDecimal(rentBill.getSetOff()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(rentBill.getReturnPay()) && new BigDecimal(rentBill.getReturnPay()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(rentBill.getUseMoney()) && new BigDecimal(rentBill.getUseMoney()).compareTo(new BigDecimal(0)) > 0 ) ) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"租金账单存在已经已经缴费或付款,扣减,减免,冲抵的情况,不允许操作");
}
}
BigDecimal salesDeciaml = new BigDecimal(sales);
@@ -2542,11 +2549,11 @@ public class WxRentContractServiceImpl implements WxRentContractService {
billDel.updateTenantInfo(rentcontract);
billDel.setRentContractId(rentcontract.getId());
billDel.setExtraCreateFrom(EnumBillExtraCreateFrom.RNET_REVENUE_SALES.getCode());
billDel.setStarttimeEqual(rentBill.getStarttime() );
billDel.setStarttimeEqual(startime );
wxAllBillMapper.deleteByRentReveneuSales(billDel);
//加上物业
WxAllBill propertyBill = null;
List< WxAllBill> propertyBillList = null;
BigDecimal propertyPrice = new BigDecimal(0);
WxPropertyContract propertyContract = null;
if (null != propertyContractId) {
@@ -2556,16 +2563,22 @@ public class WxRentContractServiceImpl implements WxRentContractService {
propertyBillq.setBillType(EnumBillAllType.PROPERTY.getCode());
propertyBillq.setEnergyFeesId(EnumBillAllType.PROPERTY.getEnergyFeesId());
propertyBillq.setIsPreview(EnumYesOrNo.NO.getCode());
propertyBillq.setStarttimeEqual(rentBill.getStarttime());
propertyBillq.setEndtimeEqual(rentBill.getEndtime());
List<WxAllBill> propertyBillList = wxAllBillMapper.findList(propertyBillq);
if (null != propertyBillList && propertyBillList.size() > 0) {
propertyBill = propertyBillList.get(0);
propertyBillq.setStarttimeEqual(startime);
propertyBillq.setEndtimeEqual(endtime);
propertyBillList = wxAllBillMapper.findList(propertyBillq);
for (int i = 0 ; i < propertyBillList.size() ; i ++) {
WxAllBill propertyBill = propertyBillList.get(i);
if ((StringUtils.isNotBlank(propertyBill.getPay()) && new BigDecimal(propertyBill.getPay()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(propertyBill.getSetOff()) && new BigDecimal(propertyBill.getSetOff()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(propertyBill.getReturnPay()) && new BigDecimal(propertyBill.getReturnPay()).compareTo(new BigDecimal(0)) > 0 )
|| (StringUtils.isNotBlank(propertyBill.getUseMoney()) && new BigDecimal(propertyBill.getUseMoney()).compareTo(new BigDecimal(0)) > 0 ) ) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"物业账单存在已经已经缴费或付款,扣减,减免,冲抵的情况,不允许操作");
}
}
}
//根据销售额来计算平均每计费周期营业额,相当于设置联营扣点保底营业额
BigDecimal unitRevenuePrice = calcuteUnitPrice(rentBill.getStarttime(), rentBill.getEndtime(),salesDeciaml,
BigDecimal unitRevenuePrice = calcuteUnitPrice(startime, endtime ,salesDeciaml,
rentcontract.getPriceUnit(),rentcontract.getDayPriceCalcute(),rentcontract.getMonthAverageDays(),rentcontract.getAdjustPeriod(),rentcontract.getReceivePeriodUnit());
//设置保底营业额
rentcontract.setRevenue(unitRevenuePrice.toPlainString());
@@ -2575,7 +2588,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
Constant.default_long_decimal_size,RoundingMode.HALF_UP).toPlainString());
}else if (rentcontract.getType().intValue() == EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode()) {
//取高才能加上物业费
if (null != propertyContractId && null != propertyBill) {
if (null != propertyContractId && null != propertyBillList ) {
propertyContract = wxPropertyContractMapper.selectById(propertyContractId);
//有可能物业的单价时间跟租金的不一致,需要根据物业的单价重新计算
//propertyPrice = calcuteRentPropertyPrice(rentcontract, propertyContract, rentBill.getStarttime(), rentBill.getEndtime(),
@@ -2601,8 +2614,8 @@ public class WxRentContractServiceImpl implements WxRentContractService {
for( int i = 0 ; i < yearList.size() ; i ++) {
Date yearStartDate = yearList.get(i);
Date yearEndDate = DateUtils.getTimeAfterMonths(12, yearStartDate);
if (rentBill.getStarttime() .equals(yearStartDate) ||
(rentBill.getStarttime().after(yearStartDate) && (rentBill.getEndtime().before(yearEndDate) || rentBill.getEndtime() .equals(yearEndDate)) )) {
if (startime .equals(yearStartDate) ||
(startime.after(yearStartDate) && (endtime.before(yearEndDate) || endtime .equals(yearEndDate)) )) {
yearIndex = i;
break;
}
@@ -2637,11 +2650,11 @@ public class WxRentContractServiceImpl implements WxRentContractService {
List<Date> freePeriods = getFreeDays(rentcontract);
//根据扣点规则和租赁相关费用取高来计算费用
String needpay = WxRentContractHelper.getNeedPayMoney(freePeriods,rentcontract, priceDecimal.toPlainString(),rentBill.getStarttime() ,
r entBill.getEn dtime() ,0,0,false,rentcontract.getReceivePeriodUnit(),rentcontract.getReceivePeriod());
String needpay = WxRentContractHelper.getNeedPayMoney(freePeriods,rentcontract, priceDecimal.toPlainString(),startime ,
endtime,0,0,false,rentcontract.getReceivePeriodUnit(),rentcontract.getReceivePeriod());
//计算跳点。
BigDecimal[] jumppays = calcuteReveneuJump(salesDeciaml, rentcontract,rentBill.getStarttime(), rentBill.getEndtime() ,freePeriods);
BigDecimal[] jumppays = calcuteReveneuJump(salesDeciaml, rentcontract,startime, endtime ,freePeriods);
BigDecimal jumpRevenuePay = jumppays[0];
BigDecimal jumpRentPay = jumppays[1];
BigDecimal saleDecimalValid = jumppays[2];
@@ -2663,7 +2676,8 @@ public class WxRentContractServiceImpl implements WxRentContractService {
WxRentContractRevenueSales rs = new WxRentContractRevenueSales();
rs.updateTenantInfo(rentcontract);
rs.setRentContractId(rentcontract.getId());
rs.setBillId(billId);
rs.setStarttimeEqual(startime);
rs.setEndtimeEqual(endtime);
List<WxRentContractRevenueSales> saleList = wxRentContractRevenueSalesMapper.findList(rs);
if (null != saleList && saleList.size() > 0 ) {
WxRentContractRevenueSales sale = saleList.get(0);
sale.setCalcuteMoney(needpay);
@@ -2676,11 +2690,9 @@ public class WxRentContractServiceImpl implements WxRentContractService {
final IdWorker idWorker = IdWorker.get();
sale.setId(idWorker.nextId());
sale.updateTenantInfo(rentcontract);
sale.setBillId(billId);
sale.setStarttime(rentBill.getStarttime());
sale.setEndtime(rentBill.getEndtime());
sale.setStarttime(startime);
sale.setEndtime(endtime);
sale.setRentContractId(rentcontract.getId());
sale.setBillMoney(rentBill.getReceivePay());
sale.setSaleMoney(sales);
sale.setSaleMoneyValid(saleDecimalValid.toPlainString());
sale.setCalcuteMoney(needpay);
@@ -2689,11 +2701,11 @@ public class WxRentContractServiceImpl implements WxRentContractService {
sale.setUpdateTime(new Date());
wxRentContractRevenueSalesMapper.insert(sale);
}
return handleBills(sb,rentcontract,propertyContractId,needpay,rentBill,null,null ,EnumBillExtraCreateFrom.RNET_REVENUE_SALES,propertyBill,rentPriceArrs,bussinessManagerPriceArrs,operationManagerPriceArrs,propertyContractArrs,yearIndex);
return handleBills(sb,rentcontract,propertyContractId,needpay,rentBillList,startime,endtime ,EnumBillExtraCreateFrom.RNET_REVENUE_SALES,propertyBillList ,rentPriceArrs,bussinessManagerPriceArrs,operationManagerPriceArrs,propertyContractArrs,yearIndex);
}
private WxRentContractRevenueSetSalesVo handleBills(StringBuffer sb,WxRentContract rentcontract,Long propertyContractId, String needpay,WxAllBill rentBill,Date rentStartDate,Date rentE ndDate,
EnumBillExtraCreateFrom createFrom,WxAllBill propertyBill,String[] rentPriceArrs,String[] bussinessManagerPriceArrs,String[] operationManagerPriceArrs,String[] propertyContractArrs,int yearIndex) {
private WxRentContractRevenueSetSalesVo handleBills(StringBuffer sb,WxRentContract rentcontract,Long propertyContractId, String needpay,List<WxAllBill> rentBillList,Date startDate,Date e ndDate,
EnumBillExtraCreateFrom createFrom,List< WxAllBill> propertyBillList ,String[] rentPriceArrs,String[] bussinessManagerPriceArrs,String[] operationManagerPriceArrs,String[] propertyContractArrs,int yearIndex) {
//计算资金分摊的比例 租金,商业管理费,营业管理费,物业费。每个科目税点不一样,这样分摊能降低成本
String[] moneyShareRates = new String[4];
@@ -2736,55 +2748,49 @@ public class WxRentContractServiceImpl implements WxRentContractService {
String propertyRate = moneyShareRates[3];
//更新账单费用
String rentneedpay = new BigDecimal(needpay).multiply(new BigDecimal(rentRate)).setScale(rentcontract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString();
if (null != rentBill) {
sb.append(" 租金原合同租金金额:"+rentBill.getNeedPay()+"元,分摊比率为:"+rentRate+",计算之后为:"+rentneedpay+"元。");
rentBill.setMoneyChangeDetail(sb.toString());
rentBill.setReceivePay(rentneedpay);
rentBill.setBillRemark(createFrom.getMessage()+",自动计算:"+sb.toString());
rentBill.setUpdatetime(new Date());
if (new BigDecimal(rentBill.getOwe()).compareTo(new BigDecimal(0)) < 0 ) {
//rentBill.setStatus(EnumBillStatus.STOP_TO_SETTLE.getCode());
}else {
//rentBill.setStatus(EnumBillStatus.PAID.getCode());
if (null != rentBillList) {
for (int i = 0 ; i < rentBillList.size(); i++){
WxAllBill _rb = rentBillList.get(i);
wxAllBillMapper.deleteById(_rb.getId(), _rb.getTenantId());
}
wxAllBillMapper.updateById(rentBill);
}else {
rentBill = generateRentBill(rentcontract,rentneedpay,rentRate,rentStartDate,rentEndDate,createFrom);
}
List<Long> shopIdList = rentcontract.shopIdsByRentInfo();
Map<Long, BigDecimal> shopAreaRateMap = rentcontract.getRentShopAreaRate();
WxShopUsers suq = new WxShopUsers();
suq.updateTenantInfo(rentcontract);
suq.setShopIds(shopIdList);
suq.setStatus(EnumShopUsersStatus.LIVE.getCode());
Map<Long,WxShopUsers> shopUserMap = wxShopService.getShopUserMap(suq);
//物业账单应收就改为0,因为金额已经合并了
WxAllBill propeBill = generatePropertyBill(shopIdList,shopUserMap,rentcontract, propertyContractId, rentBill,propertyBill, needpay, propertyRate,createFrom);
List<WxAllBill> rentBill = generateRentBill(shopIdList,shopUserMap,shopAreaRateMap,rentcontract,rentneedpay,rentRate,startDate,endDate,createFrom);
List<WxAllBill> propeBill = generatePropertyBill(shopIdList,shopUserMap,shopAreaRateMap,rentcontract, propertyContractId,propertyBillList,startDate,endDate, needpay, propertyRate,createFrom);
WxAllBill bmbill = generateManageBill(shopIdList,shopUserMap,rentcontract, rentBill , needpay, bussinessRate, EnumBillAllType.RENT_BUSSINESS_MANAGE,createFrom);
List< WxAllBill> bmbill = generateManageBill(shopIdList,shopUserMap,shopAreaRateMap,rentcontract, startDate,endDate , needpay, bussinessRate, EnumBillAllType.RENT_BUSSINESS_MANAGE,createFrom);
WxAllBill ombill = generateManageBill(shopIdList,shopUserMap,rentcontract, rentBill , needpay, operaterRate, EnumBillAllType.RENT_OPERATION_MANAGE,createFrom);
List< WxAllBill> ombill = generateManageBill(shopIdList,shopUserMap,shopAreaRateMap,rentcontract, startDate,endDate , needpay, operaterRate, EnumBillAllType.RENT_OPERATION_MANAGE,createFrom);
WxRentContractRevenueSetSalesVo vo = new WxRentContractRevenueSetSalesVo();
vo.setTotal(needpay);
List<WxAllBill> blist = new ArrayList<WxAllBill>();
blist.add(rentBill);
blist.addAll (rentBill);
if (null != propeBill) {
blist.add(propeBill);
blist.addAll (propeBill);
}
if (null != bmbill) {
blist.add(bmbill);
blist.addAll (bmbill);
}
if (null != ombill) {
blist.add(ombill);
blist.addAll (ombill);
}
vo.setBillList(blist);;
return vo;
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxAllBill generateManageBill(List<Long> shopIds,Map<Long,WxShopUsers> shopUserMap,WxRentContract rentcontract,WxAllBill rentBill,String total,String rate,EnumBillAllType type,EnumBillExtraCreateFrom createFrom) {
public List<WxAllBill> generateManageBill(List<Long> shopIds,Map<Long,WxShopUsers> shopUserMap,Map<Long, BigDecimal> shopAreaRateMap,WxRentContract rentcontract,
Date starttime, Date endtime,String total,String rate,EnumBillAllType type,EnumBillExtraCreateFrom createFrom) {
//商业管理费,营运管理费应收改为0,因为金额已经合并了
WxAllBill bussinessmanageBill = new WxAllBill();
bussinessmanageBill.updateTenantInfo(rentcontract);
@@ -2792,102 +2798,72 @@ public class WxRentContractServiceImpl implements WxRentContractService {
bussinessmanageBill.setEnergyFeesId(type.getEnergyFeesId());
bussinessmanageBill.setRentContractId(rentcontract.getId());
bussinessmanageBill.setIsPreview(EnumYesOrNo.NO.getCode());
bussinessmanageBill.setStarttimeEqual(rentBill.getStarttime() );
bussinessmanageBill.setEndtimeEqual(r entBill.getEn dtime() );
bussinessmanageBill.setStarttimeEqual(starttime );
bussinessmanageBill.setEndtimeEqual(endtime);
List<WxAllBill> bmbillList = wxAllBillMapper.findList(bussinessmanageBill);
WxAllBill bmbill = null;
Map<Long, BigDecimal> shopAreaRateMap = rentcontract.getRentShopAreaRate();
List<Long> shopIdList = rentcontract.shopIdsByRentInfo();
String bussinessmoney = new BigDecimal(total).multiply(new BigDecimal(rate)).setScale(rentcontract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString();
if (null != bmbillList && bmbillList.size() > 0 ) {
//查询每一个铺位的
for (int i = 0 ; i < bmbillList.size() ; i ++) {
WxAllBill b = bmbillList.get(i);
Long sid = b.getShopId();
wxAllBillMapper.deleteById(b.getId(),b.getTenantId());
}
}
if (new BigDecimal(bussinessmoney).compareTo(new BigDecimal(0)) > 0 ) {
List<WxAllBill> billList = new ArrayList<WxAllBill>();
for (int i = 0 ; i < shopIds.size(); i++) {
Long sid = shopIds.get(i);
BigDecimal shoprate = shopAreaRateMap.get(sid);
String oldmoney = b.getNeedPay();
String newmoney = new BigDecimal(bussinessmoney).multiply(shoprate).setScale(rentcontract.getDecimalSize()).toPlainString();
b.setMoneyChangeDetail("原合同商业管理费金额:"+bmbill.getNeedPay()+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。本铺分摊:"+newmoney+"元");
b.setReceivePay(newmoney);
b.setNeedPay(newmoney);
b.setBillRemark(createFrom.getMessage()+",自动计算。"+"原合同商业管理费金额:"+oldmoney+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。本铺分摊:"+newmoney+"元");
WxAllBill b = new WxAllBill();
final IdWorker idWorker = IdWorker.get();
b.setId(idWorker.nextId());
b.updateTenantInfo(rentcontract);
b.setBillType(type.getCode());
b.setEnergyFeesId(type.getEnergyFeesId());
b.setRentContractId(rentcontract.getId());
b.setIsPreview(EnumYesOrNo.NO.getCode());
b.setCanEdit(EnumYesOrNo.NO.getCode());
b.setShopId(sid);
b.setCusName(shopUserMap.get(sid).getName());
b.setCreatetime(new Date());
b.setUpdatetime(new Date());
wxAllBillMapper.updateById(b);
}
bmbill = new WxAllBill();
try {
BeanUtils.copyProperties(bmbill, bmbillList.get(0));
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error("generateManageBill error.",e);
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单错误");
}
bmbill.setMoneyChangeDetail("原合同商业管理费金额:"+bmbill.getNeedPay()+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。");
bmbill.setReceivePay(bussinessmoney);
bmbill.setBillRemark(createFrom.getMessage()+",自动计算。"+"原合同商业管理费金额:"+bmbill.getNeedPay()+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。");
}else {
if (new BigDecimal(bussinessmoney).compareTo(new BigDecimal(0)) > 0 ) {
for (int i = 0 ; i < shopIdList.size(); i++) {
Long sid = shopIdList.get(i);
BigDecimal shoprate = shopAreaRateMap.get(sid);
String newmoney = new BigDecimal(bussinessmoney).multiply(shoprate).setScale(rentcontract.getDecimalSize()).toPlainString();
WxAllBill b = new WxAllBill();
final IdWorker idWorker = IdWorker.get();
b.setId(idWorker.nextId());
b.updateTenantInfo(rentcontract);
b.setBillType(type.getCode());
b.setEnergyFeesId(type.getEnergyFeesId());
b.setRentContractId(rentcontract.getId());
b.setIsPreview(EnumYesOrNo.NO.getCode());
b.setCanEdit(EnumYesOrNo.NO.getCode());
b.setShopId(sid);
b.setCreatetime(new Date());
b.setUpdatetime(new Date());
b.setPriceDetail("");
b.setNeedPay(newmoney);
b.setReceivePay(newmoney);
b.setPay("0");
b.setStarttime(rentBill.getStarttime());
b.setEndtime(rentBill.getEndtime());
b.setBillRemark(createFrom.getMessage()+",自动计算创建,总计分摊比率为:"+rate+",本铺分摊:"+newmoney+"元");
b.setExtraCreateFrom(createFrom.getCode());
b.setMoneyChangeDetail("自动计算创建,总计分摊比率为:"+rate+",应收金额为:"+bussinessmoney+"元,");
wxAllBillMapper.insert(bmbill);
if (null == bmbill) {
bmbill = new WxAllBill();
try {
BeanUtils.copyProperties(bmbill, b);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error("generateManageBill error.",e);
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单错误");
}
bmbill.setBillRemark(createFrom.getMessage()+",自动计算创建,总计分摊比率为:"+rate);
bmbill.setReceivePay(bussinessmoney);
}
}
}else {
return null;
b.setPriceDetail("");
b.setNeedPay(newmoney);
b.setReceivePay(newmoney);
b.setPay("0");
b.setStarttime(starttime);
b.setEndtime(endtime);
b.setBillRemark(createFrom.getMessage()+"自动计算创建,科目总计分摊比率为:"+rate+",总应收金额为:"+bussinessmoney+"元,"+",本铺分担比例"+shoprate.toEngineeringString());
b.setExtraCreateFrom(createFrom.getCode());
b.setMoneyChangeDetail("自动计算创建,科目总计分摊比率为:"+rate+",总应收金额为:"+bussinessmoney+"元,"+",本铺分担比例"+shoprate.toEngineeringString());
wxAllBillMapper.insert(b);
billList.add(b);
}
return billList;
}
return bmbill;
return null;
}
private WxAllBill generatePropertyBill(List<Long> shopIds,Map<Long,WxShopUsers> shopUserMap,WxRentContract rentcontract,Long propertyContractId,WxAllBill rentBill,WxAllBill propertyBill,String total,String rate,EnumBillExtraCreateFrom createFrom) {
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public List<WxAllBill> generatePropertyBill(List<Long> shopIds,Map<Long,WxShopUsers> shopUserMap,Map<Long, BigDecimal> shopAreaRateMap,WxRentContract rentcontract,
Long propertyContractId,List<WxAllBill> propertyBillList,Date starttime,Date endtime,String total,String rate,EnumBillExtraCreateFrom createFrom) {
String bussinessmoney = new BigDecimal(total).multiply(new BigDecimal(rate)).setScale(rentcontract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString();
if (null != propertyBill ) {
propertyBill.setMoneyChangeDetail("原合同商业管理费金额:"+propertyBill.getNeedPay()+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。");
propertyBill.setReceivePay(bussinessmoney);
propertyBill.setBillRemark(createFrom.getMessage()+",自动计算"+"原合同商业管理费金额:"+propertyBill.getNeedPay()+"元,总计分摊比率为:"+rate+",计算调整为:"+bussinessmoney+"元。");
if (new BigDecimal(propertyBill.getOwe()).compareTo(new BigDecimal(0)) < 0 ) {
//propertyBill.setStatus(EnumBillStatus.STOP_TO_SETTLE.getCode());
}else {
//bmbill.setStatus(EnumBillStatus.PAID.getCode());
if (null != propertyBillList ) {
if (null != propertyBillList) {
for (int i = 0 ; i < propertyBillList.size(); i++){
WxAllBill _rb = propertyBillList.get(i);
wxAllBillMapper.deleteById(_rb.getId(), _rb.getTenantId());
}
}
propertyBill.setUpdatetime(new Date());
wxAllBillMapper.updateById(propertyBill);
return propertyBill;
}else {
if (new BigDecimal(bussinessmoney).compareTo(new BigDecimal(0)) > 0 ) {
}
if (new BigDecimal(bussinessmoney).compareTo(new BigDecimal(0)) > 0 ) {
List<WxAllBill> billList = new ArrayList<WxAllBill>();
for (int i = 0 ; i < shopIds.size() ; i ++) {
Long sid = shopIds.get(i);
BigDecimal shoprate = shopAreaRateMap.get(sid);
WxAllBill bmbill = new WxAllBill();
final IdWorker idWorker = IdWorker.get();
bmbill.setId(idWorker.nextId());
@@ -2898,51 +2874,61 @@ public class WxRentContractServiceImpl implements WxRentContractService {
bmbill.setPropertyContractId(propertyContractId);
bmbill.setIsPreview(EnumYesOrNo.NO.getCode());
bmbill.setCanEdit(EnumYesOrNo.NO.getCode());
bmbill.setMerchantId(rentcontract.getMerchantId());
bmbill.setShopId(sid);
bmbill.setCusName(shopUserMap.get(sid).getName());
bmbill.setCreatetime(new Date());
bmbill.setUpdatetime(new Date());
bmbill.setPriceDetail("");
bmbill.setNeedPay(bussinessmoney);
bmbill.setReceivePay(bussinessmoney);
bmbill.setPay("0");
bmbill.setStarttime(rentBill.getStarttime() );
bmbill.setEndtime(r entBill.getEn dtime() );
bmbill.setBillRemark(createFrom.getMessage()+",自动计算创建,总计分摊比率为:"+rate );
bmbill.setStarttime(starttime );
bmbill.setEndtime(endtime);
bmbill.setBillRemark(createFrom.getMessage()+".自动计算创建,科目分摊比率为:"+rate+",总应收金额为:"+bussinessmoney+"元,"+",本铺分担比例"+shoprate.toEngineeringString() );
bmbill.setExtraCreateFrom(createFrom.getCode());
bmbill.setMoneyChangeDetail("自动计算创建,总计分摊比率为:"+rate+",应收金额为:"+bussinessmoney+"元," );
bmbill.setMoneyChangeDetail("自动计算创建,科目分摊比率为:"+rate+",总应收金额为:"+bussinessmoney+"元,"+",本铺分担比例"+shoprate.toEngineeringString() );
wxAllBillMapper.insert(bmbill);
return bmbill ;
billList.add(bmbill) ;
}
return null ;
return billList ;
}
return null;
}
private WxAllBill generateRentBill(WxRentContract rentcontract,String money,String rate,Date starttime,Date endtime,EnumBillExtraCreateFrom createFrom) {
WxAllBill bmbill = new WxAllBill();
final IdWorker idWorker = IdWorker.get();
bmbill.setId(idWorker.nextId());
bmbill.updateTenantInfo(rentcontract);
bmbill.setBillType(EnumBillAllType.RENT.getCode());
bmbill.setEnergyFeesId(EnumBillAllType.RENT.getEnergyFeesId());
bmbill.setRentContractId(rentcontract.getId());
bmbill.setIsPreview(EnumYesOrNo.NO.getCode());
bmbill.setCanEdit(EnumYesOrNo.NO.getCode());
bmbill.setMerchantId(rentcontract.getMerchantId());
bmbill.setCreatetime(new Date());
bmbill.setUpdatetime(new Date());
bmbill.setPriceDetail("");
bmbill.setNeedPay(money);
bmbill.setReceivePay(money);
bmbill.setPay("0");
bmbill.setStarttime(starttime);
bmbill.setEndtime(endtime);
bmbill.setBillRemark(createFrom.getMessage()+",自动计算创建,分摊比例为"+rate);
bmbill.setExtraCreateFrom(createFrom.getCode());
bmbill.setMoneyChangeDetail("自动计算创建,分摊比例为"+rate+",计算应收金额为:"+money+"元,");
wxAllBillMapper.insert(bmbill);
return bmbill;
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public List<WxAllBill> generateRentBill(List<Long> shopIds,Map<Long,WxShopUsers> shopUserMap,Map<Long, BigDecimal> shopAreaRateMap,WxRentContract rentcontract,
String money,String rate,Date starttime,Date endtime,EnumBillExtraCreateFrom createFrom) {
List<WxAllBill> billList = new ArrayList<WxAllBill>();
for (int i = 0 ; i < shopIds.size(); i++) {
Long sid = shopIds.get(i);
BigDecimal shoprate = shopAreaRateMap.get(sid);
WxAllBill bmbill = new WxAllBill();
final IdWorker idWorker = IdWorker.get();
bmbill.setId(idWorker.nextId());
bmbill.updateTenantInfo(rentcontract);
bmbill.setBillType(EnumBillAllType.RENT.getCode());
bmbill.setEnergyFeesId(EnumBillAllType.RENT.getEnergyFeesId());
bmbill.setRentContractId(rentcontract.getId());
bmbill.setIsPreview(EnumYesOrNo.NO.getCode());
bmbill.setCanEdit(EnumYesOrNo.NO.getCode());
bmbill.setShopId(sid);
bmbill.setCusName(shopUserMap.get(sid).getName());
bmbill.setCreatetime(new Date());
bmbill.setUpdatetime(new Date());
bmbill.setPriceDetail("");
bmbill.setNeedPay(new BigDecimal(money).multiply(shoprate).toPlainString());
bmbill.setReceivePay(bmbill.getNeedPay());
bmbill.setPay("0");
bmbill.setStarttime(starttime);
bmbill.setEndtime(endtime);
bmbill.setBillRemark(createFrom.getMessage()+".自动计算创建,科目分摊比例为"+rate+",计算总应收金额为:"+money+"元,"+",本铺分担比例"+shoprate.toEngineeringString());
bmbill.setExtraCreateFrom(createFrom.getCode());
bmbill.setMoneyChangeDetail("自动计算创建,科目分摊比例为"+rate+",计算总应收金额为:"+money+"元,"+",本铺分担比例"+shoprate.toEngineeringString());
wxAllBillMapper.insert(bmbill);
billList.add(bmbill);
}
return billList;
}
@Override