| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/19.0/l10n_tw_edi_ecpay |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Accounting/Localizations/EDI |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Moens Alexandre, Dylan Kiss (dyki), Claire (clbr), prep-odoo, tau, Victor Miguel Armenta Carrillo, hatr-odoo, Ayush Modi, Arnav Varshney, Jonathan Swales, tau-odoo, erle |
| WEBSITE | |
| WEBSITE | https://www.odoo.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:51:40 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - l10n_tw - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - http_routing - auth_signup - digest - resource - base_address_extended - contacts - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Taiwan - E-invoicing
=====================
This module allows the user to send their invoices to the Ecpay system.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
ec_view_tax_form_inherit |
ec_view_tax_form_inherit | account.tax | xpath | Inherits account.view_tax_form |
l10n_tw_edi_invoice_cancel_form |
l10n_tw_edi.invoice.cancel.form | l10n_tw_edi.invoice.cancel | form | New |
l10n_tw_edi_invoice_print_form |
l10n_tw_edi.invoice.print.form | l10n_tw_edi.invoice.print | form | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.ecpay | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_account_move_reversal_inherit_ecpay |
ec_account_invoice_refund_form_inherit | account.move.reversal | xpath | Inherits account.view_account_move_reversal |
view_move_form_inherit_ecpay |
ecpay_invoice_view_form | account.move | xpath | Inherits account.view_move_form |
l10n_tw_edi_allowance_notify_way
Selection
copy=False
selection=[('email', 'Email'), ('phone', 'Phone')]
string='Allowance Notify Way'
l10n_tw_edi_carrier_number
Char
compute='_compute_carrier_info'
copy=False
readonly=False
store=True
string='Carrier Number'
l10n_tw_edi_carrier_number_2
Char
compute='_compute_carrier_info'
copy=False
readonly=False
store=True
string='Carrier Number 2'
l10n_tw_edi_carrier_type
Selection
compute='_compute_carrier_info'
copy=False
help='\n - Citizen Digital Certificate: The carrier number format is 2 capital letters following 14 digits.\n - Mobile Barcode: The carrier number format is / following 7 alphanumeric or +-. string.\n - EasyCard or iPass: The carrier number is the card hidden code, the carrier number 2 is the card visible code.\n '
readonly=False
selection=[('1', 'ECpay e-invoice carrier'), ('2', 'Citizen Digital Certificate'), ('3', 'Mobile Barcode'), ('4', 'EasyCard'), ('5', 'iPass')]
store=True
string='Carrier Type'
l10n_tw_edi_clearance_mark
Selection
copy=False
selection=[('1', 'NOT via the customs'), ('2', 'Via the customs')]
string='Clearance Mark'
l10n_tw_edi_ecpay_invoice_id
Char
copy=False
readonly=True
string='Ecpay Invoice Number'
l10n_tw_edi_file
Binary
copy=False
export_string_translation=False
readonly=True
string='Ecpay JSON File'
l10n_tw_edi_file_id
Many2one → ir.attachment
comodel_name='ir.attachment'
compute=<expr>
copy=False
depends=['l10n_tw_edi_file']
export_string_translation=False
l10n_tw_edi_invalidate_reason
Char
copy=False
readonly=True
string='Invalidate Reason'
l10n_tw_edi_invoice_create_date
Datetime
copy=False
readonly=True
string='Creation Date'
l10n_tw_edi_invoice_type
Selection
compute='_compute_l10n_tw_edi_invoice_type'
copy=False
readonly=False
selection=[('07', 'General Invoice'), ('08', 'Special Invoice')]
store=True
string='Ecpay Invoice Type'
l10n_tw_edi_is_b2b
Boolean
compute='_compute_l10n_tw_edi_is_b2b'
string='Is B2B'
l10n_tw_edi_is_print
Boolean
compute='_compute_is_print'
readonly=False
store=True
string='Get Printed Version'
l10n_tw_edi_is_zero_tax_rate
Boolean
compute='_compute_l10n_tw_edi_is_zero_tax_rate'
copy=False
string='Is Zero Tax Rate'
l10n_tw_edi_love_code
Char
compute='_compute_love_code'
readonly=False
store=True
string='Love Code'
l10n_tw_edi_refund_agreement_type
Selection
copy=False
selection=[('offline', 'Offline Agreement'), ('online', 'Online Agreement')]
string='Refund invoice Agreement Type'
l10n_tw_edi_refund_invoice_number
Char
copy=False
readonly=True
string='Refund Invoice Number'
l10n_tw_edi_refund_state
Selection
copy=False
readonly=True
selection=[('to_be_agreed', 'To be agreed'), ('agreed', 'Agreed'), ('disagreed', 'Disagreed')]
string='Refund State'
l10n_tw_edi_related_number
Char
copy=False
readonly=True
store=True
string='Related Number'
l10n_tw_edi_state
Selection
copy=False
readonly=True
selection=[('invoiced', 'Invoiced'), ('valid', 'Valid'), ('invalid', 'Invalid')]
string='Invoice Status'
tracking=True
l10n_tw_edi_zero_tax_rate_reason
Selection
copy=False
selection=[('71', '71: No.1 export goods'), ('72', '72: No.2 Services related to export sales, or services provided domestically but used abroad'), ('73', '73: No.3 Duty-free shops established by law for the sale and transit or departure of passengers'), ('74', '74: No.4 Sale of goods or services for operation by the operator of the FREE Trade Zone'), ('75', "75: No.5 International transportation. However, foreign transport undertakings operating international transport business in Taiwan shall be limited to those whose countries shall give equal treatment to Taiwan's international transport undertakings or be exempt from similar taxes"), ('76', '76: No.6 Ships, aircraft and distant-water fishing vessels for international transportation'), ('77', '77: No.7 Goods or repair services used by ships, aircraft and distant-water fishing vessels for sale and international transport'), ('78', '78: No.8 The bonded area operator sells goods that are not directly exported by the taxable area operator and the taxable area operator is not exported to the taxation area'), ('79', '79: No.9 The bonded area operator sells the goods that the taxable area operator deposits into the bonded warehouse or logistics center managed by the free port area or customs administration for export')]
string='Zero Tax Rate Reason'
button_draft(self)
button_request_cancel(self)
l10n_tw_edi_ecpay_item_sequence
Integer
readonly=True
string='Item Sequence'
No public methods.
l10n_tw_edi_allowance_notify_way
Selection
selection=[('email', 'Email'), ('phone', 'Phone')]
string='Allowance Notify Way'
l10n_tw_edi_ecpay_invoice_id
Char
compute='_compute_from_moves'
l10n_tw_edi_is_b2b
Boolean
compute='_compute_from_moves'
l10n_tw_edi_refund_agreement_type
Selection
selection=[('offline', 'Offline'), ('online', 'Online')]
string='Agreement Type'
reverse_moves(self, is_modify=False)
No new fields.
Public methods (0)No public methods.
l10n_tw_edi_special_tax_type
Selection
selection=[('1', 'Saloons and tea rooms, coffee shops and bars offering companionship services: Tax rate is 25%'), ('2', 'Night clubs or restaurants providing entertaining show programs: Tax rate is 15%'), ('3', 'Banking businesses, insurance businesses, trust investment businesses, securities businesses, futures businesses, commercial paper businesses and pawn-broking businesses: Tax rate is 2%'), ('4', 'The sales amounts from reinsurance premiums shall be taxed at 1%'), ('5', 'Banking businesses, insurance businesses, trust investment businesses, securities businesses, futures businesses, commercial paper businesses and pawn-broking businesses: Tax rate is 5%'), ('6', 'Core business revenues from the banking and insurance business of the banking and insurance industries (Applicable to sales after July 2014): Tax rate is 5%'), ('7', 'Core business revenues from the banking and insurance business of the banking and insurance industries (Applicable to sales after June 2014): Tax rate is 5%'), ('8', 'Duty free or non-output data')]
string='Ecpay Special Tax Type'
l10n_tw_edi_tax_type
Selection
compute='_compute_l10n_tw_edi_tax_type'
readonly=False
selection=[('1', 'Taxable'), ('2', 'Zero tax rate'), ('3', 'Duty free'), ('4', 'Taxable (special tax rate)')]
store=True
string='Ecpay Tax Type'
No public methods.
invoice_id
Many2one → account.move
comodel_name='account.move'
readonly=True
required=True
string='Document To Cancel'
reason
Char
help='Reason for cancelling the document.'
required=True
button_request_cancel(self)
invoice_id
Many2one → account.move
comodel_name='account.move'
readonly=True
required=True
string='Document To Print'
l10n_tw_edi_is_b2b
Boolean
related='invoice_id.l10n_tw_edi_is_b2b'
string='Is B2B'
print_format_b2b
Selection
default='1'
selection=[('1', 'A4 printing '), ('2', 'A5 printing ')]
string='Print Format (B2B)'
print_format_b2c
Selection
default='1'
selection=[('1', 'single-sided printing'), ('2', 'double-sided printing'), ('3', 'printing with thermal paper')]
string='Print Format (B2C)'
button_print(self)
l10n_tw_edi_ecpay_hashIV
Char
groups='base.group_system'
string='HashIV'
l10n_tw_edi_ecpay_hashkey
Char
groups='base.group_system'
string='Hashkey'
l10n_tw_edi_ecpay_merchant_id
Char
groups='base.group_system'
string='MerchantID'
l10n_tw_edi_ecpay_staging_mode
Boolean
groups='base.group_system'
string='Staging mode'
No public methods.
l10n_tw_edi_ecpay_hashIV
Char
readonly=False
related='company_id.l10n_tw_edi_ecpay_hashIV'
l10n_tw_edi_ecpay_hashkey
Char
readonly=False
related='company_id.l10n_tw_edi_ecpay_hashkey'
l10n_tw_edi_ecpay_merchant_id
Char
readonly=False
related='company_id.l10n_tw_edi_ecpay_merchant_id'
l10n_tw_edi_ecpay_staging_mode
Boolean
readonly=False
related='company_id.l10n_tw_edi_ecpay_staging_mode'
No public methods.
invoice_edi_format
Selection
selection_add=[('tw_ecpay', 'ECPay')]
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/18.0/l10n_tw_edi_ecpay |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Accounting/Localizations/EDI |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Jairo Llopis, Moens Alexandre, Dylan Kiss (dyki), prep-odoo, tau, hatr-odoo, Arnav Varshney, Jonathan Swales, tau-odoo, erle |
| WEBSITE | |
| WEBSITE | https://www.odoo.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:25:54 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - l10n_tw - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - base_address_extended - contacts - base_vat |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Taiwan - E-invoicing
=====================
This module allows the user to send their invoices to the Ecpay system.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
ec_view_tax_form_inherit |
ec_view_tax_form_inherit | account.tax | xpath | Inherits account.view_tax_form |
l10n_tw_edi_invoice_cancel_form |
l10n_tw_edi.invoice.cancel.form | l10n_tw_edi.invoice.cancel | form | New |
l10n_tw_edi_invoice_print_form |
l10n_tw_edi.invoice.print.form | l10n_tw_edi.invoice.print | form | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.ecpay | res.config.settings | xpath | Inherits account.res_config_settings_view_form |
view_account_move_reversal_inherit_ecpay |
ec_account_invoice_refund_form_inherit | account.move.reversal | xpath | Inherits account.view_account_move_reversal |
view_move_form_inherit_ecpay |
ecpay_invoice_view_form | account.move | xpath | Inherits account.view_move_form |
l10n_tw_edi_allowance_notify_way
Selection
copy=False
selection=[('email', 'Email'), ('phone', 'Phone')]
string='Allowance Notify Way'
l10n_tw_edi_carrier_number
Char
compute='_compute_carrier_info'
copy=False
readonly=False
store=True
string='Carrier Number'
l10n_tw_edi_carrier_number_2
Char
compute='_compute_carrier_info'
copy=False
readonly=False
store=True
string='Carrier Number 2'
l10n_tw_edi_carrier_type
Selection
compute='_compute_carrier_info'
copy=False
help='\n - Citizen Digital Certificate: The carrier number format is 2 capital letters following 14 digits.\n - Mobile Barcode: The carrier number format is / following 7 alphanumeric or +-. string.\n - EasyCard or iPass: The carrier number is the card hidden code, the carrier number 2 is the card visible code.\n '
readonly=False
selection=[('1', 'ECpay e-invoice carrier'), ('2', 'Citizen Digital Certificate'), ('3', 'Mobile Barcode'), ('4', 'EasyCard'), ('5', 'iPass')]
store=True
string='Carrier Type'
l10n_tw_edi_clearance_mark
Selection
copy=False
selection=[('1', 'NOT via the customs'), ('2', 'Via the customs')]
string='Clearance Mark'
l10n_tw_edi_ecpay_invoice_id
Char
copy=False
readonly=True
string='Ecpay Invoice Number'
l10n_tw_edi_file
Binary
copy=False
export_string_translation=False
readonly=True
string='Ecpay JSON File'
l10n_tw_edi_file_id
Many2one → ir.attachment
comodel_name='ir.attachment'
compute=<expr>
copy=False
depends=['l10n_tw_edi_file']
export_string_translation=False
l10n_tw_edi_invalidate_reason
Char
copy=False
readonly=True
string='Invalidate Reason'
l10n_tw_edi_invoice_create_date
Datetime
copy=False
readonly=True
string='Creation Date'
l10n_tw_edi_invoice_type
Selection
compute='_compute_l10n_tw_edi_invoice_type'
copy=False
readonly=False
selection=[('07', 'General Invoice'), ('08', 'Special Invoice')]
store=True
string='Ecpay Invoice Type'
l10n_tw_edi_is_b2b
Boolean
compute='_compute_l10n_tw_edi_is_b2b'
string='Is B2B'
l10n_tw_edi_is_print
Boolean
compute='_compute_is_print'
readonly=False
store=True
string='Get Printed Version'
l10n_tw_edi_is_zero_tax_rate
Boolean
compute='_compute_l10n_tw_edi_is_zero_tax_rate'
copy=False
string='Is Zero Tax Rate'
l10n_tw_edi_love_code
Char
compute='_compute_love_code'
readonly=False
store=True
string='Love Code'
l10n_tw_edi_refund_agreement_type
Selection
copy=False
selection=[('offline', 'Offline Agreement'), ('online', 'Online Agreement')]
string='Refund invoice Agreement Type'
l10n_tw_edi_refund_invoice_number
Char
copy=False
readonly=True
string='Refund Invoice Number'
l10n_tw_edi_refund_state
Selection
copy=False
readonly=True
selection=[('to_be_agreed', 'To be agreed'), ('agreed', 'Agreed'), ('disagreed', 'Disagreed')]
string='Refund State'
l10n_tw_edi_related_number
Char
copy=False
readonly=True
store=True
string='Related Number'
l10n_tw_edi_state
Selection
copy=False
readonly=True
selection=[('invoiced', 'Invoiced'), ('valid', 'Valid'), ('invalid', 'Invalid')]
string='Invoice Status'
tracking=True
l10n_tw_edi_zero_tax_rate_reason
Selection
copy=False
selection=[('71', '71: No.1 export goods'), ('72', '72: No.2 Services related to export sales, or services provided domestically but used abroad'), ('73', '73: No.3 Duty-free shops established by law for the sale and transit or departure of passengers'), ('74', '74: No.4 Sale of goods or services for operation by the operator of the FREE Trade Zone'), ('75', "75: No.5 International transportation. However, foreign transport undertakings operating international transport business in Taiwan shall be limited to those whose countries shall give equal treatment to Taiwan's international transport undertakings or be exempt from similar taxes"), ('76', '76: No.6 Ships, aircraft and distant-water fishing vessels for international transportation'), ('77', '77: No.7 Goods or repair services used by ships, aircraft and distant-water fishing vessels for sale and international transport'), ('78', '78: No.8 The bonded area operator sells goods that are not directly exported by the taxable area operator and the taxable area operator is not exported to the taxation area'), ('79', '79: No.9 The bonded area operator sells the goods that the taxable area operator deposits into the bonded warehouse or logistics center managed by the free port area or customs administration for export')]
string='Zero Tax Rate Reason'
button_draft(self)
button_request_cancel(self)
l10n_tw_edi_ecpay_item_sequence
Integer
readonly=True
string='Item Sequence'
No public methods.
l10n_tw_edi_allowance_notify_way
Selection
selection=[('email', 'Email'), ('phone', 'Phone')]
string='Allowance Notify Way'
l10n_tw_edi_ecpay_invoice_id
Char
compute='_compute_from_moves'
l10n_tw_edi_is_b2b
Boolean
compute='_compute_from_moves'
l10n_tw_edi_refund_agreement_type
Selection
selection=[('offline', 'Offline'), ('online', 'Online')]
string='Agreement Type'
reverse_moves(self, is_modify=False)
No new fields.
Public methods (0)No public methods.
l10n_tw_edi_special_tax_type
Selection
selection=[('1', 'Saloons and tea rooms, coffee shops and bars offering companionship services: Tax rate is 25%'), ('2', 'Night clubs or restaurants providing entertaining show programs: Tax rate is 15%'), ('3', 'Banking businesses, insurance businesses, trust investment businesses, securities businesses, futures businesses, commercial paper businesses and pawn-broking businesses: Tax rate is 2%'), ('4', 'The sales amounts from reinsurance premiums shall be taxed at 1%'), ('5', 'Banking businesses, insurance businesses, trust investment businesses, securities businesses, futures businesses, commercial paper businesses and pawn-broking businesses: Tax rate is 5%'), ('6', 'Core business revenues from the banking and insurance business of the banking and insurance industries (Applicable to sales after July 2014): Tax rate is 5%'), ('7', 'Core business revenues from the banking and insurance business of the banking and insurance industries (Applicable to sales after June 2014): Tax rate is 5%'), ('8', 'Duty free or non-output data')]
string='Ecpay Special Tax Type'
l10n_tw_edi_tax_type
Selection
compute='_compute_l10n_tw_edi_tax_type'
readonly=False
selection=[('1', 'Taxable'), ('2', 'Zero tax rate'), ('3', 'Duty free'), ('4', 'Taxable (special tax rate)')]
store=True
string='Ecpay Tax Type'
No public methods.
invoice_id
Many2one → account.move
comodel_name='account.move'
readonly=True
required=True
string='Document To Cancel'
reason
Char
help='Reason for cancelling the document.'
required=True
button_request_cancel(self)
invoice_id
Many2one → account.move
comodel_name='account.move'
readonly=True
required=True
string='Document To Print'
l10n_tw_edi_is_b2b
Boolean
related='invoice_id.l10n_tw_edi_is_b2b'
string='Is B2B'
print_format_b2b
Selection
default='1'
selection=[('1', 'A4 printing '), ('2', 'A5 printing ')]
string='Print Format (B2B)'
print_format_b2c
Selection
default='1'
selection=[('1', 'single-sided printing'), ('2', 'double-sided printing'), ('3', 'printing with thermal paper')]
string='Print Format (B2C)'
button_print(self)
l10n_tw_edi_ecpay_hashIV
Char
groups='base.group_system'
string='HashIV'
l10n_tw_edi_ecpay_hashkey
Char
groups='base.group_system'
string='Hashkey'
l10n_tw_edi_ecpay_merchant_id
Char
groups='base.group_system'
string='MerchantID'
l10n_tw_edi_ecpay_staging_mode
Boolean
groups='base.group_system'
string='Staging mode'
No public methods.
l10n_tw_edi_ecpay_hashIV
Char
readonly=False
related='company_id.l10n_tw_edi_ecpay_hashIV'
l10n_tw_edi_ecpay_hashkey
Char
readonly=False
related='company_id.l10n_tw_edi_ecpay_hashkey'
l10n_tw_edi_ecpay_merchant_id
Char
readonly=False
related='company_id.l10n_tw_edi_ecpay_merchant_id'
l10n_tw_edi_ecpay_staging_mode
Boolean
readonly=False
related='company_id.l10n_tw_edi_ecpay_staging_mode'
No public methods.
invoice_edi_format
Selection
selection_add=[('tw_ecpay', 'ECPay')]
No public methods.