liding
2 天以前 0f746d8324fb2ce65119627890b9c26ba1eaadd0
fix(sales): 修复客户交易查询中的合同金额计算问题

- 修正CustomerMapper.xml中的合同金额计算逻辑,减去退货金额
- 在ReturnManagementServiceImpl中添加退货后合同金额更新功能
- 为SalesLedger实体添加netContractAmount字段存储实际合同金额
- 优化ShippingInfoMapper.xml的客户发货信息查询,添加去重和关联条件
已修改4个文件
25 ■■■■ 文件已修改
src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/basic/CustomerMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/ShippingInfoMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -21,6 +21,7 @@
import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.ShippingInfoService;
import lombok.RequiredArgsConstructor;
@@ -123,8 +124,18 @@
        }
        salesRefundAmountOrder.setRefundAmount(bigDecimal);
        salesRefundAmountOrder.setNotRefundedAmount(salesRefundAmountOrder.getRefundedAmount());
        // 分批退款
//        salesRefundAmountOrderService.addSalesRefundAmountOrderDto(salesRefundAmountOrder);
        // 更新销售台账的退货后合同金额
        if (byId.getShippingId() != null) {
            ShippingInfo shippingInfo = shippingInfoService.getById(byId.getShippingId());
            if (shippingInfo != null && shippingInfo.getSalesLedgerId() != null) {
                SalesLedger salesLedger = salesLedgerMapper.selectById(shippingInfo.getSalesLedgerId());
                if (salesLedger != null && salesLedger.getContractAmount() != null) {
                    BigDecimal netAmount = salesLedger.getContractAmount().subtract(byId.getRefundAmount() != null ? byId.getRefundAmount() : BigDecimal.ZERO);
                    salesLedger.setNetContractAmount(netAmount);
                    salesLedgerMapper.updateById(salesLedger);
                }
            }
        }
        return true;
    }
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -109,6 +109,9 @@
    @Schema(description = "付款方式")
    private String paymentMethod;
    @Schema(description = "实际合同金额")
    private BigDecimal netContractAmount;
    @TableField(exist = false)
    @Schema(description = "生产状态")
    private String productionStatus = "未开始";
src/main/resources/mapper/basic/CustomerMapper.xml
@@ -126,7 +126,7 @@
    <select id="customewTransactions" resultType="com.ruoyi.sales.vo.CustomerTransactionsVo">
        select T1.customer_id,
               c.customer_name,
               T1.contractAmounts,
               T1.contractAmounts - IFNULL(T4.returnAmount, 0) AS contractAmounts,
               IFNULL(T2.receiptPaymentAmount, 0) AS receiptPaymentAmount,
               IFNULL(T3.outboundAmount, 0) - IFNULL(T4.returnAmount, 0) AS receiptableAmount
        from (select customer_id, sum(contract_amount) as contractAmounts from sales_ledger group by customer_id) T1
src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -101,8 +101,9 @@
        order by sor.id
    </select>
    <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo">
        select * from shipping_info si
        select distinct si.* from shipping_info si
        left join sales_ledger sl on si.sales_ledger_id = sl.id
        where  sl.customer_name = #{customerName}
        inner join stock_out_record sor on sor.record_id = si.id and sor.record_type = '13' and sor.approval_status = 1
        where sl.customer_name = #{customerName} and si.status = '审核通过'
    </select>
</mapper>