OmniCRM中的库存概述
OmniCRM中的库存系统旨在管理和跟踪网络运营商和客户使用的物理和虚拟物品。
这意味着我们可以跟踪各种物品,例如调制解调器、电话号码、IP地址块,甚至是GPON ONT或固定无线CPE等物理硬件。
另请参见:Customer Attributes <administration_attributes> 用于存储自定义元数据,以及 Customer Tags <administration_tags> 用于视觉分类。
为了支持具有固定网络覆盖范围的客户,库存系统还可以跟踪某项服务所经过的家庭,使运营商能够远程进行服务资格验证;对于那些运营固定无线网络的公司,我们可以跟踪在现场部署的CPE及其位置。
注意
在配置过程中,库存项目通过 inventory_items_list 字段与产品关联。有关库存如何与产品配置集成的完整流程,包括库存选择器UI和Ansible剧本集成,请参见 Complete Product Lifecycle Guide - Inventory Requirements <guide_product_lifecycle>。
目的
OmniCRM库存有几个关键目的:
- 配置服务:当客户注册服务时,可能需要分配调制解调器、SIM卡或电话号码等物品。库存系统跟踪这些物品并将其与客户关联。
- 库存管理:对于物理库存,例如硬件或其他设备,库存帮助运营商保持对可用物品的可见性,了解其存储位置以及已分配或出售给客户的物品。
- 客户分配:该系统允许将物品分配给客户,无论是用于服务(例如,将调制解调器分配给客户的互联网账户)还是直接销售。
- 服务资格/网络覆盖范围:通过存储网络覆盖范围的信息,例如每个经过GPON服务的家庭或每个已部署的固定无线CPE,使员工能够远程进行服务资格验证,并查看特定区域是否有网络覆盖。
示例库存生命周期
为了说明库存系统的工作原理,请考虑以下示例
SIM卡示例
从Omnitouch订购了一批1000个SIM卡。首先为SIM卡创建一个库存模板(如果尚不存在),并将订购的SIM卡加载到状态为运输中的库存中。
一旦收到SIM卡,它们将标记为库存中,并可以分配给不同的零售店,库存项目的位置将更新以反映每个SIM卡所在的零售店 - 这对于跟踪每个���店的库存水平以及确保每个商店有足够的库存以满足客户需求非常有用。
当客户在店内注册移动服务时,将SIM卡分配给客户,状态更改为已分配。然后,SIM卡库存项目被分配给客户,状态更新为使用中。
如果客户取消服务或服务处于休眠状态,SIM卡将标记为退役。
GPON经过的家庭示例
对于GPON网络,库存系统可以跟踪每个经过特定服务的家庭。
当新区域建设完成时,可以将每个经过的地址添加到库存中。
这使运营商能够查看哪些家庭经过特定服务,哪些家庭尚未经过。
当客户注册服务时,OmniCRM可以自动对客户的地址进行服务资格验证,以查看该地址是否在经过的家庭库存中,以及可以提供哪些服务。
库存模板
InventoryTemplate功能允许创建任意数量的具有预定义字段的物品类型。这些模板充当蓝图,定义不同物品的基本特征,例如:
- 调制解调器,具有MAC地址(
itemtext1)和序列号(itemtext2)。 - 经过的家庭,具有位置和状态(例如,经过或未经过)。
- 电话号码,具有主要号码(
itemtext1)和地理位置��itemtext2)。 - 虚拟资源,如IP地址块,通过模板映射的标识符。
每个库存模板定义最多20个可自定义文本字段(itemtext1到itemtext20),以及相应的标签(itemtext1_label到itemtext20_label),描述每个字段所代表的内容。例如,调制解调器模板可能将itemtext1_label设置为“MAC地址”,将itemtext2_label设置为“序列号”。
运营商可以使用InventoryTemplates自定义每种物品类型的字段。这些模板允许以结构化的方式对物品进行分类和管理,确保物品跟踪的一致性。
链接到产品:
库存模板名称在产品定义中通过inventory_items_list字段引用。当配置产品时,系统显示一个库存选择器,仅显示与所需模板类型匹配的物品。
示例: 一个产品具有 inventory_items_list: "['SIM Card', 'Mobile Number']",需要存在两个名称完全相同的库存模板“SIM卡”和“移动号码”。模板名称区分大小写。
有关库存模板如何与产品配置连接的完整详细信息,请参见 Product Lifecycle - Inventory Requirements <guide_product_lifecycle>。

通过UI创建库存模板
要创建新的库存模板:
-
从主菜单导航到 ���存 → 模板
-
点击 添加模板 按钮
-
填写所需字段:
基本信息:
- 图标(可选):用于视觉识别的图标类名称(例如,
fa-solid fa-sim-card) - 物品(必填):模板名称(必须与产品的
inventory_items_list中使用的名称完全匹配)
成本信息(必填):
- 批发成本(必填):您购买或配置此物品类型的成本
- 零售成本(必填):如果单独出售给客户的标准零售价格
注意
此处设置的批发和零售成本在从此模板创建新库存项目时作为默认值。单个库存项目可以根据需要具有不同的成本。
字段标签:
- 物品文本1标签(必填):第一个可自定义字段的标签(默认为“型号”)
- 常见示例:“ICCID”用于SIM卡,“MAC地址”用于调制解调器,“电话号码”用于号码
- 物品文本2标签(必填):第二个可自定义字段的标签(默认为“序列号”)
- 常见示例:“IMSI”用于SIM卡,“序列号”用于硬件,“地理区域”用于号码
- 物品文本3-20标签(可选):根据需要添加的其��字段标签
- 点击 添加字段 以添加更多自定义字段
- 仅添加您实际会为此物品类型使用的字段
可见性设置:
- 允许下拉员工:允许员工在下拉列表中选择此库存类型
- 允许下拉客户:允许客户查看/选择此库存类型(客户门户)
- 图标(可选):用于视觉识别的图标类名称(例如,
-
点击 保存 以创建模板
编辑库存模板
要编辑现有模板:
- 导航到 库存 → 模板
- 在列表中找到模板
- 点击 编辑 按钮
- 根据需要修改字段
- 点击 保存
警告
更改字段标签(例如,itemtext1_label)仅影响更改后创建的新项目。现有库存项目保留其数据,但将显示新的标签名称。
注意
在产品inventory_items_list字段中引用的模板名称区分大小写。重命名模板将破坏与使用旧名称的产品之间的链接。
常见模板示例
SIM卡模板:
- 物品:“SIM卡”
- 批发成本:2.50
- 零售成本:10.00
- 物品文本1标签:“ICCID”
- 物品文本2标签:“IMSI”
- 物品文本3标签:“SIM类型”(物理/eSIM)
移动号码模板:
- ���品:“移动号码”
- 批发成本:1.00
- 零售成本:0.00
- 物品文本1标签:“电话号码”
- 物品文本2标签:“地理区域”
- 物品文本3标签:“号码类型”(移动/固定电话)
固定无线CPE模板:
- 物品:“固定无线CPE”
- 批发成本:250.00
- 零售成本:450.00
- 物品文本1标签:“MAC地址”
- 物品文本2标签:“序列号”
- 物品文本3标签:“固件版本”
- 物品文本4标签:“制造商”
- 物品文本5标签:“型号”
GPON ONT模板:
- 物品:“GPON ONT”
- 批发成本:45.00
- 零售成本:0.00(包含在服务中)
- 物品文本1标签:“序列号”
- 物品文本2标签:“MAC地址”
- 物品文本3标签:“PON位置”
- 物品文本4标签:“型号”

创建和管理库存项目
一旦定义了InventoryTemplate,可以创建单个库存项目。每个库存项目代表特定物品类型的具体实例(例如,特定的调制解调器或电话号码),可以:
- 分配给客户:物品与客户关联以进行服务配置(例如,为互联网连接分配硬件)。
- 跟踪库存:运营商可以监控可用库存,例如未售出或未分配的物品。
- 出售或退役:一旦出售,物品将标记相关时间戳(例如,
sold_date),并且不再被视为可用库存。


通过该系统,OmniCRM促进了高效的库存管理,帮助将资源分配给客户,并提供每个项目状态和历史的详细可见性。
服务可以与特定的库存项目链接,从而轻松跟踪哪些项目与哪些客户或服务相关联。
一旦库存项目分配给客户,Ansible剧本可以更新项目的状态和历史,以反映分配。这确保运营商准确记录哪些项目正在使用,哪些项目可供分配,以及知道哪个客户在使用哪个项目。
我们可以在库存选项卡的客户资料页面中查看分配给客户的项目。

对于与服务链接的库存项目,我们可以通过编辑服务来查看链接的库存项目。

库存项目字段
每个库存项目包含组织成几个类别的全面信息:
基本项目信息
- inventory_id - 库存项目的唯一标识符(自动生成)
- item - 物品类型(与库存模板名称匹配,例如,“SIM卡”、“调制解调器”、“电话号码”)
- inventory_template_id - 链接到定义此物品类型的库存模板
- customer_id - 如果分配给客户,则为客户的ID(可为空)
- service_id - 如果链接到特定服务,则为服务ID(可为空)
- item_location - 物品的物理或逻辑位置:
- 对于物理物品:建筑物、仓库、货架位置、商店名称等。
- 对于虚拟物品:地理位置、IP块位置、号码范围区域等。
- item_state - 库存项目的当前状态(枚举值):
- 新 - 全新、未使用的物品
- 已使用 - 以前使用过但功能正常
- 内部使用 - 分配给内部测试或员工使用
- 已分配 - 当前分配给客户或服务
- 损坏 - 无功能,需要修理或处置
- 停用 - 暂时不可用
- 丢失 - 找不到物品
- 被盗 - 物品被盗
可自定义项目字段(来自模板)
库存系统支持多达20个可自定义文本字段,其含义由库存模板定义:
- itemtext1 - 第一个可自定义字段(必填,标签由模板的
itemtext1_label定义)- 示例:对于调制解调器,可能是“MAC地址”
- 示例:对于SIM卡,可能是“ICCID”
- 示例:对于电话号码,可能是“电话号码”
- itemtext2到itemtext20 - 额外的可自定义字段(可选,标签由模板定义)
- 示例:调制解调器的itemtext2可能是“序列号”
- 示例:SIM卡的itemtext2可能是“IMSI”
- 示例:调制解调器的itemtext3可能是“固件版本”
每个库存模板定义哪些字段被使用以及它们通过相应的标签字段(itemtext1_label、itemtext2_label等)表示的内容。
成本信息
- wholesale_cost - 您购买/配置此物品的成本(浮动)
- retail_cost - 如果单独出售给客户的价格(浮动)
- sold_date - 物品出售或分配给客户的时间戳
物理地址(用于网络设备和站点)
用于跟踪物理部署位置,特别是固定网络设备(CPE、ONT、调制解调器)或经过的家庭:
- address_line_1 - 街道地址、建筑物编号、单元编号
- address_line_2 - 额外的地址信息(套房、公寓、楼层)
- city - 城市或城镇
- state - 州、省或地区
- zip_code - 邮政编码/邮政区号
- country - 国家名称
地理位置(从Web UI自动填充)
通过Web UI使用地址自动完成创建库存项目时,这些字段会自动填充:
- google_maps_place_id - 地址的Google地图地点ID
- plus_code - Google地图加号代码(��放位置代码),用于精确位置
- latitude - 地理纬度(十进制度)
- longitude - 地理经度(十进制度)
这些字段使得:
- 在地图视图上绘制库存位置
- 进行服务资格的接近计算
- 网络规划的覆盖分析
- 现场技术人员调度的路线优化
设备管理和访问URL
management_url字段提供快速访问设备接口和配置URL:
-
management_url - 库存项目的访问URL
- 网络设备:Web界面URL(例如,
https://192.168.1.1用于路由器、交换机、ONT、CPE) - eSIM配置:eSIM激活的LPA(本地配置助手)地址(例如,
LPA:1$smdp.example.com$ACTIVATION-CODE-HERE) - 其他用例:任何需要通过移动设备轻松访问的URL
二维码生成
当查看具有
management_url的库存项目时,系统会自动生成一个可扫描的二维码:- 库存项目详细视图:128x128的二维码与URL并排显示
- 服务库存表:为分配的项目显示64x64的二维码
- 格式:二维码和可点击的超链接一起显示
常见用例
- 网络技术人员:扫描二维码以访问设备管理界面,而无需输入IP地址
- eSIM激活:客户扫描CRM中的二维码以安装eSIM配置
- 客户自助服务:提供轻松访问设备配置或客户门户的方式
- 网络设备:Web界面URL(例如,
-
management_username - 设备访问的管理员用户名
-
management_password - 设备访问的管理员密码(加密存储)
配置管理
对于具有配置文件的设备:
- config_content - 完整的配置文件内容(以文本形式存储)
- 适用于备份、版本控制和灾难恢复
- 可以存储路由器配置、交换机配置、CPE配置等。
- config_file_path - 如果单独存储,外部配置文件的路径
- 作为在数据库中存储完整配置的替代方案
- 网络共享、版本控制库或配置管理系统的路径
备注和元数据
- inventory_notes - 关于库存项目的自由格式备注
- 安装备注
- 维护历史
- 特殊处理要求或特性
- 供应商信息
- 保修详情
- created - 库存项目在系统中创建的时间戳(自动设置)
- last_modified - 库存项目最后更新的时间戳(自动更新)
字段使用示例
示例1:移动SIM卡
{
"inventory_id": 1001,
"item": "SIM Card",
"inventory_template_id": 5,
"itemtext1": "8961234567890123456",
"itemtext2": "310120123456789",
"itemtext3": "Physical",
"item_location": "Warehouse A, Shelf 3",
"item_state": "Assigned",
"customer_id": 456,
"service_id": 789,
"wholesale_cost": 2.50,
"retail_cost": 10.00,
"sold_date": "2025-01-15T10:30:00Z",
"inventory_notes": "Activated on 2025-01-15"
}
示例2:移动eSIM配置
{
"inventory_id": 1002,
"item": "eSIM",
"inventory_template_id": 6,
"itemtext1": "8961234567890123457",
"itemtext2": "310120123456790",
"itemtext3": "eSIM",
"item_location": "Virtual Inventory",
"item_state": "Assigned",
"customer_id": 457,
"service_id": 790,
"management_url": "LPA:1$smdp.example.com$ACTIVATION-CODE-ABC123XYZ",
"wholesale_cost": 0.00,
"retail_cost": 0.00,
"sold_date": "2025-01-16T14:20:00Z",
"inventory_notes": "eSIM profile ready for activation"
}
查看此eSIM库存项目时,UI显示一个包含LPA地址的二维码。客户使用移动设备扫描此二维码以安装eSIM配置。
示例3:客户驻地设备(CPE) - 固定无线
{
"inventory_id": 2001,
"item": "Fixed Wireless CPE",
"inventory_template_id": 10,
"itemtext1": "AA:BB:CC:DD:EE:FF",
"itemtext2": "FW2024-12345",
"itemtext3": "v2.4.1",
"itemtext4": "Ubiquiti",
"itemtext5": "LiteBeam AC Gen2",
"item_location": "Customer Site",
"item_state": "Assigned",
"customer_id": 789,
"service_id": 1234,
"address_line_1": "123 Main Street",
"address_line_2": "Apt 4B",
"city": "Sydney",
"state": "NSW",
"zip_code": "2000",
"country": "Australia",
"latitude": "-33.8688",
"longitude": "151.2093",
"management_url": "https://192.168.100.1",
"management_username": "admin",
"management_password": "encrypted_password_here",
"config_file_path": "/configs/cpe/fw2024-12345.conf",
"inventory_notes": "Installed 2025-01-10. Customer reports excellent signal. Pointing: Azimuth 45°, Elevation 15°"
}
示例4:GPON ONT与完整地址
{
"inventory_id": 3001,
"item": "GPON ONT",
"inventory_template_id": 15,
"itemtext1": "ALCL12345678",
"itemtext2": "AA:BB:CC:DD:EE:FF",
"itemtext3": "OLT-1, PON 3, ONT 42",
"itemtext4": "Nokia G-010G-A",
"item_location": "Customer Premises",
"item_state": "Assigned",
"customer_id": 321,
"service_id": 654,
"address_line_1": "456 Fiber Lane",
"city": "Melbourne",
"state": "VIC",
"zip_code": "3000",
"country": "Australia",
"google_maps_place_id": "ChIJ1234567890",
"plus_code": "4RRH+2C Melbourne VIC",
"latitude": "-37.8136",
"longitude": "144.9631",
"management_url": "https://192.168.1.1",
"management_username": "admin",
"config_content": "# ONT Configuration\nwlan-ssid: HomeNetwork\nwlan-password: encrypted...",
"wholesale_cost": 45.00,
"retail_cost": 0.00,
"inventory_notes": "Provisioned 2025-01-20. Optical power: -22dBm"
}
注意
当查看具有management_url的库存项目(如示例2、3和4)时,UI会自动显示:
- 一个包含URL或LPA地址的可扫描二维码
- 一个可点击的超链接(对于Web URL)
用例:
- eSIM激活(示例2):客户扫描二维码以在其设备上安装eSIM配置
- 网络设备访问(示例3和4):技术人员扫描以访问设备管理界面,而无需手动输入IP地址
示例5:电话号码(虚拟库存)
{
"inventory_id": 4001,
"item": "Phone Number",
"inventory_template_id": 20,
"itemtext1": "+61412345678",
"itemtext2": "Melbourne",
"itemtext3": "Mobile",
"item_location": "Australia - VIC",
"item_state": "Assigned",
"customer_id": 555,
"service_id": 888,
"wholesale_cost": 1.00,
"retail_cost": 0.00,
"inventory_notes": "Ported from Telstra on 2025-01-05"
}
库存项目状态解释
item_state字段跟踪库存项目的生命周期:
- 新 → 已分配 - 正常流向客户配置
- 已分配 → 已使用 - 服务停用后,物品可以重新使用
- 新 → 内部使用 - 分配用于测试、演示或员工使用
- 已分配 → 损坏 - 物品故障,需要RMA或处置
- 任何状态 → 丢失 - 找不到物品(触发审计)
- 任何状态 → 被盗 - 物品被盗(触发安全报告)
- 损坏/已使用 → 新 - 经过翻新或修理后
按状态过滤和搜索库存允许运营商:
- 跟踪可用库存(新物品)
- 确定分配给客户的物品(已分配)
- 查找可供重新使用的物品(已使用)
- 监控设备问题(损坏、停用)
- 审计缺失物品(丢失、被盗)