TIP: You can type at any time to perform a new search.
Thai Localization - VAT and Withholding Tax Reports
l10n_th_account_tax_report · OCA/l10n-thailand
Security findings
Migration considerations
internal_layout— Template 'internal_layout' uses `t-raw`, deprecated since Odoo 15.0. Prefer `t-out` for escaped output. For intentional HTML, verify sanitization at its source before marking it safe; Markup alone does not sanitize untrusted content. migration-template-t-raw · source
Migration review checklist, not a compatibility verdict. No target version is selected: apply version-specific advice only when migrating to that version or later.
- Repository
- OCA/l10n-thailand · module folder · Try on Runboat
- Module version
- 1.0.2
- Category
- Accounting
- Folder size
- 1.81 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/l10n-thailand
- Last tracking update
- 2026-08-07 08:43:05
- Authors
- Odoo Community Association (OCA), Ecosoft
- Maintainers
- Odoo Community Association (OCA), Ecosoft
- Committers
- Saran440, OCA-git-bot, oca-ci, Pani-k-folk
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
TAX Report is a report that displays transactions based on the selected tax type within a specific date range (period). It helps businesses track VAT and Withholding Tax more accurately, and supports both standard and Revenue Department (RD) formats for compliance purposes. The module also allows customization of report formats and text files for official tax submissions.
Code Analysis
Views touched (32)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
header_line_report_withholding_tax |
header_line_report_withholding_tax | ir.ui.view | qweb | New |
header_report_withholding_tax |
header_report_withholding_tax | ir.ui.view | qweb | New |
internal_layout |
internal_layout | ir.ui.view | qweb | New |
line_report_withholding_tax |
line_report_withholding_tax | ir.ui.view | qweb | New |
report_rd_base_company_withholding_tax |
report_rd_base_company_withholding_tax | ir.ui.view | qweb | New |
report_rd_base_partner_vat_withholding_tax |
report_rd_base_partner_vat_withholding_tax | ir.ui.view | qweb | New |
report_rd_base_total_withholding_tax |
report_rd_base_total_withholding_tax | ir.ui.view | qweb | New |
report_rd_company_tax_branch |
report_rd_company_tax_branch | ir.ui.view | qweb | New |
report_rd_tax_report |
report_rd_tax_report | ir.ui.view | qweb | New |
report_rd_tax_report_article |
report_rd_tax_report_article | ir.ui.view | qweb | New |
report_rd_tax_report_header |
report_rd_tax_report_header | ir.ui.view | qweb | New |
report_rd_thai_tax |
report_rd_thai_tax | ir.ui.view | qweb | New |
report_rd_withholding_tax |
report_rd_withholding_tax | ir.ui.view | qweb | New |
report_rd_withholding_tax_pnd1 |
report_rd_withholding_tax_pnd1 | ir.ui.view | qweb | New |
report_rd_withholding_tax_pnd1a |
report_rd_withholding_tax_pnd1a | ir.ui.view | qweb | New |
report_rd_withholding_tax_pnd2 |
report_rd_withholding_tax_pnd2 | ir.ui.view | qweb | New |
report_rd_withholding_tax_pnd3 |
report_rd_withholding_tax_pnd3 | ir.ui.view | qweb | New |
report_rd_withholding_tax_pnd53 |
report_rd_withholding_tax_pnd53 | ir.ui.view | qweb | New |
report_tax_report_base |
report_tax_report_base | ir.ui.view | qweb | New |
report_tax_report_filters |
report_tax_report_filters | ir.ui.view | qweb | New |
report_tax_report_lines |
report_tax_report_lines | ir.ui.view | qweb | New |
report_tax_report_lines_header |
report_tax_report_lines_header | ir.ui.view | qweb | New |
report_tax_report_total_lines |
report_tax_report_total_lines | ir.ui.view | qweb | New |
report_thai_tax |
report_thai_tax | ir.ui.view | qweb | New |
report_wht |
report_wht | ir.ui.view | qweb | New |
report_withholding_tax |
report_withholding_tax | ir.ui.view | qweb | New |
report_withholding_tax_text |
report_withholding_tax_text | ir.ui.view | qweb | New |
res_company_view_form |
res.company | form | Inherits base.view_company_form | |
res_config_settings_view_form |
res.config.settings.view.form.thai.account | res.config.settings | form | Inherits l10n_th_account_tax.res_config_settings_view_form |
tax_report_wizard_form |
tax.report.wizard.form | tax.report.wizard | form | New |
total_line_report_withholding_tax |
total_line_report_withholding_tax | ir.ui.view | qweb | New |
view_withholding_tax_report_wizard |
withholding.tax.report.wizard.view | withholding.tax.report.wizard | form | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (12)
New fields (5)
-
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Falsestring='Company' -
date_fromDaterequired=True -
date_range_idMany2one → date.rangecomodel_name='date.range' -
date_toDaterequired=True -
show_cancelBooleandefault=Truestring='Show Cancelled'
-
button_export_html(self) -
button_export_pdf(self) -
button_export_xlsx(self) -
check_date_from_to(self)@api.constrains('date_from', 'date_to') -
onchange_date_range_id(self)@api.onchange('date_range_id')Handle date range change.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (5)
-
tax_report_formatSelectiondefault='std'required=Trueselection=[('std', 'Standard'), ('rd', 'Revenue Department')] -
wht_report_formatSelectiondefault='std'required=Trueselection=[('std', 'Standard'), ('rd', 'Revenue Department')] -
wht_text_file_pnd1_formatTextdefault='%(income_code)s|%(row_number)s|%(partner_vat)s|%(partner_title)s|%(partner_firstname)s|%(partner_lastname)s|%(cert_date)s|%(base)s|%(amount)s|%(cert_tax_payer)s\n'help="Display format to use for text file PND1.\n\nYou can use python-style string pattern with all the fields of the withholding tax (for example, use '%(partner_vat)s' to display the field 'partner_vat') plus\n%(row_number)s: Index\n%(cert_cancel)s: Cancelled\n%(cert_date)s: Date\n%(cert_date_str)s: Date (string)\n%(cert_name)s: Name\n%(cert_tax_payer)s: Tax Payer\n%(cert_tax_payer_display)s: Tax Payer Display\n%(cert_tax_payer_code)s: Tax Payer Code\n%(partner_id)s: Partner ID\n%(partner_name)s: Partner Name\n%(partner_title)s: Partner Title\n%(partner_firstname)s: Partner Firstname\n%(partner_lastname)s: Partner Lastname\n%(partner_address)s: Partner Address\n%(partner_street)s: Partner Street\n%(partner_street2)s: Partner Street2\n%(partner_city)s: Partner City\n%(partner_state)s: Partner State\n%(partner_zip)s: Partner Zip\n%(partner_country)s: Partner Country\n%(partner_vat)s: Partner VAT\n%(partner_branch)s: Partner Branch\n%(partner_bank_account)s: Partner Bank Account\n%(income_code)s: Income Code\n%(base)s: Base\n%(amount)s: Amount"string='Layout in Text File PND1' -
wht_text_file_pnd3_formatTextdefault='%(row_number)s|%(partner_vat)s|%(partner_branch)s|%(partner_title)s|%(partner_firstname)s|%(partner_lastname)s|%(partner_street)s|%(partner_street2)s|%(partner_city)s|%(partner_state)s|%(partner_zip)s|%(loop_cert_date)s|%(loop_wht_cert_income_desc)s|%(loop_wht_percent)s|%(loop_base)s|%(loop_amount)s|%(loop_cert_tax_payer)s\n'help="Display format to use for text file PND3.\n\nYou can use python-style string pattern with all the fields of the withholding tax (for example, use '%(partner_vat)s' to display the field 'partner_vat') plus\n%(row_number)s: Index\n%(cert_cancel)s: Cancelled\n%(cert_date)s: Date\n%(cert_date_str)s: Date (string)\n%(cert_name)s: Name\n%(cert_tax_payer)s: Tax Payer\n%(cert_tax_payer_display)s: Tax Payer Display\n%(cert_tax_payer_code)s: Tax Payer Code\n%(partner_id)s: Partner ID\n%(partner_name)s: Partner Name\n%(partner_title)s: Partner Title\n%(partner_firstname)s: Partner Firstname\n%(partner_lastname)s: Partner Lastname\n%(partner_address)s: Partner Address\n%(partner_street)s: Partner Street\n%(partner_street2)s: Partner Street2\n%(partner_city)s: Partner City\n%(partner_state)s: Partner State\n%(partner_zip)s: Partner Zip\n%(partner_country)s: Partner Country\n%(partner_vat)s: Partner VAT\n%(partner_branch)s: Partner Branch\n%(partner_bank_account)s: Partner Bank Account\n%(income_code)s: Income Code\n%(base)s: Base\n%(amount)s: Amount"string='Layout in Text File PND3' -
wht_text_file_pnd53_formatTextdefault='%(row_number)s|%(partner_vat)s|%(partner_branch)s|%(partner_title)s|%(partner_name)s|%(partner_street)s|%(partner_street2)s|%(partner_city)s|%(partner_state)s|%(partner_zip)s|%(loop_cert_date)s|%(loop_wht_cert_income_desc)s|%(loop_wht_percent)s|%(loop_base)s|%(loop_amount)s|%(loop_cert_tax_payer)s\n'help="Display format to use for text file PND53.\n\nYou can use python-style string pattern with all the fields of the withholding tax (for example, use '%(partner_vat)s' to display the field 'partner_vat') plus\n%(row_number)s: Index\n%(cert_cancel)s: Cancelled\n%(cert_date)s: Date\n%(cert_date_str)s: Date (string)\n%(cert_name)s: Name\n%(cert_tax_payer)s: Tax Payer\n%(cert_tax_payer_display)s: Tax Payer Display\n%(cert_tax_payer_code)s: Tax Payer Code\n%(partner_id)s: Partner ID\n%(partner_name)s: Partner Name\n%(partner_title)s: Partner Title\n%(partner_firstname)s: Partner Firstname\n%(partner_lastname)s: Partner Lastname\n%(partner_address)s: Partner Address\n%(partner_street)s: Partner Street\n%(partner_street2)s: Partner Street2\n%(partner_city)s: Partner City\n%(partner_state)s: Partner State\n%(partner_zip)s: Partner Zip\n%(partner_country)s: Partner Country\n%(partner_vat)s: Partner VAT\n%(partner_branch)s: Partner Branch\n%(partner_bank_account)s: Partner Bank Account\n%(income_code)s: Income Code\n%(base)s: Base\n%(amount)s: Amount"string='Layout in Text File PND53'
No public methods.
New fields (2)
-
tax_report_formatSelectionreadonly=Falserelated='company_id.tax_report_format'required=True -
wht_report_formatSelectionreadonly=Falserelated='company_id.wht_report_format'required=True
No public methods.
New fields (1)
-
tax_idMany2one → account.taxcomodel_name='account.tax'domain=[('tax_exigibility', '=', 'on_invoice'), ('type_tax_use', 'in', ['sale', 'purchase']), ('include_base_amount', '=', False)]required=Truestring='Tax'
No public methods.
New fields (1)
-
income_tax_formSelectionrequired=Trueselection=[('pnd1', 'PND1'), ('pnd1a', 'PND1A'), ('pnd2', 'PND2'), ('pnd3', 'PND3'), ('pnd53', 'PND53')]
-
button_export_txt(self)
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 203 days ago
- Last activity
- 14 days ago
- Repository
- OCA/l10n-thailand
- Pull request
- [19.0][MIG] l10n_th_account_tax_report: Migration to 19.0 (#583)