TIP: You can type at any time to perform a new search.

Security findings

Repository
OCA/l10n-paraguay · module folder · Try on Runboat
Module version
1.0.0
Category
Localization
Folder size
2.34 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/l10n-paraguay
Last tracking update
2026-10-04 00:16:29
Authors
Odoo Community Association (OCA), KMEE
Maintainers
Odoo Community Association (OCA), KMEE
Committers
OCA-git-bot, oca-ci, Daniel Sadamo
Odoo dependencies
Python dependencies
python-stdnum
System dependencies
None
Required by
l10n_py_account
Description
Base localization module for Paraguay. Provides geographic data (departments,
cities, neighborhoods), RUC validation, and fiscal fields on partners.

Code Analysis info_outline

Views touched (5)
XML IDNameModelTypeStatus
l10n_py_base_res_partner_address l10n_py_base.res.partner.address res.partner form New
l10n_py_base_res_partner_form l10n_py_base.res.partner.form res.partner form Inherits base.view_partner_form
view_l10n_py_neighborhood_form l10n_py.neighborhood.form l10n_py.neighborhood form New
view_l10n_py_neighborhood_list l10n_py.neighborhood.list l10n_py.neighborhood list New
view_l10n_py_neighborhood_search l10n_py.neighborhood.search l10n_py.neighborhood search New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (5)

New fields (6)
  • city_id Many2one → res.city
    help='Ciudad a la que pertenece el barrio' ondelete='cascade' required=True string='Ciudad' args: 'res.city'
  • code Char
    help='Código del barrio' string='Código'
  • country_id Many2one → res.country
    help='País al que pertenece el barrio' readonly=True related='city_id.country_id' store=True string='País' args: 'res.country'
  • name Char
    help='Nombre del barrio' required=True string='Nombre'
  • state_id Many2one → res.country.state
    help='Departamento al que pertenece el barrio' readonly=True related='city_id.state_id' store=True string='Departamento' args: 'res.country.state'
  • zipcode Char
    help='Código postal del barrio' string='Código Postal'
Public methods (0)

No public methods.

New fields (1)
  • l10n_py_code Char
    help='Código de la ciudad según SET (Subsecretaría de Estado de Tributación)' size=4 string='Código SET'
Public methods (0)

No public methods.

New fields (1)
  • country_id Many2one
    default=<expr>
Public methods (0)

No public methods.

New fields (1)
  • l10n_py_code Integer
    help='Código del departamento según SET (Subsecretaría de Estado de Tributación)' string='Código SET'
Public methods (0)

No public methods.

New fields (12)
  • country_id Many2one → res.country
    comodel_name='res.country' default=<expr>
  • l10n_py_activity_description Char
    help='Descripción de la actividad económica principal' string='Actividad Económica'
  • l10n_py_city_code Char
    help='Código de la ciudad según SET' readonly=True related='city_id.l10n_py_code' store=True string='Código Ciudad SET'
  • l10n_py_department_code Integer
    help='Código del departamento según SET' readonly=True related='state_id.l10n_py_code' store=True string='Código Departamento SET'
  • l10n_py_doc_number Char
    help='Número de documento de identidad para no contribuyentes (SIFEN D025)' size=20 string='Número de Documento'
  • l10n_py_doc_type Selection
    help='Tipo de documento de identidad para no contribuyentes (SIFEN D024)' string='Tipo de Documento de Identidad' args: [('1', 'Cédula de Identidad'), ('2', 'Pasaporte'), ('3', 'Carnet de Residencia'), ('4', 'Innominado')]
  • l10n_py_fantasy_name Char
    help='Nombre comercial o de fantasía' string='Nombre de Fantasía'
  • l10n_py_neighborhood_id Many2one → l10n_py.neighborhood
    comodel_name='l10n_py.neighborhood' domain="[('city_id', '=', city_id)]" help='Barrio o distrito del contacto' string='Barrio'
  • l10n_py_neighborhood_name Char
    readonly=True related='l10n_py_neighborhood_id.name' store=True string='Nombre del Barrio'
  • l10n_py_ruc Char
    compute='_compute_l10n_py_ruc_fields' help='Registro Único del Contribuyente (sin dígito verificador)' inverse='_inverse_l10n_py_ruc' size=20 store=True string='RUC'
  • l10n_py_ruc_dv Char
    compute='_compute_l10n_py_ruc_fields' help='Dígito verificador del RUC' size=1 store=True string='DV'
  • l10n_py_taxpayer_type Selection
    help='Tipo de contribuyente según la SET' string='Tipo de Contribuyente' args: [('1', 'Contribuyente'), ('2', 'No Contribuyente')]
Public methods (4)
  • check_vat_py(self, vat)
    Validate a Paraguayan RUC, check digit included. Only partners whose identification type is flagged as VAT reach this method: ``l10n_latam_base`` filters the others out before calling ``base_vat``, so documents such as CI, passport or residence card are not validated here.
  • create(self, vals_list)
    @api.model_create_multi
  • format_vat_py(self, vat)
    @api.model
    Keep the RUC as typed instead of letting base_vat compact it. Since Odoo 19, ``base_vat`` formats the VAT through ``format_vat_<cc>`` and falls back to the python-stdnum ``compact()``, which strips the hyphen of ``NNNNNNNN-D``. ``_format_vat_py`` would then take the whole compacted number (check digit included) as the RUC base and append a new, wrong check digit.
  • write(self, values)

Loading…

Loading…

Status
Open migration PR — not merged yet for this version
CI status
green — ready to merge
Open since
2 days ago
Last activity
2 days ago
Repository
OCA/l10n-paraguay
Pull request
[20.0][MIG] l10n_py_base: Migration to 20.0 (#55)