# 销售折扣数据(ZkJinE)接口更新说明 ## 问题回顾 你们反馈 `/api/v1/i-sale/by-customer` 接口的 `ZkJinE` 字段始终返回 0,导致销售折扣金额(583 元部分)无法正确获取。 ## 根因确认 经查证,问题属实但需要澄清: - `/api/v1/i-sale/by-customer` 接口**确实返回了 `ZkJinE` 字段**,但该字段的数据来源是 `I_Sale` 表,而 `I_Sale` 表中该字段的值本身就是 0。这不是接口遗漏字段,而是数据源的问题。 - **真实的销售折扣数据**存在于 `F_Skd` 表中 `BianHaoID` 以 `XS` 开头的记录里。 ## 解决方案 我们已在 `/api/v1/finance/by-customer` 接口新增了 `sale_discount` 类型,用于从 `F_Skd` 表查询 XS% 行的财务数据(包含 `ZkJinE`)。 **此改动为纯增量更新,不影响任何现有接口和字段。** --- ## 对接方式 ### 请求 ``` GET /api/v1/finance/by-customer?customer_name_b64={base64url编码的客户名}&record_types=sale_discount ``` 也可以和其它类型组合使用: ``` GET /api/v1/finance/by-customer?customer_name_b64={base64url编码的客户名}&record_types=sale,sale_discount,receipt ``` ### record_types 可选值 | 值 | 说明 | 数据来源 | |---|---|---| | `sale` | 成品销售单 | I_Sale 表 | | `sale_return` | 客户退货单 | I_Sale 表 | | `receipt` | 收款记录(SK%) | F_Skd 表 | | `refund` | 退款记录(XT%) | F_Skd 表 | | **`sale_discount`** | **销售折扣记录(XS%)** | **F_Skd 表** ← 新增 | ### 响应结构 新增字段(在原有响应基础上): ```json { "mode": "customer_finance", "customer_name": "客户名称", "customer_ids": ["KH001"], "record_types": ["sale_discount"], "status": "active", "snapshot_at": "2026-05-19T10:00:00Z", "total_count": 5, "sale_discounts_count": 5, "sale_discounts": [ { "BianHaoID": "XS20260101-001", "KhID": "KH001", "RiQi": "2026-01-01T00:00:00Z", "KdRiQi": "2026-01-01T00:00:00Z", "YfJinE": 1000.00, "FkJinE": 800.00, "ZkJinE": 200.00, "JieSunFS": "...", "YhID": "...", "ZhaiYao": "...", "BeiZhu": "..." } ] } ``` ### sale_discount 每条记录包含的字段 | 字段 | 说明 | |---|---| | `BianHaoID` | 单据编号(XS 开头) | | `KhID` | 客户 ID | | `RiQi` | 日期 | | `KdRiQi` | 开单日期 | | `YfJinE` | 应付金额 | | `FkJinE` | 付款金额 | | **`ZkJinE`** | **折扣金额(你们需要的字段)** | | `JieSunFS` | 结算方式 | | `YhID` | 银行 ID | | `ZhaiYao` | 摘要 | | `BeiZhu` | 备注 | --- ## 关于差额 816 的对账建议 根据你们的分析: - receipt.ZkJinE = 233 → 通过 `record_types=receipt` 获取 ✅ - sales.ZkJinE = 583 → 现在通过 `record_types=sale_discount` 获取 ✅ 建议对账时同时请求: ``` record_types=receipt,sale_discount ``` 然后分别对 `receipts` 和 `sale_discounts` 数组中的 `ZkJinE` 字段求和,即可得到完整的折扣金额。 --- ## 注意事项 1. `sale_discount` 不会包含在默认查询中。如果不传 `record_types` 参数,默认只返回 `sale, sale_return, receipt, refund` 四种类型(保持向后兼容)。 2. 请求 `sale_discount` 时不需要传 `include_cash_movement` 或 `include_adjustments` 参数,这两个参数只对 `receipt` 和 `refund` 类型生效。 3. `customer_name_b64` 使用 base64url 编码(无 padding),与之前的用法一致。 如有疑问请随时联系。