# 返利班现行模式(给审计) 写代码以 `返利流程.md` 为准。班次入口 `run_batch.py`。节点名 `REBATE_IMPORT` 仍叫 IMPORT,页面走细单新增,**不做 Excel**。 ## 班次 1. 领表 4 `action_code=1 AND contract_status=1 AND process_status=0`(改成 3,同一合同号整组);领表 3 只录协议行 `process_status` 0→3 2. 按合同号查返利中心,表里出现该号才算搜到 3. 勾已有总单(审批通过后已有一条,不要新增总单) 4. 补总单必填 → **卡片仍在编辑时**点总单工具栏保存 → 卡片确认 5. 细单:货品「新增」→ 货品编码三个点按表 3 `goods_id` 搜 → 货品卡片「确认 Ctrl + Enter」落到表 → 全部确认完再点货品工具栏保存 6. 总单工具栏送审;成功才写表 4 7. 同一合同一组一个结果 货品行:`load_contract_goods` 先按 `contract_no`,空则用表 4 该合同的 `oms_id` 对表 3。 ## 字段(现行) | 位置 | 字段 | 值 | | --- | --- | --- | | 总单 | 供应商编码 | 表 3 `supplier_mdm_code`,三个点搜 | | 总单 | 计划员 | 表 3 `planner_name`(选择框,不要选 ID) | | 总单 | 联系人 | 写死苏文辉(表 3 无此列) | | 总单 | 返利合约 | 否 | | 总单 | 采购结算方式 | 电汇(不要点电汇—非直联) | | 总单 | 承付模式 | 下月N号结 | | 总单 | 承付参数 | 表 3 `payment_term` | | 总单 | 协议开始/结束 | 表 3 `contract_start_date` / `contract_end_date` | | 细单 | 货品 | 表 3 `goods_id` | | 细单 | 数量 / 含税单价 | 表 3 `qty` / `unit_price` | | 细单 | 无税单价 | `含税 / (1+税率)` | | 细单 | 承付模式 | 下月N号结 | | 细单 | 承付参数 | 表 3 `payment_term` | | 细单 | 采购结算方式 | 电汇 | | 细单 | 备注 | `oms_id` | | 细单 | 特定补偿 / 进货补偿 | 0 | | 细单 | 货源细单ID | 表 3 `goods_source_id`。空 → 整组停。弹层按联系人过滤 | 落表:起草行 `contract_status=2`、`process_status=1`;送审成功每 `oms_id` 插 `action_code=2`、`agreement_status=1`,带协议总单ID / 协议细单ID;`push_status=0`。人名固定「系统管理员」。搜不到表 4 `process_status` 改回 0。 ## 修改(相对旧稿 / Excel 方案) | 项 | 旧 | 现 | | --- | --- | --- | | 细单路径 | Agents / README 写「下模板 → 填 Excel → 上传」 | 页面「新增 + 货品ID搜」。`run_import_flow` 调 `add_detail_lines_by_goods_id` | | `返利流程(1).md` | 已知/未知草稿,Excel 与页面双轨 | 废稿,指向 `返利流程.md` | | 计划员 | 映射表 / 口径:订单中心 `planner_name` | 表 3 `planner_name` | | 联系人 | 映射表无 | 写死「苏文辉」。货源弹层按此人过滤 | | 采购结算方式 | 映射表总单默认「否」、细单代码 `3` | 总单、细单都精确点「电汇」 | | 承付参数 | 「不要填 25 / 以销售定结」 | 表 3 `payment_term` | | 关税税率 | 映射表 `0.13` | 不填 | | 税率 | 映射表固定 `0.13` | 表 3 `purchase_tax_rate`,空则 `0.13` | | 细单日期 | 映射表开始当天、结束年底 | 先用页面默认,报错再看 | | 总单保存 | 先卡片确认再保存 | 先总单工具栏保存(卡仍在编辑),再确认 | | 细单确认 | 容易点到总单「确认」 | 只点货品卡片「确认 Ctrl + Enter」,确认后核对货品表有该 `goods_id` | | 计划员弹层 | 适配器看见「货源选择」就关 | 计划员三点打开的货源层要按住再按表 3 姓名搜 | | 货品来源 | 只按表 3 `contract_no` | `contract_no` 空时用表 4 `oms_id` 对表 3 | | 落表 | (曾按行拆成功/失败,已撤回) | 同一合同一组一个结果 | ## 增加 | 项 | 落点 | | --- | --- | | 班次入口 | `run_batch.py`:查号 → 总单 → 细单新增 → 送审 → `save_group` | | 总单数字框键盘填账期 | `_fill_pay_param` | | 细单键盘填账期 | `_fill_last_detail_qty_price` / `_type_detail_field` | | 货品表核对 | `_goods_table_rows`、`_wait_goods_row` | | 原生点击 | 计划员附加按钮、总单/货品工具栏保存、卡片确认 | | 现行登记 | 本文件 | ## 代码里还留着、班次不走 `rebate_import.py` 仍有 Excel 下模板 / 填表 / 上传函数(`write_canonical_template`、`download_detail_template` 等)。`run_import_flow` 不调用它们。不要按这些函数写新逻辑。对外仍从 `rebate_flow_steps` import。 正式班次只读表 3,缺列整组停,不用环境变量顶。`run_header.py` / `run_import.py` 页面干跑才允许环境变量 / `REBATE_IMPORT_LINES` JSON。 联系人、返利合约、电汇、承付模式、补偿 0 待业务确认,清单 `待确认字段.md`。 口 2 / 口 4 HTTP、M5、药帮忙支付不在本包,见根 `README.md`「本期未做」。