Skip to content
Health
35/100
poor
  • Security25/25
    No findings
  • Activity0/25
    Only bot commits
  • Required by5/25
    0 modules depend on it
  • Maturity5/25
    In 1 Odoo series since 18.0

Heuristic over the facts below, not an audit · How it's computed

Security findings
Grave / minor (static analysis)
Required by
0
Modules depending on it
External deps
0 pip · 0 bin
Python packages / system binaries
License
AGPL-3
No conflicts with its dependencies
Folder size
0.11 MB
Module directory on disk
Code analysis 1 migration note 7 models 9 views 0 HTTP endpoints

Description

Retención en la Fuente para Colombia

Este módulo implementa el soporte para retención en la fuente (RteFte), ReteIVA y ReteICA en la localización contable de Colombia.

La retención en la fuente es el mecanismo mediante el cual el Estado colombiano recauda anticipadamente impuestos a través de los agentes retenedores.

Características principales:

  • Configuración en la compañía: Define si la empresa es agente de retención y las retenciones por defecto (RteFte, ReteIVA, ReteICA)
  • Clasificación de partners: Régimen tributario, tipo de persona, gran contribuyente, autorretenedor
  • Posiciones fiscales automáticas: Con mapeo de cuentas para desactivar retenciones según el régimen del proveedor (Régimen Simple, No Contribuyente)
  • Impuestos con conceptos: Cada impuesto de retención tiene asociado un concepto tributario (honorarios, servicios, compras, etc.)
  • Cuantías mínimas: Validación automática de la base mínima en UVT (configurable vía parámetro del sistema)
  • Cálculo automático: Botón "Calcular Retenciones" en facturas que aplica las retenciones según la configuración de la compañía y el partner
  • Soporte para ventas y compras: Aplica retenciones tanto en facturas de proveedor como de cliente
  • Integración con factura electrónica: Los impuestos negativos se reportan correctamente como WithholdingTaxTotal en el EDI UBL

Dependencies

Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
None

Code analysis

Extracted from the source by best-effort static analysis (no code is executed); details may be incomplete.

Views touched 9

XML IDNameModelTypeStatus
res_config_settings_view_form_l10n_co_withholding res.config.settings.view.form.l10n_co_withholding res.config.settings form Inherits account.res_config_settings_view_form
view_l10n_co_reteica_rate_form l10n.co.reteica.rate.form l10n.co.reteica.rate form New
view_l10n_co_reteica_rate_search l10n.co.reteica.rate.search l10n.co.reteica.rate search New
view_l10n_co_reteica_rate_tree l10n.co.reteica.rate.tree l10n.co.reteica.rate list New
view_move_form_l10n_co_withholding account.move.form.l10n_co_withholding account.move form Inherits account.view_move_form
view_partner_form_l10n_co_withholding res.partner.form.l10n_co_withholding res.partner form Inherits account.view_partner_property_form
view_tax_form_l10n_co_withholding account.tax.form.l10n_co_withholding account.tax form Inherits account.view_tax_form
view_tax_group_form_l10n_co_withholding account.tax.group.form.l10n_co_withholding account.tax.group form Inherits account.view_tax_group_form
view_tax_search_l10n_co_withholding account.tax.search.l10n_co_withholding account.tax search Inherits account.view_account_tax_search

HTTP endpoints 0

No HTTP endpoints found for this module.

Models touched 7

New fields (0)

No new fields.

Public methods (5)
  • l10n_co_check_min_base(self, tax, base_amount)
  • l10n_co_compute_withholding_taxes(self)
  • l10n_co_get_applicable_withholding_taxes(self)
  • l10n_co_get_withholding_taxes(self, partner, tax_type='purchase')
  • l10n_co_remove_withholding_taxes(self, line_ids, withholding_tax_ids)

New fields (5)
  • l10n_co_min_base_uvt Float
    help='Cuantía mínima en UVT para que aplique esta retención. Si la base gravable es inferior, la retención no se aplica.' string='Base Mínima (UVT)'
  • l10n_co_withholding_compensates_tax_id Many2one → account.tax
    help='Impuesto de retención de venta que esta contrapartida compensa.' string='Retención Compensada' args: 'account.tax'
  • l10n_co_withholding_concept Selection
    help='Concepto tributario de la retención en la fuente según el Estatuto Tributario colombiano.' selection=[('honorarios', 'Honorarios'), ('servicios', 'Servicios'), ('comisiones', 'Comisiones'), ('compras', 'Compras'), ('arrendamiento_mueble', 'Arrendamiento Bienes Muebles'), ('arrendamiento_inmueble', 'Arrendamiento Bienes Inmuebles'), ('rendimientos_financieros', 'Rendimientos Financieros'), ('transporte_carga', 'Transporte de Carga'), ('transporte_pasajeros', 'Transporte de Pasajeros'), ('vigilancia', 'Vigilancia y Aseo (AIU)'), ('temporal', 'Servicios Temporales (AIU)'), ('salud', 'Servicios de Salud'), ('hoteles_restaurantes', 'Hoteles y Restaurantes'), ('software', 'Licencias de Software'), ('it_consulting', 'Consultoría TI'), ('obras_inmuebles', 'Obras en Inmuebles'), ('vehiculos', 'Adquisición de Vehículos'), ('inmuebles', 'Bienes Raíces'), ('inmuebles_comerciales', 'Bienes Raíces Comerciales'), ('agricola', 'Bienes Agrícolas'), ('combustibles', 'Combustibles'), ('cafe', 'Café'), ('pagos_exterior', 'Pagos al Exterior'), ('otros', 'Otros')] string='Concepto de Retención'
  • l10n_co_withholding_counterpart Boolean
    help='Impuesto positivo que compensa la retención en ventas para que el total de la factura no se reduzca ante la DIAN.' string='Contrapartida de Retención'
  • l10n_co_withholding_type Selection
    help='Tipo de retención: Renta, IVA o ICA.' selection=[('rte_fte', 'ReteFte (Renta)'), ('rte_iva', 'ReteIVA'), ('rte_ica', 'ReteICA')] string='Tipo de Retención'
Public methods (1)
  • l10n_co_get_positive_counterpart(self)

New fields (1)
  • l10n_co_withholding_counterpart Boolean
    help='Marca este grupo como el que agrupa las contrapartidas positivas de las retenciones de venta.' string='Grupo de Contrapartida de Retención'
Public methods (0)

No public methods.

New fields (6)
  • active Boolean
    default=True
  • city_id Many2one → res.city
    comodel_name='res.city' help='Ciudad/municipio para la cual aplica esta tarifa de ReteICA.' required=True string='Ciudad'
  • economic_activity_id Many2one → l10n.co.economic.activity
    comodel_name='l10n.co.economic.activity' help='Actividad económica CIIU para la cual aplica esta tarifa de ReteICA.' required=True string='Actividad Económica'
  • min_base_purchases_uvt Float
    default=27.0 digits=(6, 2) help='Base mínima en UVT para aplicar ReteICA en compras.' string='Base Mínima Compras (UVT)'
  • min_base_services_uvt Float
    default=4.0 digits=(6, 2) help='Base mínima en UVT para aplicar ReteICA en servicios.' string='Base Mínima Servicios (UVT)'
  • rate Float
    digits=(6, 4) help='Porcentaje de retención de ReteICA.' required=True string='Tarifa (%)'
Public methods (1)
  • get_rate_for_partner(self, partner)
    @api.model
    Get ReteICA rate for partner based on city and activity.

New fields (4)
  • l10n_co_default_rte_fte_tax_ids Many2many → account.tax
    column1='company_id' column2='tax_id' comodel_name='account.tax' domain=[('l10n_co_withholding_type', '=', 'rte_fte')] help='Impuestos de retención en la fuente que se aplican por defecto.' relation='res_company_l10n_co_rte_fte_tax_rel' string='ReteFte por Defecto'
  • l10n_co_default_rte_ica_tax_ids Many2many → account.tax
    column1='company_id' column2='tax_id' comodel_name='account.tax' domain=[('l10n_co_withholding_type', '=', 'rte_ica')] help='Impuestos de retención de ICA que se aplican por defecto.' relation='res_company_l10n_co_rte_ica_tax_rel' string='ReteICA por Defecto'
  • l10n_co_default_rte_iva_tax_ids Many2many → account.tax
    column1='company_id' column2='tax_id' comodel_name='account.tax' domain=[('l10n_co_withholding_type', '=', 'rte_iva')] help='Impuestos de retención de IVA que se aplican por defecto.' relation='res_company_l10n_co_rte_iva_tax_rel' string='ReteIVA por Defecto'
  • l10n_co_is_retention_agent Boolean
    help='Indica si la empresa actúa como agente de retención.' string='Agente de Retención'
Public methods (0)

No public methods.

New fields (4)
  • l10n_co_default_rte_fte_tax_ids Many2many
    readonly=False related='company_id.l10n_co_default_rte_fte_tax_ids' string='ReteFte por Defecto'
  • l10n_co_default_rte_ica_tax_ids Many2many
    readonly=False related='company_id.l10n_co_default_rte_ica_tax_ids' string='ReteICA por Defecto'
  • l10n_co_default_rte_iva_tax_ids Many2many
    readonly=False related='company_id.l10n_co_default_rte_iva_tax_ids' string='ReteIVA por Defecto'
  • l10n_co_is_retention_agent Boolean
    readonly=False related='company_id.l10n_co_is_retention_agent' string='Agente de Retención Colombia'
Public methods (0)

No public methods.

New fields (5)
  • city_id Many2one → res.city
    comodel_name='res.city' help='Ciudad/municipio del partner. Se usa para determinar las tarifas de ReteICA aplicables.' string='Ciudad'
  • l10n_co_is_authorretenedor Boolean
    help='Indica si el partner es autorretenedor de renta.' string='Autorretenedor'
  • l10n_co_is_gran_contribuyente Boolean
    help='Indica si el partner está calificado como gran contribuyente.' string='Gran Contribuyente'
  • l10n_co_is_retention_agent Boolean
    help='Indica si el partner actúa como agente de retención.' string='Agente de Retención'
  • l10n_co_tax_regime Selection
    help='Régimen tributario del partner para determinar las retenciones aplicables.' selection=[('ordinary', 'Régimen Ordinario'), ('simple', 'Régimen Simple'), ('non_taxpayer', 'No Contribuyente / No Responsable')] string='Régimen Tributario'
Public methods (0)

No public methods.