[{"data":1,"prerenderedAt":713},["ShallowReactive",2],{"guide:zh:inventory-management/transactions":3},{"id":4,"title":5,"body":6,"description":705,"extension":706,"meta":707,"navigation":708,"path":709,"seo":710,"stem":711,"__hash__":712},"guide_zh/zh/user/inventory-management/transactions.md","交易记录",{"type":7,"value":8,"toc":669},"minimark",[9,13,17,21,24,27,39,44,68,74,78,104,122,131,135,152,160,164,188,196,199,202,209,216,219,246,268,285,288,294,301,307,310,313,316,327,333,341,346,349,356,359,364,385,391,394,399,440,448,451,458,482,485,491,497,503,506,509,548,553,556,562,568,574,580,583,586,590,597,601,605,608,614,620,626,635,641,644,653,663],[10,11,12],"h1",{"id":12},"交易",[14,15,16],"p",{},"每笔交易都会为库存的每次移动、消耗、收货和调整生成不可篡改的审计记录。交易数据不可编辑或删除——更正操作将生成新的调整交易记录。",[18,19,20],"h2",{"id":20},"交易类型",[14,22,23],{},"交易流程：",[14,25,26],{},"收据转移 消耗调整领取 ↓ ↓ ↓ ↓ ↓ 新库存 → 站点A → 站点B → 作业消耗库存 手动修正 任务资源拣货 (采购) (QR拣货) (报告提交) (循环盘点) (扫描任务二维码) ```",[14,28,29,34,35],{},[30,31],"img",{"alt":32,"src":33},"交易列表","/guide/inventory-management/transactions-list.png"," ",[36,37,38],"em",{},"交易页面显示所有库存移动的审计追踪记录",[40,41,43],"h3",{"id":42},"收货新库存抵达站点采购现场退回","收货新库存抵达站点（采购、现场退回）。",[14,45,46,50,51,55,56,59,60,63,64,67],{},[47,48,49],"strong",{},"字段：","- ",[52,53,54],"code",{},"toSite"," - 目标站点- ",[52,57,58],{},"resource"," - 到货商品- ",[52,61,62],{},"toVolume"," - 收货后新库存项目余额- ",[52,65,66],{},"uom"," - 计量单位",[14,69,70,71],{},"**示例：**100米电缆抵达仓库 ",[52,72,73],{},"类型：\"收货\" 目的地：中央仓库 资源：Cat6电缆 库存量：600米（原为500米，现为600米）",[40,75,77],{"id":76},"转移库存在不同站点间移动仓库工人工人现场站点","转移库存：在不同站点间移动（仓库→工人，工人→现场站点）。",[14,79,80,82,83,86,87,89,90,92,93,96,97,99,100,103],{},[47,81,49],{}," - ",[52,84,85],{},"fromSite"," - 源位置 - ",[52,88,54],{}," - 目标位置 - ",[52,91,58],{}," - 转移对象 - ",[52,94,95],{},"fromVolume"," - 转移后源方余额 - ",[52,98,62],{}," - 转移后目标方余额 - ",[52,101,102],{},"pickupCode"," - 扫描的JWT（若为基于二维码的转移）",[105,106,107],"ul",{},[108,109,110,113,114,117,118,121],"li",{},[52,111,112],{},"scannerUserId"," - 扫描二维码者 - ",[52,115,116],{},"scanMethod"," - \"self\"（工人）或\"staff\"（仓库人员） - ",[52,119,120],{},"scanLocation"," - 扫描发生的GPS坐标",[14,123,124,127,128],{},[47,125,126],{},"示例："," 工人通过扫描二维码领取10米电缆 ",[52,129,130],{}," 类型：\"转移\" 起始仓库：中央仓库 目标仓库：John个人库存 资源：Cat6电缆 起始数量：590米（仓库库存从600米减少） 目标库存量：10米（约翰新增库存项）提货码：\"eyJhbGc...\"（JWT）扫描用户ID：john_id扫描方式：\"自助\"扫描位置：{ 纬度：40.7128, 经度：-74.0060 }",[40,132,134],{"id":133},"消耗现场作业消耗库存提交报告时自动生成","消耗现场作业消耗库存（提交报告时自动生成）。",[14,136,137,50,139,141,142,144,145,147,148,151],{},[47,138,49],{},[52,140,85],{}," - 消耗材料的来源（通常为工人的个人仓库）- ",[52,143,58],{}," - 消耗的资源类型- ",[52,146,95],{}," - 消耗后的剩余库存- ",[52,149,150],{},"reportId"," - 工作报告链接（用于支付结算）",[14,153,154,156,157],{},[47,155,126],{}," 工人使用8米电缆完成任务",[52,158,159],{},"type: \"consumption\"fromSite: John's Personal Inventoryresource: Cat6 CablefromVolume: 2m (从10米减少)reportId: report_abc123",[40,161,163],{"id":162},"库存水平的手动调整循环盘点损坏损失","库存水平的手动调整（循环盘点、损坏、损失）。",[14,165,166,50,168,171,172,175,176,179,180,183,184,187],{},[47,167,49],{},[52,169,170],{},"库存项ID"," - 调整的库存项- ",[52,173,174],{},"资源"," - 调整对象- ",[52,177,178],{},"起始数量"," - 原始余额- ",[52,181,182],{},"目标数量"," - 新余额- ",[52,185,186],{},"原因"," - 必须填写说明（例如\"实物盘点修正\"、\"运输损坏\"）",[14,189,190,192,193],{},[47,191,126],{}," 循环盘点发现差异",[52,194,195],{},"type: \"adjustment\"stockItemId: stock_xyzresource: Cat6 CablefromVolume: 2m (记录余额)toVolume: 0m (实际实物盘点量)reason: \"2026-02-10 循环盘点 - 滚动尾数废弃\"",[40,197,198],{"id":198},"领取",[14,200,201],{},"任务范围内的物料收集，当工作人员扫描任务资源二维码时自动创建。",[14,203,204,205,208],{},"领取交易记录以下信息：领取的资源、数量、来源站点、扫描人员（实际领取人），以及关联回任务和该任务中具体资源行的链接（",[52,206,207],{},"context: { taskId, taskResourceIdx }","）。领取与转移的区别在于：转移是站点间通用的库存移动；领取是带有任务上下文的转移——它将库存扣减直接与特定计划工作项挂钩。该上下文链接使您可以通过汇总领取交易来查询\"已为任务X收集了多少该资源\"，而无需在任务本身存储累计总量。",[14,210,211,212,215],{},"领取二维码为一次性使用（重复扫描将被拒绝并返回冲突错误）。代码可单独作废（通过 ",[52,213,214],{},"return"," 交易归还库存）或重新生成（签发新代码，原代码失效）。",[18,217,218],{"id":218},"交易字段",[14,220,221,50,224,227,228,230,231,233,234,237,238,241,242,245],{},[47,222,223],{},"所有类型共有的字段：",[52,225,226],{},"type"," - 收据、转账、消费、调整- ",[52,229,58],{}," - 资源定义引用- ",[52,232,66],{}," - 计量单位- ",[52,235,236],{},"createdAt"," - 时间戳（自动生成）- ",[52,239,240],{},"createdBy"," - 发起用户（自动捕获）- ",[52,243,244],{},"properties"," - 用于自定义数据的灵活JSON字段",[14,247,248,50,251,253,254,256,257,253,259,261,262,264,265,267],{},[47,249,250],{},"类型特定字段：",[52,252,85],{}," / ",[52,255,54],{}," - 移动起点与终点- ",[52,258,95],{},[52,260,62],{}," - 余额变动量- ",[52,263,150],{}," - 工作报告链接（消耗记录）- ",[52,266,102],{}," - 扫描的JWT（受保护转账）",[105,269,270],{},[108,271,272,274,275,277,278,280,281,284],{},[52,273,112],{}," - 扫描者身份（转账）- ",[52,276,116],{}," - 自助扫描 vs 人工协助 - ",[52,279,120],{}," - 扫描时GPS定位 - ",[52,282,283],{},"reason"," - 操作说明（调整项）",[18,286,287],{"id":287},"事务不可变性",[14,289,290,293],{},[47,291,292],{},"不可编辑：","- 交易为只写模式- 不支持更新或删除操作- 确保审计轨迹完整性",[14,295,296,297,300],{},"**更正操作说明：**1. 切勿尝试编辑错误交易2. 创建新的",[52,298,299],{},"调整","交易3. 附上详细说明更正原因4. 两笔交易均保留在历史记录中",[14,302,303,306],{},[47,304,305],{},"示例更正流程：","```第1天：收据显示100个单位已到货 → 创建交易：toVolume = 100",[14,308,309],{},"第2天：发现实际仅收到95件货物 → 创建调整：原数量=100，调整后数量=95 → 原因：\"收货数量错误 - 该批次仅含95件货物\"",[14,311,312],{},"结果：两笔交易均在审计追踪中可见",[18,314,315],{"id":315},"自动交易创建",[40,317,319,320,323,324,326],{"id":318},"报告提交流程当工人提交包含consumedfrom字段的报告时1-系统验证每个库存项的可用量2-原子性地为每项资源创建消耗交易3-通过reportid将交易关联至报告4-减少库存项的数量5-若库存不足-拒绝报告-或-提示部分消耗","报告提交流程当工人提交包含",[52,321,322],{},"consumedFrom","字段的报告时：1. 系统验证每个库存项的可用量2. 原子性地为每项资源创建消耗交易3. 通过",[52,325,150],{},"将交易关联至报告4. 减少库存项的数量5. 若库存不足 → 拒绝报告 或 提示部分消耗",[14,328,329,332],{},[47,330,331],{},"优势：","- 库存始终准确（无需担心遗漏消耗记录）- 报表与交易同时提交（原子性）- 支付计算基于可靠数据",[40,334,336,337,340],{"id":335},"通过二维码取件扫描当工作人员扫描任务取件二维码时1-验证jwt签名及有效期2-确认扫描者为授权接收方或具备canfacilitatepickups权限3-核查源站库存可用性4-自动创建转运交易5-记录扫描者身份操作方式及gps定位","通过二维码取件扫描当工作人员扫描任务取件二维码时：1. 验证JWT签名及有效期2. 确认扫描者为授权接收方或具备",[52,338,339],{},"canFacilitatePickups","权限3. 核查源站库存可用性4. 自动创建转运交易5. 记录扫描者身份、操作方式及GPS定位",[14,342,343,345],{},[47,344,331],{},"- 无需人工录入交易- GPS定位验证实际到场- 审计轨迹显示转账授权人",[18,347,348],{"id":348},"通过扫描二维码进行手动交易录入",[14,350,351,352,355],{},"对于运抵现场时物品尚未贴有二维码的货物，现场工作人员可使用集成二维码扫描功能的",[47,353,354],{},"手动交易单","，通过资源二维码的实体参考手册快速完成库存接收。",[40,357,358],{"id":358},"创建实体资源参考书",[14,360,361],{},[47,362,363],{},"管理员设置（仅需一次）：",[365,366,367,378],"ol",{},[108,368,369,370,373,374,377],{},"导航至 ",[47,371,372],{},"管理 → 资源二维码"," (",[52,375,376],{},"/admin/resource-qr-codes",")",[108,379,380,381,384],{},"根据需要按资源类型筛选（材料、人工、设备）3. 搜索需包含的具体资源4. 点击",[47,382,383],{},"打印","生成可打印的二维码表格5. 使用标准信纸/A4纸打印6. 覆膜后装订成参考手册7. 将手册放置于收货区或仓库工作站",[14,386,387,388],{},"**二维码格式：**每个二维码包含JSON数据：",[52,389,390],{},"json {    \"type\": \"resource\",    \"id\": \"resource_id_123\",    \"name\": \"Cat6 Cable\",    \"defaultUom\": \"m\",    \"resourceType\": \"material\"} ",[40,392,393],{"id":393},"移动收货工作流",[14,395,396],{},[47,397,398],{},"现场工作人员流程：",[365,400,401,410,416,422,428,434],{},[108,402,403,406,407,409],{},[47,404,405],{},"打开手动交易表单"," - 导航至库存 → 交易 - 点击“添加手动交易”按钮 - 需具备 ",[52,408,339],{}," 权限",[108,411,412,415],{},[47,413,414],{},"启用批处理模式","（可选但推荐） - 切换表单顶部的“批处理模式”开关 - 允许在最终提交前扫描并录入多个物品 - 当货件包含5件以上不同物品时可节省时间",[108,417,418,421],{},[47,419,420],{},"扫描资源二维码"," - 点击资源名称字段旁的扫描按钮（📷图标） - 移动设备相机自动开启 - 将镜头对准参考书中的二维码 - 二维码数据自动填充：资源名称、资源ID、默认计量单位",[108,423,424,427],{},[47,425,426],{},"输入数量详情","- 数量字段：输入收货数量（例如\"50\"）- 计量单位字段：从二维码预填，如有需要可调整（例如\"m\"代表米）- 地点：拖放目标地点或使用当前位置",[108,429,430,433],{},[47,431,432],{},"添加到批次","（若启用批处理模式） - 点击\"添加到批次\"按钮 - 该物品将显示在下方批次列表中 - 表单清空以供添加下一项 - 对货运中的每项物品重复步骤3-5",[108,435,436,439],{},[47,437,438],{},"提交交易"," - 单笔模式：点击“提交”（生成一笔交易） - 批量模式：点击“提交批量（N项）”（原子性生成N笔交易） - 成功通知显示接受的项目数量 - 若有项目失败，系统报告失败数量但不回滚其他交易",[14,441,442,445],{},[47,443,444],{},"批次处理示例：",[52,446,447],{},"货物抵达，包含5种不同物料：1. 扫描\"Cat6网线\"二维码 → 输入50米 → 加入批次2. 扫描\"1英寸导管\"二维码 → 输入20件 → 加入批次3. 扫描\"接线盒\"二维码 → 输入15件 → 加入批次4. 扫描\"扎带\"二维码 → 输入500件 → 加入批次5. 扫描\"接地线\"二维码 → 输入15件 → 加入批次 3. 扫描\"接线盒\"二维码 → 输入15个单位 → 加入批次4. 扫描\"扎带\"二维码 → 输入500个单位 → 加入批次5. 扫描\"接地线\"二维码 → 输入100米 → 加入批次6. 提交批次（5项）→ 即时生成5个库存项 + 5笔收货交易",[40,449,450],{"id":450},"未知资源的处理",[14,452,453,454,457],{},"若货件包含",[47,455,456],{},"未在参考书中列出的物品","：",[365,459,460,466,476],{},[108,461,462,465],{},[47,463,464],{},"手动输入资源名称"," - 在资源名称字段中输入名称（无需扫描二维码） - 系统将按名称搜索现有资源 - 若未找到 → 自动放置于**\"暂存/待处理\"**资源中",[108,467,468,471,472,475],{},[47,469,470],{},"暂存/预备工作流"," - 交易属性包含 ",[52,473,474],{},"originalResourceName","（您输入的内容） - 警告提示：\"资源未找到。已放入暂存/预备区\" - 创建带有暂存/预备资源的库存项 - 后续：办公室人员分配至正确资源（参见下文\"分配预备库存\"）",[108,477,478,481],{},[47,479,480],{},"自动分拣的优势"," - 现场人员无需等待办公室审批 - 库存实物即时接收并追踪 - 资源分类异步完成 - 紧急发货无阻塞延迟",[14,483,484],{},"批处理模式功能",[14,486,487,490],{},[47,488,489],{},"明细表：","- 提交前显示所有已扫描项目- 显示：资源名称、数量、计量单位- 通过X按钮移除单个项目- 清晰呈现即将提交的内容",[14,492,493,496],{},[47,494,495],{},"提交机制：","- 原子批量处理（尽可能采用全有或全无模式）- 单项处理失败时报告异常但不阻塞其他项- 成功计数：\"5笔交易创建成功\"- 部分失败处理：\"2项处理失败\"",[14,498,499,502],{},[47,500,501],{},"移动端优化：","- 大尺寸触控友好型扫描按钮- 带手电筒开关的相机访问功能- 支持PWA缓存的离线运行- 批量自动保存至本地存储（页面刷新后仍保留）",[40,504,505],{"id":505},"分配分阶段库存",[14,507,508],{},"现场工作人员将未知资源纳入暂存/中转区后：",[365,510,511,521,527,540],{},[108,512,513,516,517,520],{},[47,514,515],{},"导航至库存项目"," - 按\"站点：暂存/预备\"筛选（若已实施） - 查找具有",[52,518,519],{},"isHoldingResource: true","的项目",[108,522,523,526],{},[47,524,525],{},"开放分配弹窗"," - 在库存商品上点击\"分配暂存库存\"按钮 - 显示：当前数量、现场人员输入的原始名称",[108,528,529,82,532,535,536,539],{},[47,530,531],{},"选择合适资源",[47,533,534],{},"选项A："," 从资源表中拖拽现有资源 - ",[47,537,538],{},"选项B："," 切换\"创建新资源\"并输入详细信息 - 输入分配原因（例如：\"已确认是Cat6A线缆，而非Cat6\"）",[108,541,542,545,546],{},[47,543,544],{},"提交分配"," - 原子性更新：  - 库存项资源字段（持有 → 实际资源）  - 创建包含分配原因的调整事务  - 在事务属性中保留 ",[52,547,474],{},[14,549,550,552],{},[47,551,331],{},"- 现场验收永不阻塞- 办公室分类保留审计轨迹- 过渡期间库存不会\"消失\"- 原始现场工作人员笔记得以保留",[18,554,555],{"id":555},"查看交易记录",[14,557,558,561],{},[47,559,560],{},"全局事务日志：","- 导航至库存 → 事务- 按类型、日期范围、站点、资源筛选- 导出用于对账或合规性核查",[14,563,564,567],{},[47,565,566],{},"库存项目历史：","- 导航至特定库存项目- \"交易历史\"显示所有影响该项目的变动- 追溯来源（物料来自何处，流向何方）",[14,569,570,573],{},[47,571,572],{},"消耗报告：","- 进入工作报告- \"材料使用\"部分关联消耗交易记录- 核对库存中实际消耗的物料",[14,575,576,579],{},[47,577,578],{},"站点活动：","- 访问站点- \"最近交易\"显示收据、转账、消费记录- 监控仓库吞吐量",[18,581,582],{"id":582},"用例",[14,584,585],{},"合规审计 - 展示受控物料的所有流转记录 - 证明保管链（接收→转移→消耗） - 导出交易日志用于监管报告",[40,587,589],{"id":588},"损失预防-对比收据与长期消费记录-识别需调查的差异-追踪调整模式频繁调整潜在问题","损失预防 - 对比收据与长期消费记录 - 识别需调查的差异 - 追踪调整模式（频繁调整=潜在问题）",[40,591,593,594,596],{"id":592},"付款计算-通过reportid关联报告的消耗量-计算已完成工作的材料成本-验证工人使用了分配的材料而非个人库存","付款计算 - 通过",[52,595,150],{},"关联报告的消耗量 - 计算已完成工作的材料成本 - 验证工人使用了分配的材料（而非个人库存）",[40,598,600],{"id":599},"库存核对-将交易记录余额与实物盘点结果进行比对-识别库存损耗或盘点错误-创建调整项以修正差异","库存核对- 将交易记录余额与实物盘点结果进行比对- 识别库存损耗或盘点错误- 创建调整项以修正差异",[40,602,604],{"id":603},"工人责任追溯-查看每位工人的领取与消耗记录-识别扫描受保护库存的责任人-gps验证显示物料转移位置","工人责任追溯 - 查看每位工人的领取与消耗记录 - 识别扫描受保护库存的责任人 - GPS验证显示物料转移位置",[18,606,607],{"id":607},"最佳实践",[14,609,610,613],{},[47,611,612],{},"调整原因必须注明：","- \"实物盘点更正\"优于未注明原因- \"损坏物料报废 - 风暴事件 2026-02-08\"更佳- 有助于未来审计人员理解更正依据",[14,615,616,619],{},[47,617,618],{},"使用最小的交易类型：","- 接收/转移时不应使用调整项- 调整项应作为例外情况，而非常规操作- 接收/转移操作能保留更丰富的上下文信息",[14,621,622,625],{},[47,623,624],{},"常规盘点：","- 每周：核对调整项（应属罕见）- 每月：对主要库存商品进行循环盘点- 每季度：执行全仓库盘点",[14,627,628,631,632,634],{},[47,629,630],{},"利用GPS优化转运：","- 通过",[52,633,120],{},"核查受保护库存- 检测异常情况（仓库100公里外扫描）- 地理围栏验证防止远程共享二维码",[14,636,637,640],{},[47,638,639],{},"监控交易量：","- 高调整率 = 流程问题- 低消耗配高提货量 = 囤积或盗窃- 收据/消耗不匹配 = 需求预测问题",[18,642,643],{"id":643},"交易权限",[14,645,646,50,649,652],{},[47,647,648],{},"创建交易：",[52,650,651],{},"transactionsCreate"," - 可创建收据、调整项- 自动创建的交易（来自报告、二维码扫描）无需权限- 站点特定权限可限制在哪些站点创建收据",[14,654,655,658,659,662],{},[47,656,657],{},"查看交易记录：","- 所有用户均可查看自身库存项目的交易记录- 角色权限限制可隐藏特定资源/站点的交易记录- ",[52,660,661],{},"viewDeleted","权限允许查看软删除的交易记录（若已实现）",[14,664,665,668],{},[47,666,667],{},"无删除权限：","- 任何人都无法删除交易记录- 确保审计轨迹完整性- 仅数据库管理员可删除（仅限紧急运维情况）",{"title":670,"searchDepth":671,"depth":671,"links":672},"",2,[673,681,682,683,689,695,696,703,704],{"id":20,"depth":671,"text":20,"children":674},[675,677,678,679,680],{"id":42,"depth":676,"text":43},3,{"id":76,"depth":676,"text":77},{"id":133,"depth":676,"text":134},{"id":162,"depth":676,"text":163},{"id":198,"depth":676,"text":198},{"id":218,"depth":671,"text":218},{"id":287,"depth":671,"text":287},{"id":315,"depth":671,"text":315,"children":684},[685,687],{"id":318,"depth":676,"text":686},"报告提交流程当工人提交包含consumedFrom字段的报告时：1. 系统验证每个库存项的可用量2. 原子性地为每项资源创建消耗交易3. 通过reportId将交易关联至报告4. 减少库存项的数量5. 若库存不足 → 拒绝报告 或 提示部分消耗",{"id":335,"depth":676,"text":688},"通过二维码取件扫描当工作人员扫描任务取件二维码时：1. 验证JWT签名及有效期2. 确认扫描者为授权接收方或具备canFacilitatePickups权限3. 核查源站库存可用性4. 自动创建转运交易5. 记录扫描者身份、操作方式及GPS定位",{"id":348,"depth":671,"text":348,"children":690},[691,692,693,694],{"id":358,"depth":676,"text":358},{"id":393,"depth":676,"text":393},{"id":450,"depth":676,"text":450},{"id":505,"depth":676,"text":505},{"id":555,"depth":671,"text":555},{"id":582,"depth":671,"text":582,"children":697},[698,699,701,702],{"id":588,"depth":676,"text":589},{"id":592,"depth":676,"text":700},"付款计算 - 通过reportId关联报告的消耗量 - 计算已完成工作的材料成本 - 验证工人使用了分配的材料（而非个人库存）",{"id":599,"depth":676,"text":600},{"id":603,"depth":676,"text":604},{"id":607,"depth":671,"text":607},{"id":643,"depth":671,"text":643},"所有库存变动与变更的不可篡改审计轨迹","md",{},true,"/zh/user/inventory-management/transactions",{"title":5,"description":705},"zh/user/inventory-management/transactions","IJ7z4lrzsalFSY9UCFgBLzbaK1m-X5oTdu5waONo66I",1780539288622]