From 05de62989998157eab6ae4809ec3a45db6783e10 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期二, 10 六月 2025 15:36:54 +0800
Subject: [PATCH] 开票台账删除功能修改

---
 src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java |   80 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 77 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
index 2d1bdf7..a67ec3a 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -92,7 +92,7 @@
             BigDecimal currentNoInvoiceNum = invoiceRegistrationProduct.getNoInvoiceNum().add(invoiceRegistrationProduct.getInvoiceNum()).subtract(invoiceNum);
             BigDecimal currentNoInvoiceAmount = invoiceRegistrationProduct.getNoInvoiceAmount().add(invoiceRegistrationProduct.getInvoiceAmount()).subtract(productDto.getInvoiceTotal());
             invoiceRegistrationProduct.setInvoiceNum(invoiceNum);
-            invoiceRegistrationProduct.setInvoiceAmount(productDto.getInvoiceAmount());
+            invoiceRegistrationProduct.setInvoiceAmount(productDto.getInvoiceTotal());
             invoiceRegistrationProduct.setNoInvoiceNum(currentNoInvoiceNum);
             invoiceRegistrationProduct.setNoInvoiceAmount(currentNoInvoiceAmount);
             invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
@@ -341,13 +341,39 @@
         if(!CollectionUtils.isEmpty(receiptPaymentList)){
             throw new RuntimeException("璇峰厛鍒犻櫎鍥炴璁板綍");
         }
-        // 鍒ゆ柇鏄惁鏈夊紑绁ㄥ彴璐�
+        // 鍒ゆ柇鏄惁鏈夊紑绁ㄧ櫥璁拌褰�
         InvoiceRegistrationProduct invoiceRegistrationProduct = invoiceRegistrationProductMapper.selectById(invoiceRegistrationProductId);
         if(ObjectUtils.isEmpty(invoiceRegistrationProduct)){
-            throw new RuntimeException("寮�绁ㄥ彴璐︽煡鎵惧け璐�");
+            throw new RuntimeException("寮�绁ㄧ櫥璁拌褰曟煡鎵惧け璐�");
         }
         // 鍒ゆ柇璇ュ紑绁ㄥ彴璐︽槸鍚︽湭褰撴湀锛屽鏋滀负褰撴湀鐩存帴鍒犻櫎鍚﹀垯鏂板涓�鏉$浉鍙嶈礋鏁版暟鎹�
+        QueryWrapper<InvoiceLedger> ledgerQueryWrapper = new QueryWrapper<>();
+        ledgerQueryWrapper.eq("invoice_registration_product_id", invoiceRegistrationProductId);
+        InvoiceLedger invoiceLedger = invoiceLedgerMapper.selectOne(ledgerQueryWrapper);
+        if(ObjectUtils.isEmpty(invoiceLedger)){
+            throw new RuntimeException("寮�绁ㄥ彴璐︽煡鎵惧け璐�");
+        }
+        if( invoiceLedger.getInvoiceDate() == null){
+            dealCurrentMonthDel(invoiceRegistrationProductId,invoiceRegistrationProduct);
+            return;
+        }
+        // 鑾峰彇褰撳墠鏃ユ湡
+        LocalDate today = LocalDate.now();
+        // 浣跨敤YearMonth姣旇緝骞翠唤鍜屾湀浠芥槸鍚︾浉鍚�
+        boolean equalsFlag = YearMonth.from(invoiceLedger.getInvoiceDate()).equals(YearMonth.from(today));
+        if(equalsFlag){
+            dealCurrentMonthDel(invoiceRegistrationProductId,invoiceRegistrationProduct);
+        }else {
+            dealOtherMonthDel(invoiceRegistrationProduct,invoiceLedger);
+        }
+    }
 
+    /**
+     * 澶勭悊褰撴湀寮�绁ㄥ彴璐﹀垹闄�
+     * @param invoiceRegistrationProductId
+     * @param invoiceRegistrationProduct
+     */
+    private void dealCurrentMonthDel(Integer invoiceRegistrationProductId,InvoiceRegistrationProduct invoiceRegistrationProduct){
         // 鍒犻櫎寮�绁ㄥ彴璐�
         QueryWrapper<InvoiceLedger> delMapper = new QueryWrapper<>();
         delMapper.eq("invoice_registration_product_id", invoiceRegistrationProductId);
@@ -394,4 +420,52 @@
         }
         salesLedgerProductMapper.updateById(salesLedgerProduct);
     }
+
+    /**
+     * 澶勭悊鍏朵粬鏈堜唤寮�绁ㄥ彴璐﹀垹闄�
+     * @param invoiceRegistrationProduct
+     * @param invoiceLedger
+     */
+    private void dealOtherMonthDel(InvoiceRegistrationProduct invoiceRegistrationProduct,InvoiceLedger invoiceLedger ){
+        InvoiceRegistrationProduct copyRegProduct = new InvoiceRegistrationProduct();
+        BeanUtils.copyProperties(invoiceRegistrationProduct, copyRegProduct);
+        BigDecimal invoiceNum = copyRegProduct.getInvoiceNum().negate();
+        BigDecimal invoiceAmount = copyRegProduct.getInvoiceAmount().negate();
+        // invoice_registration_product
+        // 鍒犻櫎寮�绁ㄧ櫥璁板苟鍥炴粴
+        QueryWrapper<InvoiceRegistrationProduct> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("sales_ledger_id", invoiceRegistrationProduct.getSalesLedgerId());
+        queryWrapper.eq("sales_ledger_product_id", invoiceRegistrationProduct.getSalesLedgerProductId());
+        queryWrapper.orderByAsc("create_time");
+        List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper);
+        InvoiceRegistrationProduct lastInvoiceRegistrationProduct = invoiceRegistrationProductList.get(invoiceRegistrationProductList.size() - 1);
+        BigDecimal noInvoiceNum = lastInvoiceRegistrationProduct.getNoInvoiceNum().subtract(invoiceNum);
+        BigDecimal noInvoiceAmount = lastInvoiceRegistrationProduct.getNoInvoiceAmount().subtract(invoiceAmount);
+        copyRegProduct.setInvoiceNum(invoiceNum);
+        copyRegProduct.setInvoiceAmount(invoiceAmount);
+        copyRegProduct.setNoInvoiceNum(noInvoiceNum);
+        copyRegProduct.setNoInvoiceAmount(noInvoiceAmount);
+        copyRegProduct.setId(null);
+        invoiceRegistrationProductMapper.insert(copyRegProduct);
+        // 澶嶅埗寮�绁ㄥ彴璐�
+        InvoiceLedger invoiceLedgerCopy = new InvoiceLedger();
+        BeanUtils.copyProperties(invoiceLedger, invoiceLedgerCopy);
+        invoiceLedgerCopy.setInvoiceRegistrationProductId(copyRegProduct.getId());
+        BigDecimal invoiceTotal = invoiceLedgerCopy.getInvoiceTotal().negate();
+        invoiceLedgerCopy.setInvoiceTotal(invoiceTotal);
+        invoiceLedgerCopy.setId(null);
+        invoiceLedgerCopy.setInvoiceDate(LocalDate.now());
+        invoiceLedgerMapper.insert(invoiceLedgerCopy);
+        // 鏇存柊sales_leger_product
+        QueryWrapper<SalesLedgerProduct> salesLedgerProductQueryWrapper = new QueryWrapper<>();
+        salesLedgerProductQueryWrapper.eq("id", invoiceRegistrationProduct.getSalesLedgerProductId());
+        SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectOne(salesLedgerProductQueryWrapper);
+        salesLedgerProduct.setNoInvoiceNum(noInvoiceNum);
+        salesLedgerProduct.setNoInvoiceAmount(noInvoiceAmount);
+        BigDecimal newInvoiceNum = salesLedgerProduct.getInvoiceNum().add(invoiceNum);
+        BigDecimal newInvocieAmount = salesLedgerProduct.getInvoiceAmount().add(invoiceAmount);
+        salesLedgerProduct.setInvoiceNum(newInvoiceNum);
+        salesLedgerProduct.setInvoiceAmount(newInvocieAmount);
+        salesLedgerProductMapper.updateById(salesLedgerProduct);
+    }
 }

--
Gitblit v1.9.3