肯尼亚 eTIMS 集成与 OSCU 设备使用完整指南
肯尼亚
配置 {#localization/kenya/configuration}
安装 🇰🇪 肯尼亚
fiscal localization package <fiscal_localizations/packages> 来获取肯尼亚本地化的全部功能。
eTIMS
肯尼亚税务局 (KRA) 已实现
电子税票管理系统 (eTIMS) 用于税收征收。
要通过 eTIMS 提交文件,必须使用与现有 Trader Invoicing System (TIS) 集成的 OSCU (Online Sales Control Unit),如 Odoo 提供的版本。OSCU 用于验证、加密、签名、传输和存储税务发票。
:::: note ::: title 注意 :::
确保 install <general/install> Kenya eTIMS EDI 模块,以完整使用 OSCU 设备。
::::
OSCU 设备初始化 {#kenya/initialization}
使用前必须先初始化 OSCU。操作步骤:
- 前往
设置 --> 常规设置,在 公司 部分点击更新信息,并填写税号。 - 前往
设置 --> 常规设置,向下滚动至 Kenya eTIMS 集成 部分。 - 将
eTIMS 服务器模式设置为测试(用于初始化)。 - 输入设备的
序列号并勾选两个复选框。 - 点击
初始化 OSCU。
:::: note ::: title 注意 :::
服务器模式共有三种:
Demo:演示模式,使用模拟数据,不需要已初始化的 OSCU;Test:用于测试与 eTIMS 的连接;Production:用于准备好发送数据的正式数据库。 ::::
:::: important ::: title 重要 :::
如果设备已 在其他 ERP 中初始化,启用 ../../general/developer_mode。随后在 Kenya eTIMS 集成 部分填写 单元 ID(Unit ID)和之前初始化得到的 CMC Key,完成后点击 保存。
::::
初始化后,系统会为每个公司生成 OSCU 序列号(国家设为 Kenya),该序列号基于公司 VAT 编号(即使无效)生成,前缀为 [ODOO],后接 VAT 编号及递增数字。
在 eTIMS 上注册
纳税人必须在 KRA 门户 注册账户。若尚未拥有账户:
- 注册并填写 PIN,核对手机号、邮箱、邮寄地址等信息,必要时在 iTax 页面 修正错误。
- 系统会向提供的手机号发送
OTP(一次性密码),若未收到请解除对营销信息的屏蔽。 - 上传 企业所有者身份证 或 董事身份证(iTax 中列出的),并附上已填写并签署的 承诺表。
- 在 eTIMS 仪表盘 顶部点击
服务请求,选择OSCU为 eTIMS 类型,填写第三方集成方 Odoo KE LTD,并输入之前获取的 OSCU 序列号。
:::: note ::: title 注意 :::
服务请求审批通常很快,如有延迟请联系 eTIMS 运维或 KRA 办公室。 ::::
::: admonition 承诺表
- 第 1 部分:填写纳税人信息。
- 第 2 部分:填写企业所有者或董事信息。
- 第 3 部分:填写 Odoo 中找到的唯一序列号。
- 第 4 部分:勾选 OSCU,填写 Odoo KE LTD PIN [PO52112956W],并填写使用的 Odoo 版本(17.0 及以上)。
- 第 5 部分:勾选必填框,填写日期并签名。
:::
eTIMS 代码
标准代码会每两天自动从 KRA eTIMS API 服务器抓取。手动抓取步骤:
- 启用
../../general/developer_mode。 - 前往
设置 --> 技术 --> 自动化:计划动作,搜索KE eTIMS: Fetch KRA standard codes。 - 在列表中点击该动作,然后点
手动运行即可抓取代码。
在 会计 --> 配置 --> KE OSCU 代码 查看完整抓取的 OSCU 代码列表。
UNSPSC 代码 {#etims/unspsc}
KRA 需要产品的 UNSPSC 代码进行 注册。UNSPSC 代码会每天自动从 KRA eTIMS API 抓取。手动抓取步骤:
- 启用
../../general/developer_mode。 - 前往
设置 --> 技术 --> 自动化:计划动作,搜索KE eTIMS: Fetch UNSPSC codes from eTIMS。 - 在列表中点击该动作,然后点
手动运行。
在 产品表单 的 会计 标签页,点击 UNSPSC 类别 字段即可查看完整的 UNSPSC 代码列表。
通知
通知会每天自动从 KRA eTIMS API 抓取。手动抓取步骤:
- 启用
../../general/developer_mode。 - 前往
设置 --> 技术 --> 自动化:计划动作,搜索KE eTIMS: Fetch KRA notices from eTIMS。 - 在列表中点击该动作,然后点
手动运行。
在 会计 --> 配置 --> KE OSCU 通知 查看完整抓取的通知列表。
多公司
:::: {#kenya/branch}
::: seealso ../../general/companies :::
::::
如果使用 多公司(<accounting/multi-company>),可在单一 Odoo 数据库中集中管理。KRA 通过 ID 区分 母公司 与 子公司,子公司被视为母公司的 分支。
配置公司 ID:打开 设置 应用,在 公司 部分点击 更新信息,查找 eTIMS 分支代码 字段。母公司在多公司环境下的分支 ID 为 [00],非母公司则拥有 KRA 分配的其他分支 ID。
若要从 KRA 抓取非母公司的 分支 ID,需确保母公司已设置肯尼亚 税号 且 OSCU 已 初始化 <kenya/initialization>。随后在 分支 标签页点击 从 KRA 填充。
:::: note ::: title 注意 :::
- KRA 将每个 供应地点 视为单独的分支(ID)。
- 每个分支的 OSCU 设备必须 独立初始化。
::::
联系人分支 ID
在联系人表单的 会计 标签页,填写 eTIMS 分支代码 字段即可为联系人指定分支 ID。
:::: note ::: title 注意 :::
默认情况下,联系人的分支 ID 为 [OO]。
::::
KRA 序列
:::: important ::: title 重要 :::
Odoo 发票序列与 KRA 序列 不同。
::::
在 Odoo 中,发票序列依赖 母公司。母公司可以查看分支的发票,但分支 不能 查看母公司或其他分支的发票。KRA 要求每个分支拥有 独立 的序列号,因此 Odoo 也会为每个分支单独管理序列。
::: example 若母公司拥有两个分支,发票序列示例:
- 在 分支 1 创建发票:INV/2024/00001
- 在 分支 2 创建发票:INV/2024/00002
- 在 母公司 创建发票:INV/2024/00003
这符合 KRA 对分支独立序列的要求。
:::
保险
针对 健康服务提供商,可在 eTIMS 中发送并更新母公司及分支公司的保险信息。操作路径:会计 --> 配置 --> 设置,滚动至 Kenya eTIMS Integration 区段,填写 代码、名称、税率,完成后点击 发送保险详情。
产品注册 {#kenya/product-registration}
KRA 要求 产品必须先注册,才能进行库存移动、BOM、客户发票等业务。产品表单中必须填写以下字段:
常规信息标签页:成本。会计标签页:包装单位、包装数量、原产国、eTIMS 产品类型、适用保险、UNSPSC 类别 <etims/unspsc>。
若以上字段已填,产品在发送业务至 KRA 时会自动注册;否则系统会在页面顶部显示黄色横幅提示缺少信息。
库存移动
所有 库存移动 必须发送至 KRA。若为内部操作或库存调整,无需发票,Odoo 会在满足以下任一条件时自动发送:
- 未指定联系人;
- 联系人为母公司或其分支。
若为 外部操作(联系人不属于母公司或其分支),库存移动将在发票发送至 eTIMS 后自动发送。
:::: note ::: title 注意 :::
- 库存移动必须在发票发送至 eTIMS 前确认。
- 产品必须 已注册 <kenya/product-registration>,否则会出现黄色横幅提醒。
::::
采购
Odoo 会每天自动从 eTIMS 抓取新的供应商账单。需确认抓取的账单并将确认信息发送至 KRA。确认账单时,必须将其关联至一个或多个已确认的采购订单行。
::: {#kenya/purchases}
针对非海关进口的采购,关联账单与采购订单行的步骤如下:
:::
- 前往
会计 --> 供应商 --> 账单,查看从 KRA 服务器抓取的供应商账单(JSON 文件可在聊天记录中查看)。 - Odoo 会检查供应商的
税号(PIN):- 若未知,则创建新联系人;
- 若已知且分支 ID 相同,则使用已有联系人。
- 在抓取的账单中选择
产品,每张账单必须包含产品。 - Odoo 会搜索已存在的采购订单行,匹配产品及供应商;在
采购订单行字段中选择对应的行,确保数量与采购订单一致。若未匹配到行,可点击创建采购订单并基于未匹配行创建新订单,随后验证相应的库存移动并确认账单。 - 在
eTIMS 支付方式字段设置相应方法。 - 完成后点击
发送至 eTIMS。账单在 eTIMS 确认后,可在eTIMS 详情标签页查看 KRA 发票号码。
开票
:::: note ::: title 注意 :::
若产品未在库存中,KRA 不接受销售。
::::
推荐的 Odoo 销售流程:
- 创建 销售订单。
验证发货。确认发票。- 点击
发送并打印,并勾选发送至 eTIMS。 - 再次点击
发送并打印发送发票。
发票发送并经 KRA 签署后,可在发票上看到:
- KRA 发票号码;
- 必填的 KRA 发票字段,如 SCU 信息、日期、SCU ID、收据号码、商品数量、内部日期、收据签名;
- KRA 税表;
- 用于签署发票的唯一 KRA QR 码。
进口
海关进口代码会每天自动从 KRA eTIMS API 抓取。手动抓取步骤:
- 启用
../../general/developer_mode。 - 前往
设置 --> 技术 --> 自动化:计划动作,搜索KE eTIMS: Receive Customs Imports from the OSCU。 - 在列表中点击该动作,然后点
手动运行。
在 会计 --> 供应商 --> 海关进口 查看已抓取的代码。
发送并让 KRA 签署 海关进口 的步骤:
- 前往
会计 --> 供应商 --> 海关进口(系统会自动抓取)。 - 将导入的商品与已注册产品匹配(或创建新产品)。
- 在
合作伙伴字段填写供应商。 - 根据供应商,匹配相应的采购订单(参见
采购步骤 <kenya/purchases>),并在海关进口批准后正确调整库存。若无关联采购订单,则创建并确认,随后在采购订单上点击收货→验证。 - 根据货物情况点击
匹配并批准或匹配并拒绝。
:::: note ::: title 注意 :::
从 KRA 接收到的 JSON 文件会附在海关进口的聊天记录中。
::::
BOM(物料清单)
KRA 要求所有 BOM 必须发送。发送前,产品及其组件必须 已注册 <kenya/product-registration>。在产品表单点击 物料清单 智能按钮即可访问 BOM。确保在 会计 标签页的 KRA eTIMS 详细信息 区段填写 KRA 必填字段,然后点击 发送至 eTIMS。发送成功后,聊天记录中会出现确认信息及附带的 JSON 文件。
贷项单
KRA 不接受数量或金额高于原始发票的贷项单。创建贷项单时必须填写 KRA 原因:在贷项单表单的 eTIMS 详细信息 标签页,选择 eTIMS 贷项单原因,并在 冲销的发票 字段中选取对应的发票号码。