| | |
| | | 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.ruoyi.account.pojo.AccountIncome; |
| | | import com.ruoyi.account.service.AccountIncomeService; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.sales.dto.CustomerInteractionDto; |
| | |
| | | @Autowired |
| | | private InvoiceLedgerMapper invoiceLedgerMapper; |
| | | |
| | | @Autowired |
| | | private AccountIncomeService accountIncomeService; |
| | | |
| | | /** |
| | | * 回款登记新增 |
| | | * @param receiptPaymentList |
| | |
| | | if (!ObjectUtils.isEmpty(receiptPayment.getId())){ |
| | | receiptPayment = this.getById(receiptPayment.getId()); |
| | | } |
| | | // InvoiceLedger invoiceLedger = invoiceLedgerMapper.selectById(byId.getInvoiceLedgerId()); |
| | | SalesLedger salesLedger = salesLedgerMapper.selectById(receiptPayment.getSalesLedgerId()); |
| | | if(null==salesLedger) throw new RuntimeException("未找到销售单"); |
| | | // 已回款金额 |
| | |
| | | salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(receiptPayment.getReceiptPaymentAmount())); |
| | | salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal())); |
| | | receiptPaymentMapper.insert(receiptPayment); |
| | | // 增加财务收入记录 |
| | | AccountIncome accountIncome = new AccountIncome(); |
| | | accountIncome.setIncomeDate(salesLedger.getEntryDate()); |
| | | accountIncome.setIncomeType("0"); |
| | | accountIncome.setCustomerName(salesLedger.getCustomerName()); |
| | | accountIncome.setIncomeMoney(salesLedger.getContractAmount()); |
| | | accountIncome.setIncomeMethod("0"); |
| | | accountIncome.setInputTime(new Date()); |
| | | accountIncome.setInputUser(salesLedger.getEntryPerson()); |
| | | accountIncome.setIncomeDescribed("回款收入"); |
| | | accountIncome.setBusinessId(Long.parseLong(receiptPayment.getId().toString())); |
| | | accountIncome.setBusinessType(1); |
| | | accountIncomeService.save(accountIncome); |
| | | }else { |
| | | BigDecimal subtract = receiptPayment.getReceiptPaymentAmount().subtract(byId.getReceiptPaymentAmount()); |
| | | salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(subtract)); |
| | | salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal())); |
| | | receiptPayment.setReceiptPaymentAmount(byId.getReceiptPaymentAmount()); |
| | | receiptPayment.setReceiptPaymentType(byId.getReceiptPaymentType()); |
| | | receiptPaymentMapper.updateById(receiptPayment); |
| | | // 修改财务收入记录 |
| | | LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | accountIncomeLambdaQueryWrapper.eq(AccountIncome::getBusinessId, receiptPayment.getId()) |
| | | .eq(AccountIncome::getBusinessType, 1); |
| | | AccountIncome accountIncome = accountIncomeService.getOne(accountIncomeLambdaQueryWrapper); |
| | | if(null!=accountIncome){ |
| | | accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount()); |
| | | accountIncomeService.updateById(accountIncome); |
| | | } |
| | | } |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public int receiptPaymentUpdate(ReceiptPayment receiptPayment) { |
| | | ReceiptPayment byId = receiptPayment; |
| | | if (!ObjectUtils.isEmpty(receiptPayment.getId())){ |
| | | receiptPayment = this.getById(receiptPayment.getId()); |
| | | } |
| | | SalesLedger salesLedger = salesLedgerMapper.selectById(receiptPayment.getSalesLedgerId()); |
| | | if(null==salesLedger) throw new RuntimeException("未找到销售单"); |
| | | // 已回款金额 |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(receiptPayment.getSalesLedgerProductId()); |
| | | if(null==salesLedgerProduct) throw new RuntimeException("未找到销售单产品"); |
| | | if (salesLedgerProduct.getPendingInvoiceTotal().compareTo(receiptPayment.getReceiptPaymentAmount())<0){ |
| | | throw new RuntimeException("本次回款金额不能大于待回款金额"); |
| | | } |
| | | BigDecimal subtract = receiptPayment.getReceiptPaymentAmount().subtract(byId.getReceiptPaymentAmount()); |
| | | salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().add(subtract)); |
| | | salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal())); |
| | | // 修改财务收入记录 |
| | | LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | accountIncomeLambdaQueryWrapper.eq(AccountIncome::getBusinessId, receiptPayment.getId()) |
| | | .eq(AccountIncome::getBusinessType, 1); |
| | | AccountIncome accountIncome = accountIncomeService.getOne(accountIncomeLambdaQueryWrapper); |
| | | if(null!=accountIncome){ |
| | | accountIncome.setIncomeMoney(receiptPayment.getReceiptPaymentAmount()); |
| | | accountIncomeService.updateById(accountIncome); |
| | | } |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | receiptPayment.setReceiptPaymentAmount(byId.getReceiptPaymentAmount()); |
| | | receiptPayment.setReceiptPaymentType(byId.getReceiptPaymentType()); |
| | | return receiptPaymentMapper.updateById(receiptPayment); |
| | | } |
| | | |
| | |
| | | public int receiptPaymentDel(List<Integer> ids) { |
| | | LambdaQueryWrapper<ReceiptPayment> delQuery = new LambdaQueryWrapper<>(); |
| | | delQuery.in(ReceiptPayment::getId, ids); |
| | | List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(delQuery); |
| | | if(CollectionUtils.isEmpty(receiptPayments)) throw new RuntimeException("未找到回款登记"); |
| | | // 重新计算销售产品回款金额 |
| | | for (ReceiptPayment receiptPayment : receiptPayments) { |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(receiptPayment.getSalesLedgerProductId()); |
| | | salesLedgerProduct.setInvoiceTotal(salesLedgerProduct.getInvoiceTotal().subtract(receiptPayment.getReceiptPaymentAmount())); |
| | | salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal())); |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | } |
| | | // 删除财务收入记录 |
| | | LambdaQueryWrapper<AccountIncome> accountIncomeLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | accountIncomeLambdaQueryWrapper.in(AccountIncome::getBusinessId, ids) |
| | | .eq(AccountIncome::getBusinessType, 1); |
| | | accountIncomeService.remove(accountIncomeLambdaQueryWrapper); |
| | | return receiptPaymentMapper.delete(delQuery); |
| | | } |
| | | |