Payroll Sheet Importer

account_payroll_sheet_import
REPOSITORY
REPOSITORYOCA/account-financial-tools
GIT
GIThttps://github.com/OCA/account-financial-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-financial-tools/tree/17.0/account_payroll_sheet_import
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), APSL-Nagarro
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), APSL-Nagarro
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, bobrador
WEBSITE
WEBSITEhttps://github.com/OCA/account-financial-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - hr
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES openpyxl
pandas
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows importing payroll data from Excel (.xlsx) files into accounting journal entries in Odoo. It streamlines integration between external HR/payroll systems and Odoo’s accounting module.

### Main Features:

- Map Excel columns to specific accounting accounts.
- Detect and report missing employees based on VAT/ID/Passport numbers.
- Associate imported data with a specific accounting journal.
- Support for multiple mapping configurations per company.

This module is ideal for companies that receive externally processed payroll in Excel format and need a semi-automated way to post it into Odoo's accounting system.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_missing_partner_wizard missing.partner.wizard.form missing.partner.wizard form New
view_payroll_import_form payroll.import.wizard.form payroll.import.wizard form New
view_payroll_mapping_form payroll.import.mapping.form payroll.import.mapping form New
view_payroll_mapping_line_tree payroll.import.mapping.line.tree payroll.import.mapping.line tree New
view_payroll_mapping_tree payroll.import.mapping.tree payroll.import.mapping tree New
Models touched (4)

New fields (1)
  • missing_ids Text
    args: 'Missing IDs'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • id_column Char
    help='Name of the column in the Excel file that contains\n VAT/ID/Pasport numbers to map with the contact.\n It uses the identification_id or passport_id field of the employee.' required=True args: 'ID Column'
  • journal_id Many2one → account.journal
    required=True string='Journal' args: 'account.journal'
  • mapping_line_ids Many2many → payroll.import.mapping.line
    string='Column Mappings' args: 'payroll.import.mapping.line'
  • name Char
    required=True args: 'Mapping Name'
Public methods (0)

No public methods.

New fields (4)
  • account_id Many2one → account.account
    required=True string='Account' args: 'account.account'
  • column_name Char
    required=True args: 'Excel Column Name'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • move_type Selection
    required=True args: [('debit', _('Debit')), ('credit', _('Credit'))]
Public methods (0)

No public methods.

New fields (3)
  • file Binary
    required=True args: 'Excel File'
  • filename Char
  • mapping_id Many2one → payroll.import.mapping
    required=True string='Column Mapping' args: 'payroll.import.mapping'
Public methods (6)
  • action_import_payroll(self)
  • build_move_lines(self, df, account_map)
  • check_columns(self, df, account_map)
  • get_account_map(self)
    Builds account mapping filtered by company
  • get_partner(self, vat)
    Searches for employee by VAT and return the asociated partner.
  • show_mismatch_error(self, move_lines, partner, vat, total_debit, total_credit)