Türkiye - Nilvera E-Invoice Extended

l10n_tr_nilvera_einvoice_extended
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/l10n_tr_nilvera_einvoice_extended
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Accounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Naman Shah, Dylan Kiss (dyki), Khumam Alzagim, Manav Shah, Omar Khalid, Paolantoni Jules (jupao)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_tr_nilvera_einvoice
    - l10n_tr_nilvera
    - l10n_tr
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_edi_ubl_cii
    - contacts
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module enhances the core Nilvera integration by adding additional invoice scenarios and types required for Turkish e-Invoicing compliance.

Features include:
    1.Support for invoice scenarios: Basic, Export, and Public Sector
    2.Support for invoice types: Sales, Withholding, Tax Exempt, and Registered for Export
    3.Configuration of withholding reasons and exemption reasons
    4.Addition of Tax Offices.
    

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
account_move_form_view_l10n_tr_nilvera_extended account.move.form.view.inherit.l10n_tr_nilvera_extended account.move xpath Inherits account.view_move_form
l10n_tr_nilvera_einvoice_extended_account_tax_code_view_form l10n_tr_nilvera_einvoice_extended.account.tax.code.form l10n_tr_nilvera_einvoice_extended.account.tax.code form New
l10n_tr_nilvera_einvoice_extended_account_tax_code_view_list l10n_tr_nilvera_einvoice_extended.account.tax.code.list l10n_tr_nilvera_einvoice_extended.account.tax.code list New
l10n_tr_nilvera_einvoice_extended_tax_office_view_form l10n_tr_nilvera_einvoice_extended.tax.office.form l10n_tr_nilvera_einvoice_extended.tax.office form New
l10n_tr_nilvera_einvoice_extended_tax_office_view_list l10n_tr_nilvera_einvoice_extended.tax.office.list l10n_tr_nilvera_einvoice_extended.tax.office list New
product_product_only_form_view_inherit_l10n_tr_nilvera_extended product.product.form.view.inherit.l10n_tr_nilvera_extended product.product xpath Inherits product.product_normal_form_view
product_template_only_form_view_inherit_l10n_tr_nilvera_extended product.template.product.form.view.inherit.l10n_tr_nilvera_extended product.template xpath Inherits product.product_template_only_form_view
res_config_settings_view_form_l10n_tr_nilvera_extended res.config.settings.view.form.inherit.l10n_tr_nilvera_extended res.config.settings xpath Inherits l10n_tr_nilvera.res_config_settings_view_form
ubl_tr_LineDelivery ubl_tr_LineDelivery ir.ui.view qweb New
view_account_tax_form_view_l10n_tr_nilvera_extended account.tax.form.view.inherit.l10n_tr_nilvera_extended account.tax xpath Inherits account.view_tax_form
view_company_form_inherit_l10n_tr_nilvera_extended res.company.form.inherit.l10n_tr_nilvera_extended res.company xpath Inherits base.view_company_form
view_partner_form_l10n_tr_nilvera_extended view.partner.form.inherit.l10n_tr_nilvera_extended res.partner xpath Inherits base.view_partner_form
Models touched (13)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • tax_grouping_function(self, base_line, tax_data)
    @api.model
    Build a grouping key for tax aggregation, extended for Turkish (TR) withholding taxes. This method extends the default tax grouping logic to include TR-specific withholding details. It constructs a grouping key for each tax line and appends withholding-related fields when applicable. Specifically, for invoices of type TEVKIFAT with a withholding tax code, the following fields are added to the grouping key: - l10n_tr_tax_withheld: The ID of the withholding tax code. - percent_withheld: The percentage of tax to be withheld (as an integer). - name: The localized name of the withholding tax (in Turkish). - tax_type_code: The code of the withholding tax. :param dict base_line: The base invoice line containing the record and tax details. :param dict tax_data: The dictionary containing the tax and its computed values. :return: The grouping key dictionary for this tax line, including TR withholding details if applicable.

New fields (7)
  • l10n_tr_exemption_code_domain_list Binary
    compute='_compute_l10n_tr_exemption_code_domain_list'
  • l10n_tr_exemption_code_id Many2one → l10n_tr_nilvera_einvoice_extended.account.tax.code
    compute='_compute_l10n_tr_exemption_code_id' help='The exception reason of the invoice.' readonly=False store=True string='Exemption Reason' args: 'l10n_tr_nilvera_einvoice_extended.account.tax.code'
  • l10n_tr_gib_invoice_scenario Selection
    default='TEMELFATURA' help='The scenario of the invoice to be sent to GİB.' selection=[('TEMELFATURA', 'Basic'), ('KAMU', 'Public Sector')] string='Invoice Scenario'
  • l10n_tr_gib_invoice_type Selection
    compute='_compute_l10n_tr_gib_invoice_type' default='SATIS' help='The type of invoice to be sent to GİB.' readonly=False selection=[('SATIS', 'Sales'), ('TEVKIFAT', 'Withholding'), ('IHRACKAYITLI', 'Registered for Export'), ('ISTISNA', 'Tax Exempt')] store=True string='GIB Invoice Type'
  • l10n_tr_is_export_invoice Boolean
    string='Is GIB Export'
  • l10n_tr_nilvera_customer_status Selection
    related='partner_id.l10n_tr_nilvera_customer_status' string='Partner Nilvera Status'
  • l10n_tr_shipping_type Selection
    help='The type of shipping.' selection=[('1', 'Sea Transportation'), ('2', 'Railway Transportation'), ('3', 'Road Transportation'), ('4', 'Air Transportation'), ('5', 'Post'), ('6', 'Combined Transportation'), ('7', 'Fixed Transportation'), ('8', 'Domestic Water Transportation'), ('9', 'Invalid Transportation Method')] string='Shipping Method'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_ctsp_number Char
    compute='_compute_l10n_tr_ctsp_number' readonly=False store=True string='CTSP Number'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_tax_withholding_code_id Many2one → l10n_tr_nilvera_einvoice_extended.account.tax.code
    comodel_name='l10n_tr_nilvera_einvoice_extended.account.tax.code' domain="[('code_type', '=', 'withholding')]" help='The reason for withholding tax.' string='Withholding Reason'
Public methods (0)

No public methods.

New fields (4)
  • code Integer
    required=True string='Reason Code'
  • code_type Selection
    required=True selection=[('withholding', 'Withholding'), ('exception', 'Exception'), ('export_exception', 'Export Exception'), ('export_registration', 'Export Registration')] string='Code Type'
  • name Char
    required=True string='Reason' translate=True
  • percentage Float
Public methods (0)

No public methods.

New fields (4)
  • code Integer
  • name Char
    translate=True
  • state_code Char
    related='state_id.code'
  • state_id Many2one → res.country.state
    comodel_name='res.country.state'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_ctsp_number Char
    copy=False index='btree_not_null' string='CTSP Number'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_ctsp_number Char
    compute='_compute_l10n_tr_ctsp_number' inverse='_set_l10n_tr_ctsp_number' string='CTSP Number'
Public methods (0)

No public methods.

New fields (2)
  • l10n_tr_nilvera_export_alias Char
    default='urn:mail:ihracatpk@gtb.gov.tr' groups='base.group_system' string='Nilvera Export Alias'
  • l10n_tr_tax_office_id Many2one
    readonly=False related='partner_id.l10n_tr_tax_office_id'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_nilvera_export_alias Char
    readonly=False related='company_id.l10n_tr_nilvera_export_alias' string='Nilvera Export Alias'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_tax_office_id Many2one → l10n_tr_nilvera_einvoice_extended.tax.office
    string='Turkish Tax Office' args: 'l10n_tr_nilvera_einvoice_extended.tax.office'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/l10n_tr_nilvera_einvoice_extended
VERSION
VERSION 1.0
CATEGORY
CATEGORYAccounting/Accounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Dylan Kiss (dyki), Khumam Alzagim, Manav Shah
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_tr_nilvera_einvoice
    - l10n_tr_nilvera
    - l10n_tr
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - account_edi_ubl_cii
    - contacts
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module enhances the core Nilvera integration by adding additional invoice scenarios and types required for Turkish e-Invoicing compliance.

Features include:
    1.Support for invoice scenarios: Basic, Export, and Public Sector
    2.Support for invoice types: Sales, Withholding, Tax Exempt, and Registered for Export
    3.Configuration of withholding reasons and exemption reasons
    4.Addition of Tax Offices.
    

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
account_move_form_view_l10n_tr_nilvera_extended account.move.form.view.inherit.l10n_tr_nilvera_extended account.move xpath Inherits account.view_move_form
l10n_tr_nilvera_einvoice_extended_account_tax_code_view_form l10n_tr_nilvera_einvoice_extended.account.tax.code.form l10n_tr_nilvera_einvoice_extended.account.tax.code form New
l10n_tr_nilvera_einvoice_extended_account_tax_code_view_list l10n_tr_nilvera_einvoice_extended.account.tax.code.list l10n_tr_nilvera_einvoice_extended.account.tax.code list New
l10n_tr_nilvera_einvoice_extended_tax_office_view_form l10n_tr_nilvera_einvoice_extended.tax.office.form l10n_tr_nilvera_einvoice_extended.tax.office form New
l10n_tr_nilvera_einvoice_extended_tax_office_view_list l10n_tr_nilvera_einvoice_extended.tax.office.list l10n_tr_nilvera_einvoice_extended.tax.office list New
product_product_only_form_view_inherit_l10n_tr_nilvera_extended product.product.form.view.inherit.l10n_tr_nilvera_extended product.product xpath Inherits product.product_normal_form_view
product_template_only_form_view_inherit_l10n_tr_nilvera_extended product.template.product.form.view.inherit.l10n_tr_nilvera_extended product.template xpath Inherits product.product_template_only_form_view
res_config_settings_view_form_l10n_tr_nilvera_extended res.config.settings.view.form.inherit.l10n_tr_nilvera_extended res.config.settings xpath Inherits l10n_tr_nilvera.res_config_settings_view_form
ubl_tr_InvoiceLineType ubl_tr_InvoiceLineType ir.ui.view qweb Inherits account_edi_ubl_cii.ubl_21_InvoiceLineType
ubl_tr_LineDelivery ubl_tr_LineDelivery ir.ui.view qweb New
ubl_tr_export_InvoiceType ubl_tr_export_InvoiceType ir.ui.view qweb Inherits l10n_tr_nilvera_einvoice.ubl_tr_InvoiceType
view_account_tax_form_view_l10n_tr_nilvera_extended account.tax.form.view.inherit.l10n_tr_nilvera_extended account.tax xpath Inherits account.view_tax_form
view_company_form_inherit_l10n_tr_nilvera_extended res.company.form.inherit.l10n_tr_nilvera_extended res.company xpath Inherits base.view_company_form
view_partner_form_l10n_tr_nilvera_extended view.partner.form.inherit.l10n_tr_nilvera_extended res.partner xpath Inherits base.view_partner_form
Models touched (13)

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 (7)
  • l10n_tr_exemption_code_domain_list Binary
    compute='_compute_l10n_tr_exemption_code_domain_list'
  • l10n_tr_exemption_code_id Many2one → l10n_tr_nilvera_einvoice_extended.account.tax.code
    compute='_compute_l10n_tr_exemption_code_id' help='The exception reason of the invoice.' readonly=False store=True string='Exemption Reason' args: 'l10n_tr_nilvera_einvoice_extended.account.tax.code'
  • l10n_tr_gib_invoice_scenario Selection
    default='TEMELFATURA' help='The scenario of the invoice to be sent to GİB.' selection=[('TEMELFATURA', 'Basic'), ('KAMU', 'Public Sector')] string='Invoice Scenario'
  • l10n_tr_gib_invoice_type Selection
    compute='_compute_l10n_tr_gib_invoice_type' default='SATIS' help='The type of invoice to be sent to GİB.' readonly=False selection=[('SATIS', 'Sales'), ('TEVKIFAT', 'Withholding'), ('IHRACKAYITLI', 'Registered for Export'), ('ISTISNA', 'Tax Exempt')] store=True string='GIB Invoice Type'
  • l10n_tr_is_export_invoice Boolean
    string='Is GIB Export'
  • l10n_tr_nilvera_customer_status Selection
    related='partner_id.l10n_tr_nilvera_customer_status' string='Partner Nilvera Status'
  • l10n_tr_shipping_type Selection
    help='The type of shipping.' selection=[('1', 'Sea Transportation'), ('2', 'Railway Transportation'), ('3', 'Road Transportation'), ('4', 'Air Transportation'), ('5', 'Post'), ('6', 'Combined Transportation'), ('7', 'Fixed Transportation'), ('8', 'Domestic Water Transportation'), ('9', 'Invalid Transportation Method')] string='Shipping Method'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_ctsp_number Char
    compute='_compute_l10n_tr_ctsp_number' readonly=False store=True string='CTSP Number'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_tax_withholding_code_id Many2one → l10n_tr_nilvera_einvoice_extended.account.tax.code
    comodel_name='l10n_tr_nilvera_einvoice_extended.account.tax.code' domain="[('code_type', '=', 'withholding')]" help='The reason for withholding tax.' string='Withholding Reason'
Public methods (0)

No public methods.

New fields (4)
  • code Integer
    required=True string='Reason Code'
  • code_type Selection
    required=True selection=[('withholding', 'Withholding'), ('exception', 'Exception'), ('export_exception', 'Export Exception'), ('export_registration', 'Export Registration')] string='Code Type'
  • name Char
    required=True string='Reason' translate=True
  • percentage Float
Public methods (0)

No public methods.

New fields (4)
  • code Integer
  • name Char
    translate=True
  • state_code Char
    related='state_id.code'
  • state_id Many2one → res.country.state
    comodel_name='res.country.state'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_ctsp_number Char
    copy=False index='btree_not_null' string='CTSP Number'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_ctsp_number Char
    compute='_compute_l10n_tr_ctsp_number' inverse='_set_l10n_tr_ctsp_number' string='CTSP Number'
Public methods (0)

No public methods.

New fields (2)
  • l10n_tr_nilvera_export_alias Char
    default='urn:mail:ihracatpk@gtb.gov.tr' groups='base.group_system' string='Nilvera Export Alias'
  • l10n_tr_tax_office_id Many2one
    readonly=False related='partner_id.l10n_tr_tax_office_id'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_nilvera_export_alias Char
    readonly=False related='company_id.l10n_tr_nilvera_export_alias' string='Nilvera Export Alias'
Public methods (0)

No public methods.

New fields (1)
  • l10n_tr_tax_office_id Many2one → l10n_tr_nilvera_einvoice_extended.tax.office
    string='Turkish Tax Office' args: 'l10n_tr_nilvera_einvoice_extended.tax.office'
Public methods (0)

No public methods.