409 Commits

Author SHA1 Message Date
18c28c4f1a feat: 快递资料接入合同甲乙方并联动协议签署 2026-10-15 16:56:08 +08:00
f41a8fa6ba 钉钉登录:单独授权人员仅访问三个快递报价页面 (#339)
按精确企业身份开放受限登录,保留在职校验和普通角色;统一限制菜单、页面、导出与预览。59 项相关测试通过,无数据库迁移。
2026-10-15 15:21:05 +08:00
cccd321195 快递应付:清空运费对账页面并停用错误数据源 (#338) 2026-10-15 14:08:05 +08:00
1131d073ce 快递入驻:指定钉钉初复审人员,复审任一人通过 (#337) 2026-10-15 13:52:30 +08:00
fd4b155979 feat(快递资料): 归档合同管理与到期提醒 (#336) 2026-10-15 10:22:35 +08:00
8d7f6da49f feat(协议签署): 按需生成证件推送单并独立签署归档 (#335) 2026-10-15 08:19:32 +08:00
8ba7ac8327 feat(快递入驻/快递资料): 生成二维码时必填快递资料并对齐到快递资料;去掉「发起报价变更」按钮;自定义3 改名扣款方式
- 生成入驻二维码新增 11 个必填项(快递方看不到,放在入驻流程下方单独一块):快递类型、快递合作方式、快递属性、扣款方式、单号类型、快递邮箱、
  是否需要核对物流点、快递发货方式、是否已有工作平台账号、快递网点代码、网点所在地区;入驻列表、入驻详情可查看和修改
- 快递资料:扣款方式对齐到「扣款方式」列(工作平台没填时用入驻的),其余字段接在入驻信息列里;网点代码/地区进网点明细;导出同步
- 不再依赖钉钉「新建快递」流程字段,ERP 开通改为手动补录 ERP账户ID
- 快递资料「自定义3」列、筛选、编辑和导出表头改名为「扣款方式」(字段仍是 undefined3)
- 报价管理工具栏、报价历史页去掉「发起报价变更」:它默认拿第一份报价走老的改格子流程,对入驻快递会绕开后台变价;
  变价统一从报价列表每一行的「变价」进入;老报价编辑页新增 …/changes/new 入口,避免套餐限制中间件把 GET …/create 跳到用户页
- 新增迁移 2026_10_14_300000:business_courier_onboardings 加 11 个可空字段

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019gzfsnV3fJ89CoUy1D9V9g
2026-10-14 18:31:25 +08:00
71652c5a64 feat(快递入驻): 快递扫码填写入驻资料 + 两级审核 + 首版报价 + 签署开通
快递应付 → 快递报价 下新增「快递入驻」页:生成入驻二维码发给快递方,
对方免登录在手机上填写主体、联系人、e签宝签署人、结算账户、报价并上传资质,
内部对接人初审、管理员财务复审后生成首版报价,并自动生成报价确认单 PDF
推送到快递填写的 e签宝账号,签署归档后开通。

- 新增三张表 business_courier_onboardings / _files / _events(纯新增,不改旧表)
- 免登录填报页 /onboarding/courier/{token}:40 位随机 token,可暂存、提交、退回后补件,
  链接有效期可延长、可作废;银行账号加密存储;附件存 uploads 盘
- 新增 COURIER_ONBOARDING_PUBLIC_URL 配置二维码里的站点地址(留空用当前访问地址)
- 内置纯 PHP 二维码生成(App\Support\QrCode,SVG 输出,无新增依赖)
- 生成二维码时必须定好系统快递名称(唯一,快递方不可见);财务复审沿用该名称,快递所填报价写成报价管理的 CourierQuoteVersion,
  复用 CourierQuoteSignatureService 生成报价确认单并推送 e签宝(失败可重推/同步状态);初审人默认不能复审(COURIER_ONBOARDING_ALLOW_SAME_REVIEWER=true 可在测试环境放开)
- 支持公司 / 个人两种入驻:个人填姓名+身份证号(加密)、传身份证和银行卡,报价确认单按个人身份在 e签宝签署
- 扫码先选入驻方式;证件改为 营业执照 / 法人身份证正反面 / 银行卡正反面 各一张(个人营业执照选填),手机端上传前自动压缩,超限回到填报页提示
- 报价支持 4 种计费方式(面单+费率 / 首重+续重 / 按重量段一口价 / 小重量一口价+超出另算,费率可分段)+「其他」上传报价表;附加规则:计泡、起算重量、取整、每票加收(CourierQuoteStructure)
- 不再要求上传盖章报价单,至少填写一行在线报价
- 开通:报价确认单签署归档、或匹配到已签署协议、或填写线下签署说明
- 生成二维码前必填「快递公司代码」(自动大写、不可重复),入驻信息按代码对齐快递资料
- 公司入驻对公(营业执照主体)+ 对私(法定代表人)两个打款账户必填并自动核对;个人入驻对私必填、对公选填
- 变价:报价管理里后台改价 → 审核 → 自动推送快递 e签宝 → 回签;回签单导出 xlsx/zip;误发版本可作废
- 短期(临时)变价:变价单/报价版本加选填「结束日期」(end_date);按日期取价,期间用临时价,到期次日自动恢复原长期报价,
  不用重签;报价管理显示 生效中(临时)/ 暂停中 / 已到期,确认单写明执行期间和到期后恢复的版本,审核提醒期间重叠
- 快递资料分四类:快递资料 / 网点 / 打款信息 / 操作日志,支持查询、导出、重置、编辑;
  财务系统入驻的快递直接作为快递资料行,合同起止取协议签署里已签署的合作合同;
  点开一行在下方看该快递的网点 / 打款信息(完整账号)/ 操作日志
- 编辑存财务系统覆盖值(business_courier_profiles,不回写工作平台),改动记操作日志(business_courier_profile_events)
- 打款信息新增 / 变更(business_courier_payment_accounts,账号加密)保存后跳到协议签署,自动预填收款账户证明 / 收款账户变更,
  按签署状态显示 待推送协议 / 签署中 / 已生效;入口在快递资料明细和「打款信息」页签(表格每个账户可直接「变更」)
- ERP 开通:入驻开通后标「待 ERP 开通」,可手动补录(钉钉「新建快递」流程同步待接入)
- 新增 CourierOnboardingWorkflowTest(8 个用例),更新快递报价目录顺序断言

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019gzfsnV3fJ89CoUy1D9V9g
2026-10-14 13:47:00 +08:00
ea80148dfc 店铺违规预警:级别/责任人/处理截止/超时/推送状态 + 处理状态四档 + 群推送接口 + 预览统计页 (#332) 2026-10-13 19:54:01 +08:00
45a28aa76c 快递报价:工作区 iframe 内不再重复显示已打开页面标签栏
- 已打开页面标签栏只在最外层窗口渲染,iframe 子页面不再出现同一条标签栏,
  避免点标签时在 iframe 内部再套一层快递报价工作区(页面上出现两份同样的页签+标签行)
- 快递报价工作区注入的样式同时隐藏 .open-tabs,兜住浏览器缓存的旧子页面
2026-10-13 15:51:04 +08:00
a884da7057 侧边栏菜单搜索 + 已打开页面标签栏
1)侧边栏菜单上方新增搜索框:按关键字过滤菜单项(如输「快递应付」直接定位),
   无匹配时给出提示,Esc 清空。
2)页面顶部新增「已打开页面」标签栏:点开过的业务页面并排固定在页面上方,
   点标签直接切回(回到最近一次带筛选的地址);同一张页面按路径去重;
   标签按账号存在浏览器本地(localStorage),没退出登录就一直保留;
   支持单个关闭和「清空(保留当前页)」,最多并排 15 个,超出横向滚动。
   钉钉单页入口模式下不显示这个标签栏。
2026-10-13 14:57:22 +08:00
cdcb1c6662 应付云仓车费:明细行点击高亮 (#331) 2026-10-13 14:29:57 +08:00
d3049686b4 应付云仓车费:移除「全部表单字段/付款明细/审批任务」三列 (#330) 2026-10-13 14:12:47 +08:00
8905192b78 应付云仓车费:附件支持点击下载 (#329) 2026-10-13 13:58:31 +08:00
26b83bd8e7 钉钉入口单页模式扩到整个「财务经营风险管控」目录
上一版只对店铺违规信息预警单页;在钉钉里点该目录的另一个页签(流程统计)又会
冒出整排菜单。改成:只要属于 financial-risk-control 目录、且来自钉钉容器
(或显式 ?focus=1),就隐藏全局菜单,只保留该目录自己的页签。
2026-10-13 13:53:49 +08:00
7a5f04287c 钉钉工作台入口:店铺违规信息预警整页展示(隐藏全局菜单)
钉钉工作台里点进来的这个入口,现在只显示这一张页面:不再渲染全局侧边栏,
内容区占满宽度,其余页面和网页端登录完全不受影响。

判断依据:当前页面是 financial-risk-control/store-violation-alert,且请求来自
钉钉容器(UA 含 DingTalk)或显式带 ?focus=1;路由参数取不到时按路径段兜底。
2026-10-13 13:28:59 +08:00
57f2dccfac 应付云仓车费:修复附件列为空 (#328) 2026-10-13 13:26:59 +08:00
d47a72c175 店铺违规预警:新增违规原因与处置方式两列(页面/统一表/导入导出) (#323) 2026-10-13 11:32:27 +08:00
53b0821384 快递应付:仓储运费更名为仓储费 (#320) 2026-10-13 10:59:30 +08:00
8b62ba0504 附加费结算:筛选字段可自选显示(筛选设置) (#321) 2026-10-13 10:59:29 +08:00
bbf8c1f16c 附加费结算:分页改为退货取件管理同款紧凑样式 (#319) 2026-10-13 10:41:33 +08:00
f663ddc51f 附加费结算:明细行点击高亮,方便核对时标记当前行 (#317) 2026-10-13 09:56:41 +08:00
c55c06026f 快递应付:报价维护只留报价页签 + 附加费结算定时同步(每日7天/每周90天) (#314) 2026-10-12 17:49:10 +08:00
e883d262f0 快递应付:修复三方仓进销存加载超时 2026-10-12 17:22:17 +08:00
45b9feb8c4 快递应付:附加费结算增加独立页签入口 2026-10-12 16:59:51 +08:00
66d6146c19 快递运费:导入兼容「店铺」列名(财务系统提供成本5-6.xlsx 用)
列名别名扩展:店铺名称/店铺;csv 与 xlsx 两条路径的用例同步覆盖。
2026-10-12 14:55:01 +08:00
0da349e51b 快递应付:仓储核算移为独立仓储运费 (#311) 2026-10-12 14:46:52 +08:00
9f6a5f6fde 退货取件管理:整行点击异步加载详情,本地 opcache 提速 2026-10-12 13:47:01 +08:00
3e24bc5111 快递应付:左侧增加快递报价入口并打开四个页面 (#309) 2026-10-12 13:26:22 +08:00
10c22a655d 退货取件管理:详情精简置底、当前行高亮、内部滚动与快递公司多选 2026-10-12 13:14:53 +08:00
f7547bc9a1 feat(快递应付): 四个报价相关模块归入快递报价子目录 (#307) 2026-10-12 12:17:13 +08:00
f3143e6959 快递运费:修复 XlsxSheetReader 可选列漏传闭包导致 xlsx 导入报未定义变量
补 xlsx 路径导入测试(csv/xlsx 是两条代码路径,此前只测了 csv)
2026-10-12 12:07:09 +08:00
f805920fda 快递运费:新增「店铺名称 / 快递单号 / 条形码」列,并按「财务系统运费整理.xlsx」重新导入
- 迁移:courier_freight_rows 增加 express_no / barcode / shop_name(可空)
- 导入器支持可选列(快递单号 / 条形码 / 店铺名称),老文件缺这三列也能导;XlsxSheetReader 支持可选列表头
- 页面与导出新增三列;运费差 / 结算运费 / 其他附加费汇总 / 退件费 表头与取数逻辑不变
- 测试:新增新列导入、老文件兼容、页面展示用例
2026-10-12 11:56:00 +08:00
50cfbf1c14 feat(协议签署): 接入供应商代发、代销和生产合作合同模板 (#306) 2026-10-12 10:48:04 +08:00
1e689d254e 附加费结算:超长费/退回费/拦截费拉取、导入核验与模板导出 2026-10-12 09:33:24 +08:00
597104430e 协议签署:每条公司主体增加删除功能 (#304)
每条公司主体增加确认删除,保留历史快照,删除默认主体后选择剩余主体,全部删除回退当前公司。相关21项测试246条断言及隔离页面交互通过。
2026-10-11 14:26:31 +08:00
cbec6a8b62 供应商管理增加每天08:15完整同步 (#302) 2026-10-11 13:57:28 +08:00
ad7226081a 协议签署:供应商合作合同显示模板待提供
供应商合作合同使用待提供模板提示;授权委托书复用现有模板,快递合作合同正常。页面测试及浏览器切换和预览验证通过。
2026-10-11 13:47:19 +08:00
ad3961b82d 修正供应商易签宝账号并接入签署选择 (#300) 2026-10-11 13:39:03 +08:00
665b8fafd2 接入供应商管理页面与共享镜像 (#297) 2026-10-11 12:11:15 +08:00
ad6d70a0a2 协议签署:增加合作方类型与供应商待接入展示
合作方类型与供应商待接入展示;53 项测试、825 条断言通过。
2026-10-11 11:55:11 +08:00
48553c001d 协议签署:每条任务支持自主删除
全部状态、两类任务支持确认软删除,保留文件及外部签署流程。相关72项测试通过,权限及公司隔离保持不变。
2026-10-11 11:24:30 +08:00
766a85b097 协议签署:待处理任务增加删除和确认 2026-10-11 10:37:28 +08:00
0e1feaf1e6 修复协议文件签字盖章区域过小 (#293) 2026-10-11 10:17:32 +08:00
118f030220 fix(协议签署): 修复授权委托书编号重叠 (#292) 2026-10-11 10:09:47 +08:00
4eb09a1fcc 协议签署:待处理与已归档视图、归档原因及文件下载 (#291) 2026-10-11 09:55:46 +08:00
53cd0c3ce6 聚水潭订单标签明细:新增「货号」列,货号 X00006 的订单判为种菜订单
- 新增 jst_order_labels.item_code 迁移;导入时从商品明细镜像按 o_id 写入货号(被替换/取消的明细不计入)
- 「是否种菜订单」增加规则:货号含 X00006(信誉订单虚拟条码)直接判「是」
- 页面与导出新增货号列;新增 jst-order-labels:sync-item-codes 回填命令
- 测试:新增货号/种菜判定/回填命令用例,并修正导出表头过时断言
2026-10-10 16:06:02 +08:00
37d18612a6 修复合作合同 PDF 方框、文字重叠与签字区分页 (#290) 2026-10-10 14:34:13 +08:00
153b823ab8 修复已注销主体变更遗漏现公司签署 (#289) 2026-10-10 13:28:37 +08:00
0234bae83f 修正共用合同合作方及归属主体,支持个人实名签署 (#288) 2026-10-10 12:10:32 +08:00