🔄 结算发货,仅对拥有销售系统的公司(浦沱鑫 / 耀杰)开放;管理员可见;其余公司账号(立立橙 / 四方 / 爱鲜生)及订单 / 财务角色不可见。settle_outbox,状态 pushed,并调用 pushToSales() 推送至 https://s.putuoxin.com/sales_api.php?action=push。SET + 日期 + 4 位序号;重复提交(同单号)不会重复推送、不会重复入库。已推送 → 已生成应收(销售已收货) → 已确认实收,并支持「重新推送」「查看明细」。settle_ack → 白条生成应收(ar)paid,资金闭环回写白条
s_putuoxin + 接口对接,与白条库解耦。index.html 三张卡片:浦沱鑫(/putuoxin)、耀杰(/yaojie)、管理端(/admin);已签发 Let's Encrypt 证书(到期 2026-11-04,自动续期)。confirmReceive → 库存按「商品 + 规格 + 来源批次」聚合入库,并回调白条 settle_ack,触发白条生成应收。SYNC_TOKEN 校验;结算单号幂等;白条侧提供 retry_ack 在网络抖动时重试回写。| 环节 | 系统 | 动作 / 数据 |
|---|---|---|
| 建单推送 | 白条(浦沱鑫 / 耀杰) | settle_push → settle_outbox + 调 sales push |
| 待收货 | 销售 settle_inbox | 按公司隔离展示 |
| 确认收货 | 销售 | 库存入库 + btAck() 回调白条 |
| 生成应收 | 白条 | settle_ack 校验 SYNC_TOKEN → 写 ar |
| 确认实收 | 白条 | settle_paid(须先有 ar)→ 资金回写闭环 |
api.php:新增表 settle_outbox(无主键,状态 pushed/ar/paid,push_state pending/done,ar_amount);动作 settle_push / settle_ack / settle_paid / settle_list / settle_repush;pushToSales() 调 sales_api.php?action=push。sales_api.php:新增表 settle_inbox;动作 push / inbox / receive / retry_ack / load / save / accounts / ping;btAck() 回调 https://bt.putuoxin.com/api.php?action=settle_ack(SYNC_TOKEN 校验)。s_putuoxin(库用户 s_putuoxin),与白条 bt_putuoxin 完全隔离,仅通过接口 + 共享 SYNC_TOKEN 对接。settleAllowed()(admin 或浦沱鑫 / 耀杰);NAV_GROUPS 新增 {k:"settle", t:"🔄 结算发货", show:()=>navShow("settle", ()=>settleAllowed())};PERM_MODS 新增 ["settle","结算发货"];pageSettle() 内置页面级守卫,直连拦截。SETTLE_COMPANIES = ["浦沱鑫","耀杰"]、SALES_SITE = "https://s.putuoxin.com"、SALES_PATH = {"浦沱鑫":"/putuoxin","耀杰":"/yaojie"}、SYNC_TOKEN = "sync_ptx_2f9a4c7e1d"。deploy_sales.py 将销售系统上线至 s.putuoxin.com(含 nginx 子路径路由 /putuoxin|/yaojie|/admin → app.html 与 HTTPS 证书)。node --check 白条主脚本语法校验 通过test_v146.js 单元测试 63 / 63 通过(结算前端、settleAllowed 六角色矩阵、白条后端状态机、销售后端 receive/btAck/retry、销售前端菜单、v1.4.4 / v1.4.5 特性回归)e2e_settle.py 端到端联调 30 / 30 通过(pushed→pending→received→ar→paid 全链路、幂等、跨公司隔离、权限校验、异常路径)ping 返回 {"ok":true,"sys":"销售系统","db":"s_putuoxin"};bt.putuoxin.com settle_list 正常