薪资

在 Odoo 中,薪资由五个要素计算并确定:薪资 结构类型、薪资 结构、规则、规则参数 以及 其他输入类型。它们共同决定了每位员工薪资的计算方式。

每个 结构类型 包含一个或多个 结构。每个 结构 包含一组 规则,而每条 规则 使用 参数 来定义特定金额的计算方式。还可以包含其他输入(例如奖金或扣款)以调整最终薪资。

计算工资单时,Odoo 根据员工的 工作条目 计算其工作时间,然后应用其所属结构类型的相应结构、规则和参数,以确定其总薪资。

工资结构类型

在 Odoo 中,结构类型 用于分组相关的薪资结构。当合同指定了某个结构类型时, 仅 使用该类型内的结构来计算员工薪资。每个结构类型内部包含多个独立结构,每个结构包含一组用于处理工时表条目的规则。

结构类型定义了薪资配置的关键方面,包括员工的发薪频率、工作小时、默认薪资结构,以及工资是固定(按薪资计)还是可变(按小时计)。

Example

名为 Employee 的结构类型内部包含两个不同的结构:一个 Regular Pay 结构,包含处理常规薪资的所有单独规则;以及一个 End of Year Bonus 结构,仅包含年终奖金的规则。两者都属于同一个 Employee 结构类型。

通过导航至 薪资应用 ‣ 配置 ‣ 结构类型 查看现有的 结构类型。

Odoo 中预配置了两个默认结构类型:员工 和 员工。

通常 员工 用于按薪计算的员工,因此其 默认工资类型 为 固定工资;而 员工 通常用于按小时计薪的员工,因此其工资类型为 计时工资。

注解

如果使用特定国家的 薪资本地化,建议使用该对应国家本地化文档中的结构。

当前可使用的所有已配置结构类型的列表。

新结构类型

如果默认结构类型不能满足公司需求,请前往 薪资应用 ‣ 配置 ‣ 结构类型 并点击 新建 创建自定义结构类型。

警告

创建新的薪资结构类型时,确保遵守所有地方和国家法律。配置薪资结构时请与会计部门确认,以确保满足所有要求。

接下来,在字段中录入以下信息:

  • 结构类型:录入新结构类型的名称,例如 Employee 或 Worker。

  • 国家/地区:从下拉菜单中选择该新结构类型适用的国家。

  • 工资类型:为该结构选择工资类型:

    • 固定工资:适用于每个发薪期获得相同工资的按薪员工。

    • 计时工资:适用于根据一个发薪期内实际工作小时计薪的员工。

  • 默认计划发薪:从下拉菜单中选择该新结构类型的典型发薪计划。这表示该特定类型结构的发薪频率。

  • 默认工作小时:从下拉菜单中选择新结构类型的默认工作小时。下拉菜单中会显示当前所选公司所有可用的工作小时。默认工作小时为 每周标准 40 小时 选项。如果所需的工作小时不在列表中,可以 创建一组新的默认工作小时。

  • 常规薪资结构:输入常规薪资结构的名称。生成工资单时它作为默认选项使用。

  • 默认工作条目类型:选择用于创建该员工所有工作条目的默认工作条目类型。

创建新结构类型时要填写的新结构类型表格。

新的默认工作时间

要创建新的默认工作小时,在新结构类型表单的 默认工作小时 字段中输入新工作小时的名称,点击 创建并编辑。将弹出一个默认工作小时表单。该表单包含两个部分:一个通用信息部分,以及一个按天和时段列出各工作小时的标签页。表单填写完成后,点击 保存并关闭。

  • 名称:输入新默认工作小时的名称。该名称应描述清晰、易于理解,例如 Standard 20 Hours/Week。

  • 弹性工时:勾选复选框,让员工在保持每日总工时不变的情况下调整上下班时间。

  • 公司全职:录入员工每周需工作多少小时才算全职员工。通常为 40 小时左右,该数值会根据员工的雇佣状态(全职与兼职)影响其可享受的福利类型。

  • 平均每日工时:根据 工作时间 标签页中的工作小时自动填充。该项通过确定每个工作日可使用的资源数量,影响资源规划。

  • 工时比例:该百分比根据 公司全职 的录入值以及 工作时间 标签页中配置的工作小时自动生成。该数值应在 0.00% 到 100% 之间,若百分比超过 100%,则表明工作时间及/或 公司全职 小时需要调整。

  • 公司:从下拉菜单中选择可使用这些新默认工作小时的公司。如果这些小时适用于所有公司,请留空该字段。

  • 时区:从下拉菜单中选择新默认工作小时使用的时区。

  • 工作时间 标签页:该标签页列出每天的具体工作小时。创建新的默认工作小时表单时,工作时间 标签页会预填一个默认的 40 小时工作周,每天分为三个时段。

    每天包含上午(8:00–12:00)、午餐(12:00–13:00)和下午(13:00–17:00)三个时段,采用 24 小时制配置。

    要调整其中任何时间,点击字段并使用下拉菜单修改时间,或直接输入所需时间。

    注解

    工作小时按公司特定设置,无法在公司之间共享。

    小技巧

    如果每周的工作时间不一致,而是采用双周工作时间,请点击新的默认工作时间表格顶部的 切换到 2 周日历 按钮。这将更改 工作时间 选项卡,以显示可调整的两周工作时间。

结构

薪资结构 是指员工在特定 结构 中可能获得薪酬的不同情形,并通过各种规则具体定义。

每种结构类型下公司需要的结构数量,取决于员工薪酬方式有多少种以及其薪资如何计算。一种额外的结构常见示例是 Bonus。

要查看每种结构类型下的所有各种结构,前往 薪资应用 ‣ 配置 ‣ 结构。

每种 结构类型 都列出了与之相关的各种结构,而每个结构都包含了一组定义规则。

所有可用的薪资结构。

点击某个结构以查看其 薪资规则 。这些规则定义了如何为员工计算工资单。

注解

安装 薪资本地化 后,相关结构会被安装并出现在此列表中。

正常薪资的薪资结构详情,列出所有具体的薪资规则。

薪资规则

每个 结构 都有一套薪资 规则,用于计算薪资中涉及的各类金额。这些规则由本地化配置设定,并影响薪资的计算。

警告

修改或创建规则应 仅 在必要时进行。

要查看所有规则,前往 薪资应用 ‣ 配置 ‣ 规则。点击某个结构(例如 定期工资)即可查看其所有规则。

添加新规则

要创建新规则,点击 新建,将加载一个空白的 薪资规则 表单。在表单上半部分录入以下信息:

  • 规则名称: 为规则输入名称。该名称将显示在工资单上。

  • 代码: 输入新规则要使用的代码。此项区分大小写,用作 规则 ID。此字段 必填 。

  • 类别: 使用下拉菜单选择该规则所属的类别,或输入一个新类别。类别用于对规则进行分组并访问其合计金额。

  • 薪资结构: 使用下拉菜单选择该规则适用的薪资结构,或输入一个新结构。此字段 必填 。

  • 顺序: 输入一个数字,表示在所有其他规则的顺序中该规则 何时 被计算。规则根据其顺序号依次处理。顺序号较低的规则先被计算,其结果可供顺序号较高的规则使用。此字段 必填 。

  • 显示在工资单上: 勾选此复选框,使该规则显示在员工的工资单 PDF 上。

  • 计入雇主成本: 勾选此复选框,在计算工资单的 雇主成本 时包含该规则。

常规选项卡

填写 常规 选项卡中的以下部分。这些配置决定了规则 何时 以及 如何 被计算。

条件
  • 条件基于: 使用下拉菜单选择该规则是否被计算并作为工资单表单视图中的一行显示。从以下选项中选择一项:

    • 始终为真: 该规则始终被计算。此部分无需其他配置。

    • 薪资输入: 这会在结构中添加一项动态福利。它会作为字段出现在 员工 表单的 薪资 选项卡、工资单的 输入 选项卡中,或两者都出现。该字段的值会加到规则的金额上。如果选中,将出现以下附加字段并需配置:

      • 输入位置: 指定该字段应出现在何处以及应属于哪个对象,员工、工资单,或两者。如果两者都选中,工资单上的值会自动默认为员工记录中的值,但可以在特定薪资运行中直接在工资单上覆盖。

      • 部分: 这会将多个输入项归到表单视图中的一个可展开部分中。默认仅提供一个选项:输入。

      • 单位: 点击相应的单选按钮来确定福利的显示方式。可用选项如下:

        • 货币: 带货币单位的数字。

        • 数量: 一个数字。

        • 百分比: 带 % 号的数字。

        • 复选框: 表示布尔值。

      • 输入描述: 简要说明该输入项在何时适用。

      • 默认值: 输入默认值,可以是金额、数量或百分比。具体由 单位 中选择的项决定。如有必要,可在该值右侧的字段中添加 后缀,例如 per km。

        注解

        如果 单位 选择的是 复选框,该字段会变为 默认选中。点击复选框可使规则默认启用。

      • 依赖于: 选择另一个具有薪资输入的规则,并使用其值来判断是否应隐藏此规则。

    • 其他输入: 选择此项以检查是否存在 类型 相同的工资单行。选中后,会出现 条件其他输入 字段。使用下拉菜单选择该规则所依据的输入类型,例如 扣除、报销 等。

    • Python 表达式: 选择此项,以使用 Python 脚本计算该规则。该脚本使用本地字典进行求值。右侧列出了 可用变量 和 输出:

      • 可用变量:

        • payslip: hr.payslip 对象。

        • employee: hr.employee 对象。

        • version: hr.version 对象。

        • result_rules: 包含规则的金额、数量、税率和总计(先前计算得出)的字典。

        • categories: 包含已计算的薪资规则类别的字典(属于该类别的所有规则金额之和):

          • total: 规则总计

          • amount: 规则金额

          • quantity: 规则数量

          • rate: 规则税率

          • ytd: 规则年初至今值

        • worked_days: 包含已计算工作天数的字典,其中每个键是一个工作条目类型代码,每个值是一个 worked_days 对象。该对象包含许多变量,最重要的有:

          • number_of_days: 在工资单期间以内该工作条目类型登记的天数。

          • number_of_hours: 在工资单期间以内该工作条目类型登记的小时数。

          • is_paid: 该工作条目类型是否作为未付工作条目添加到该工资单结构上。

        • inputs: 包含已计算输入项的字典,其中 键 是其他输入类型代码,值 是代码相同的工资单输入行之和。

      • 输出:

        • result: 如果该规则应当被计算,此布尔值为 True;否则为 False。

  • 范围: 选择此选项,仅当规则与已配置的 适用范围 匹配时才应用该规则。选中后,配置显示在此选项下方的 适用范围。

计算

此部分决定规则的最终值,该值由基本金额、数量和税率组成。规则的总计为 total = amount * quantity * (rate/100)。

重要

如果 条件基于 字段设置为 薪资输入,则此字段 不会 出现。

使用下拉菜单,为 金额类型 字段选择以下选项之一:

  • 百分比 (%): 定义总计计算所用的数值。选中后,配置以下字段:

    • 百分比基于: 使用 localdict 对一个 Python 表达式进行求值,并将其值分配给规则金额。

    • 数量: 使用 localdict 对一个 Python 表达式进行求值,并将其值分配给规则数量。

    • 百分比 (%): 分配给规则税率的十进制数字。

  • 固定金额: 金额和数量均已定义,税率为 100%。

    • 数量: 使用 localdict 对一个 Python 表达式进行求值,并将其值分配给规则数量。

    • 固定金额: 输入一个将分配给规则金额的十进制数字。

  • 其他输入: 选择此项,从具有相同 其他输入类型 且税率为 100%、数量为 1.0 的工资单输入行中获取规则金额。选中后,下方会出现一个 金额其他输入 字段。使用下拉菜单选择其输入的 类型,例如 扣除、小费 或 费用。

  • Python 代码: 这是 百分比 (%) 选项更复杂的版本,其中编写一整个 Python 脚本,然后使用 localdict 进行求值。这包括一个 可用变量 列表和一个 输出 列表。

    • 可用变量:

      • payslip: hr.payslip 对象

      • employee: hr.employee 对象

      • version: hr.version 对象

      • result_rules: 包含规则的金额、数量、税率和总计(先前计算得出)的字典,其中键是规则代码,值是一个具有以下键的字典:

        • total: 规则总计

        • amount: 规则金额

        • quantity: 规则数量

        • rate: 规则税率

        • ytd: 规则年初至今值

      • categories: 包含已计算的薪资规则类别的字典(属于该类别的所有规则金额之和),其中键是类别代码,值是规则总计值之和。

      • worked_days: 包含已计算工作天数的字典,其中 键 是工作条目类型代码,值 是 worked_days 对象,包含许多变量,但最重要的是:

        • number_of_days: 在工资单期间以内该工作条目类型登记的天数。

        • number_of_hours: 在工资单期间以内该工作条目类型登记的小时数。

        • is_paid: 决定该工作条目类型是否作为未付工作条目添加到该工资单结构上。

      • inputs: 包含已计算输入项的字典,其中 键 是其他输入类型代码,值 是代码相同的工资单输入行之和。

    • 输出:

      • result: 浮点数,规则的基本金额

      • result_rate: 浮点数,默认为 100.0 (%)

      • result_qty: 浮点数,数量,默认为 1

      • result_name: 字符串,该行名称。默认取薪资规则的 name 字段(当名称取决于规则中计算的某个值,或应当取决于它时很有用)。

公司贡献

使用下拉菜单,选择参与向员工支付薪资的第三方(如适用)。

显示选项卡

此部分决定该规则在员工可查看的工资单 PDF 上的外观,并定义规则的格式样式。

首先,使用颜色选择器为规则选择一种 颜色。接着,勾选 标题 复选框,以 仅 显示薪资规则的 标题 和 描述,并隐藏任何数值。

勾选 缩进、段前间距、粗体、下划线 和 斜体 复选框以启用这些选项。

最后,为规则输入 描述,它显示在规则名称下方。

会计选项卡

此部分决定该规则如何影响各种会计日记账,以及员工的净工资如何计算。在此部分配置以下字段:

  • 借记账户: 使用下拉菜单为该规则选择借记账户。

  • 贷记账户: 使用下拉菜单为该规则选择贷记账户。

  • 按名称拆分: 启用此选项,可按工资单行名称拆分该规则的会计分录。拆分分录可提高扣除项、报销项或薪资调整的可见性。

  • 不计入净额: 勾选此复选框,将规则的核算从日记账分录中的净工资规则中排除。应设置特定的借记账户和贷记账户,以便对其进行独立分类。

  • 在账户行上显示员工: 勾选此复选框,使员工姓名显示在日记账分录上。

重要

此选项卡 仅在 安装 会计 应用后才可用。

规则参数

规则参数告知 Odoo 如何计算工资单的每一行。要查看已配置的规则参数,请导航至 薪资应用 ‣ 配置 ‣ 规则参数。

所有规则参数都会显示。点击单个规则参数可查看详细信息。

每个规则参数都会显示规则名称、代码、规则启用时间以及参数值。

Example

加班工资的规则参数告知 Odoo,员工工作超过 40 小时时可获得一点五倍工资。

其他输入类型

在创建工资单时,有时需要为特定情况添加其他条目,例如小费、佣金、费用或扣除项。导航至 薪资应用 ‣ 配置 ‣ 其他输入类型 即可找到这些其他输入项。

创建工资单新条目时可以选择的其他工资单输入类型列表。

如果需要一个新的、列表中未显示的输入类型,请点击 新建 按钮创建。输入 描述、代码,并在 结构中的可用性 字段中选择它适用的结构。

如果该输入项应为工资附件,请勾选 附件中可用 复选框。

重要

代码 用于薪资规则中以计算工资单。如果 在结构中的可用性 字段留空,则表示新的输入类型适用于所有工资单,而不局限于特定结构。

已填写的新输入类型表单。