Thai Localization - Withholding Tax Certificate

l10n_th_withholding_tax_cert
REPOSITORY
REPOSITORYOCA/l10n-thailand
GIT
GIThttps://github.com/OCA/l10n-thailand.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-thailand/tree/14.0/l10n_th_withholding_tax_cert
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYLocalization / Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Ecosoft
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Ecosoft
COMMITTERS
COMMITTERSoca-travis, Weblate, OCA-git-bot, Kitti U, Saran440, oca-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-thailand
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-thailand:
    - l10n_th_withholding_tax
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
create_withholding_tax_cert Create Withholding Tax Cert. create.withholding.tax.cert form New
create_withholding_tax_cert_multi Create Multi Withholding Tax Cert. create.withholding.tax.cert form New
view_account_payment_form account.payment.form account.payment div Inherits account.view_account_payment_form
view_move_form account.move.form account.move div Inherits account.view_move_form
view_withholding_tax_cert_form view.withholding.tax.cert.form withholding.tax.cert form New
view_withholding_tax_cert_search view.withholding.tax.cert.search withholding.tax.cert search New
view_withholding_tax_cert_tree view.withholding.tax.cert.tree withholding.tax.cert tree New
Models touched (5)

New fields (2)
  • wt_cert_cancel Boolean
    compute='_compute_wt_cert_cancel' help='This document has WT Cert(s) and all are cancelled or not WT Cert' store=True
  • wt_cert_ids One2many → withholding.tax.cert
    comodel_name='withholding.tax.cert' inverse_name='move_id' readonly=True string='Withholding Tax Cert.'
Public methods (1)
  • button_wt_certs(self)

New fields (2)
  • wt_cert_cancel Boolean
    compute='_compute_wt_cert_cancel' help='This document has WT Cert(s) and all are cancelled or not WT Cert' store=True
  • wt_cert_ids One2many → withholding.tax.cert
    comodel_name='withholding.tax.cert' inverse_name='payment_id' readonly=True string='Withholding Tax Cert.'
Public methods (1)
  • button_wt_certs(self)

New fields (5)
  • income_tax_form Selection
    selection=INCOME_TAX_FORM string='Income Tax Form'
  • substitute Boolean
    string='Substitute'
  • wt_account_ids Many2many → account.account
    comodel_name='account.account' default=<expr> help='If accounts are specified, system will auto fill tax amount' required=True string='Withholing Tax Accounts'
  • wt_cert_id Many2one → withholding.tax.cert
    comodel_name='withholding.tax.cert' domain=[('state', '=', 'done')] help="Withholding Tax is state 'done' only"
  • wt_cert_income_type Selection
    selection=WHT_CERT_INCOME_TYPE string='Type of Income'
Public methods (3)
  • create_wt_cert(self)
  • create_wt_cert_multi(self)
  • default_get(self, fields)
    @api.model

New fields (15)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True string='Main Company'
  • company_partner_id Many2one → res.partner
    comodel_name='res.partner' copy=False default=<expr> ondelete='restrict' readonly=True string='Company'
  • company_taxid Char
    readonly=True related='company_partner_id.vat' string='Company Tax ID'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' readonly=True related='company_id.currency_id' store=True string='Currency'
  • date Date
    compute='_compute_wt_cert_data' required=True states={'draft': [('readonly', False)]} store=True string='Date' tracking=True
  • income_tax_form Selection
    copy=False readonly=True required=True selection=INCOME_TAX_FORM states={'draft': [('readonly', False)]} string='Income Tax Form'
  • move_id Many2one → account.move
    comodel_name='account.move' copy=False domain="[('journal_id.type', '=', 'general'),('wt_cert_cancel', '=', True), ('state', '=', 'posted')]" ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Move' tracking=True
  • name Char
    compute='_compute_wt_cert_data' states={'draft': [('readonly', False)]} store=True string='Number' tracking=True
  • payment_id Many2one → account.payment
    comodel_name='account.payment' copy=False domain="[('partner_id', '=', supplier_partner_id),('wt_cert_cancel', '=', True)]" ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Payment' tracking=True
  • ref_wt_cert_id Many2one → withholding.tax.cert
    comodel_name='withholding.tax.cert' help='This field related from Old WT Cert.' string='Ref WHT Cert.'
  • state Selection
    copy=False default='draft' selection=[('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')] string='Status' tracking=True
  • supplier_partner_id Many2one → res.partner
    comodel_name='res.partner' compute='_compute_wt_cert_data' ondelete='restrict' required=True states={'draft': [('readonly', False)]} store=True string='Supplier'
  • supplier_taxid Char
    readonly=True related='supplier_partner_id.vat' string='Supplier Tax ID'
  • tax_payer Selection
    copy=False default='withholding' readonly=True required=True selection=TAX_PAYER states={'draft': [('readonly', False)]} string='Tax Payer'
  • wt_line One2many → withholding.tax.cert.line
    comodel_name='withholding.tax.cert.line' copy=False inverse_name='cert_id' readonly=True states={'draft': [('readonly', False)]} string='Withholding Line'
Public methods (4)
  • action_cancel(self)
  • action_create_withholding_tax_cert(self)
    This function is called from either account.move or account.payment
  • action_done(self)
  • action_draft(self)

New fields (8)
  • amount Float
    readonly=False string='Tax Amount'
  • base Float
    readonly=False string='Base Amount'
  • cert_id Many2one → withholding.tax.cert
    comodel_name='withholding.tax.cert' index=True string='WHT Cert'
  • company_id Many2one → res.company
    comodel_name='res.company' related='cert_id.company_id'
  • ref_move_line_id Many2one → account.move.line
    comodel_name='account.move.line' help='Reference back to journal item which create wt move' readonly=False string='Ref Journal Item'
  • wt_cert_income_desc Char
    required=False size=500 string='Income Description'
  • wt_cert_income_type Selection
    required=True selection=WHT_CERT_INCOME_TYPE string='Type of Income'
  • wt_percent Float
    string='% Tax'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-thailand
GIT
GIThttps://github.com/OCA/l10n-thailand.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-thailand/tree/13.0/l10n_th_withholding_tax_cert
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYLocalization / Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Ecosoft
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Ecosoft
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, OCA-git-bot, Kitti U, Saran440, kongrattapong, kittiu
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-thailand
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-thailand:
    - l10n_th_withholding_tax
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
create_withholding_tax_cert Create Withholding Tax Cert. create.withholding.tax.cert form New
create_withholding_tax_cert_multi Create Multi Withholding Tax Cert. create.withholding.tax.cert form New
view_account_payment_form account.payment.form account.payment div Inherits account.view_account_payment_form
view_move_form account.move.form account.move div Inherits account.view_move_form
view_withholding_tax_cert_form view.withholding.tax.cert.form withholding.tax.cert form New
view_withholding_tax_cert_search view.withholding.tax.cert.search withholding.tax.cert search New
view_withholding_tax_cert_tree view.withholding.tax.cert.tree withholding.tax.cert tree New
Models touched (5)

New fields (2)
  • wt_cert_cancel Boolean
    compute='_compute_wt_cert_cancel' help='This document has WT Cert(s) and all are cancelled or not WT Cert' store=True
  • wt_cert_ids One2many → withholding.tax.cert
    comodel_name='withholding.tax.cert' inverse_name='move_id' readonly=True string='Withholding Tax Cert.'
Public methods (1)
  • button_wt_certs(self)

New fields (2)
  • wt_cert_cancel Boolean
    compute='_compute_wt_cert_cancel' help='This document has WT Cert(s) and all are cancelled or not WT Cert' store=True
  • wt_cert_ids One2many → withholding.tax.cert
    comodel_name='withholding.tax.cert' inverse_name='payment_id' readonly=True string='Withholding Tax Cert.'
Public methods (1)
  • button_wt_certs(self)

New fields (5)
  • income_tax_form Selection
    selection=INCOME_TAX_FORM string='Income Tax Form'
  • substitute Boolean
    string='Substitute'
  • wt_account_ids Many2many → account.account
    comodel_name='account.account' default=<expr> help='If accounts are specified, system will auto fill tax amount' required=True string='Withholing Tax Accounts'
  • wt_cert_id Many2one → withholding.tax.cert
    comodel_name='withholding.tax.cert' domain=[('state', '=', 'done')] help="Withholding Tax is state 'done' only"
  • wt_cert_income_type Selection
    selection=WHT_CERT_INCOME_TYPE string='Type of Income'
Public methods (3)
  • create_wt_cert(self)
  • create_wt_cert_multi(self)
  • default_get(self, fields)
    @api.model

New fields (15)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True string='Main Company'
  • company_partner_id Many2one → res.partner
    comodel_name='res.partner' copy=False default=<expr> ondelete='restrict' readonly=True string='Company'
  • company_taxid Char
    readonly=True related='company_partner_id.vat' string='Company Tax ID'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' readonly=True related='company_id.currency_id' store=True string='Currency'
  • date Date
    compute='_compute_wt_cert_data' required=True states={'draft': [('readonly', False)]} store=True string='Date' tracking=True
  • income_tax_form Selection
    copy=False readonly=True required=True selection=INCOME_TAX_FORM states={'draft': [('readonly', False)]} string='Income Tax Form'
  • move_id Many2one → account.move
    comodel_name='account.move' copy=False domain="[('journal_id.type', '=', 'general'),('wt_cert_cancel', '=', True), ('state', '=', 'posted')]" ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Move' tracking=True
  • name Char
    compute='_compute_wt_cert_data' states={'draft': [('readonly', False)]} store=True string='Number' tracking=True
  • payment_id Many2one → account.payment
    comodel_name='account.payment' copy=False domain="[('partner_id', '=', supplier_partner_id),('wt_cert_cancel', '=', True)]" ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Payment' tracking=True
  • ref_wt_cert_id Many2one → withholding.tax.cert
    comodel_name='withholding.tax.cert' help='This field related from Old WT Cert.' string='Ref WHT Cert.'
  • state Selection
    copy=False default='draft' selection=[('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')] string='Status' tracking=True
  • supplier_partner_id Many2one → res.partner
    comodel_name='res.partner' compute='_compute_wt_cert_data' ondelete='restrict' required=True states={'draft': [('readonly', False)]} store=True string='Supplier'
  • supplier_taxid Char
    readonly=True related='supplier_partner_id.vat' string='Supplier Tax ID'
  • tax_payer Selection
    copy=False default='withholding' readonly=True required=True selection=TAX_PAYER states={'draft': [('readonly', False)]} string='Tax Payer'
  • wt_line One2many → withholding.tax.cert.line
    comodel_name='withholding.tax.cert.line' copy=False inverse_name='cert_id' readonly=True states={'draft': [('readonly', False)]} string='Withholding Line'
Public methods (4)
  • action_cancel(self)
  • action_create_withholding_tax_cert(self)
    This function is called from either account.move or account.payment
  • action_done(self)
  • action_draft(self)

New fields (8)
  • amount Float
    readonly=False string='Tax Amount'
  • base Float
    readonly=False string='Base Amount'
  • cert_id Many2one → withholding.tax.cert
    comodel_name='withholding.tax.cert' index=True string='WHT Cert'
  • company_id Many2one → res.company
    comodel_name='res.company' related='cert_id.company_id'
  • ref_move_line_id Many2one → account.move.line
    comodel_name='account.move.line' help='Reference back to journal item which create wt move' readonly=False string='Ref Journal Item'
  • wt_cert_income_desc Char
    required=False size=500 string='Income Description'
  • wt_cert_income_type Selection
    required=True selection=WHT_CERT_INCOME_TYPE string='Type of Income'
  • wt_percent Float
    string='% Tax'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-thailand
GIT
GIThttps://github.com/OCA/l10n-thailand.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-thailand/tree/12.0/l10n_th_withholding_tax_cert
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYLocalization / Accounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Ecosoft
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Ecosoft
COMMITTERS
COMMITTERSoca-travis, OCA-git-bot, Kitti U, Saran L, kittiu
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-thailand/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
create_withholding_tax_cert Create Withholding Tax Cert. create.withholding.tax.cert form New
view_account_form view.account.form account.account data Inherits account.view_account_form
view_account_payment_form account.payment.form account.payment div Inherits account.view_account_payment_form
view_withholding_tax_cert_form view.withholding.tax.cert.form withholding.tax.cert form New
view_withholding_tax_cert_search view.withholding.tax.cert.search withholding.tax.cert search New
view_withholding_tax_cert_tree view.withholding.tax.cert.tree withholding.tax.cert tree New
Models touched (5)

New fields (1)
  • wt_account Boolean
    default=False help='If check, this account is for withholding tax' string='WT Account'
Public methods (1)
  • button_wt_certs(self)
    @api.multi

New fields (1)
  • wt_cert_ids One2many → withholding.tax.cert
    comodel_name='withholding.tax.cert' inverse_name='payment_id' readonly=True string='Withholding Tax Cert.'
Public methods (1)
  • button_wt_certs(self)
    @api.multi

New fields (1)
  • wt_account_ids Many2many → account.account
    comodel_name='account.account' default=<expr> help='If accounts are specified, system will auto fill tax amount' string='Withholing Tax Accounts'
Public methods (1)
  • create_wt_cert(self)
    @api.multi

New fields (12)
  • company_partner_id Many2one → res.partner
    copy=False default=<expr> ondelete='restrict' readonly=True string='Company' args: 'res.partner'
  • company_taxid Char
    readonly=True related='company_partner_id.vat' string='Company Tax ID'
  • date Date
    copy=False readonly=True required=True states={'draft': [('readonly', False)]} string='Date'
  • income_tax_form Selection
    copy=False readonly=True required=True states={'draft': [('readonly', False)]} string='Income Tax Form' args: INCOME_TAX_FORM
  • name Char
    readonly=True related='payment_id.name' store=True string='Number'
  • payment_id Many2one → account.payment
    comodel_name='account.payment' copy=False domain="[('partner_id', '=', supplier_partner_id)]" ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Payment'
  • ref_move_id Many2one → account.move
    comodel_name='account.move' copy=False ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Journal Entry'
  • state Selection
    copy=False default='draft' string='Status' args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • supplier_partner_id Many2one → res.partner
    copy=False ondelete='restrict' readonly=True required=True states={'draft': [('readonly', False)]} string='Supplier' args: 'res.partner'
  • supplier_taxid Char
    readonly=True related='supplier_partner_id.vat' string='Supplier Tax ID'
  • tax_payer Selection
    copy=False default='withholding' readonly=True required=True states={'draft': [('readonly', False)]} string='Tax Payer' args: TAX_PAYER
  • wt_line One2many → withholding.tax.cert.line
    copy=False readonly=True states={'draft': [('readonly', False)]} string='Withholding Line' args: 'withholding.tax.cert.line', 'cert_id'
Public methods (3)
  • action_cancel(self)
    @api.multi
  • action_done(self)
    @api.multi
  • action_draft(self)
    @api.multi

New fields (7)
  • amount Float
    readonly=False string='Tax Amount'
  • base Float
    readonly=False string='Base Amount'
  • cert_id Many2one → withholding.tax.cert
    index=True string='WHT Cert' args: 'withholding.tax.cert'
  • ref_move_line_id Many2one → account.move.line
    comodel_name='account.move.line' help='Reference back to journal item which create wt move' readonly=False string='Ref Journal Item'
  • wt_cert_income_desc Char
    required=False size=500 string='Income Description'
  • wt_cert_income_type Selection
    required=True string='Type of Income' args: WHT_CERT_INCOME_TYPE
  • wt_percent Float
    string='% Tax'
Public methods (0)

No public methods.