odoo について
odoo は、CLI または TypeScript ライブラリで Odoo を操作、自動化するスキルです。レコード管理やスキーマ探索、業務モジュールに対応し、読み取り・書き込み・破壊的操作を区別します。
主な機能
- 01CLI によるレコード CRUD
- 02モデルとフィールドのスキーマ探索
- 03モジュールのライフサイクル管理
- 04会計・勤怠・タイムシート操作
- 05TypeScript クライアントライブラリ
活用シーン
- 01CLI で 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 統合。作業方法は 2 通りあります。CLI(ほとんどのタスクで最速)とライブラリ(スクリプトや自動化向け)です。
Odoo を使った 2 通りの作業方法
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 コマンドでは、次の標準終了コードが使われます。
| コード | 意味 |
|---|---|
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
サービスアクセサー
ドメイン固有のヘルパーは、クライアントの遅延ゲッターから利用できます。
| アクセサー | 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.* | — | Change Data Capture — 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 対応 | 説明 |
|---|---|---|
| イントロスペクション | odoo schema | モデルとフィールドを検出します |
| CRUD | odoo records | 作成、読み取り、更新、削除のパターン |
| 検索 | odoo records search | 検索とフィルタリングのパターン |
| プロパティ | — | 動的なユーザー定義フィールド |
| モジュール | odoo modules | モジュールのライフサイクル管理 |
| URL | odoo url | バージョンに依存しないレコード URL の生成 |
| 複数会社 | odoo records search --context | 複数会社のコンテキスト、allowed_company_ids、よくある注意点 |
| 翻訳 | — | フィールド翻訳の読み取りと書き込み(Odoo 17 以降では ir.translation は削除済み) |
| コンテキストキー | --context フラグ | メール/チャターのコンテキストキー:tracking_disable、mail_notrack、mail_create_nolog など |
メールとメッセージング
Odoo のメールシステム向けスキルです。mail/{name}.md を読んで読み込んでください。
| モジュール | CLI 対応 | 説明 |
|---|---|---|
| チャター | odoo mail | レコードにメッセージやメモを投稿します(client.mail.*) |
| アクティビティ | — | アクティビティ/タスクのスケジュール設定と管理 |
| ディスカス | — | チャットチャンネルとダイレクトメッセージ |
注: 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 コマンド | 必要なモジュール | 説明 |
|---|---|---|---|---|
| accounting | modules/accounting.md | odoo accounting | account | 会計のパターン、キャッシュフロー、照合、損益、検証 |
| contracts | modules/contracts.md | — | contract (OCA) | 継続契約、請求スケジュール、収益予測 |
| attendance | modules/attendance.md | odoo attendance | hr_attendance | 出退勤の打刻、在席状況の追跡(client.attendance.*) |
| timesheets | 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 — レポートテンプレートの作成と編集 |
| product-configurator | modules/product-configurator.md | — | sale_product_configurator | 販売明細の製品属性とバリアント — no_variant、price_extra、カスタム値 |
コメント
Markdown 対応