| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult updateRecord(ProductRecordDto productRecordDto) { |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(productRecordDto.getSaleLedgerProjectId()); |
| | | ProductRecord productRecord = productRecordMapper.selectById(productRecordDto.getId()); |
| | | if (productRecord == null) return AjaxResult.error("记录不存在"); |
| | | |
| | | // 更新产品台账 |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(productRecord.getSaleLedgerProjectId()); |
| | | if (salesLedgerProduct != null) { |
| | | salesLedgerProduct.setFutureTicketsAmount(salesLedgerProduct.getFutureTicketsAmount().add(productRecord.getTicketsAmount()).subtract(productRecordDto.getTicketsAmount())); |
| | | salesLedgerProduct.setFutureTickets(salesLedgerProduct.getFutureTickets().add(productRecord.getTicketsNum().subtract(productRecordDto.getTicketsNum()))); |
| | | // 未来票金额 = 原未来票金额 + 旧行金额 - 新行金额 |
| | | BigDecimal futureTicketsAmount = salesLedgerProduct.getFutureTicketsAmount() |
| | | .add(productRecord.getTicketsAmount()) |
| | | .subtract(productRecordDto.getTicketsAmount()); |
| | | salesLedgerProduct.setFutureTicketsAmount(futureTicketsAmount); |
| | | |
| | | // 未来票数 = 原未来票数 + 旧行数量 - 新行数量 |
| | | BigDecimal futureTickets = salesLedgerProduct.getFutureTickets() |
| | | .add(productRecord.getTicketsNum()) |
| | | .subtract(productRecordDto.getTicketsNum()); |
| | | salesLedgerProduct.setFutureTickets(futureTickets); |
| | | |
| | | // 更新产品表本次数值 |
| | | salesLedgerProduct.setTicketsAmount(productRecordDto.getTicketsAmount()); |
| | | salesLedgerProduct.setTicketsNum(productRecordDto.getTicketsNum()); |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | } |
| | | PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(productRecord.getPurchaseLedgerId()); |
| | | if (purchaseLedger != null) { |
| | | purchaseLedger.setReceiptPaymentAmount(purchaseLedger.getReceiptPaymentAmount()); |
| | | } |
| | | // 修改发票号 |
| | | |
| | | // 更新来票登记 |
| | | TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(productRecord.getTicketRegistrationId()); |
| | | if(ticketRegistration != null){ |
| | | // 金额 = 新金额 - 旧金额 |
| | | BigDecimal amountDiff = productRecordDto.getTicketsAmount().subtract(productRecord.getTicketsAmount()); |
| | | // 总金额 = 原总金额 + 差值 |
| | | ticketRegistration.setInvoiceAmount(ticketRegistration.getInvoiceAmount().add(amountDiff)); |
| | | // 更新发票号 |
| | | ticketRegistration.setInvoiceNumber(productRecordDto.getInvoiceNumber()); |
| | | ticketRegistration.setInvoiceAmount(productRecordDto.getTicketsAmount()); |
| | | |
| | | ticketRegistrationMapper.updateById(ticketRegistration); |
| | | } |
| | | |
| | | BeanUtils.copyProperties(productRecordDto,productRecord); |
| | | // 重新计算未来票金额(根据剩余票数 * 单价) |
| | | productRecord.setFutureTicketsAmount(productRecord.getFutureTickets().multiply(productRecord.getTaxInclusiveUnitPrice())); |
| | | productRecordMapper.updateById(productRecord); |
| | | |