911 Commits

Author SHA1 Message Date
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
d8dfb33437 fix(发货数据): 仓库按实际出库单发货仓、补入无需物流虚拟发货、作废单号识别换单
- 仓库一律按实际出库单 wms_co_id 映射(从快递公司一致的明细行学习仓库名,样本>=3 且占比>=90% 才回填),
  修正发货明细写总仓而实际由工厂代发仓出库(如 710099981090 千优代发仓)的情况。
- 快递名称为"无需物流"(补差/信誉/运费等虚拟发货,如 X00006)的包裹仓库统一为"简尚-自动发货仓",与工作平台一致。
- 换单配对:快递明细单号只对应作废出库单时视为已换单,改用有效出库单的新单号(如 DPK366101313659 -> SF1549142274850)。
- 出库单兜底不再跳过"无需物流"的无单号出库单(信誉订单/补差价/运费专用等虚拟发货),按工作平台口径补入自动发货仓、快递单号为空;
  9 月核对工作平台有、线上无的 565 条虚拟链接,抽查确认为此原因(出库单无单号被跳过)。
- 换单配对查询(logistic_id 无索引)副本库超时时跳过本页,不再中断整轮同步;结果返回 tracking_pairing_skipped_pages。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014nvGZkg27YMEdhry6eiuwf
2026-10-12 09:58:05 +08:00
1e689d254e 附加费结算:超长费/退回费/拦截费拉取、导入核验与模板导出 2026-10-12 09:33:24 +08:00
chenxi
d9646b4ac9 财务经营分析表:按「时间-平台-店铺」聚合收入与成本
财务经营报表新增「财务经营分析表」页面,一行 = 一个月的一个平台的一个店铺,
表头:时间、平台、店铺、收入、成本、运费。
- 收入 = 业绩明细的(收入金额 + 优惠金额 + 冲减金额 + 退款金额)按各字段记账符号求和
- 成本 = 商品成本表按店铺汇总的商品成本
- 运费暂不取数,页面显示「—」、导出留空列
支持月份(含全部月份)/平台/店铺筛选、汇总卡片与 CSV 导出,聚合结果按月份缓存 5 分钟。
2026-10-11 22:04:54 +08:00
597104430e 协议签署:每条公司主体增加删除功能 (#304)
每条公司主体增加确认删除,保留历史快照,删除默认主体后选择剩余主体,全部删除回退当前公司。相关21项测试246条断言及隔离页面交互通过。
2026-10-11 14:26:31 +08:00
976db7e4f1 授权委托书三处往来方名称跟随我方签署主体
## 变更

- 授权委托书的“账单往来方”“借支协议相对方”“代收货款往来方”三项改为跟随“我方签署主体”。
- 快递公司和供应商共用授权委托书模板,因此两种合作方均同步生效。

## 验证

- `AgreementSigningPageTest.php`:14 tests, 197 assertions passed。
- 实际生成授权委托书页面确认三处字段初始值均来自当前我方主体。

仅涉及页面模板字段标记,不涉及金额、权限、数据库迁移或配置。
2026-10-11 14:18:36 +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
87e5ce0df2 协议签署:供应商增加合作合同和授权委托书选项
开放已有模板,适配供应商签署账号标签与乙方名称提示;14 项页面测试、193 条断言及浏览器模板切换和预览验证通过。
2026-10-11 13:30:14 +08:00
49c6e1ecd1 修复供应商管理资料镜像索引与存储分类 (#298) 2026-10-11 12:34:31 +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
22133450a6 业绩明细:种菜金额口径加上货号 X00006(与标签明细页同一规则)
- 种菜订单集合 = 种菜明细表 ∪ 标签明细里「是否种菜订单=是」;后者改为命中种菜标签映射或货号含信誉订单虚拟条码 X00006
- 种菜明细表部分不再依赖标签映射是否为空
2026-10-10 17:20:05 +08:00
29f801bd92 聚水潭订单标签明细:修复货号回填进度打印引用未定义变量导致中断的问题 2026-10-10 16:18:27 +08:00
0a89a24f28 聚水潭订单标签明细:修复货号回填把纯数字订单号绑成整数导致的 MariaDB 1292 报错
订单号改用值对列表传递、全程按字符串绑定,避免 PHP 数组键自动转 int 后与字符列 order_no 比较被强转数字
2026-10-10 16:11:52 +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
2da46a2a86 业绩明细:修复导出「差额」列把未匹配行写成 0 的问题
- 未匹配行的差额在库里是 NULL,导出取值用了 ?? '' 变成空字符串,原判断只认 null,
  这些行被导成 0.00,导出合计只剩已匹配行的差额(2026-07 只有 14.7 万)
- 现在空差额按「比对基准金额=0」补算 收入+优惠+冲减,与页面/统计卡口径一致
- 验证:2026-07 全部平台导出 300,707 行,差额列合计 1,354,719.44(与页面同值);
  只看未匹配 3,968 行,差额列合计 1,207,560.77
2026-10-10 15:38:31 +08:00
158c5e1b23 业绩明细:差额/匹配状态/备注改为与订单实付金额核对;科目映射表筛选改按财务备注
- 业绩明细「差额 / 匹配状态 / 差额异常备注」的比对基准由「订单商品金额」换成「订单实付金额」:
  差额=(收入金额+优惠金额+冲减金额)− 订单实付金额;匹配状态以订单侧能否取到订单实付为准;
  备注文案改为 订单实付未匹配(账单无单号/单号格式异常/订单表无此单/订单无实付金额/无收款账单)、
  订单实付取数为0(种菜)、订单实付取数为0、订单实付未减冲减、订单实付未减优惠、订单实付未减优惠和冲减
- 商品金额列保留展示、不再作为核对基准;退款金额仍单独列示、不参与差额
- 两个口径共用同一条取数链(同店同号 → 店铺名不一致 → 同号多条 → 空店铺兜底),
  差额口径做成开关:config/performance_details.php 的 difference_basis 填 product 即可切回旧口径
- 统计卡「金额构成」补「订单实付金额合计」,与差额公式对齐
- 科目映射表筛选:第二个筛选项由「账单项目」改为「财务备注」(候选按平台收窄、可搜索、多选);
  账单项目仍可用左上角关键词搜索
2026-10-10 15:14:06 +08:00
37d18612a6 修复合作合同 PDF 方框、文字重叠与签字区分页 (#290) 2026-10-10 14:34:13 +08:00
107c883eb2 业绩明细:新增「退款金额」列,按总账备注=退款取数
- 新增列「退款金额」:店铺收款账户账单里总账备注=退款的金额(收入侧 − 支出侧),
  与优惠金额/冲减金额同一口径,单独列示、不参与差额计算;统计卡、导出字段、
  字段结构说明同步补充
- 同步命令支持账单表的 expense 列(京东账单/京喜账单/京东网银钱包/抖音用 expense,
  淘系/拼多多/得物用 expense_amount),此前只认 expense_amount,
  导致这些平台支出侧的退款、扣回金额被当成 0
- 重建后自检改为「本月账单确有优惠/冲减/退款行、但三列一行都没写」才报错,
  并把退款金额纳入判定,避免无数据月份误报
- 新增迁移:store_receipt_order_match_rows.refund_amount
2026-10-10 13:41:03 +08:00
153b823ab8 修复已注销主体变更遗漏现公司签署 (#289) 2026-10-10 13:28:37 +08:00
0234bae83f 修正共用合同合作方及归属主体,支持个人实名签署 (#288) 2026-10-10 12:10:32 +08:00
951fde9c46 账单页签:总账备注下拉候选合并科目映射表的财务备注
- 之前候选只来自总账备注映射表,科目映射表里新加的备注在下拉里选不到
- 现在两个来源取并集,改完映射表下一次请求即可筛选
2026-10-10 11:20:18 +08:00
dd03037105 账单页签/账单明细:财务备注按科目映射表关键词取最具体规则
- 行内财务备注把 channel/business_type/order_type 等业务字段纳入关键词匹配(得物退款行可识别)
- 「总账备注/财务备注」筛选折算 SQL 时支持同一账单项目多条规则的关键词条件与兜底反向条件
- 与业绩明细、科目映射表口径对齐(得物退款行统一显示/筛选为退款)
2026-10-10 11:13:46 +08:00
c1431b8b38 协议签署支持个人签署及已注销公司原法人签署 (#287) 2026-10-10 11:12:13 +08:00
b92a3b0ed0 修复共用合同 E 签宝主体与实名认证字段 (#286) 2026-10-10 11:01:51 +08:00
2bf8d3538a 修复合作合同双方 E 签宝个人实名信息 (#285) 2026-10-10 10:48:09 +08:00
25cf3f8f0f 业绩明细:同步取财务备注时带上业务备注与商品名称
- 之前只按「平台+账单项目」匹配,退款行与正常行走同一条规则(得物卖家承担优惠券/折扣活动/联合营销费被算进冲减收入)
- 现在按行传入业务备注(custom_remark/business_type/order_type/channel 等)与商品名称,与店铺收款账户账单页同一套口径;账单查询同步补取这些列
- 配合科目映射表给得物这三个账单项目新增「退款」规则后:退款行→退款,正常扣款行→冲减收入
2026-10-10 10:30:06 +08:00
073e82ea32 业绩明细:差额异常备注改为「差额原因」口径
- 备注只由差额公式判定:商品金额未匹配(账单无单号/订单表无此单/无收款账单)、商品金额未加种菜、商品金额取数为0、商品金额未减冲减/未减优惠/未减优惠和冲减;命中不了留空
- 未匹配行按商品金额=0 计入差额,差额合计与导出同步
- 列名「异常标注」改「差额异常备注」,筛选、联动行数、导出表头同步
- 联动接口:5 条原因合并为 1 次统计 + 60 秒缓存(1.5s → 0.8s,缓存内 11ms)
2026-10-09 18:27:07 +08:00
chenxi
fe8c271fcf 商品成本:新增财务经营报表「商品成本」页面与同步命令
以业绩明细的账单行为基数,按「店铺 + 线上订单号」展开订单原始数据的商品行:
- 发货仓库取订单 wms_co_id 对应的聚水潭仓库名称,仓库简称查仓库映射表
- 商品单价按「仓库简称 + 商品编码」取商品月加权平均单价里的加权平均价
- 商品成本 = 商品数量 × 商品单价(四舍五入两位小数)
- 拆单子单重复列出的同一批商品只算一次;同一单分多仓发货按子单实际仓库分行
- 排除虚拟条码(X0000x)与数量金额都为 0 的占位行;默认隐藏仓库映射表里标「-不看」的仓
页面提供月份、平台、店铺、线上单号、商品编码、仓库简称筛选与汇总、CSV 导出。
2026-10-09 17:36:14 +08:00
41d0e5169f 快递运费:运费差后面新增「结算运费」列(= 提供成本运费 + 运费差)
- 列定义加在 运费差 与 其他附加费汇总 之间,金额列同样左对齐、不参与查询条件
- 行数据按交易单号取到运费差后,由页面计算 结算运费;两者都没有时显示 —
- 描述文字同步(前端导出按表格列生成,新列自动带上)
2026-10-09 17:36:33 +08:00
df9ec2cb1e 账套科目表:销售费用下新增二级科目「会员价保」(5601.05.10)
- 科目映射表里唯品会JX「会员价保」已挂 销售费用/会员价保,账套里原先没有这个明细科目
- 校验由「借方二级科目找不到」警告变为正常
2026-10-09 17:03:29 +08:00
217b953a03 唯品会JX账户:科目映射与总账备注按行内「账单项目」匹配
- AccountLedgerRemarkMap:JX 页签取 payload.second_remark 作为映射的账单项目,
  与「科目映射表」里按账单项目(处罚款/客服特殊退款-仅退款/盘盈盘亏…)维护的规则对齐
- AccountBills:总账备注筛选对 JX 改为按行内账单项目过滤,其余页签不变
- 测试同步(总账备注筛选按账单项目命中)
2026-10-09 16:57:28 +08:00
499a9e12a6 唯品会JX账户:「账单项目」筛选改为按行内账单项目过滤
- 筛选下拉与筛选条件都取 payload.second_remark(处罚款 / 客服特殊退款-仅退款 / 盘盈盘亏 …),与页面「账单项目」列同源
- 唯品会MP页签维持按账单项目列过滤;导出走同一套过滤逻辑
- 同步更新 JX 页签测试(筛选选项与导出断言)
2026-10-09 16:36:09 +08:00
f82856a6f7 唯品会JX账户:列名「二次备注」改为「账单项目」
- 与费用规则里「账单项目」的叫法统一(该列即账单项目/业务备注,用于匹配科目映射表)
- 同步更新列名断言
2026-10-09 16:29:18 +08:00
9ce9ee74eb 唯品会JX账户:表头改为「明细类型/二次备注/总账备注/订单号SO/收入/支出/合计」模板
- 按财务给的「唯品会JX汇总10.9」模板调整页签列:类型→明细类型、销售订单号→订单号/SO、
  含税金额→合计金额,总账备注与二次备注紧跟明细类型,收入/支出保持独立列
- 同步更新 VipshopJxReceivingBillsTest 的列名断言(原先还在断言已改名的「订单结算时间」)
2026-10-09 15:58:01 +08:00
74b2d3a086 Revert "业绩明细:新增「种菜订单」筛选(全部/只看种菜/排除种菜),页面统计与导出同步生效"
This reverts commit 9ba90667b148aa8da62fdf7d7dd20ed5cf12b03a.
2026-10-09 14:35:19 +08:00
9ba90667b1 业绩明细:新增「种菜订单」筛选(全部/只看种菜/排除种菜),页面统计与导出同步生效 2026-10-09 14:23:48 +08:00
ed89882661 业绩明细:重建后自检优惠/冲减列,映射有项目但两列为空时直接报错,避免静默丢列 2026-10-09 13:56:07 +08:00
chenxi
cb26d5da17 业绩明细:商品金额改为只取主单,拆单子单不再重复累加
聚水潭拆单子单会把主单的商品行再列一遍,子单的平台子订单号与主单不同时
原「子订单号 + 条码」去重键拦不住,同一批商品被计两次。
现在商品金额只取主单(link_o_id 为空/0),整单没有任何主单行时退化为取全部行,
与订单实付「主单优先、无主单退化」保持同一套规则。
2026-10-09 12:14:26 +08:00
7e335b19a9 账单明细:发生时间移到平台后面,筛选栏重新配列 2026-10-09 11:46:57 +08:00