OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  odoo-openclaw-skill:先进的 Odoo 财务智能处理与数据分析工具

odoo-openclaw-skill:先进的 Odoo 财务智能处理与数据分析工具

 
  chatbot ·  2026-02-16 13:54:35 · 3 次点击  · 0 条评论  

名称: odoo
描述: "查询 Odoo 数据,包括销售员绩效、客户分析、订单、发票、CRM、会计、增值税、库存以及应收/应付账款。可生成 WhatsApp 卡片、PDF 和 Excel 文件。当用户明确提及 Odoo 或要求 Odoo 数据时使用。"


Odoo 财务智能助手

只读、证据优先、基于总账的报告

快速参考:常用 Odoo 模型

模型 包含内容 用途
res.users 用户/销售员 按姓名查找销售员,获取用户 ID
sale.order 销售订单 按销售员统计收入、订单数量、状态
account.move 发票/日记账分录 发票跟踪、付款、损益数据
res.partner 联系人/客户 客户信息、按收入排序的顶级客户
product.product 产品 产品销售、库存
account.account 会计科目表 财务报表、资产负债表
account.move.line 日记账行 详细的分类账条目

安全与凭证

必需的环境变量

此技能需要存储在 assets/autonomous-cfo/.env 中的 Odoo 连接凭证:

变量 描述 是否为密钥
ODOO_URL Odoo 实例 URL (例如 https://your-odoo.com)
ODOO_DB Odoo 数据库名称
ODOO_USER Odoo 用户名/邮箱
ODOO_PASSWORD Odoo 密码或 API 密钥

设置步骤:

cd skills/odoo/assets/autonomous-cfo
cp .env.example .env
# 使用您的实际凭证编辑 .env 文件
nano .env

模型调用策略

根据 skill.json 策略,模型调用功能已禁用。此技能处理敏感的财务数据和外部 Odoo 连接,必须由用户明确调用。

数据处理: 所有查询均为只读。不会修改或外传任何数据。

数据处理规则

  • 只读: 所有修改方法(createwriteunlink 等)在客户端级别已被阻止。
  • 不外传数据: 报告在 assets/autonomous-cfo/output/ 目录下本地生成。
  • 网络端点: 仅连接到 .env 中指定的 Odoo URL。
  • 输出格式: PDF、Excel 和 WhatsApp 图片卡片(仅限本地文件)。

安装

此技能需要一个包含特定包的 Python 虚拟环境:

cd skills/odoo/assets/autonomous-cfo
./install.sh

或手动安装:

cd skills/odoo/assets/autonomous-cfo
python3 -m venv venv
./venv/bin/pip install -r requirements.txt

依赖项: requestsmatplotlibpillowfpdf2openpyxl

关键规则

  1. 切勿假设 - 生成报告前务必询问澄清性问题。
  2. 多公司检查 - 如果存在多个公司,请询问使用哪一个。
  3. 基于总账 - 使用会计科目表和日记账行 (account.move.line),而不仅仅是发票摘要。
  4. 验证期间 - 运行前与用户确认日期范围。
  5. 无静默默认值 - 每个假设都必须得到确认。

生成任何报告前,请询问:

  1. "应该使用哪个公司?"(如果存在多个)
  2. "什么期间?(起止日期)"
  3. "包含哪些科目或科目类型?"
  4. "需要任何特定的细分吗?"(按科目、按合作伙伴、按日记账等)
  5. "偏好什么输出格式?"(PDF、WhatsApp 卡片,或两者都要)

入口点

使用包含 fpdf2、matplotlib、pillow 的虚拟环境以正确生成 PDF/图表:

./skills/odoo/assets/autonomous-cfo/venv/bin/python ./skills/odoo/assets/autonomous-cfo/src/tools/cfo_cli.py <命令>

或从技能目录运行:

cd skills/odoo/assets/autonomous-cfo && ./venv/bin/python src/tools/cfo_cli.py <命令>

基于会计科目表的报告

报告应基于以下内容构建:
- account.account - 会计科目表结构(代码、名称、类型、内部组)
- account.move.line - 日记账行(借方、贷方、科目 ID、日期)
- account.journal - 来源日记账(类型:销售、采购、现金、银行、一般)

科目内部组

  • ASSET - 资产(流动资产、非流动资产、现金、应收款)
  • LIABILITY - 负债(应付款、税款、应计费用)
  • EQUITY - 所有者权益
  • INCOME - 收入科目
  • EXPENSE - 成本和费用科目
  • OFF_BALANCE - 表外科目

常见科目类型

  • asset_cash - 银行和现金科目
  • asset_receivable - 应收账款
  • asset_current - 流动资产
  • liability_payable - 应付账款
  • income - 收入
  • expense - 费用

特殊权益类型(Odoo 特有)

  • equity - 标准权益科目(股本、留存收益)
  • equity_unaffected - 暂记科目,用于未分配利润/亏损(例如,999999)

资产负债表的关键点:
Odoo 的 equity_unaffected 是一个暂记科目。请勿直接使用其分类账余额。

正确的权益计算:
1. 权益本身 (类型: equity) - 使用分类账余额 (贷方 - 借方)
2. 留存收益 (以前年度) - 来自 equity_unaffected 的分类账余额
3. 本年利润 - 实时计算:收入 - 费用

总权益 = 权益本身 + 留存收益 + 本年利润

其中,本年利润 = Σ(收入科目贷方-借方) - Σ(费用科目借方-贷方)

为何重要: Odoo 在资产负债表上实时计算本年利润。仅使用 equity_unaffected 的分类账余额将导致资产负债表不平衡。

自动报告准则检测

此技能会根据公司所在国家/地区自动检测其会计报告准则,并相应格式化报告。

支持的准则:
| 准则 | 管辖区域 | 备注 |
|----------|--------------|-------|
| IFRS | 国际 | 大多数国家的默认准则 |
| US GAAP | 美国 | SEC 注册公司 |
| Ind-AS | 印度 | 与 IFRS 趋同的印度 GAAP |
| UK GAAP | 英国 | FRS 102 |
| SOCPA | 沙特阿拉伯 | 采用 IFRS |
| EU IFRS | 欧盟 | IAS 法规 |
| CAS | 中国 | 中国会计准则 |
| JGAAP | 日本 | 日本 GAAP |
| ASPE | 加拿大 | 私营企业 |
| AASB | 澳大利亚 | 澳大利亚准则 |

检测逻辑:
1. 从 res.company 查询公司所在国家。
2. 将国家代码映射到报告准则。
3. 应用特定于准则的格式:
- 数字格式 (1,234.56 对比 1.234,56)
- 负数显示 ((123) 对比 -123)
- 日期格式 (DD/MM/YYYY 对比 MM/DD/YYYY)
- 报表标题 (资产负债表对比财务状况表)
- 现金流量方法 (间接法对比直接法)

覆盖默认准则:

# 强制使用特定准则
reporter.generate(..., standard="US_GAAP")

命令

销售与 CRM 查询

# 销售员绩效 - 使用直接 RPC 以获得灵活性
./venv/bin/python -c "
from src.visualizers.whatsapp_cards import WhatsAppCardGenerator
# 按 user_id 查询 sale.order,按月/状态聚合
# 使用 generate_kpi_card() 和 generate_comparison_card() 生成卡片
"

# 销售员 RPC 查询示例:
# - sale.order (user_id, amount_total, state, date_order)
# - account.move (invoice_user_id, amount_total, payment_state)
# - res.users (销售员信息)
# - res.partner (客户信息)

预置报告

# 财务健康状况 - 现金流、流动性、消耗率、资金跑道
cfo_cli.py health --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

# 收入分析 - 月度趋势、顶级客户
cfo_cli.py revenue --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

# 应收/应付账龄 - 逾期账龄分段
cfo_cli.py aging --as-of YYYY-MM-DD --company-id ID

# 费用细分 - 按供应商/类别
cfo_cli.py expenses --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

# 执行摘要 - 一页 CFO 快照
cfo_cli.py executive --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID

直接 RPC 查询(高级)

对于预置命令未涵盖的销售/CRM 数据,使用直接 RPC:

# 按销售员查询销售订单
orders = jsonrpc('sale.order', 'search_read',
    [[('user_id', '=', SALESPERSON_ID)]],
    {'fields': ['name', 'partner_id', 'amount_total', 'state', 'date_order']})

# 按销售员查询发票
invoices = jsonrpc('account.move', 'search_read',
    [[('invoice_user_id', '=', SALESPERSON_ID), ('move_type', '=', 'out_invoice')]],
    {'fields': ['name', 'partner_id', 'amount_total', 'payment_state']})

# 按姓名查找销售员
users = jsonrpc('res.users', 'search_read',
    [[('name', 'ilike', 'name_here')]],
    {'fields': ['id', 'name', 'login']})

临时报告

# 自定义对比
cfo_cli.py adhoc --from YYYY-MM-DD --to YYYY-MM-DD --metric-a "revenue" --metric-b "expenses"

# 示例:
cfo_cli.py adhoc --metric-a "cash in" --metric-b "cash out"
cfo_cli.py adhoc --metric-a "direct expenses" --metric-b "indirect expenses"

输出格式

--output whatsapp   # 深色主题 1080x1080 PNG 卡片
--output pdf        # 浅色主题 A4 PDF
--output excel      # Excel 工作簿 (.xlsx)
--output both       # PDF + WhatsApp 卡片
--output all        # PDF + Excel + WhatsApp 卡片

自动可视化

报告默认始终包含适当的可视化图表:

报告 自动包含的图表
财务健康状况 现金状况、消耗率趋势、资金跑道
收入 月度趋势、顶级客户、增长 KPI
应收/应付账龄 账龄分段饼图、逾期高亮
费用 类别细分、趋势、顶级供应商
执行摘要 所有 KPI 卡片、摘要图表
资产负债表 资产/负债构成
损益表 收入与费用对比、利润率趋势
现金流量表 经营活动细分、现金趋势

规则: 如果可视化能使报告更清晰,则自动包含。切勿询问"是否需要图表?",直接添加即可。

交互式参数收集

如果缺少必需参数,技能将询问:

  1. 公司: "使用哪个公司?"(列出可用选项)
  2. 期间: "什么期间?(例如 '上个月'、'2024 年第四季度'、自定义日期)"
  3. 科目: "包含哪些科目或组?(例如 '所有收入'、'仅银行科目')"
  4. 细分: "按什么分组?(月份、客户、类别、科目)"
  5. 输出: "输出格式?(WhatsApp 卡片、PDF、两者都要)"

如何在聊天中使用

只需自然提问:

销售与 CRM:
- "[姓名] 销售员的绩效如何?"
- "显示 [销售员] 的顶级客户"
- "比较销售团队绩效"
- "哪位销售员的订单最多?"

财务报告:
- "给我一份上个季度的财务健康状况报告"
- "显示过去 6 个月的收入与费用对比"
- "我的应收账龄是多少?"
- "生成本月的执行摘要"
- "基于会计科目表显示损益表"

常规查询:
- "我们这个月收到了多少订单?"
- "谁是前 10 名客户?"
- "显示 [客户名称] 的发票状态"

技能将:
1. 检查是否存在多个公司并询问使用哪一个。
2. 解析您的请求。
3. 询问任何缺失的信息。
4. 使用分类账条目或直接 RPC 从 Odoo 获取数据。
5. 生成图表和 WhatsApp 卡片。
6. 通过 WhatsApp 卡片和/或 PDF 交付。

硬性规则

  1. Odoo RPC 输出是唯一真相来源。
  2. 严格只读(无创建/写入/删除)。
  3. 除非请求,否则不主动采取行动。
  4. 每个数字都包含方法说明。
  5. 假设前始终与用户核实。
  6. 始终包含可视化 - 如果报告能从图表/图形中受益,则自动包含,无需询问。报告应在视觉上是完整的。

诊断

python3 ./skills/odoo/assets/autonomous-cfo/src/tools/cfo_cli.py doctor

报告主题

  • WhatsApp 卡片: "午夜总账" - 海军蓝-黑色 (#0a0e1a),铜色光泽 (#cd7f32)
  • PDF 报告: 简洁的白色背景,铜色点缀,专业布局
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor