From 7e9fe51df4f324988a86a62e79a26b43d387cb1a Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期一, 12 五月 2025 16:27:51 +0800
Subject: [PATCH] 开票登记前后端联调

---
 src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java |   76 +++++++++++++--
 src/main/java/com/ruoyi/sales/excel/InvoiceRegisAndProductExcelDto.java        |   73 ++++++++++++++
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java            |   11 ++
 src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java            |    9 +
 src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java          |   17 +++
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java                     |    2 
 src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml                  |   65 ++++++++++--
 src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java    |   29 +++++
 src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java                   |    2 
 src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java                  |   10 ++
 src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java     |    2 
 11 files changed, 266 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java b/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java
index 116fec3..79ae6d6 100644
--- a/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java
+++ b/src/main/java/com/ruoyi/common/config/IgnoreTableConfig.java
@@ -25,6 +25,6 @@
         IGNORE_TABLES.add("sys_logininfor");
         IGNORE_TABLES.add("sys_post");
         IGNORE_TABLES.add("sys_user_post");
-
+        IGNORE_TABLES.add("sales_ledger_product");
     }
 }
diff --git a/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java b/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
index 00e1e88..f344ac6 100644
--- a/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
+++ b/src/main/java/com/ruoyi/sales/controller/InvoiceRegistrationController.java
@@ -8,6 +8,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
@@ -22,9 +23,9 @@
      * @param invoiceRegistrationDto
      * @return
      */
-    @PostMapping("/add")
-    public AjaxResult invoiceRegistrationAdd(@RequestBody InvoiceRegistrationDto invoiceRegistrationDto) {
-        invoiceRegistrationService.invoiceRegistrationAdd(invoiceRegistrationDto);
+    @PostMapping("/saveOrUpdate")
+    public AjaxResult invoiceRegistrationSaveOrUpdate(@RequestBody InvoiceRegistrationDto invoiceRegistrationDto) {
+        invoiceRegistrationService.invoiceRegistrationSaveOrUpdate(invoiceRegistrationDto);
         return AjaxResult.success();
     }
 
@@ -34,7 +35,7 @@
      * @return
      */
     @DeleteMapping("/del")
-    public AjaxResult invoiceRegistrationDel(@RequestParam List<Integer> ids) {
+    public AjaxResult invoiceRegistrationDel(@RequestBody  List<Integer> ids) {
         invoiceRegistrationService.invoiceRegistrationDel(ids);
         return AjaxResult.success();
     }
@@ -70,4 +71,24 @@
     public AjaxResult invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) {
         return AjaxResult.success(invoiceRegistrationService.invoiceRegistrationProductList(invoiceRegistrationProductDto));
     }
+
+    /**
+     * 寮�绁ㄧ櫥璁颁骇鍝佽鎯�
+     * @param id
+     * @return
+     */
+    @GetMapping("/detail")
+    public AjaxResult invoiceRegistrationDetail(Integer id) {
+        return AjaxResult.success(invoiceRegistrationService.invoiceRegistrationDetail(id));
+    }
+
+    /**
+     * 寮�绁ㄧ櫥璁板鍑�
+     * @param response
+     * @param invoiceRegistrationDto
+     */
+    @PostMapping("/export")
+    public void invoiceRegistrationExport(HttpServletResponse response, InvoiceRegistrationDto invoiceRegistrationDto) {
+        invoiceRegistrationService.invoiceRegistrationExport(response, invoiceRegistrationDto);
+    }
 }
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index 1c934a1..19122e8 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -86,4 +86,15 @@
         }
         return toAjax(salesLedgerService.deleteSalesLedgerByIds(ids));
     }
+
+    /**
+     * 鏌ヨ閿�鍞彴璐︿笉鍒嗛〉
+     * @param salesLedgerDto
+     * @return
+     */
+    @GetMapping("/listNoPage")
+    public AjaxResult listNoPage(SalesLedgerDto salesLedgerDto){
+        List<SalesLedger> list = salesLedgerService.selectSalesLedgerList(salesLedgerDto);
+        return AjaxResult.success(list);
+    }
 }
diff --git a/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java b/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
index 92d95fa..235a534 100644
--- a/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/InvoiceRegistrationDto.java
@@ -5,6 +5,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -13,4 +14,13 @@
     @ApiModelProperty(name = "寮�绁ㄧ櫥璁颁骇鍝侀泦鍚�")
     private List<InvoiceRegistrationProductDto> productDtoList;
 
+    @ApiModelProperty(name = "瀹㈡埛鍚堝悓鍙�")
+    private String customerContractNo;
+
+    @ApiModelProperty(name = "瀹㈡埛鍚嶇О")
+    private String customerName;
+
+    @ApiModelProperty(name = "鍚堝悓閲戦")
+    private BigDecimal contractAmount;
+
 }
diff --git a/src/main/java/com/ruoyi/sales/excel/InvoiceRegisAndProductExcelDto.java b/src/main/java/com/ruoyi/sales/excel/InvoiceRegisAndProductExcelDto.java
new file mode 100644
index 0000000..8f042c6
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/excel/InvoiceRegisAndProductExcelDto.java
@@ -0,0 +1,73 @@
+package com.ruoyi.sales.excel;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class InvoiceRegisAndProductExcelDto {
+
+    @Excel(name = "閿�鍞悎鍚屽彿")
+    private String salesContractNo;
+
+    @Excel(name = "瀹㈡埛鍚堝悓鍙�")
+    private String customerContractNo;
+
+    @Excel(name = "瀹㈡埛鍚嶇О")
+    private String customerName;
+
+    @Excel(name =  "涓氬姟鍛�")
+    private String salesman;
+
+    @Excel(name = "椤圭洰鍚嶇О")
+    private String projectName;
+
+    @Excel(name =  "鍚堝悓閲戦")
+    private BigDecimal contractAmount;
+
+    @Excel(name =  "浜у搧澶х被")
+    private String productCategory;
+
+    @Excel(name =  "瑙勬牸鍨嬪彿")
+    private String specificationModel;
+
+    @Excel(name =  "鍗曚綅")
+    private String unit;
+
+    @Excel(name =  "鏁伴噺")
+    private BigDecimal quantity;
+
+    @Excel(name =  "绋庣巼%")
+    private BigDecimal taxRate;
+
+    @Excel(name = "鍚◣鍗曚环")
+    private BigDecimal taxInclusiveUnitPrice;
+
+    @Excel(name = "鍚◣鎬讳环")
+    private BigDecimal taxInclusiveTotalPrice;
+
+    @Excel(name ="涓嶅惈绋庢�讳环")
+    private BigDecimal taxExclusiveTotalPrice;
+
+    @Excel(name ="鍙戠エ绫诲瀷")
+    private String invoiceType;
+
+    @Excel(name ="寮�绁ㄦ暟")
+    private Integer invoiceNum;
+
+    @Excel(name ="鏈紑绁ㄦ暟")
+    private Integer noInvoiceNum;
+
+    @Excel(name ="寮�绁ㄩ噾棰�")
+    private BigDecimal invoiceAmount;
+
+    @Excel(name ="鏈紑绁ㄩ噾棰�")
+    private BigDecimal noInvoiceAmount;
+
+
+}
diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java
index 88a3ebf..54425c4 100644
--- a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationMapper.java
@@ -4,8 +4,11 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.sales.dto.InvoiceRegistrationDto;
+import com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto;
 import com.ruoyi.sales.pojo.InvoiceRegistration;
 import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface InvoiceRegistrationMapper extends BaseMapper<InvoiceRegistration> {
 
@@ -16,4 +19,10 @@
      * @return
      */
     IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, @Param("invoiceRegistrationDto") InvoiceRegistrationDto invoiceRegistrationDto);
+
+    /**
+     * 寮�绁ㄧ櫥璁板鍑烘暟鎹煡璇�
+     * @return
+     */
+    List<InvoiceRegisAndProductExcelDto> invoiceRegisAndProductExcelDtoList();
 }
diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
index 754a7d7..6173459 100644
--- a/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceRegistrationProductMapper.java
@@ -1,6 +1,7 @@
 package com.ruoyi.sales.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sales.dto.InvoiceRegistrationDto;
 import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
 import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
 import org.apache.ibatis.annotations.Param;
@@ -15,5 +16,4 @@
      * @return
      */
     List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(@Param("invoiceRegistrationProductDto") InvoiceRegistrationProductDto invoiceRegistrationProductDto);
-
 }
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index 3d33354..79c397e 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -59,7 +59,7 @@
      * 绋庣巼
      */
     @Excel(name = "绋庣巼")
-    private String taxRate;
+    private BigDecimal taxRate;
 
     /**
      * 鍚◣鍗曚环
diff --git a/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java b/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
index 8cdd13d..6313b93 100644
--- a/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
+++ b/src/main/java/com/ruoyi/sales/service/InvoiceRegistrationService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface InvoiceRegistrationService {
@@ -15,7 +16,7 @@
      * @param invoiceRegistrationDto
      * @return
      */
-    void invoiceRegistrationAdd(InvoiceRegistrationDto invoiceRegistrationDto);
+    void invoiceRegistrationSaveOrUpdate(InvoiceRegistrationDto invoiceRegistrationDto);
 
     /**
      * 寮�绁ㄧ櫥璁板垹闄�
@@ -46,4 +47,18 @@
      * @return
      */
     List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto);
+
+    /**
+     * 寮�绁ㄧ櫥璁拌鎯�
+     * @param id
+     * @return
+     */
+    InvoiceRegistrationDto invoiceRegistrationDetail(Integer id);
+
+    /**
+     * 寮�绁ㄧ櫥璁板鍑�
+     * @param response
+     * @param invoiceRegistrationDto
+     */
+    void invoiceRegistrationExport(HttpServletResponse response, InvoiceRegistrationDto invoiceRegistrationDto);
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
index 012792a..3130872 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -1,11 +1,15 @@
 package com.ruoyi.sales.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.basic.excel.SupplierManageExcelDto;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.sales.dto.InvoiceRegistrationDto;
 import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
+import com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto;
 import com.ruoyi.sales.mapper.InvoiceRegistrationMapper;
 import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
 import com.ruoyi.sales.pojo.InvoiceRegistration;
@@ -16,7 +20,11 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class InvoiceRegistrationServiceImpl extends ServiceImpl<InvoiceRegistrationMapper, InvoiceRegistration> implements InvoiceRegistrationService {
@@ -35,19 +43,30 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void invoiceRegistrationAdd(InvoiceRegistrationDto invoiceRegistrationDto) {
+    public void invoiceRegistrationSaveOrUpdate(InvoiceRegistrationDto invoiceRegistrationDto) {
         InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
         BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration);
-        // 鏂板寮�绁ㄧ櫥璁�
-        invoiceRegistrationMapper.insert(invoiceRegistration);
         List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList();
-        // 鏂板寮�绁ㄤ骇鍝佺櫥璁�
-        if(CollectionUtils.isNotEmpty(productDtoList)){
-            for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
-                InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
-                BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
-                invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId());
-                invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct);
+        // 鏂板寮�绁ㄧ櫥璁�
+        if(invoiceRegistrationDto.getId() == null){
+            invoiceRegistrationMapper.insert(invoiceRegistration);
+            // 鏂板寮�绁ㄤ骇鍝佺櫥璁�
+            if(CollectionUtils.isNotEmpty(productDtoList)){
+                for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
+                    InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
+                    BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
+                    invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId());
+                    invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct);
+                }
+            }
+        // 寮�绁ㄧ櫥璁颁慨鏀�
+        }else {
+            if(CollectionUtils.isNotEmpty(productDtoList)){
+                for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
+                    InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
+                    BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
+                    invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
+                }
             }
         }
     }
@@ -109,4 +128,41 @@
     public List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) {
         return invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto);
     }
+
+    /**
+     * 寮�绁ㄧ櫥璁拌鎯�
+     * @param id
+     * @return
+     */
+    @Override
+    public InvoiceRegistrationDto invoiceRegistrationDetail(Integer id) {
+        InvoiceRegistration invoiceRegistration = invoiceRegistrationMapper.selectById(id);
+        if(ObjectUtils.isEmpty(invoiceRegistration)){
+            throw new RuntimeException("寮�绁ㄧ櫥璁颁俊鎭煡鎵惧け璐�");
+        }
+        InvoiceRegistrationDto invoiceRegistrationDto = new InvoiceRegistrationDto();
+        BeanUtils.copyProperties(invoiceRegistration, invoiceRegistrationDto);
+        QueryWrapper<InvoiceRegistrationProduct> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("invoice_registration_id", id);
+        List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper);
+        List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductList.stream().map(item -> {
+            InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto();
+            BeanUtils.copyProperties(item, invoiceRegistrationProductDto);
+            return invoiceRegistrationProductDto;
+        }).collect(Collectors.toList());
+        invoiceRegistrationDto.setProductDtoList(invoiceRegistrationProductDtoList);
+        return invoiceRegistrationDto;
+    }
+
+    /**
+     * 寮�绁ㄧ櫥璁板鍑�
+     * @param response
+     * @param invoiceRegistrationDto
+     */
+    @Override
+    public void invoiceRegistrationExport(HttpServletResponse response, InvoiceRegistrationDto invoiceRegistrationDto) {
+        List<InvoiceRegisAndProductExcelDto> invoiceRegisAndProductExcelDtoList = invoiceRegistrationMapper.invoiceRegisAndProductExcelDtoList();
+        ExcelUtil<InvoiceRegisAndProductExcelDto> util = new ExcelUtil<InvoiceRegisAndProductExcelDto>(InvoiceRegisAndProductExcelDto.class);
+        util.exportExcel(response, invoiceRegisAndProductExcelDtoList, "寮�绁ㄧ櫥璁颁俊鎭�");
+    }
 }
diff --git a/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml b/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
index b263bb6..45f6109 100644
--- a/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
+++ b/src/main/resources/mapper/sales/InvoiceRegistrationMapper.xml
@@ -5,17 +5,58 @@
 <mapper namespace="com.ruoyi.sales.mapper.InvoiceRegistrationMapper">
     <select id="invoiceRegistrationListPage" resultType="com.ruoyi.sales.dto.InvoiceRegistrationDto">
         SELECT
-            id              ,
-            sales_ledger_id   ,
-            sales_contract_no ,
-            customer_id       ,
-            salesman          ,
-            project_name      ,
-            create_time       ,
-            create_user       ,
-            update_time       ,
-            update_user       ,
-            tenant_id
-        FROM invoice_registration
+            T1.id              ,
+            T1.sales_ledger_id   ,
+            T1.sales_contract_no ,
+            T1.customer_id       ,
+            T1.salesman          ,
+            T1.project_name      ,
+            T1.create_time       ,
+            T1.create_user       ,
+            T1.update_time       ,
+            T1.update_user       ,
+            T1.tenant_id,
+            T2.customer_contract_no,
+            T3.customer_name,
+            T2.contract_amount
+        FROM invoice_registration T1
+        LEFT JOIN sales_ledger T2 ON T1.sales_ledger_id = T2.id
+        LEFT JOIN customer T3 ON T1.customer_id = T3.id
+    </select>
+
+    <select id="invoiceRegisAndProductExcelDtoList" resultType="com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto">
+        SELECT
+            T1.id              ,
+            T1.sales_ledger_id   ,
+            T1.sales_contract_no ,
+            T1.customer_id       ,
+            T1.salesman          ,
+            T1.project_name      ,
+            T1.create_time       ,
+            T1.create_user       ,
+            T1.update_time       ,
+            T1.update_user       ,
+            T1.tenant_id,
+            T2.customer_contract_no,
+            T3.customer_name,
+            T2.contract_amount,
+            T4.product_category,
+            T4.specification_model,
+            T4.unit,
+            T4.quantity,
+            T4.tax_rate,
+            T4.tax_inclusive_unit_price,
+            T4.tax_inclusive_total_price,
+            T4.tax_exclusive_total_price,
+            T4.invoice_type,
+            T4.invoice_num,
+            T4.invoice_amount,
+            T4.no_invoice_num,
+            T4.no_invoice_amount
+        FROM invoice_registration T1
+                 JOIN sales_ledger T2 ON T1.sales_ledger_id = T2.id
+                 JOIN customer T3 ON T1.customer_id = T3.id
+                JOIN invoice_registration_product T4 ON T1.id = T4.invoice_registration_id
+        ORDER BY T1.id ASC
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3