feat(yun8_sync): 重写 ETC 开票步骤 (Step 22-23) 及配套配置文档

- pipeline.py: ETC 开票信息写入 base_etc_invoice + 推送记录写入
  tms_order_etc_push, 随 receipt 阶段执行; 每单发票条数可配
  (etc_invoice.count), 发票号/金额/进出站/时间自动变化,
  金额合计受运费×50%约束; order_code/order_no 取步骤 03 的
  orderCode, push_order_no 追加 -1, dry-run 仅预览不写库
- config.yaml: 新增 etc_invoice 配置节 + 刷新登录 token
- README.md: 阶段 E 流程图、接口表 Step 22/23 及取值说明
This commit is contained in:
xst
2026-09-02 17:44:52 +08:00
parent 625a589bfc
commit 224fe88ea6
3 changed files with 190 additions and 53 deletions
+6 -2
View File
@@ -22,8 +22,9 @@
│ 阶段 D: 回单文件 + SQL (Step 15-18) │
│ 运单上传(payNo) → 打款记录 → 文件名前缀 → INSERT → 上报运单 │
├─────────────────────────────────────────────────────────────────┤
│ 阶段 E: ETC 开票 SQL (Step 22-23) │
│ 写入 base_etc_invoice → 写入 tms_order_etc_push │
│ 阶段 E: ETC 开票 SQL (Step 22-24) │
│ 写入 base_etc_invoice (多条) → 写入 tms_order_etc_push │
│ → 更新 tms_order_detail 开票状态 │
└─────────────────────────────────────────────────────────────────┘
```
@@ -236,5 +237,8 @@ yun8_sync/
| — | SQL INSERT | — | `ntocc.base_gd_mft_file` | — |
| 22 | ETC 开票信息写入 | SQL INSERT | — | `ntocc.base_etc_invoice` | — |
| 23 | ETC 推送记录写入 | SQL INSERT | — | `ntocc.tms_order_etc_push` | — |
| 24 | 运单 ETC 开票状态更新 | SQL UPDATE | — | `ntocc.tms_order_detail` | — |
> 步骤 22 每个运单插入 `etc_invoice.count` 条发票(config.yaml 配置,默认 3),每条的**发票号码**(随机 20 位数字)、**金额**(随机分配,**所有发票合计 ≤ 运费×50%**,运费优先取 `driverActualFreight`、缺失时取 `shipmentActualFreight`,超限或运费未知则跳过发票写入)、**进站/出站**(按广东→河北路段链取相邻两站)、**时间**(交易时间在运单窗口内逐条推进)各不相同;税额、开票方、发票类型、URL 等其余字段用固定值。
> 步骤 22/23 的 `order_code`/`order_no` 取步骤 03 的 `orderCode`,`push_order_no` 为其后追加 `-1`,`order_detail_code` 取步骤 03 的 `code`,两个表的 `code` 按现有数据规则(32 位十六进制)自动生成,随 receipt 阶段执行(`--dry-run` 仅预览不写库)。
> 步骤 23 的推送记录固定写入 `invoice_pull_status=2`、`start_status=1`、`end_status=1`、`start_result='成功'`、`end_result='成功'`;步骤 24 将步骤 03 `orderCode` 对应运单的 `etc_invoice_status` 置为 3。