十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

InvenTree 客户(Customer)管理完全指南:从创建客户到销售订单关联

InvenTree 客户(Customer)管理完全指南:从创建客户到销售订单关联 InvenTree 客户Customer管理完全指南从创建客户到销售订单关联【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree导读本文以 InvenTree 官方文档中的客户模块为主线系统讲解如何在开源库存管理系统 InvenTree 中创建与管理客户Customer包括客户的定义与定位、Sales 导航入口、权限模型、创建客户的完整字段说明以及客户如何与销售订单Sales Order、联系人与地址联动。读完本文你将掌握在 InvenTree 中从零建立客户档案并将其正确用于销售流程的完整实战方法。什么是 Customer客户在 InvenTree 中客户Customer本质上是外部公司Company即向其销售零件或服务的对象。这一点在 官方客户文档 中定义得非常明确一个公司只要在数据库中被标记为is_customer就可以作为销售订单的接收方出现。从源码层面看客户并不是一个独立的数据库表而是统一存储在Company模型中。在 company/models.py 中客户身份由布尔字段控制is_customer models.BooleanField( defaultFalse, verbose_name_(Is customer), help_text_(Do you sell items to this company?), )同样的机制也用于区分供应商与制造商is_customer是否向这家公司销售物品默认Falseis_supplier是否从这家公司采购物品默认Trueis_manufacturer这家公司是否制造零件默认False这里有一个值得注意的默认值陷阱新建公司时is_supplier默认为True、而is_customer默认为False因此若你创建的是一家纯粹的客户公司务必显式把Is customer勾选为开启。一家公司可以身兼多职InvenTree 允许同一家公司同时扮演客户、供应商、制造商等多个角色。正如 公司概念文档 中所述一个公司可以同时是供应商和客户——例如一家既向你采购又向你销售的贸易商行。这在源码中体现为三个独立的布尔字段互不排斥你可以按需组合勾选。导航入口如何访问客户页面要进入客户页面按以下步骤操作点击主导航栏中的Sales销售标签truck-delivery 图标在下拉列表中选择Customers客户选项building-store 图标。进入后即可看到客户列表页面如下图所示权限要求谁可以查看和操作客户注意查看Viewing、添加Adding、编辑Editing和删除Deleting客户都需要具备对应的Sales Orders 用户权限。InvenTree 的权限体系以用户User→ 组Group→ 角色Role为核心每种角色下细分为 View / Change / Add / Delete 四级权限详见 用户权限文档。对客户数据而言管理员需要在组配置中为相应成员分配 Sales Orders 角色对应的权限未获授权的用户既看不到相关操作按钮也无法通过 API 执行对应操作。从实现角度公司相关的 API 也严格遵守权限模型。company/api.py 中的过滤器基于权限集合构建并且该文件同样按四层权限路由到 List / Detail 视图确保未授权访问被拦截。创建客户Add Customer 操作详解在客户页面加载后点击New Customerplus-circle 图标按钮系统会打开Create new Customer表单。填写公司信息其中Company name和Company description为必填项然后点击Submit完成创建。字段说明Company 模型支持的信息虽然官方客户文档强调必填项只有公司名称和描述但结合 company/models.py 中的模型定义一个完整的客户档案可以包含以下字段字段说明约束 / 默认值name公司名称必填最长 100 字符description公司描述必填表单要求最长 500 字符website公司官网 URL可选最长 2000 字符phone联系电话可选最长 50 字符email联系邮箱可选EmailFieldcontact联系人姓名可选最长 100 字符link外部信息链接如内部 Wiki可选最长 2000 字符active是否启用默认Trueis_customer是否为客户默认False创建客户时必须勾选currency公司默认货币默认取系统默认货币3 位货币代码tax_id公司税号可选最长 50 字符需要留意的是创建客户时勾选Is customer这一操作在源码层面至关重要销售订单SalesOrder模型的customer外键带有limit_choices_to{is_customer: True}约束见 order/models.py意味着只有被标记为客户的公司在创建销售订单时才可选。销售订单文档 sales_order.md 中也明确指出创建销售订单时下拉列表仅显示已启用 Customer 属性的公司。示例数据中的客户仓库自带的示例数据 company.yaml 演示了客户字段的典型组合pk4A customer仅设置is_customer: Truepk8Customer only显式设置is_customer: True、is_supplier: False、is_manufacturer: False用于构建纯客户角色。如果你希望复现只做客户的公司参考 pk8 的写法最稳妥。客户在销售订单中的应用创建客户的核心目的是将其用于销售订单Sales Order的整个生命周期下单新建销售订单时从客户列表中选择目标客户仅is_customerTrue的公司可见货币若销售订单未单独指定货币将默认使用客户档案中设置的默认货币currency字段收货地址销售订单可关联发货地址地址从该客户名下的地址列表中选择联系人销售订单可以关联客户公司下的具体联系人Contact发运销售订单下的所有 shipment 最终将货物发往该客户。上述第 1、2、3 点的联动关系在 销售订单文档 中有明确说明并在SalesOrder.customer外键约束order/models.py中得到源码印证。客户档案的延伸管理联系人、地址与禁用尽管官方客户文档篇幅精炼但结合 公司概念文档 可以补齐客户档案的完整管理面联系人Contacts每个客户公司可挂载多个联系人标识该公司的具体个人姓名、邮箱、电话、职位等。联系人在公司详情页的Contacts导航标签下维护并可在创建订单时被指派到销售订单上。地址Addresses客户公司可以注册多个地址用于各类订单。地址被拆分为国际化通用字段字段说明Title地址描述名如 Head Office、WarehouseLine 1街道主地址Line 2街道补充行Postal Code邮政编码约 3–5 位数字City城市 / 区域Province州 / 省等更大区域Country国家每个公司只能有一个primary address主地址它会默认显示在公司档案中并在创建订单时被自动建议选中。从模型实现看company/models.py 中Address.save()会保证唯一性规则若当前地址被标记为主地址则同一公司的其他地址会自动被取消主地址标记若某公司只有一个地址它会被自动设为主地址。禁用 vs 删除对于不再合作的客户官方推荐的做法是禁用而非删除将active属性设为False即可阻止该公司出现在新订单中同时保留其历史订单与关联数据。直接删除公司实例会连带移除与之关联的订单和供应零件等数据破坏历史数据完整性务必谨慎。通过 API 管理客户客户数据同样可以通过 InvenTree REST API 进行增删改查。CompanyList与CompanyDetail视图见 company/api.py分别提供列表/创建与检索/更新/删除能力且CompanyFilter支持按is_customer、is_supplier、is_manufacturer、name、active等字段过滤company/api.py。这意味着你可以通过类似GET /api/company/?is_customerTrue的查询快速筛选出全部客户或在创建订单的外部系统中先查询候选客户列表。相应地API 权限模型 用户权限文档 中的 API 权限说明同样适用于这些端点——未授权用户访问会被拒绝这也解释了为何 Web 界面中的操作按钮会按权限显隐。小结在 InvenTree 中客户并不是孤立的数据实体而是Company模型上is_customer标志的产物并与销售订单、货币、地址、联系人、权限和 REST API 深度耦合。掌握客户管理的关键要点包括通过Sales → Customers进入客户页面创建时以Company name与Company description为必填基础务必勾选Is customer否则公司不会出现在销售订单的客户候选列表中limit_choices_to{is_customer: True}约束客户操作受 Sales Orders 角色的四级权限约束需在用户组中预先配置善用联系人、地址、主地址与禁用机制维护完整且安全的客户档案通过 API 的is_customer过滤器可编程化地管理客户数据。本文所引用的官方文档入口客户文档、公司概念、销售订单、用户权限配合源码 company/models.py、company/api.py 与 order/models.py 即可获得完整的实践依据。【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表