Odoo Reporting技能使用说明
2026-03-29
新闻来源:网淘吧
围观:19
电脑广告
手机广告
Odoo财务智能
只读、凭证优先、基于总账的报告
快速参考:常见Odoo模型
| 模型 | 包含内容 | 用途 |
|---|---|---|
res.users | 用户/销售人员 | 按姓名查找销售人员,获取用户ID |
sale.order | 销售订单 | 按销售人员的收入、订单数量、状态 |
account.move | 发票/日记账分录 | 发票跟踪、付款、损益表数据 |
res.partner | 联系人/客户 | 客户信息、按收入排名的顶级客户 |
product.product | 产品 | 产品销售、库存 |
account.account | 会计科目表 | 财务报表,资产负债表 |
会计移动行 | 日记账分录 | 明细分类账条目 |
安全与凭证
所需环境变量
此技能需要存储在assets/autonomous-cfo/.env中的 Odoo 连接凭证
| : | 变量 | 描述 |
|---|---|---|
机密 | ODOO_URLOdoo 实例 URL(例如,https://your-odoo.com | ) |
否 | ODOO_DB | Odoo 数据库名称 |
否 | ODOO_USER | Odoo 用户名/邮箱 |
否 | ODOO_PASSWORD | 是的 |
设置:
cd skills/odoo/assets/autonomous-cfo
cp .env.example .env
# Edit .env with your actual credentials
nano .env
模型调用策略
模型调用已被**禁用**根据skill.json中的策略。此技能处理敏感的财务数据和外部Odoo连接——必须由用户明确调用。
数据处理:所有查询均为只读。不会修改或外泄任何数据。
数据处理
- 只读:所有变更方法(
create、write、unlink等)已在客户端层面被阻止 - 不外泄:报告在本地生成于
assets/autonomous-cfo/output/ - 网络端点:仅连接到在
.env - 输出格式: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
依赖项: requests、matplotlib、pillow、fpdf2、openpyxl
关键规则
- 切勿假设- 在生成报告前,务必先询问澄清性问题
- 多公司检查- 如果存在多个公司,务必询问使用哪一个
- 基于总账- 使用会计科目表和日记账分录(account.move.line),而不仅仅是发票摘要
- 核实期间- 在运行前与用户确认日期范围
- 无静默默认值- 每个假设都必须经过确认
生成任何报告前,询问:
- “我应该使用哪家公司?”(如果存在多家公司)
- “需要哪个期间?(起止日期)”
- “需要包含哪些账户或账户类型?”
- “需要任何特定的细分吗?”(按账户、按合作伙伴、按日记账等)
- “输出格式偏好?”(PDF、WhatsApp卡片,或两者都要)
入口点
使用包含 fpdf2、matplotlib、pillow 的虚拟环境以正确生成PDF/图表:
./skills/odoo/assets/autonomous-cfo/venv/bin/python ./skills/odoo/assets/autonomous-cfo/src/tools/cfo_cli.py <command>
或从技能目录:
cd skills/odoo/assets/autonomous-cfo && ./venv/bin/python src/tools/cfo_cli.py <command>
基于会计科目表的报告
报告应基于以下内容构建:
account.account- 会计科目表结构(代码、名称、类型、内部组别)account.move.line- 日记账分录行(借方、贷方、账户ID、日期)account.journal- 源日记账(类型:销售、采购、现金、银行、总账)
账户内部组
- 资产- 资产(流动资产、非流动资产、现金、应收款项)
- 负债- 负债(应付款项、税款、应计费用)
- 所有者权益- 所有者权益
- 收入- 收入类账户
- 费用- 成本与费用类账户
- 表外- 表外账户
常见账户类型
资产_现金- 银行与现金账户资产_应收- 应收账款资产_流动资产- 流动资产负债_应付- 应付账款收入- 收入费用- 费用
特殊权益类型(Odoo特有)
权益- 标准权益账户(股本、留存收益)未受影响权益-暂记账户用于未分配利润/亏损(例如,999999)
资产负债表关键:Odoo的未受影响权益是一个暂记账户。请勿直接使用其分类账余额。
正确的权益计算:
- 权益本身(类型:
权益)- 使用分类账余额(贷方 - 借方) - 留存收益(以前年度)- 来自
未受影响权益 - 的分类账余额 当前年度收益- 实时计算:收入 - 支出
Total Equity = Equity Proper + Retained Earnings + Current Year Earnings
其中,本年利润 = Σ(收入贷方-借方) - Σ(支出借方-贷方)
为何重要:Odoo 在资产负债表上实时计算本年利润。若仅使用未受影响权益分类账余额,将导致资产负债表无法平衡。
会计准则自动检测
本功能可根据公司所在国家/司法管辖区自动检测其会计准则,并相应格式化报表。
支持的准则:
| 准则 | 司法管辖区 | 备注 |
|---|---|---|
| 国际财务报告准则 | 国际通用 | 多数国家默认采用 |
| 美国通用会计准则 | 美国 | 适用于美国证券交易委员会注册公司 |
| 印度会计准则 | 印度 | 与IFRS趋同的印度会计准则 |
| 英国公认会计原则 | 英国 | 财务报告准则第102号 |
| 《2005年公司(审计、调查和社区企业)法案》 | 沙特阿拉伯 | 已采纳的国际财务报告准则 |
| 欧盟国际财务报告准则 | 欧洲联盟 | 国际会计准则法规 |
| 企业会计准则 | 中国 | 中国会计准则 |
| 日本公认会计原则 | 日本 | 日本公认会计原则 |
| 私营企业会计准则 | 加拿大 | 私营企业 |
| 澳大利亚会计准则委员会 | 澳大利亚 | 澳大利亚会计准则 |
检测逻辑:
- 从
res.company - 查询公司所属国家
- 将国家代码映射至报告准则
- 数字格式(1,234.56 对比 1.234,56)
- 负数显示形式((123) 对比 -123)
- 日期格式(DD/MM/YYYY 对比 MM/DD/YYYY)
- 报表标题(资产负债表 对比 财务状况表)
- 现金流量表编制方法(间接法 对比 直接法)
覆盖设置:
# Force a specific standard
reporter.generate(..., standard="US_GAAP")
命令
销售与客户关系管理查询
# Salesperson performance - use direct RPC for flexibility
./venv/bin/python -c "
from src.visualizers.whatsapp_cards import WhatsAppCardGenerator
# Query sale.order by user_id, aggregate by month/status
# Generate cards with generate_kpi_card() and generate_comparison_card()
"
# Example RPC query for salesperson:
# - sale.order (user_id, amount_total, state, date_order)
# - account.move (invoice_user_id, amount_total, payment_state)
# - res.users (salesperson info)
# - res.partner (customer info)
预置报告
# Financial Health - cash flow, liquidity, burn rate, runway
cfo_cli.py health --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
# Revenue Analytics - MoM trends, top customers
cfo_cli.py revenue --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
# AR/AP Aging - overdue buckets
cfo_cli.py aging --as-of YYYY-MM-DD --company-id ID
# Expense Breakdown - by vendor/category
cfo_cli.py expenses --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
# Executive Summary - one-page CFO snapshot
cfo_cli.py executive --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
直接远程过程调用查询(高级)
对于预置命令未涵盖的销售/客户关系管理数据,请使用直接远程过程调用:
# Query sales orders by salesperson
orders = jsonrpc('sale.order', 'search_read',
[[('user_id', '=', SALESPERSON_ID)]],
{'fields': ['name', 'partner_id', 'amount_total', 'state', 'date_order']})
# Query invoices by salesperson
invoices = jsonrpc('account.move', 'search_read',
[[('invoice_user_id', '=', SALESPERSON_ID), ('move_type', '=', 'out_invoice')]],
{'fields': ['name', 'partner_id', 'amount_total', 'payment_state']})
# Find salesperson by name
users = jsonrpc('res.users', 'search_read',
[[('name', 'ilike', 'name_here')]],
{'fields': ['id', 'name', 'login']})
临时报告
# Custom comparison
cfo_cli.py adhoc --from YYYY-MM-DD --to YYYY-MM-DD --metric-a "revenue" --metric-b "expenses"
# Examples:
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 # Dark theme 1080x1080 PNG cards
--output pdf # Light theme A4 PDF
--output excel # Excel workbook (.xlsx)
--output both # PDF + WhatsApp cards
--output all # PDF + Excel + WhatsApp cards
自动可视化
报告默认始终包含适当的可视化图表:
| 报告 | 自动包含的图表 |
|---|---|
| 财务健康状况 | 现金状况、现金消耗率趋势、资金跑道 |
| 收入 | 月度环比趋势、顶级客户、增长关键绩效指标 |
| 应收账款/应付账款账龄分析 | 账龄分布饼图,逾期款项重点提示 |
| 费用 | 类别细分、趋势、主要供应商 |
| 管理层视图 | 所有关键绩效指标卡片、汇总图表 |
| 资产负债表 | 资产/负债构成 |
| 损益表 | 收入与费用对比、利润率趋势 |
| 现金流量表 | 经营活动细分、现金趋势 |
规则:如果可视化能让报告更清晰,则自动包含。切勿询问“是否需要图表?”——直接添加即可。
交互式参数收集
如果缺少必要参数,技能将询问:
- 公司:“哪家公司?”(列出可用选项)
- 期间:“哪个期间?(例如,‘上个月’、‘2024年第四季度’、自定义日期)”
- 账户:“哪些账户或账户组?”(例如,‘所有收入’、‘仅银行账户’)
- 细分方式:"按什么分组?(月份、客户、类别、账户)"
- 输出:"输出格式?(WhatsApp卡片、PDF、两者皆可)"
如何在聊天中使用
只需自然提问:
销售与客户关系管理:
- "[姓名]销售人员的表现如何?"
- "显示[销售人员]的顶级客户"
- "比较销售团队表现"
- "哪位销售人员的订单最多?"
财务报告:
- "给我上一季度的财务健康报告"
- "显示过去6个月的收入与支出对比"
- "我的应收账款账龄是多少?"
- "生成本月的执行摘要"
- "基于会计科目表显示损益表"
常规查询:
- "我们本月收到多少订单?"
- "前10大客户是谁?"
- "显示[客户名称]的发票状态"
该技能将:
- 检查是否存在多家公司并询问是哪一家
- 解析您的请求
- 询问任何缺失的信息
- 使用分类账条目或直接RPC从Odoo获取数据
- 生成图表 + WhatsApp卡片
- 通过WhatsApp卡片和/或PDF交付
硬性规则
- Odoo RPC输出为唯一可信来源
- 严格只读(不创建/写入/删除)
- 除非请求,否则不主动执行操作
- 每个数字都包含方法说明
- 在做出假设前始终向用户核实
- 始终包含可视化内容- 如果报告能从图表/图形中受益,则自动包含它们,无需询问。报告应在视觉上是完整的。
诊断
python3 ./skills/odoo/assets/autonomous-cfo/src/tools/cfo_cli.py doctor
报告主题
- WhatsApp卡片:"午夜账本" — 海军黑 (#0a0e1a),铜辉色 (#cd7f32)
- PDF报告:简洁的白色、铜色点缀、专业布局
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Gamma技能使用说明
下一篇:Resume / CV Builder技能使用说明


微信扫一扫,打赏作者吧~