fix: 82833 打包管理--开票的金额大于待确收金额了
This commit is contained in:
+76
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user