3.6 KiB
合同系统录入流程(现行)
对照:RPA订单中心接口开发口径_20260930.md 第 4 节。
页面动作对照:rpa_contract/contract_flow_steps.py、rpa_contract/selectors/contract_create_selectors.json、rpa_contract/examples/。
状态中心 job / 13 节点 / start-complete-fail 不再使用。合单、班次、回写以口径为准;点哪些控件以 rpa_contract 为准。
1. 数据从哪来
订单中心推接口 3,落入 rpa_purchase_contract_data。合同班读 process_status=0。
一天两班(中午、下午)。启动瞬间冻结本班名单,跑的过程中新进的下一班再处理。
按 supplierId 合成一份合同:
- 不用
omsId,不用供应商名称 - 头字段(账期、签订日、起止日、采购员、计划员)取该班该供应商第一行
- 下午同一供应商另开一份,不改上午已录合同
contractEntryStatus=0且带contractNo:只录返利协议,不进合单、不重开合同
旧脚本按「供应商 + 订单日期」建单,并且把签订日/开始日写成订单日期。那是上一套模型,不要抄。
2. 页面步骤(合同测试系统)
地址:http://contract-test.gzmpc.com:8080/
测试账号见 rpa_contract/README.md。客商必须是系统里真实存在的操作码,占位符搜不到。
脚本现用直达起草/模板 URL,绕过左侧菜单和「点模板」的前端委托(Selenium 点不中):
- 起草:
DRAFT_PAGE_URL - 非格式采购协议(2025 集团版)模板 ID:
198d10b04325279b8ffeb8b4c6493b5a→FORM_PAGE_URL
顺序:
- 打开合同系统并登录
- 进起草,套非格式采购协议模板
- 签约方:客户编码、客户名称(用接口 3 的供应商 MDM / 名称,以页面能搜到的为准)
- 基础信息:合同版本类型、合同类别、结算类型、合同背景概述、合同性质=主合同
- 金额与日期:签订日 / 开始日 / 结束日用接口 3 第一行的
contractSignDate、contractStartDate、contractEndDate - 货品明细:该班该供应商合进来的行(货品、规格、数量、单价、MDM)
- 付款与标志:这期一律账期,不勾预付款;付款期限用
paymentTerm。页面「账期支付」对应选项「电汇」(见脚本_PAYMENT_ALIASES) - 尽调:看合同系统页面回显。未尽调 → 本单失败,原因「客户未尽调」,不往下填。旧脚本没有这一步,口径有
- 点提交,不要点暂存。暂存号不拿去录返利
- 从「我的合同」读正式合同号
医药城同供应商同日 PDF 合并上传,是旧主链(平台导出扫描件)的步骤。接口 3 这条链有没有附件,录合同时再核对,不要默认还去拼 PDF。
3. 提交之后
提交成功:
- 写入表 4,接口 4
actionCode=1,contractStatus=1(起草),带合同号 - 同一份合同下多个
fid回同一套号和状态 - 合同任务结束。不要重录合同。
「合同成功」不是提交成功,而是返利中心能搜到这个合同号。查号挂在返利班,搜到再回 contractStatus=2;搜不到不重录,下一班再搜。
4. 代码要从哪抄
| 要 | 文件 |
|---|---|
| 打开/登录/填表/提交/读号 | rpa_contract/contract_flow_steps.py |
| 字段 name / 选择器 | 同文件里的 F、X;selectors/contract_create_selectors.json |
| 浏览器适配 | rpa_contract/apa_browser_adapter.py |
| 干跑样例 | rpa_contract/examples/contract_create_input_dry_run.json |
旧状态中心(callback_client.py / agent.py / start-complete-fail)已从仓库删除。不要再接。