fix: 82833 打包管理--开票的金额大于待确收金额了

This commit is contained in:
2024-03-20 14:45:03 +08:00
parent abc1c46e50
commit 30313c3587
@@ -5,7 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.common.ProjectCommon;
import com.jero.common.enums.PaymentStatusEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.vo.ProjectStatusVO;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillProject;
import com.jero.mail.service.IPayMailBillProjectService;
import com.jero.mail.service.IPayMailBillService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.pack.entity.PayPackCompany;
import com.jero.pack.mapper.PayPackCompanyMapper;
@@ -19,6 +26,7 @@ import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -29,6 +37,7 @@ import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Description: pay_pack_company
@@ -49,6 +58,10 @@ public class PayPackCompanyServiceImpl extends ServiceImpl<PayPackCompanyMapper,
private PayPackCompanyMapper payPackCompanyMapper;
@Autowired
private ISysUserService sysUserService;
@Resource
private IPayMailBillProjectService payMailBillProjectService;
@Resource
private IPayMailBillService payMailBillService;
@Override
public IPage<PayPackCompany> queryPageList(Page<PayPackCompany> page, PayPackCompany payPackCompany) {
@@ -98,6 +111,7 @@ public class PayPackCompanyServiceImpl extends ServiceImpl<PayPackCompanyMapper,
log.error("",e);
throw new JeroBootException("该年份下已存在此打包企业!");
}
payPackCompany.setPackPrincipalName(sysUserService.getById(payPackCompany.getPackPrincipalId()).getRealname());
setPayPackCompanyEdit(payPackCompany,payPackCompanyOld);
payPackCompanyService.updateById(payPackCompany);
@@ -165,6 +179,7 @@ public class PayPackCompanyServiceImpl extends ServiceImpl<PayPackCompanyMapper,
payPackCompany.setPackContactTemporaryName(mailContactsName.getName());
payPackCompany.setInAccount(PayProjectCommon.IN_ACCOUNT0);
payPackCompany.setMakeInvoice(PayProjectCommon.MAKE_INVOICE0);
payPackCompany.setPaidAmount(new BigDecimal("0.00"));
return payPackCompany;
}
@@ -214,6 +229,67 @@ public class PayPackCompanyServiceImpl extends ServiceImpl<PayPackCompanyMapper,
}else{
payPackCompany.setPackContactId(payPackCompanyOld.getPackContactId());
}
BigDecimal receivableAmount = payPackCompany.getReceivableAmount();
Integer needInvoice = payPackCompany.getNeedInvoice();
if (Objects.isNull(payPackCompany.getReceivableAmount())) {
payPackCompany.setReceivableAmount(new BigDecimal("0.00"));
}
if (Objects.isNull(payPackCompany.getPaidAmount())) {
payPackCompany.setPaidAmount(new BigDecimal("0.00"));
}
// 待确收金额没有变更 && 验证来款方式没有变更
if (receivableAmount.compareTo(payPackCompanyOld.getReceivableAmount()) == 0 &&
needInvoice.equals(payPackCompanyOld.getNeedInvoice())) {
return payPackCompany;
}
// 验证待确收金额不能小于实收金额
if (receivableAmount.compareTo(payPackCompanyOld.getPaidAmount()) < 0) {
throw new JeroBootException("待确收金额不能小于实收金额!");
}
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProject = new LambdaQueryWrapper<>();
queryPayMailBillProject.eq(PayMailBillProject::getProjectId, payPackCompanyOld.getId());
List<PayMailBillProject> listPayMailBillProject = payMailBillProjectService.list(queryPayMailBillProject);
// 开票金额
BigDecimal invoice = new BigDecimal("0.00");
if (!CollectionUtils.isEmpty(listPayMailBillProject)) {
BigDecimal b = listPayMailBillProject.stream().map(PayMailBillProject::getInvoiceAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
invoice = invoice.add(b);
if (receivableAmount.compareTo(invoice) < 0) {
throw new JeroBootException("待确收金额不可小于实收金额,请先修改实际来款后再来修改!");
}
}
// 到账
// 待确收金额 = 实收金额 = 1
if (receivableAmount.compareTo(payPackCompanyOld.getPaidAmount()) == 0) {
payPackCompany.setInAccount(ProjectCommon.IN_ACCOUNT1);
}
// 0 = 实收金额 = 0
if (payPackCompanyOld.getPaidAmount().compareTo(new BigDecimal("0.00")) == 0) {
payPackCompany.setInAccount(ProjectCommon.IN_ACCOUNT0);
}
// 0 < 实收金额 && 实收金额 < 待确收金额 = 2
if (payPackCompanyOld.getPaidAmount().compareTo(new BigDecimal("0.00")) > 0
&& payPackCompanyOld.getPaidAmount().compareTo(receivableAmount) < 0) {
payPackCompany.setInAccount(ProjectCommon.IN_ACCOUNT2);
}
// 开票
// 不需要开票
if (Objects.equals(payPackCompanyOld.getNeedInvoice(), ProjectCommon.NEED_INVOICE0)) {
payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE0);
} else {
// 开票金额 = 待确收金额 = 1
if (invoice.compareTo(receivableAmount) == 0) {
payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE1);
}
// 开票金额 = 0 = 0
if (invoice.compareTo(new BigDecimal("0.00")) == 0) {
payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE0);
}
// 开票金额 > 0 && 开票金额 < 待确收金额 = 2
if (invoice.compareTo(new BigDecimal("0.00")) > 0 && invoice.compareTo(receivableAmount) < 0) {
payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE2);
}
}
return payPackCompany;
}
}