开票撤销修改
This commit is contained in:
+147
-139
@@ -25,7 +25,6 @@ import com.jero.company.service.IPayCompanyManagementService;
|
||||
import com.jero.company.service.IPayContactsManagementService;
|
||||
import com.jero.config.StaticConfig;
|
||||
import com.jero.contract.common.PayIncomeContractCommon;
|
||||
import com.jero.mail.commont.constant;
|
||||
import com.jero.mail.entity.BillingInfo;
|
||||
import com.jero.mail.entity.PayMailBill;
|
||||
import com.jero.mail.entity.PayMailBillProject;
|
||||
@@ -64,7 +63,6 @@ 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.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
@@ -646,150 +644,160 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
||||
}
|
||||
// 删除邮寄票据表
|
||||
removeById(id);
|
||||
|
||||
// 更新项目信息
|
||||
updateProjectInfo(id);
|
||||
|
||||
// 删除邮寄票据关联项目表
|
||||
payMailBillProjectService.removeById(payMailBillProjectObj.getId());
|
||||
// 更新项目信息
|
||||
updateProjectInfo(payMailBillProjectObj);
|
||||
}
|
||||
|
||||
public void updateProjectInfo(String id){
|
||||
//变更5种项目的邮寄状态
|
||||
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProject = new LambdaQueryWrapper<>();
|
||||
queryPayMailBillProject.eq(PayMailBillProject::getBillId,id);
|
||||
List<PayMailBillProject> list1 = payMailBillProjectService.list(queryPayMailBillProject);
|
||||
for(PayMailBillProject one:list1) {
|
||||
if (ObjectUtils.isNotEmpty(one)) {
|
||||
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProjectTwo = new LambdaQueryWrapper<>();
|
||||
queryPayMailBillProjectTwo.eq(PayMailBillProject::getProjectId, one.getProjectId());
|
||||
List<PayMailBillProject> listPayMailBillProject = payMailBillProjectService.list(queryPayMailBillProjectTwo);
|
||||
public void updateProjectInfo(PayMailBillProject payMailBillProject){
|
||||
int makeInvoice=4;
|
||||
BigDecimal amountReceivable = new BigDecimal("0");//待确收金额
|
||||
Integer needInvoice = 0;//是否需要发票
|
||||
BigDecimal invoiceAmount = payMailBillProject.getInvoiceAmount();
|
||||
if(Objects.isNull(invoiceAmount)){
|
||||
invoiceAmount = new BigDecimal("0");//本次开票金额
|
||||
}
|
||||
BigDecimal oldInvoiceAmount;//开票金额
|
||||
BigDecimal noTaxAmount = payMailBillProject.getNoTaxAmount();
|
||||
BigDecimal tax = payMailBillProject.getTax();
|
||||
if (noTaxAmount == null || tax == null){
|
||||
noTaxAmount = invoiceAmount.divide(StaticConfig.TAX_RATE_CALCULATE, 2, RoundingMode.HALF_UP);
|
||||
tax = invoiceAmount.subtract(noTaxAmount);
|
||||
}
|
||||
switch (payMailBillProject.getProjectType().toString()) {
|
||||
|
||||
// 开票金额
|
||||
BigDecimal invoice = new BigDecimal("0.00");
|
||||
// 开票次数
|
||||
int c = listPayMailBillProject.size();
|
||||
// 邮寄次数
|
||||
int y = 0;
|
||||
if (!CollectionUtils.isEmpty(listPayMailBillProject)) {
|
||||
BigDecimal b = listPayMailBillProject.stream().map(PayMailBillProject::getInvoiceAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
invoice = invoice.add(b);
|
||||
List<String> list = listPayMailBillProject.stream().map(PayMailBillProject::getBillId).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<PayMailBill> queryPayMailBill = new LambdaQueryWrapper<>();
|
||||
queryPayMailBill.in(PayMailBill::getId, list);
|
||||
queryPayMailBill.eq(PayMailBill::getPostStatus, ProjectCommon.POST_STATUS1);
|
||||
List<PayMailBill> listPayMailBill = payMailBillService.list(queryPayMailBill);
|
||||
y = listPayMailBill.size();
|
||||
// 普通项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE1:
|
||||
PayCommonProject payCommonProject = payCommonProjectMapper.selectById(payMailBillProject.getProjectId());
|
||||
amountReceivable = payCommonProject.getReceivableAmount();//应收
|
||||
needInvoice = payCommonProject.getNeedInvoice();//是否需要发票
|
||||
oldInvoiceAmount = payCommonProject.getInvoiceAmount();
|
||||
if(oldInvoiceAmount==null){
|
||||
oldInvoiceAmount= new BigDecimal("0");
|
||||
}
|
||||
//获取项目待确收金额
|
||||
BigDecimal receivableAmount;
|
||||
|
||||
List<PayContactsManagementTemporary> listId = new ArrayList<>();
|
||||
//判断变更那个项目的邮寄状态
|
||||
if (GlobalConstants.ONE.equals(one.getProjectType())) {
|
||||
PayCommonProject payCommonProjectOld = payCommonProjectService.getById(one.getProjectId());
|
||||
if (Objects.isNull(payCommonProjectOld)) {
|
||||
throw new JeroBootException("项目不存在!");
|
||||
}
|
||||
PayContactsManagementTemporary payCommonProjectTemporary = payContactsManagementTemporaryService.getById(payCommonProjectOld.getContactsTemporaryId());
|
||||
if (!Objects.isNull(payCommonProjectTemporary)) {
|
||||
listId.add(payCommonProjectTemporary);
|
||||
}
|
||||
|
||||
receivableAmount = payCommonProjectOld.getReceivableAmount();
|
||||
PayCommonProject payCommonProject = new PayCommonProject();
|
||||
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
|
||||
payCommonProject.setId(one.getProjectId());
|
||||
payCommonProject.setMail(constant.ONE);
|
||||
payCommonProjectService.updateById(payCommonProject);
|
||||
} else if (y <= c && y > 0) {
|
||||
payCommonProject.setId(one.getProjectId());
|
||||
payCommonProject.setMail(constant.TWO);
|
||||
payCommonProjectService.updateById(payCommonProject);
|
||||
}
|
||||
} else if (GlobalConstants.TWO.equals(one.getProjectType())) {
|
||||
PayWorkingGroupSubItem payWorkingGroupSubItemOld = payWorkingGroupSubItemService.getById(one.getProjectId());
|
||||
if (Objects.isNull(payWorkingGroupSubItemOld)) {
|
||||
throw new JeroBootException("项目不存在!");
|
||||
}
|
||||
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(payWorkingGroupSubItemOld.getWorkingGroupId());
|
||||
if (Objects.isNull(payWorkingGroup)) {
|
||||
throw new JeroBootException("工作组不存在!");
|
||||
}
|
||||
List<PayWorkingGroupSubItemContacts> subItemContacts = payWorkingGroupSubItemContactsMapper.getSubItemContacts(one.getProjectId());
|
||||
for (PayWorkingGroupSubItemContacts subItemContact : subItemContacts) {
|
||||
PayContactsManagementTemporary payWorkingTemporary = payContactsManagementTemporaryService.getById(subItemContact.getContactsTemporaryId());
|
||||
if (!Objects.isNull(payWorkingTemporary)) {
|
||||
listId.add(payWorkingTemporary);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
receivableAmount = payWorkingGroupSubItemOld.getReceivableAmount();
|
||||
PayWorkingGroupSubItem payWorkingGroupSubItem = new PayWorkingGroupSubItem();
|
||||
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
|
||||
payWorkingGroupSubItem.setId(one.getProjectId());
|
||||
payWorkingGroupSubItem.setMail(constant.ONE);
|
||||
payWorkingGroupSubItemService.updateById(payWorkingGroupSubItem);
|
||||
} else if (y <= c && y > 0) {
|
||||
payWorkingGroupSubItem.setId(one.getProjectId());
|
||||
payWorkingGroupSubItem.setMail(constant.TWO);
|
||||
payWorkingGroupSubItemService.updateById(payWorkingGroupSubItem);
|
||||
}
|
||||
} else if (GlobalConstants.THREE.equals(one.getProjectType())) {
|
||||
PayMeetingSituation meetingPayContactsManagementOld = payMeetingSituationService.getById(one.getProjectId());
|
||||
if (Objects.isNull(meetingPayContactsManagementOld)) {
|
||||
throw new JeroBootException("项目不存在!");
|
||||
}
|
||||
PayMeeting payMeeting = payMeetingService.getById(meetingPayContactsManagementOld.getMeetingId());
|
||||
if (Objects.isNull(payMeeting)) {
|
||||
throw new JeroBootException("会议不存在!");
|
||||
}
|
||||
PayContactsManagement meetingPayContactsManagement = payContactsManagementService.getById(meetingPayContactsManagementOld.getContractId());
|
||||
if (!Objects.isNull(meetingPayContactsManagement)) {
|
||||
String str = JSON.toJSONString(meetingPayContactsManagement);
|
||||
PayContactsManagementTemporary meetingTemporary = JSONObject.parseObject(str, PayContactsManagementTemporary.class);
|
||||
listId.add(meetingTemporary);
|
||||
}
|
||||
|
||||
receivableAmount = meetingPayContactsManagementOld.getAmountReceivable();
|
||||
PayMeetingSituation payMeetingSituation = new PayMeetingSituation();
|
||||
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
|
||||
payMeetingSituation.setId(one.getProjectId());
|
||||
payMeetingSituation.setMail(constant.ONE);
|
||||
payMeetingSituationService.updateById(payMeetingSituation);
|
||||
} else if (y <= c && y > 0) {
|
||||
payMeetingSituation.setId(one.getProjectId());
|
||||
payMeetingSituation.setMail(constant.TWO);
|
||||
payMeetingSituationService.updateById(payMeetingSituation);
|
||||
}
|
||||
} else if (GlobalConstants.FORE.equals(one.getProjectType())) {
|
||||
PayMemberProjectSubitem payMemberProjectSubitemOld = payMemberProjectSubitemService.getById(one.getProjectId());
|
||||
if (Objects.isNull(payMemberProjectSubitemOld)) {
|
||||
throw new JeroBootException("项目不存在!");
|
||||
}
|
||||
PayMemberProject payMemberProject = memberProjectService.getById(payMemberProjectSubitemOld.getProjectId());
|
||||
if (Objects.isNull(payMemberProject)) {
|
||||
throw new JeroBootException("会员项目不存在!");
|
||||
}
|
||||
PayContactsManagementTemporary memberTemporary = payContactsManagementTemporaryService.getById(payMemberProjectSubitemOld.getCompanyContactTemporaryId());
|
||||
if (!Objects.isNull(memberTemporary)) {
|
||||
listId.add(memberTemporary);
|
||||
}
|
||||
|
||||
receivableAmount = payMemberProjectSubitemOld.getAmountReceivable();
|
||||
PayMemberProjectSubitem payMemberProjectSubitem = new PayMemberProjectSubitem();
|
||||
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
|
||||
payMemberProjectSubitem.setId(one.getProjectId());
|
||||
payMemberProjectSubitem.setMail(constant.ONE);
|
||||
payMemberProjectSubitemService.updateById(payMemberProjectSubitem);
|
||||
} else if (y <= c && y > 0) {
|
||||
payMemberProjectSubitem.setId(one.getProjectId());
|
||||
payMemberProjectSubitem.setMail(constant.TWO);
|
||||
payMemberProjectSubitemService.updateById(payMemberProjectSubitem);
|
||||
}
|
||||
//之前开票总额+本次开票金额
|
||||
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||
//税额
|
||||
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,payCommonProject.getInvoiceNoTaxAmount());
|
||||
tax = payPaymentRecordService.subtractPaidAmount(tax,payCommonProject.getInvoiceTax());
|
||||
break;
|
||||
// 工作组项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE2:
|
||||
PayWorkingGroupSubItem workingGroup = payWorkingGroupSubItemMapper.selectById(payMailBillProject.getProjectId());
|
||||
amountReceivable = workingGroup.getReceivableAmount();//应收
|
||||
needInvoice = workingGroup.getNeedInvoice();//是否需要发票
|
||||
oldInvoiceAmount = workingGroup.getInvoiceAmount();
|
||||
if(oldInvoiceAmount==null){
|
||||
oldInvoiceAmount= new BigDecimal("0");
|
||||
}
|
||||
}
|
||||
//之前开票总额+本次开票金额
|
||||
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||
//税额
|
||||
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,workingGroup.getInvoiceNoTaxAmount());
|
||||
tax = payPaymentRecordService.subtractPaidAmount(tax,workingGroup.getInvoiceTax());
|
||||
break;
|
||||
//会议项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE3:
|
||||
PayMeetingSituation meeting = payMeetingSituationMapper.selectById(payMailBillProject.getProjectId());
|
||||
amountReceivable = meeting.getAmountReceivable();//应收
|
||||
needInvoice = meeting.getNeedInvoice();//是否需要发票
|
||||
oldInvoiceAmount = meeting.getInvoiceAmount();
|
||||
if(oldInvoiceAmount==null){
|
||||
oldInvoiceAmount= new BigDecimal("0");
|
||||
}
|
||||
//之前开票总额+本次开票金额
|
||||
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||
//税额
|
||||
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,meeting.getInvoiceNoTaxAmount());
|
||||
tax = payPaymentRecordService.subtractPaidAmount(tax,meeting.getInvoiceTax());
|
||||
break;
|
||||
//会员项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE4:
|
||||
PayMemberProjectSubitem memberProject = payMemberProjectSubitemMapper.selectById(payMailBillProject.getProjectId());
|
||||
amountReceivable = memberProject.getAmountReceivable();//应收
|
||||
needInvoice = memberProject.getNeedInvoice();//是否需要发票
|
||||
oldInvoiceAmount = memberProject.getInvoiceAmount();
|
||||
if(oldInvoiceAmount==null){
|
||||
oldInvoiceAmount= new BigDecimal("0");
|
||||
}
|
||||
//之前开票总额+本次开票金额
|
||||
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||
//税额
|
||||
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,memberProject.getInvoiceNoTaxAmount());
|
||||
tax = payPaymentRecordService.subtractPaidAmount(tax,memberProject.getInvoiceTax());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(amountReceivable==null){
|
||||
amountReceivable =new BigDecimal("0");
|
||||
}
|
||||
|
||||
BigDecimal zero =new BigDecimal("0");
|
||||
|
||||
//应收=0 || 不需要开票
|
||||
if(amountReceivable.compareTo(zero)==0 || needInvoice.equals(0)){
|
||||
makeInvoice= 3;
|
||||
}
|
||||
//应收>开票总额 && 开票总额!=0
|
||||
if(amountReceivable.compareTo(invoiceAmount) == 1 && !(invoiceAmount.compareTo(zero) == 0)){
|
||||
makeInvoice= 2;
|
||||
}
|
||||
//开票总额>=应收
|
||||
if(invoiceAmount.compareTo(amountReceivable) > -1){
|
||||
makeInvoice= 1;
|
||||
}
|
||||
//开票总额为0
|
||||
if(invoiceAmount.compareTo(zero)==0){
|
||||
makeInvoice= 0;
|
||||
}
|
||||
|
||||
//更新项目表开票状态
|
||||
switch (payMailBillProject.getProjectType().toString()) {
|
||||
// 普通项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE1:
|
||||
PayCommonProject newCommon = new PayCommonProject();
|
||||
newCommon.setId(payMailBillProject.getProjectId());
|
||||
newCommon.setMakeInvoice(makeInvoice);
|
||||
newCommon.setInvoiceAmount(invoiceAmount);
|
||||
newCommon.setInvoiceNoTaxAmount(noTaxAmount);
|
||||
newCommon.setInvoiceTax(tax);
|
||||
payCommonProjectMapper.updateById(newCommon);
|
||||
break;
|
||||
// 工作组项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE2:
|
||||
PayWorkingGroupSubItem newWorkingGroup = new PayWorkingGroupSubItem();
|
||||
newWorkingGroup.setId(payMailBillProject.getProjectId());
|
||||
newWorkingGroup.setMakeInvoice(makeInvoice);
|
||||
newWorkingGroup.setInvoiceAmount(invoiceAmount);
|
||||
newWorkingGroup.setInvoiceNoTaxAmount(noTaxAmount);
|
||||
newWorkingGroup.setInvoiceTax(tax);
|
||||
payWorkingGroupSubItemMapper.updateById(newWorkingGroup);
|
||||
break;
|
||||
//会议项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE3:
|
||||
PayMeetingSituation newMeeting = new PayMeetingSituation();
|
||||
newMeeting.setId(payMailBillProject.getProjectId());
|
||||
newMeeting.setMakeInvoice(makeInvoice);
|
||||
newMeeting.setInvoiceAmount(invoiceAmount);
|
||||
newMeeting.setInvoiceNoTaxAmount(noTaxAmount);
|
||||
newMeeting.setInvoiceTax(tax);
|
||||
payMeetingSituationMapper.updateById(newMeeting);
|
||||
break;
|
||||
//会员项目
|
||||
case PayIncomeContractCommon.PROJECT_TYPE4:
|
||||
PayMemberProjectSubitem newMemberProject = new PayMemberProjectSubitem();
|
||||
newMemberProject.setId(payMailBillProject.getProjectId());
|
||||
newMemberProject.setMakeInvoice(makeInvoice);
|
||||
newMemberProject.setInvoiceAmount(invoiceAmount);
|
||||
newMemberProject.setInvoiceNoTaxAmount(noTaxAmount);
|
||||
newMemberProject.setInvoiceTax(tax);
|
||||
payMemberProjectSubitemMapper.updateById(newMemberProject);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -153,7 +153,7 @@ public class PayConfirmPaymentRecordController extends JeroController<PayConfir
|
||||
/**
|
||||
* 确认收入-撤销
|
||||
*/
|
||||
// @RequiresPermissions({"incomePaymentAndInvoiving:confirmPayment","packProject:confirmPayment"})
|
||||
@RequiresPermissions({"incomePaymentAndInvoicing:revokeConfirm"})
|
||||
@AutoLog(value = "确认来款-撤销")
|
||||
@ApiOperation(value="确认来款-撤销", notes="确认来款-撤销")
|
||||
@PostMapping(value = "/backIncoming")
|
||||
|
||||
+1
@@ -273,6 +273,7 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
|
||||
@AutoLog(value = "开票-撤销")
|
||||
@ApiOperation(value = "开票-撤销", notes = "开票-撤销")
|
||||
@PostMapping(value = "/backInvoice")
|
||||
@RequiresPermissions("incomePaymentAndInvoicing:revokeInvoice")
|
||||
public Result<?> backInvoice(@RequestParam String id) {
|
||||
payMailBillService.backInvoice(id);
|
||||
return Result.OK();
|
||||
|
||||
+8
@@ -81,6 +81,14 @@ public interface IPayPaymentRecordService extends IService<PayPaymentRecord> {
|
||||
* @return
|
||||
*/
|
||||
BigDecimal addPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived);
|
||||
|
||||
/**
|
||||
* 减去实收并四舍五入
|
||||
* @param paidAmount 实收
|
||||
* @param amountReceived 到账
|
||||
* @return
|
||||
*/
|
||||
BigDecimal subtractPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived);
|
||||
/**
|
||||
* 得到到账状态
|
||||
* @param receivableAmount 应收
|
||||
|
||||
+18
-2
@@ -1,7 +1,6 @@
|
||||
package com.jero.payment.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import com.alibaba.druid.sql.visitor.functions.If;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@@ -78,7 +77,6 @@ import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.constraints.DecimalMax;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -881,6 +879,24 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
|
||||
return paidAmount.add(amountReceived).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
/**
|
||||
* 减去实收并四舍五入
|
||||
* @param paidAmount 实收
|
||||
* @param amountReceived 到账
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public BigDecimal subtractPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived){
|
||||
|
||||
if(paidAmount == null){
|
||||
paidAmount = new BigDecimal("0");
|
||||
}
|
||||
if (amountReceived == null){
|
||||
amountReceived = BigDecimal.ZERO;
|
||||
}
|
||||
return paidAmount.subtract(amountReceived).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
/**
|
||||
* 相减
|
||||
* @param paidAmount 实收
|
||||
|
||||
Reference in New Issue
Block a user