|
|
@@ -133,9 +133,53 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}else {
|
|
|
in.setTargetType(1);
|
|
|
}
|
|
|
+ in.setSettlementAmount(useEA.getSettlementAmount());
|
|
|
+ //计算本单已扣金额
|
|
|
+ if (in.getDebitId()!=null){
|
|
|
+ //如果以前没有选择借支,修改报销和借支数据
|
|
|
+ if (useEA.getDebitId()==null){
|
|
|
+ pushExpenseAccountDebit(in);
|
|
|
+ }else if (useEA.getDebitId()!=in.getDebitId()) {
|
|
|
+ //如果是修改编号
|
|
|
+ pushExpenseAccountDebit(in);
|
|
|
+ //并且要处理原编号的问题
|
|
|
+ pushresettingDebit(in,useEA.getDebitId());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
return expenseAccountMapper.updateByPrimaryKeySelective(in);
|
|
|
}
|
|
|
|
|
|
+ private void pushresettingDebit(InputExpenseAccount in, Integer debitId) {
|
|
|
+ ExpenseAccount debit = expenseAccountMapper.selectByPrimaryKey(debitId);
|
|
|
+ ExpenseAccount newdebit=new ExpenseAccount();
|
|
|
+ newdebit.setSettlementAmount(debit.getSettlementAmount().subtract(in.getSettlementAmount()));
|
|
|
+ newdebit.setLiquidationStatus(1);
|
|
|
+ expenseAccountMapper.updateByPrimaryKeySelective(newdebit);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private void pushExpenseAccountDebit(InputExpenseAccount in) {
|
|
|
+ ExpenseAccount debit = expenseAccountMapper.selectByPrimaryKey(in.getDebitId());
|
|
|
+ ExpenseAccount newDebit=new ExpenseAccount();
|
|
|
+ newDebit.setId(debit.getId());
|
|
|
+ //计算剩余需要支付金额
|
|
|
+ BigDecimal decbitAmount=in.getTotalAmount().subtract(in.getSettlementAmount());
|
|
|
+ //本次金额大于等于需要抵扣金额,则变成完全抵扣,抵扣金额变成本次已付金额
|
|
|
+ if (in.getTotalAmount().compareTo(decbitAmount)>0){
|
|
|
+ in.setSettlementAmount(decbitAmount);
|
|
|
+ newDebit.setSettlementAmount(debit.getTotalAmount());
|
|
|
+ newDebit.setLiquidationStatus(2);
|
|
|
+ }else {
|
|
|
+// 本次金额小于需要抵扣,则本次变更全抵扣,借支已付加上本次金额
|
|
|
+ in.setSettlementAmount(in.getTotalAmount());
|
|
|
+ newDebit.setSettlementAmount(debit.getSettlementAmount().add(in.getTotalAmount()));
|
|
|
+ newDebit.setLiquidationStatus(1);
|
|
|
+ }
|
|
|
+ expenseAccountMapper.updateByPrimaryKeySelective(newDebit);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public int addDetails(InputExpenseAccountDetails in) {
|
|
|
if (in.getAgreeTimes()!=null){
|
|
|
@@ -177,28 +221,16 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
//完成申请
|
|
|
if (in.getStatus()==2){
|
|
|
//如果是借支则订单新增
|
|
|
- if (in.getType()==4){
|
|
|
-
|
|
|
- }else {
|
|
|
+ if (in.getType()!=4){
|
|
|
//不然就看是否挂载借支订单进行抵扣
|
|
|
if (useEa.getDebitId()!=null){
|
|
|
ExpenseAccount useDebit=expenseAccountMapper.selectByPrimaryKey(useEa.getDebitId());
|
|
|
- ExpenseAccount debit=new ExpenseAccount();
|
|
|
- debit.setId(useEa.getDebitId());
|
|
|
- BigDecimal settlementAmount = useDebit.getSettlementAmount();
|
|
|
- settlementAmount=settlementAmount.add(useEa.getTotalAmount());
|
|
|
- //如果不大于金额
|
|
|
- if (settlementAmount.compareTo(useDebit.getTotalAmount())<1){
|
|
|
- //计算抵扣后的已付
|
|
|
- debit.setSettlementAmount(settlementAmount);
|
|
|
- //设置当前报销已付全额
|
|
|
- newEa.setSettlementAmount(useEa.getTotalAmount());
|
|
|
- }else {
|
|
|
- BigDecimal subtract = settlementAmount.subtract(useDebit.getTotalAmount());
|
|
|
- newEa.setSettlementAmount(subtract);
|
|
|
- debit.setSettlementAmount(useDebit.getTotalAmount());
|
|
|
+ if (useDebit.getLiquidationStatus()==2){
|
|
|
+ ExpenseAccount debit=new ExpenseAccount();
|
|
|
+ debit.setId(useEa.getDebitId());
|
|
|
+ debit.setLiquidationStatus(3);
|
|
|
+ expenseAccountMapper.updateByPrimaryKeySelective(debit);
|
|
|
}
|
|
|
- expenseAccountMapper.updateByPrimaryKeySelective(debit);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -312,7 +344,9 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
OutExpenseAccount useEa = expenseAccountMapper.selectByid(id);
|
|
|
if (useEa.getDebitId()!=null){
|
|
|
ExpenseAccount debit = expenseAccountMapper.selectByPrimaryKey(useEa.getDebitId());
|
|
|
- if (debit!=null&&debit.getTotalAmount()!=null)useEa.setDebitTotalAmount(debit.getTotalAmount());
|
|
|
+ if (debit!=null&&debit.getTotalAmount()!=null){
|
|
|
+ useEa.setDebitTotalAmount(debit.getTotalAmount().subtract(debit.getSettlementAmount()));
|
|
|
+ }
|
|
|
}
|
|
|
return useEa;
|
|
|
}
|