This commit is contained in:
linfso 2024-08-08 15:34:46 +08:00
parent 7a1c9ddfaa
commit a672a52f1d
3 changed files with 45 additions and 17 deletions

View File

@ -1072,7 +1072,6 @@ public class EmisBaseService {
public void redoGenerateBill(String billCode) throws EmisBizError{ public void redoGenerateBill(String billCode) throws EmisBizError{
log.error("===>Start 运单出账:"+billCode); log.error("===>Start 运单出账:"+billCode);
boolean isNewBill=true; boolean isNewBill=true;
BigDecimal oldTotalFee = BigDecimal.ZERO; BigDecimal oldTotalFee = BigDecimal.ZERO;
BigDecimal newTotalFee = BigDecimal.ZERO; BigDecimal newTotalFee = BigDecimal.ZERO;
@ -1080,6 +1079,12 @@ public class EmisBaseService {
// 已确认的不允许出账 // 已确认的不允许出账
List<EmisSettleSubBill> oldSubBillList=getSettleSubBillListByBillCode(billCode); List<EmisSettleSubBill> oldSubBillList=getSettleSubBillListByBillCode(billCode);
if(!CollectionUtils.isEmpty(oldSubBillList) ) { if(!CollectionUtils.isEmpty(oldSubBillList) ) {
if(oldSubBillList.size()>1){
log.error("===>已拆子账单不允许出账!");
return;
}
isNewBill=false; isNewBill=false;
for (EmisSettleSubBill oldBill:oldSubBillList) { for (EmisSettleSubBill oldBill:oldSubBillList) {
if ("1".equals(oldBill.getBlConfirmCenter())) { if ("1".equals(oldBill.getBlConfirmCenter())) {
@ -1095,13 +1100,6 @@ public class EmisBaseService {
// 生成分账单明细,判断是否是新账单 // 生成分账单明细,判断是否是新账单
EmisSettleSubBill emisSettleSubBill=new EmisSettleSubBill(); EmisSettleSubBill emisSettleSubBill=new EmisSettleSubBill();
if(!isNewBill){
// 逻辑删除原账单重出账单
emisSettleSubBillMapper.deleteEmisSettleSubBillByBillCode(billCode);
// 逻辑删除原来的费用明细,重新插入明细
emisSettleSubBillFeeitemMapper.deleteEmisSettleSubBillFeeitemByBillCode(billCode);
}
emisSettleSubBill.setBillCode(dt.getBillCode()); emisSettleSubBill.setBillCode(dt.getBillCode());
emisSettleSubBill.setBillNo(dt.getBillCode()); emisSettleSubBill.setBillNo(dt.getBillCode());
emisSettleSubBill.setBillDate(new Date()); emisSettleSubBill.setBillDate(new Date());
@ -1126,9 +1124,6 @@ public class EmisBaseService {
emisSettleSubBill.setCurrency(dt.getCurrency()); emisSettleSubBill.setCurrency(dt.getCurrency());
emisSettleSubBill.setBillMonth(DateUtils.parseDateToStr("yyyyMM",dt.getSendDate())); emisSettleSubBill.setBillMonth(DateUtils.parseDateToStr("yyyyMM",dt.getSendDate()));
emisSettleSubBill.setBillFee(dt.getFreight()); emisSettleSubBill.setBillFee(dt.getFreight());
emisSettleSubBill.setCustNo(dt.getCustNo()); emisSettleSubBill.setCustNo(dt.getCustNo());
@ -1145,7 +1140,15 @@ public class EmisBaseService {
emisSettleSubBill.setBlConfirmSite("0"); emisSettleSubBill.setBlConfirmSite("0");
emisSettleSubBill.setBlConfirmCenter("0"); emisSettleSubBill.setBlConfirmCenter("0");
if(isNewBill){
emisSettleSubBillMapper.insertEmisSettleSubBill(emisSettleSubBill); emisSettleSubBillMapper.insertEmisSettleSubBill(emisSettleSubBill);
}else{
// 删除旧明细数据
emisSettleSubBillFeeitemMapper.deleteEmisSettleSubBillFeeitemByBillCode(billCode);
// 旧账单,只允许调整
emisSettleSubBill.setId(oldSubBillList.get(0).getId());
emisSettleSubBillMapper.updateEmisSettleSubBill(emisSettleSubBill);
}
// 新费用 // 新费用
newTotalFee = emisSettleSubBill.getBillFee(); newTotalFee = emisSettleSubBill.getBillFee();
@ -1153,6 +1156,7 @@ public class EmisBaseService {
// 如果是一口价,自动生成一条运费明细,其他则根据实际来计算 // 如果是一口价,自动生成一条运费明细,其他则根据实际来计算
// 生成费用明细 // 生成费用明细
if(dt.getCalcFeeType().equals("3")) { if(dt.getCalcFeeType().equals("3")) {
}else{ }else{
// 产生新的费用明细 // 产生新的费用明细
List<EmisWaybillFeeitem> feeitemList = emisWaybillFeeitemMapper.selectFeeitemListByWaybillId(dt.getId()); List<EmisWaybillFeeitem> feeitemList = emisWaybillFeeitemMapper.selectFeeitemListByWaybillId(dt.getId());
@ -2646,7 +2650,7 @@ public class EmisBaseService {
} }
if (isBillLock(emisWaybill)) { if (isBillLock(emisWaybill)) {
throw new EmisBizError(EmisBizErrorType.BILL_LOCK, "已锁账,不允许修改"); throw new EmisBizError(EmisBizErrorType.BILL_LOCK, "已锁账:"+emisWaybill.getLockReason());
} }
if (isOutTimeLock(emisWaybill)) { if (isOutTimeLock(emisWaybill)) {
@ -2669,12 +2673,14 @@ public class EmisBaseService {
if(emisSettleSubBillList.size()>1) { if(emisSettleSubBillList.size()>1) {
// 已分单不允许修改 // 已分单不允许修改
emisWaybill.setLockReason("已拆子单,不允许修改");
return true; return true;
}else { }else {
EmisSettleSubBill emisSettleSubBill = emisSettleSubBillList.get(0); EmisSettleSubBill emisSettleSubBill = emisSettleSubBillList.get(0);
if ("1".equals(emisSettleSubBill.getBlConfirmCenter())) { if ("1".equals(emisSettleSubBill.getBlConfirmCenter())) {
// 财务确认出账明细锁账 // 财务确认出账明细锁账
emisWaybill.setLockReason("财务已确认,不允许修改");
return true; return true;
} }
@ -2683,6 +2689,7 @@ public class EmisBaseService {
|| "2".equals(emisSettleSubBill.getBlConfirmSite()) || "2".equals(emisSettleSubBill.getBlConfirmSite())
) { ) {
// 财务确认出账明细锁账 // 财务确认出账明细锁账
emisWaybill.setLockReason("已确认不出账,不允许修改");
return true; return true;
} }
} }
@ -2697,12 +2704,12 @@ public class EmisBaseService {
int rst=emisSiteBillControlMapper.checkBillIsLock(emisSiteBillControl); int rst=emisSiteBillControlMapper.checkBillIsLock(emisSiteBillControl);
if(rst>0){ if(rst>0){
emisWaybill.setLockReason("已确认不出账,不允许修改");
return true; return true;
} }
return false; return false;
} }
/** /**

View File

@ -209,6 +209,7 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen
@Override @Override
public int deleteEmisSettleInvoiceRecordById(Long id) public int deleteEmisSettleInvoiceRecordById(Long id)
{ {
// 如果已开票不允许删除
return emisSettleInvoiceRecordMapper.deleteEmisSettleInvoiceRecordById(id); return emisSettleInvoiceRecordMapper.deleteEmisSettleInvoiceRecordById(id);
} }

View File

@ -99,6 +99,15 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
throw new EmisBizError(EmisBizErrorType.FAIL,"账单编号不能为空"); throw new EmisBizError(EmisBizErrorType.FAIL,"账单编号不能为空");
} }
if(emisSettlePayRecord.getPayMoney()==null|| BigDecimal.ZERO.compareTo(emisSettlePayRecord.getPayMoney())==0 ){
throw new EmisBizError(EmisBizErrorType.FAIL,"收款金额不能为0");
}
EmisSettleBill emisSettleBill=emisSettleBillMapper.selectSettleBillBySettleBillNo(emisSettlePayRecord.getSettleBillNo());
if(!"1".equals(emisSettleBill.getBlConfirmSite()) ){
throw new EmisBizError(EmisBizErrorType.FAIL,"业务账单未确认,不允许收款!");
}
// 不重复的 id流水号 // 不重复的 id流水号
String payId= WaybillHelper.genPayId(); String payId= WaybillHelper.genPayId();
emisSettlePayRecord.setPayId(payId); emisSettlePayRecord.setPayId(payId);
@ -122,10 +131,15 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
EmisSettleBill oldBill =getSettleBillBySettleBillNo(settleBillNo); EmisSettleBill oldBill =getSettleBillBySettleBillNo(settleBillNo);
// 获取收款记录 // 获取收款记录
List<EmisSettlePayRecord> payRecordList=emisSettlePayRecordMapper.selectSettlePayRecordListBySettleBillNo(settleBillNo); List<EmisSettlePayRecord> payRecordList=emisSettlePayRecordMapper.selectSettlePayRecordListBySettleBillNo(settleBillNo);
// 全部收款金额
BigDecimal totalAllPayMoney = BigDecimal.ZERO;
// 计算已收款金额 // 计算已收款金额
BigDecimal totalPayMoney = BigDecimal.ZERO; BigDecimal totalPayMoney = BigDecimal.ZERO;
// 抵扣金额
// 抵扣金额
BigDecimal satisfyMoney = BigDecimal.ZERO; BigDecimal satisfyMoney = BigDecimal.ZERO;
/* allowance_money */ /* allowance_money */
BigDecimal allowanceMoney = BigDecimal.ZERO; BigDecimal allowanceMoney = BigDecimal.ZERO;
@ -140,6 +154,12 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
allowanceMoney=allowanceMoney.add(item.getAllowanceMoney()==null?BigDecimal.ZERO:item.getAllowanceMoney()); allowanceMoney=allowanceMoney.add(item.getAllowanceMoney()==null?BigDecimal.ZERO:item.getAllowanceMoney());
deductionMoney=deductionMoney.add(item.getDeductionMoney()==null?BigDecimal.ZERO:item.getDeductionMoney()); deductionMoney=deductionMoney.add(item.getDeductionMoney()==null?BigDecimal.ZERO:item.getDeductionMoney());
otherMoney=otherMoney.add(item.getOtherMoney()==null?BigDecimal.ZERO:item.getOtherMoney()); otherMoney=otherMoney.add(item.getOtherMoney()==null?BigDecimal.ZERO:item.getOtherMoney());
totalAllPayMoney=totalAllPayMoney.add(totalPayMoney);
totalAllPayMoney=totalAllPayMoney.add(satisfyMoney);
totalAllPayMoney=totalAllPayMoney.add(allowanceMoney);
totalAllPayMoney=totalAllPayMoney.add(deductionMoney);
totalAllPayMoney=totalAllPayMoney.add(otherMoney);
} }
EmisSettleBill newBill = new EmisSettleBill(); EmisSettleBill newBill = new EmisSettleBill();
@ -150,7 +170,7 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
newBill.setOtherMoney(otherMoney); newBill.setOtherMoney(otherMoney);
// 判断收款状态 收款金额 // 判断收款状态 收款金额
int rstDif=totalPayMoney.compareTo(oldBill.getRecMoney()); int rstDif=totalAllPayMoney.compareTo(oldBill.getRecMoney());
if( rstDif >= 0 ){ if( rstDif >= 0 ){
// 已收款 // 已收款
newBill.setPaymentStatus("1"); newBill.setPaymentStatus("1");