薪资
在 Odoo 中,薪资的计算和确定由五个因素决定:薪资
结构类型 <payroll/structure-types>、薪资
结构 <payroll/structures>、规则 <payroll/rules>、规则参数 <payroll/rule-parameters>,以及其他输入类型 <payroll/other-input>。这些因素共同决定每位员工的工资如何计算。
每个 结构类型 包含一个或多个 结构。每个
结构 包含一组 规则,每条 规则 使用
参数 来定义具体金额的计算方式。还可以加入额外输入(如奖金或扣除),以调整最终薪资。
当计算工资单时,Odoo 会先从员工的 工作条目 <work_entries> 中计算工作时间,然后根据员工所属的结构类型,应用相应的结构、规则和参数,以确定其总薪酬。
结构类型 {#payroll/structure-types}
在 Odoo 中,结构类型 用于对相关的薪资结构进行分组。当合同指定了结构类型时,仅使用该类型下的结构来计算员工的工资。每个结构类型内部包含若干结构,每个结构都有一套用于处理工时条目的规则。
结构类型定义了薪酬配置的关键方面,包括员工的发薪频率、工作时长、默认薪资结构,以及工资是固定(基于薪资)还是可变(基于工时)。
::: example
一个名为 [Employee] 的结构类型包含两个不同的结构:一个是包含所有常规工资处理规则的 [Regular Pay] 结构,另一个是仅包含年终奖金规则的 [End of Year Bonus] 结构。这两个结构都属于同一个 [Employee] 结构类型。
:::
通过以下路径查看已有 结构类型:
Payroll 应用 --> 配置 --> 结构类型。
Odoo 预配置了两个默认结构类型:
Employee(员工)和 Worker(工人)。
通常,Employee 用于领取固定工资的员工,默认工资类型为 Fixed Wage(固定工资);Worker 用于按小时计酬的员工,工资类型为 Hourly Wage(小时工资)。
:::: note
::: title
注意
:::
如果使用国家特定的 payroll localizations <payroll_localizations>,建议使用对应国家本地化文档中的结构。
::::
新建结构类型 {#payroll/new-structure-type}
如果默认结构类型无法满足公司需求,前往
Payroll 应用 --> 配置 --> 结构类型,点击 New 创建自定义结构类型。
:::: warning
::: title
警告
:::
创建新薪资结构类型时,务必兼顾所有地方和国家法规。配置薪资结构前请与会计部门确认,以确保满足所有要求。
::::
在以下字段中填写信息:
Structure Type:输入新结构类型的名称,例如 [Employee] 或 [Worker]。Country:从下拉菜单中选择该结构类型适用的国家。Wage Type:选择结构的工资类型:Fixed Wage:适用于每个发薪期工资相同的固定薪资员工。Hourly Wage:适用于按工时计酬的员工。
Default Scheduled Pay:从下拉菜单中选择该结构类型的常规发薪周期,指明该结构的发薪频率。Default Working Hours:从下拉菜单中选择该结构类型的默认工作时间。所有当前公司可用的工作时间均会显示,默认选项为Standard 40 hours/week。若列表中没有所需的工作时间,可创建
new set of default working hours <payroll/new-default-working-hours>。Regular Pay Structure:填写常规工资结构的名称,作为生成工资单时的默认选项。Default Work Entry Type:选择用于为员工创建所有工作条目的默认工作条目类型。
新建默认工作时间 {#payroll/new-default-working-hours}
要创建新的默认工作时间,在新结构类型表单的 Default Working Hours 字段中输入名称后,点击 Create and edit。此时会弹出默认工作时间表单,包含两个部分:通用信息和列出每日具体工作时间的标签页。完成表单后,点击 Save & Close。
Name:输入新默认工作时间的名称,例如 [Standard 20 Hours/Week]。Flexible Hours:勾选后,员工可在保持每日总工时不变的前提下自行调整上下班时间。Company Full Time:填写每周被视为全职员工所需的工作时长,通常约为 40 小时,此数值会影响员工根据全职/兼职状态可享受的福利类型。Average Hour Per Day:根据Working Hours标签页中的工作时间自动填充,影响资源计划时每日可用资源数量。Work Time Rate:依据Company Full Time与Working Hours自动生成的百分比,取值范围应在 [0.00%]~[100%],若超过 100% 表示工作时间或Company Full Time需要调整。Company:选择可使用此默认工作时间的公司,若留空则对所有公司均可用。Timezone:选择此默认工作时间使用的时区。Working Hours标签页:列出每一天的具体工作时间。创建表单时默认填充 40 小时工作周,每天分为三个时段:- 早上 8:00–12:00
- 午餐 12:00–13:00
- 下午 13:00–17:00
使用 24 小时制。点击字段可通过下拉菜单或直接输入修改时间。
:::: note
::: title
注意
:::工作时间为公司专属,不能在公司之间共享。
::::::: tip
::: title
提示
:::若工作时间每周不固定,而是双周排班,可点击表单顶部的
Switch to 2 week calendar按钮,将Working Hours标签页切换为两周的工作时间,以便调整。
:::
结构 {#payroll/structures}
薪资结构 指在特定 结构 中员工可能获得报酬的不同情形,由各种规则具体定义。
公司每种结构类型需要的结构数量取决于员工的付款方式及计算方式。常见的附加结构示例包括 [Bonus](奖金)。
要查看每种结构类型下的所有结构,前往
Payroll 应用 --> 配置 --> 结构。
每个 structure type <payroll/structure-types> 列出其关联的结构。每个结构包含一套定义其行为的规则。
点击结构可查看其 Salary Rules,这些规则决定了工资单的计算方式。
:::: note
::: title
注意
:::
安装 payroll localization <payroll_localizations> 后,相关结构会自动安装并出现在列表中。
::::
薪资规则 {#payroll/rules}
每个 结构 包含一组用于计算工资各项金额的 规则。这些规则由本地化配置,影响薪酬的计算。
:::: warning
::: title
警告
:::
仅在必要时才修改或创建规则。
::::
查看所有规则,请前往 Payroll 应用 --> 配置 --> 规则。点击某个结构(如 Regular Pay)即可查看其所有规则。
添加新规则
点击 New,会打开空白的 Salary Rules 表单。填写表单上半部分:
Rule Name:规则名称,工资单上显示的文字。Code:规则代码,区分大小写,用作 rule ID(必填)。Category:从下拉菜单选择规则所属类别,或新建类别。类别用于对规则进行分组并汇总。Salary Structure:选择规则适用的薪资结构(必填)。Sequence:填写数字,表示规则的计算顺序。数字越小越先计算,后置规则可使用前置规则的结果(必填)。Appears on Payslip:勾选后在工资单 PDF 中显示此规则。Contributes to Employer Cost:勾选后该规则计入雇主成本。
General 选项卡
填写 General 选项卡内容,决定规则的 何时 与 如何 计算。
条件
Condition Based on:选择规则的触发方式:Always True:始终计算。Salary Input:在结构中加入动态输入字段,可在员工表单的 Payroll 标签、工资单的 Inputs 标签或两者同时出现。选择后需配置以下字段:Input on:指定字段出现位置(Employee、Payslip 或两者)。Section:将多个输入归为同一可展开节,默认Inputs。Unit:选择显示方式:Monetary:货币数额Quantity:数量Percentage:百分比Checkbox:布尔值
Input Description:输入的简要说明。Default Value:默认值,可带后缀(如[per km])。Depends On(可选):选择另一个拥有 Salary Input 的规则,以决定本规则是否隐藏。
Other Input:检查是否存在同类输入(如Deduction、Reimbursement等),出现Condition Other Input字段供选择。Python Expression:使用 Python 脚本计算规则。右侧列出Available variables与Output。
计算方式
决定规则的最终值,由基数、数量和比例组成,公式为 total = amount × quantity × (rate/100)。
Amount Type选项:Percentage (%):使用 Python 表达式计算基数、数量和比例。Fixed Amount:固定金额,比例默认为 100%。Other Input:从相同 other input type 的工资单输入行获取金额(比例 100%,数量 1)。Python Code:编写完整的 Python 脚本进行计算。
公司贡献
选择参与薪资支付的第三方(如保险公司等)。
Display 选项卡
设置规则在工资单 PDF 中的显示样式:颜色、是否仅显示标题、缩进、间距、粗体、下划线、斜体以及描述文字。
Accounting 选项卡
配置规则对会计分录的影响以及净薪资的计算方式(仅在安装 Accounting 应用后可见):
Debit Account、Credit Account:选择借贷科目。Split on names:按工资单行名称拆分分录,便于区分扣除与报销等。Excluded from Net:从净薪资计算中排除该规则,需要单独设置借贷科目。Set employee on account line:在分录中显示员工姓名。
规则参数 {#payroll/rule-parameters}
规则参数告诉 Odoo 如何计算工资单的每一行。可在
Payroll 应用 --> 配置 --> Rule Parameters 查看已配置的参数。
点击任意规则参数可查看其详情,包括名称、代码、激活时间以及参数值。
::: example
加班费的规则参数指明员工超出 40 小时后可获得 1.5 倍工资。
:::
其他输入类型 {#payroll/other-input}
在生成工资单时,有时需要添加其他条目,如小费、佣金、费用或扣除。可在
Payroll 应用 --> 配置 --> Other Input Types 查看。
若列表中没有所需的输入类型,可点击 New 创建新类型,填写 Description、Code,并在 Availability in Structure 中选择适用的结构。勾选 Available in attachments 表示该输入可作为薪资附件。
:::: important
::: title
重要
:::
Code 在薪资规则中用于计算工资单。若 Availability in Structure 留空,则该输入类型对所有工资单均可用,而非限定于特定结构。
::::