关于 odoo
odoo 是面向 Odoo 操作与自动化的技能,提供命令行和 TypeScript 库两种使用方式。它覆盖记录管理、模式探索及多个业务模块,并明确区分读取、写入和破坏性操作。
主要功能
- 01命令行记录增删改查
- 02模型与字段模式探索
- 03模块生命周期管理
- 04会计、考勤与工时操作
- 05TypeScript 客户端库
适用场景
- 01通过命令行查找或更新 Odoo 记录
- 02在脚本中自动化 Odoo 数据处理
- 03检查模型字段及已安装模块
- 04执行考勤或工时记录操作
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ marcfargas/ odoo-toolbox --skill odoo安装后在 Claude Code 中输入/odoo确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.exampleCHANGES_V17.mdLICENSEbase/connection.mdcontext-keys.mdcrud.mddomains.mdfield-types.mdintrospection.mdmodules.mdmulti-company.mdproperties.mdsearch.mdtranslations.mdurls.mdcli/config.mdrecords.mdstate.mdmail/activities.mdchatter.mddiscuss.mdmodules/accounting.mdattendance.mdcontracts.mdproduct-configurator.mdtimesheets.mdoca/mis-builder-dev.mdmis-builder.md详细介绍
/odoo
Odoo ERP 集成。两种使用方式:CLI(适用于大多数任务,速度最快)和 库(适用于脚本和自动化)。
两种使用 Odoo 的方式
CLI — 适用于大多数任务,速度最快
odoo CLI 可让你搜索、创建、更新和删除记录,无需编写任何代码。
# 1. Verify connection (always do this first)
odoo config check
# 2. Search records
odoo records search res.partner --fields name,email --limit 5
# 3. Create a record
odoo records create res.partner --data '{"name":"Acme Corp"}' --confirm
# 4. Post a note on a record
odoo mail note crm.lead 42 "Called customer" --confirm
库 — 适用于脚本和自动化
import { createClient } from '@marcfargas/odoo-client';
const client = await createClient(); // reads ODOO_URL, ODOO_DB, ODOO_USER, ODOO_PASSWORD
const partners = await client.searchRead('res.partner', [['is_company', '=', true]], {
fields: ['name', 'email'],
limit: 10,
});
await client.mail.postInternalNote('crm.lead', 42, '<p>Called customer.</p>');
await client.modules.isModuleInstalled('sale');
快速入门
步骤 1:配置环境
export ODOO_URL=https://mycompany.odoo.com
export ODOO_DB=mycompany
export ODOO_USER=admin
export ODOO_PASSWORD=yourpassword
步骤 2:验证连接
odoo config check
# ✓ Connected to https://mycompany.odoo.com (db: mycompany)
# User: Administrator (admin) [id: 2]
# Installed modules: 143
步骤 3:探索
# Search for records
odoo records search res.partner --fields name,email --limit 10
# Introspect schema
odoo schema fields crm.lead --type many2one
# Check installed modules
odoo modules list --filter installed --search sale
CLI 退出代码
所有 odoo CLI 命令都使用以下标准退出代码:
| Code | 含义 |
|---|---|
0 | 成功 |
1 | 用法错误(标志错误、缺少 --confirm、参数无效) |
2 | 身份验证 / 网络错误(凭据错误、无法访问 Odoo) |
3 | 未找到 |
4 | 权限被拒绝 |
5 | 验证错误(Odoo 拒绝了这些值) |
6 | 冲突(例如,已打卡上班) |
10 | 部分成功 |
在脚本中使用:
odoo records get crm.lead 42 || echo "Exit code: $?"
CLI 命令参考
| CLI 命令 | 技能文档 | 描述 |
|---|---|---|
odoo config check/show | cli/config.md | 验证连接,显示解析后的配置 |
odoo records search/get/create/write/delete/count/call | cli/records.md | 对任意模型执行通用 CRUD 操作 |
odoo schema models/fields/describe/codegen | base/introspection.md | 探索模型和字段 |
odoo modules list/install/uninstall/upgrade/info/status | base/modules.md | 管理 Odoo 模块 |
odoo url record/portal | base/urls.md | 生成与版本无关的记录 URL |
odoo mail note/post | mail/chatter.md | 在聊天记录中发布备注和消息 |
odoo attendance clock-in/clock-out/status/list | modules/attendance.md | 员工上下班打卡 |
odoo timesheets start/stop/running/log/list | modules/timesheets.md | 时间跟踪 |
odoo accounting cash-accounts/cash-balance/posted-moves/trace-recon/days-to-pay | modules/accounting.md | 只读会计查询 |
odoo state plan/apply/diff ⚠ | cli/state.md | 实验性:状态管理 |
库 API
服务访问器
通过客户端上的惰性 getter 访问特定领域的辅助工具:
| 访问器 | CLI 命令 | 描述 | 技能文档 |
|---|---|---|---|
client.mail.* | odoo mail | 在聊天记录中发布备注和消息 | mail/chatter.md |
client.modules.* | odoo modules | 安装、卸载和检查模块 | base/modules.md |
client.urls.* | odoo url | 生成与版本无关的记录 URL | base/urls.md |
client.properties.* | — | 安全地操作属性字段 | base/properties.md |
client.cdc.* | — | 更改数据捕获 — 通过 mail.tracking.value 查看字段变更历史 | modules/cdc.md |
client.accounting.* | odoo accounting | 现金查询、对账和合作伙伴解析 | modules/accounting.md |
client.attendance.* | odoo attendance | 上下班打卡、考勤跟踪 | modules/attendance.md |
client.timesheets.* | odoo timesheets | 计时器启动 / 停止、时间记录 | modules/timesheets.md |
核心 CRUD(searchRead、create、write、unlink 等)仍可直接通过 client 使用。
安全模型
| 操作 | 级别 | 备注 |
|---|---|---|
client.search(), searchRead(), read(), searchCount() | 读取 | |
client.create() | 写入 | |
client.write() | 写入 | |
client.unlink() | 破坏性 | 永久删除 |
client.call() | 视情况而定 | 取决于方法 — 请查看各技能文档 |
client.mail.postInternalNote() | 写入 | 仅限内部,不会发送电子邮件 |
client.mail.postOpenMessage() | 破坏性 | 向关注者发送电子邮件(可能是外部人员) |
client.modules.isModuleInstalled() | 读取 | |
client.modules.installModule() | 破坏性 | 更改架构,难以回滚 |
client.modules.uninstallModule() | 破坏性 | 删除模块数据,无法撤销 |
client.properties.* | 写入 | 安全更新属性,可防止数据丢失 |
client.accounting.* | 读取 | 所有会计辅助工具均为只读 |
client.timesheets.logTime(), startTimer(), stopTimer() | 写入 | |
client.attendance.* | 写入 | 签到/签退 |
client.urls.* | 读取 | 仅构建 URL,不进行 RPC |
前置条件(请先阅读)
执行任何 Odoo 操作前,请加载以下基础模块:
base/connection.md—createClient()、身份验证和环境变量base/field-types.md— Odoo 类型系统(读写不对称性)base/domains.md— 查询筛选语法
其他模块
根据需要阅读 base/{name}.md 加载模块:
| 模块 | CLI 覆盖范围 | 说明 |
|---|---|---|
| introspection | odoo schema | 发现模型和字段 |
| crud | odoo records | 创建、读取、更新和删除模式 |
| search | odoo records search | 搜索和筛选模式 |
| properties | — | 动态用户定义字段 |
| modules | odoo modules | 模块生命周期管理 |
| urls | odoo url | 生成与版本无关的记录 URL |
| multi-company | odoo records search --context | 多公司上下文、allowed_company_ids 和常见问题 |
| translations | — | 读取和写入字段翻译(Odoo 17+,已移除 ir.translation) |
| context-keys | --context 标志 | 邮件/聊天上下文键:tracking_disable、mail_notrack、mail_create_nolog 等 |
邮件与消息
Odoo 邮件系统的技能。阅读 mail/{name}.md 加载:
| 模块 | CLI 覆盖范围 | 说明 |
|---|---|---|
| chatter | odoo mail | 在记录上发布消息和备注(client.mail.*) |
| activities | — | 安排和管理活动/任务 |
| discuss | — | 聊天频道和私信 |
注意: mail 模块是 Odoo 的基础模块,通常始终处于已安装状态。
模块专属技能
需要安装特定 Odoo 模块的技能。加载前,请确认所需模块已安装。
# CLI: check a module is installed
odoo modules status hr_attendance
// Library: check a module is installed
await client.modules.isModuleInstalled('hr_attendance')
读取下方所示路径以加载:
| 技能 | 路径 | CLI 命令 | 所需模块 | 描述 |
|---|---|---|---|---|
| 会计 | modules/accounting.md | odoo accounting | account | 会计模式、现金流、对账、损益、验证 |
| 合同 | modules/contracts.md | — | contract (OCA) | 定期合同、计费计划、收入预测 |
| 考勤 | modules/attendance.md | odoo attendance | hr_attendance | 签到/签退、出勤跟踪(client.attendance.*) |
| 工时表 | modules/timesheets.md | odoo timesheets | hr_timesheet | 计时器开始/停止、项目工时记录(client.timesheets.*) |
| mis-builder | oca/mis-builder.md | — | mis_builder, date_range, report_xlsx | MIS Builder——读取、计算、导出报表 |
| mis-builder-dev | oca/mis-builder-dev.md | — | mis_builder, date_range, report_xlsx | MIS Builder——创建和编辑报表模板 |
| 产品配置器 | modules/product-configurator.md | — | sale_product_configurator | 销售明细行中的产品属性和变体——no_variant、price_extra、自定义值 |
评论
支持 Markdown