Thai Localization - Account Tax Invoice

l10n_th_tax_invoice
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_tax_invoice
VERSION
VERSION 1.0.3
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
COMMITTERSStéphane Bidoul, OCA Transbot, oca-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 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 (6)
XML IDNameModelTypeStatus
view_account_payment_form account.view.account.payment.form account.payment button Inherits account.view_account_payment_form
view_move_form account.move.form account.move xpath Inherits account.view_move_form
view_tax_form_inherited account.tax.form.inherited account.tax field Inherits account.view_tax_form
view_tax_invoice_form account.move.tax.invoice form New
view_tax_invoice_search account.move.tax.invoice search New
view_tax_invoice_tree account.move.tax.invoice tree New
Models touched (6)

New fields (1)
  • tax_invoice_ids One2many → account.move.tax.invoice
    comodel_name='account.move.tax.invoice' copy=False inverse_name='move_id' readonly=True states={'draft': [('readonly', False)]}
Public methods (0)

No public methods.

New fields (2)
  • manual_tax_invoice Boolean
    copy=False help='Create Tax Invoice for this debit/credit line'
  • tax_invoice_ids One2many → account.move.tax.invoice
    comodel_name='account.move.tax.invoice' inverse_name='move_line_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (18)
  • account_id Many2one → account.account
    comodel_name='account.account' related='move_line_id.account_id'
  • balance Monetary
    copy=False currency_field='company_currency_id' string='Tax Amount'
  • company_currency_id Many2one → res.currency
    comodel_name='res.currency' related='company_id.currency_id'
  • company_id Many2one → res.company
    comodel_name='res.company' related='move_id.company_id' store=True
  • move_id Many2one → account.move
    comodel_name='account.move' copy=True index=True
  • move_line_id Many2one → account.move.line
    comodel_name='account.move.line' copy=True index=True ondelete='cascade'
  • move_state Selection
    related='move_id.state' store=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='restrict' string='Partner'
  • payment_id Many2one → account.payment
    comodel_name='account.payment' compute='_compute_payment_id' copy=True store=True
  • report_date Date
    compute='_compute_report_date' store=True string='Report Date'
  • report_late_mo Selection
    default='0' required=True string='Report Late' args: [('0', '0 month'), ('1', '1 month'), ('2', '2 months'), ('3', '3 months'), ('4', '4 months'), ('5', '5 months'), ('6', '6 months')]
  • reversed_id Many2one → account.move
    comodel_name='account.move' help='This move that this move reverse'
  • reversing_id Many2one → account.move
    comodel_name='account.move' help='The move that reverse this move'
  • tax_base_amount Monetary
    copy=False currency_field='company_currency_id' string='Tax Base'
  • tax_invoice_date Date
    copy=False string='Tax Invoice Date'
  • tax_invoice_number Char
    copy=False string='Tax Invoice Number'
  • tax_line_id Many2one → account.tax
    comodel_name='account.tax' related='move_line_id.tax_line_id'
  • to_clear_tax Boolean
    related='payment_id.to_clear_tax'
Public methods (1)
  • unlink(self)
    Do not allow remove the last tax_invoice of move_line

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • tax_invoice_ids One2many → account.move.tax.invoice
    comodel_name='account.move.tax.invoice' copy=False domain=[('reversing_id', '=', False), ('reversed_id', '=', False)] inverse_name='payment_id'
  • tax_invoice_move_id Many2one → account.move
    comodel_name='account.move' compute='_compute_tax_invoice_move_id' string="Tax Invoice's Journal Entry"
  • to_clear_tax Boolean
    copy=False default=False help='When defer journal entry posting, this will show button'
Public methods (2)
  • button_journal_entries(self)
  • clear_tax_cash_basis(self)

New fields (2)
  • sequence_number_next Integer
    compute='_compute_seq_number_next' help='The next sequence number will be used for the next tax invoice.' inverse='_inverse_seq_number_next' string='Next Number'
  • taxinv_sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' copy=False help='Optional sequence as Tax Invoice number' string='Tax Invoice Sequence'
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_tax_invoice
VERSION
VERSION 2.2.4
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, Weblate, OCA-git-bot, Kitti U, kittiu
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-thailand/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES 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 (6)
XML IDNameModelTypeStatus
view_account_payment_form account.view.account.payment.form account.payment button Inherits account.view_account_payment_form
view_move_form account.move.form account.move xpath Inherits account.view_move_form
view_tax_form_inherited account.tax.form.inherited account.tax field Inherits account.view_tax_form
view_tax_invoice_form account.move.tax.invoice form New
view_tax_invoice_search account.move.tax.invoice search New
view_tax_invoice_tree account.move.tax.invoice tree New
Models touched (6)

New fields (1)
  • tax_invoice_ids One2many → account.move.tax.invoice
    comodel_name='account.move.tax.invoice' copy=False inverse_name='move_id' readonly=True states={'draft': [('readonly', False)]}
Public methods (2)
  • post(self)
    Additional tax invoice info (tax_invoice_number, tax_invoice_date) Case sales tax, use Odoo's info, as document is issued out. Case purchase tax, use vendor's info to fill back.
  • unlink(self)

New fields (2)
  • manual_tax_invoice Boolean
    copy=False help='Create Tax Invoice for this debit/credit line'
  • tax_invoice_ids One2many → account.move.tax.invoice
    comodel_name='account.move.tax.invoice' inverse_name='move_line_id'
Public methods (2)
  • create(self, vals)
  • write(self, vals)

New fields (18)
  • account_id Many2one → account.account
    comodel_name='account.account' related='move_line_id.account_id'
  • balance Monetary
    copy=False currency_field='company_currency_id' string='Tax Amount'
  • company_currency_id Many2one → res.currency
    comodel_name='res.currency' related='company_id.currency_id'
  • company_id Many2one → res.company
    comodel_name='res.company' related='move_id.company_id' store=True
  • move_id Many2one → account.move
    comodel_name='account.move' copy=True index=True
  • move_line_id Many2one → account.move.line
    comodel_name='account.move.line' copy=True index=True ondelete='cascade'
  • move_state Selection
    related='move_id.state' store=True args: [('draft', 'Draft'), ('posted', 'Posted'), ('cancel', 'Cancelled')]
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='restrict' string='Partner'
  • payment_id Many2one → account.payment
    comodel_name='account.payment' compute='_compute_payment_id' copy=True store=True
  • report_date Date
    compute='_compute_report_date' store=True string='Report Date'
  • report_late_mo Selection
    default='0' required=True string='Report Late' args: [('0', '0 month'), ('1', '1 month'), ('2', '2 months'), ('3', '3 months'), ('4', '4 months'), ('5', '5 months'), ('6', '6 months')]
  • reversed_id Many2one → account.move
    comodel_name='account.move' help='This move that this move reverse'
  • reversing_id Many2one → account.move
    comodel_name='account.move' help='The move that reverse this move'
  • tax_base_amount Monetary
    copy=False currency_field='company_currency_id' string='Tax Base'
  • tax_invoice_date Date
    copy=False string='Tax Invoice Date'
  • tax_invoice_number Char
    copy=False string='Tax Invoice Number'
  • tax_line_id Many2one → account.tax
    comodel_name='account.tax' related='move_line_id.tax_line_id'
  • to_clear_tax Boolean
    related='payment_id.to_clear_tax'
Public methods (1)
  • unlink(self)
    Do not allow remove the last tax_invoice of move_line

New fields (0)

No new fields.

Public methods (1)
  • create_tax_cash_basis_entry(self, percentage_before_rec)
    This method is called from the move lines that create cash basis entry. We want to use the same payment_id when create account.move.tax.invoice

New fields (4)
  • move_id Many2one → account.move
    comodel_name='account.move' compute='_compute_move_id' string='Journal Entry'
  • tax_invoice_ids One2many → account.move.tax.invoice
    comodel_name='account.move.tax.invoice' copy=False domain=[('reversing_id', '=', False), ('reversed_id', '=', False)] inverse_name='payment_id'
  • tax_invoice_move_id Many2one → account.move
    comodel_name='account.move' compute='_compute_tax_invoice_move_id' string="Tax Invoice's Journal Entry"
  • to_clear_tax Boolean
    copy=False default=False help='When defer journal entry posting, this will show button'
Public methods (2)
  • button_journal_entries(self)
  • clear_tax_cash_basis(self)

New fields (2)
  • sequence_number_next Integer
    compute='_compute_seq_number_next' help='The next sequence number will be used for the next tax invoice.' inverse='_inverse_seq_number_next' string='Next Number'
  • taxinv_sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' copy=False help='Optional sequence as Tax Invoice number' string='Tax Invoice Sequence'
Public methods (0)

No public methods.