DFF Payroll — Core Engine
Vietnam payroll on Odoo 18 Community: payslip approval and statutory setup
Built for companies that need Vietnam payroll on Odoo 18 Community Edition with
OCA Payroll (not Enterprise hr_payroll). Adds multi-step
payslip approval, PIT / personal income tax and social insurance (BHXH) configuration
screens, Vietnam-oriented contract fields (agreed income, wage, performance), salary
increase handling, and a PDF payslip report. This module does not ship salary rules.
Tax year 2026+ - Designed for Vietnam payroll from January 2026 (Law 109/2025 and related guidance). This module does not ship salary rules or statutory seed data.
Install order (required apps)
- From Apps:
payroll, thenpayroll_contract_advantages(OCA, free) hr_work_entry_holidays(Odoo), then this module
What You Gain
- Controlled payroll closing - Payslips move through review and approval before they are marked Done.
- Configurable statutory setup - Maintain PIT (personal income tax) brackets, insurance regions, and versioned social insurance (BHXH) related amounts in the UI.
- Structured salary changes - Record salary increases and apply approved changes back to employee contracts.
Core Features
Payslip Approval Workflow
Payslips use Draft, Waiting, Pending Approval, Approved, and Done states with Submit for Approval, Approve, Refuse, and Done actions. Payslip Batch follows the same flow. Mixed salary structures in one batch keep each employee’s contract structure; the batch Structure field is only a fallback.
Statutory Configuration
Configure PIT Brackets, Insurance Regions, Statutory Parameter Definitions, Statutory Parameter Values, PIT Dependents, Medical Facilities, and Basic Salary Levels under Payroll → Configuration.
Employee and Contract Setup
Contracts add basic salary level, basic and supplementary salary split, and social insurance contribution mode. Employees add insurance region, PIT dependents, and registered medical facility.
Salary Increases and PDF Payslip
Use Payroll → Salary Increases to manage reviews and apply approved changes to contracts. Print payslips with the built-in PDF report and summary totals on the payslip form.
When You Need This vs. Standard OCA Payroll
OCA Payroll Is Enough When...
- You only need draft-to-done payslips without a separate approval step
- You do not need PIT bracket or insurance region master screens
- You already maintain your own salary rules and statutory parameters elsewhere
This Module Fits When...
- HR must submit payslips and a manager or finance role must approve before closing
- You need versioned statutory parameters and Vietnam-oriented contract fields
- You want salary increase records with apply-to-contract from Payroll
Scope of Delivery
Included Features
- Payslip and Payslip Batch approval workflow and security groups
- Contract-first salary structure on generate and compute (batch Structure is fallback only)
- Payroll configuration menus for PIT, insurance, and statutory parameters
- Extended employee and contract forms
- Salary Increases menu and apply action
- PDF payslip report and payslip summary totals
- Settings blocks for approval group, statutory parameters, and default insurance region
Explicit Limitations
- No salary rules — you must create or import rules before payslips can compute amounts
- No accounting entries — payslips do not post journal entries from this module alone
- No employee portal — no payslip self-service screens are added here
- No statutory declaration wizards — no PIT or SHUI (SI/HI/UI / BHXH) export forms are included
How It Works
Install and assign groups
Install the required OCA payroll modules and this core engine. Assign Payroll Officer, Payroll Manager, and Finance Approver groups to users.
Configure payroll masters
Open Payroll → Configuration and Settings → Payroll to set PIT brackets, insurance regions, statutory parameter values, and the approval group.
Run and approve payslips
Create payslips (or generate a batch), click Compute Sheet / Compute All, then Submit for Approval. Each slip uses its contract salary structure; set Structure on the batch only when a contract has none. A manager approves, then click Done after final review.
Implementation Notes
- Dependencies: Install
payrollandpayroll_contract_advantagesfrom the Odoo Apps Store, thenhr_work_entry_holidays, before this module. - Salary rules: This module provides helpers and screens but not a full rule set. Create salary rules manually for your structures, or load them from a separate data package of your choice.
- Demo recommendation: Test approval groups and payslip states on a copy database before production rollout.
FAQ
Is this for Odoo Community or Enterprise payroll?
It targets Odoo 18 Community with free OCA Payroll
(payroll). It is not a replacement for Enterprise
hr_payroll. Enterprise databases can still install it if OCA Payroll
is present, but the product is designed around the Community / OCA stack.
Does it handle Vietnam PIT and social insurance (BHXH)?
Core provides the configuration screens and helpers for PIT brackets, insurance regions, statutory parameters, and SI contribution modes on contracts. Ready-made salary-rule formulas and seeded statutory amounts belong in a separate Vietnam data package - this Core module alone does not calculate a full VN payslip.
What does Core include, and what is out of scope?
Core owns approval workflow, statutory masters, contract package fields, rule helpers, and the printable Payslip PDF template setting. It does not ship a full salary-rule data pack, employee portal, accounting journal mappings, or statutory declaration wizards.
Does this module include salary rules?
No. It adds workflow, configuration screens, and computation helpers. Salary rules must be created manually or loaded from a separate data package.
Which payslip buttons does this module add?
Submit for Approval, Approve, Refuse, Reset to Draft, Load Worked Days, and Load Inputs on the payslip form, in addition to the standard Compute Sheet and Done actions.
Can one payslip batch mix different salary structures?
Yes. Each payslip keeps the structure from the employee’s contract. The batch Structure field is optional and applies only when the contract has no structure yet. If Compute fails for missing structures, the message lists the employee names still without one.
Does it work in multi-company databases?
Yes. Record rules restrict payroll data by company. Set the default insurance region per company in Settings → Payroll.
Technical Details
Platform
- Odoo 18.0 Community Edition with OCA Payroll (primary target)
- Also installable on Enterprise when OCA Payroll is present
- Multi-company record rules on payroll masters and payslips
- Runs inside your existing Odoo database
Required Apps
payroll— OCA Community Payroll (LGPL-3, free on Apps)payroll_contract_advantages— OCA contract allowances (LGPL-3, free on Apps)hr_work_entry_holidays— Time Off work entries on payslipshr_contract(via dependency) — employee contracts- No external API or subscription service
Where It Fits
- Extends standard Payslips, Payslip Batches, Contracts, and Employees
- Adds Payroll configuration menus and Settings blocks for approval and statutory setup
- Uses your existing payroll structures and salary rules once they are configured
License and Publisher
- License: OPL-1
- Publisher: devluoicode
- Website: www.devforfuture.com
- Support: ngocphat.business@gmail.com
Screenshots
Core extends Contracts, Employees, and Payslips, and adds dedicated payroll masters under Payroll → Configuration (plus Salary Increases under Payroll).
Contract salary package
On the employee Contract: set Agreed Income, pick a Salary Level (new master), and review computed Wage, KPI Salary, and SI contribution mode before payroll runs. Job Positions can carry the same defaults for new contracts.
Payslip approval workflow
On the Payslip: compute the sheet, then move through Submit for Approval, Approve / Refuse, and Done. Snapshots keep agreed income, wage, and KPI salary aligned with the contract package used for that period.
New payroll configuration menus
Under Payroll → Configuration (and Salary Increases under Payroll), this module adds menus for the new masters: Salary Levels, Statutory Parameter Definitions and Values, PIT Brackets, PIT Dependents, Insurance Regions, and Medical Facilities.
Support and Maintenance
Installation Support
Help with OCA dependency setup, module installation, user group assignment, and initial payroll configuration on your database.
Bug Resolution
Priority support for functional errors, traceback issues, and bug fixes related to this module.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employee Contracts (hr_contract)
• Employees (hr) • Discuss (mail) • Time Off (hr_holidays) • Calendar (calendar) |
| Community Apps Dependencies | Show |
| Lines of code | 9305 |
| Technical Name |
dff_hr_payroll |
| License | OPL-1 |
| Website | https://www.devforfuture.com |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module