Prechádzať zdrojové kódy

私有协议开票-新增差额原因,并且支持差额的动态计算

lipf 4 mesiacov pred
rodič
commit
e0a90da7ed

+ 6 - 1
commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncomeInvoice.java

@@ -3,12 +3,14 @@ package com.jzg.commons.entity.finance.po;
 import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.io.Serial;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Objects;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Schema(description = "财务应收开票表")
 public class InsPlyIncomeInvoice extends BaseModel {
@@ -35,13 +37,16 @@ public class InsPlyIncomeInvoice extends BaseModel {
         return Objects.requireNonNullElse(this.overinflatedAmount, BigDecimal.ZERO);
     }
 
-    @Schema(description = "应收费用")
+    @Schema(description = "应收费用/开票金额")
     private BigDecimal receivableSupervisePremium;
 
     public BigDecimal getReceivableSupervisePremium(){
         return Objects.requireNonNullElse(this.receivableSupervisePremium, BigDecimal.ZERO);
     }
 
+    @Schema(description = "差额原因")
+    private String paymentReason;
+
     @Schema(description = "税点")
     private String taxPoint;
 

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordResult.java

@@ -2,9 +2,11 @@ package com.jzg.commons.entity.finance.vo;
 
 import com.jzg.commons.core.base.PageRequest;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.math.BigDecimal;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 public class InvoiceRecordResult extends PageRequest {
 
@@ -43,6 +45,11 @@ public class InvoiceRecordResult extends PageRequest {
      */
     private BigDecimal overinflatedAmount;
 
+    /**
+     * 差额原因
+     */
+    private String paymentReason;
+
     /**
      * 应收项(转义)
      * 保留这个是为了兼容之前的功能

+ 2 - 8
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -139,18 +139,12 @@ public class ReceivableController {
         return HttpResult.ok(new InsPlyIncomeVO(data, receivablePageIds));
     }
 
-    //@PostMapping("getSelectedReceivableList")
-    @Operation(summary = "获取选中应收列表")
-    public HttpResult getSelectedReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
-        return HttpResult.ok(receivableService.getReceivableList(receivableQueryVo));
-    }
-
     @PostMapping("commissionInvoicing")
     @Operation(summary = "手续费开票")
     public HttpResult<InvoiceingResult> commissionInvoicing(@RequestBody InsPlyIncomeInvoiceVO invoicingVo){
         InvoiceingResult result = receivableService.addInvoicing(invoicingVo);
         if (Objects.nonNull(result)){
-            return HttpResult.ok("开票成功,发票号是" + result.getInvoiceId() ,result);
+            return HttpResult.ok("开票成功,发票编号是" + result.getInvoiceId() ,result);
         }
         return HttpResult.error("开票失败");
     }
@@ -178,7 +172,7 @@ public class ReceivableController {
             return HttpResult.ok("无占用");
         }else{
             List<String> invoiceIds = receivableService.queryIncomeBindInvoice(invoicingVo);
-            return HttpResult.error("订单已开票。发票序号是"+ invoiceIds.toString());
+            return HttpResult.error("订单已开票。发票编号是"+ invoiceIds.toString());
         }
     }
 

+ 17 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -493,7 +493,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         if(!b){
             List<String> invoiceIds = this.queryIncomeBindInvoice(invoicingVo);
             invoice.setCanInvoice(false);
-            invoice.setErrMsg("订单已开票。发票序号是"+ invoiceIds.toString());
+            invoice.setErrMsg("订单已开票。发票编号是"+ invoiceIds.toString());
             return invoice;
         }
         invoice.setCanInvoice(true);
@@ -654,6 +654,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     public InvoiceingResult addInvoicing(InsPlyIncomeInvoiceVO invoicingVo) {
         log.info("开票:invoicingVo=[{}]", JSONUtil.toJsonStr(invoicingVo));
         try {
+            this.valide4Invoicing(invoicingVo);
             InvoiceingResult result = new InvoiceingResult();
             InsPlyIncomeInvoice invoice = new InsPlyIncomeInvoice();
             BeanUtils.copyProperties(invoicingVo, invoice);
@@ -694,6 +695,21 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
     }
 
+    /**
+     * 开票前的校验
+     *
+     * @author lipf
+     * @date 2026/5/28 9:25
+     */
+    private void valide4Invoicing(InsPlyIncomeInvoiceVO invoicingVo) {
+        if(invoicingVo == null){
+            throw new ServiceException("无法开票,开票参数为空");
+        }
+        if(StrUtil.isEmpty(invoicingVo.getInvoiceNo())){
+            throw new ServiceException("发票号不能为空");
+        }
+    }
+
     @Override
     public BigDecimal getInvoicingAmount(String invoicingId) {
         BigDecimal ctualReceivedAmount = new BigDecimal(BigInteger.ZERO);

+ 2 - 1
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1173,7 +1173,8 @@
             eic.name as company_name,
             eic.name_simple as companyNameSimple,
             sum( ipiis.actual_received_amount ) AS actual_received_amount,
-            ipii.status
+            ipii.status,
+            ipii.payment_reason
         FROM
             ins_ply_income_invoice ipii
                 LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id