gongchunyi
昨天 4e9f2f18aa6d4e4efe11645e251b713869fa9746
src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -80,27 +80,45 @@
    @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);