Skip to content
Health
73/100
fair
  • Security25/25
    No findings
  • Activity25/25
    Human commit this month
  • Required by5/25
    0 modules depend on it
  • Maturity18/25
    In 3 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
6 pip · 0 bin
Python packages / system binaries
License
LGPL-3
No conflicts with its dependencies
Folder size
0.23 MB
Module directory on disk
Code analysis 0 migration notes 8 models 9 views 0 HTTP endpoints

Description

Genera los cuatro registros de comprobantes exigidos por la RG 90/2021 de la DNIT (Marangatu) para Paraguay: Ventas, Compras, Ingresos y Egresos.

El "libro" es un objeto persistido (cabecera + líneas) por empresa, tipo de registro y período (obligación 955 mensual u obligación 956 anual). Las líneas de Ventas/Compras se generan automáticamente a partir de las facturas del período (con exclusión de los comprobantes ya aceptados en el SIFEN o marcados como electrónicos por el proveedor); las líneas de Ingresos/Egresos se cargan manualmente.

El módulo exporta un archivo CSV/TXT delimitado (coma o punto y coma) y su respectivo ZIP homónimo, respetando el límite de 5.000 líneas por archivo y la nomenclatura oficial de la DNIT.

Dependencies

Code analysis

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

Views touched 9

XML IDNameModelTypeStatus
view_company_form_libros res.company.form.libros res.company form Inherits base.view_company_form
view_l10n_py_libro_form l10n_py.libro.form l10n_py.libro form New
view_l10n_py_libro_generate_wizard_form l10n_py.libro.generate.wizard.form l10n_py.libro.generate.wizard form New
view_l10n_py_libro_line_form l10n_py.libro.line.form l10n_py.libro.line form New
view_l10n_py_libro_line_list l10n_py.libro.line.list l10n_py.libro.line list New
view_l10n_py_libro_list l10n_py.libro.list l10n_py.libro list New
view_l10n_py_libro_search l10n_py.libro.search l10n_py.libro search New
view_move_form_libros account.move.form.libros account.move form Inherits account.view_move_form
view_partner_form_libros res.partner.form.libros res.partner form Inherits base.view_partner_form

HTTP endpoints 0

No HTTP endpoints found for this module.

Models touched 8

New fields (4)
  • l10n_py_condicion_venta Selection
    compute='_compute_l10n_py_condicion_venta' selection=[('1', 'Contado'), ('2', 'Crédito')] store=True string='Condición de Venta (DNIT)'
  • l10n_py_libro_electronic Boolean
    default=False help='Marca que este comprobante de compra ya es electrónico y pre-cargado por el Marangatu: la línea correspondiente es excluída del Registro de Compras generado por este módulo.' string='Comprobante electrónico'
  • l10n_py_libro_supplier_number Char
    help='Formato EEE-PPP-NNNNNNN' string='Número del Comprobante del Proveedor'
  • l10n_py_libro_supplier_timbrado Char
    help='Número de timbrado del proveedor (factura de compra en papel)' size=8 string='Timbrado del Proveedor'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (16)
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • date_end Date
    compute='_compute_dates' store=True
  • date_start Date
    compute='_compute_dates' store=True
  • error_line_count Integer
    compute='_compute_error_line_count' store=True
  • formato_archivo Selection
    default='csv' args: [('csv', 'CSV'), ('txt', 'TXT (tabulado)')]
  • l10n_py_libro_attachment_ids Many2many → ir.attachment
    string='Archivos generados' args: 'ir.attachment'
  • line_ids One2many → l10n_py.libro.line
    string='Líneas' args: 'l10n_py.libro.line', 'libro_id'
  • lote_generation_seq Integer
    default=0
  • lote_letra Char
    default=<expr> size=1
  • lote_manual_override Char
    size=5
  • month Integer
    default=<expr>
  • obligacion Selection
    default='955' required=True args: [('955', '955 - Mensual'), ('956', '956 - Anual')]
  • separador Selection
    default='coma' args: [('coma', 'Coma (,)'), ('punto_y_coma', 'Punto y coma (;)')]
  • state Selection
    default='draft' tracking=True args: [('draft', 'Borrador'), ('generated', 'Generado'), ('confirmed', 'Confirmado')]
  • tipo_registro Selection
    required=True args: [('ventas', 'Ventas'), ('compras', 'Compras'), ('ingresos', 'Ingresos'), ('egresos', 'Egresos')]
  • year Integer
    default=<expr> required=True
Public methods (5)
  • action_confirm(self)
  • action_download_zip(self)
  • action_generate_lines(self, line_ids=None)
  • action_reopen(self)
  • create(self, vals_list)
    @api.model_create_multi

New fields (8)
  • active Boolean
    default=True
  • aplica_compras Boolean
    default=False
  • aplica_egresos Boolean
    default=False
  • aplica_ingresos Boolean
    default=False
  • aplica_ventas Boolean
    default=False
  • codigo_tabla4 Char
    required=True size=3 string='Código Tabla 4'
  • l10n_latam_document_type_id Many2one → l10n_latam.document.type
    help="Vacío para tipos 'de papel' sem equivalente LATAM" string='Tipo de Documento LATAM' args: 'l10n_latam.document.type'
  • name Char
    required=True string='Descripción'
Public methods (0)

No public methods.

New fields (8)
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • incluir_compras Boolean
    default=True
  • incluir_egresos Boolean
    default=False
  • incluir_ingresos Boolean
    default=False
  • incluir_ventas Boolean
    default=True
  • month Integer
    default=<expr>
  • obligacion Selection
    default='955' required=True args: [('955', '955 - Mensual'), ('956', '956 - Anual')]
  • year Integer
    default=<expr> required=True
Public methods (1)
  • action_generate(self)

New fields (3)
  • active Boolean
    default=True
  • codigo_tabla3 Char
    required=True size=2 string='Código Tabla 3'
  • partner_doc_kind Selection
    required=True args: [('ruc', 'RUC'), ('ci', 'Cédula de Identidad'), ('passport', 'Pasaporte'), ('residence', 'Carnet de Residencia'), ('unnamed', 'Sin Nombre'), ('diplomatic', 'Diplomático'), ('foreign_tax', 'Identificación Tributaria (extranjero)')]
Public methods (0)

No public methods.

New fields (33)
  • error_message Text
    compute='_compute_state' store=True
  • f_banco Char
    size=250
  • f_comprobante_asociado_numero Char
    size=20
  • f_comprobante_asociado_timbrado Char
    size=8
  • f_condicion Selection
    args: [('1', 'Contado'), ('2', 'Crédito')]
  • f_empleador_ips Char
    size=30
  • f_especificar_tipo_documento Char
    size=50
  • f_fecha_emision Date
  • f_imputa_ire Selection
    default='N' args: [('S', 'Sí'), ('N', 'No')]
  • f_imputa_irp_rsp Selection
    default='N' args: [('S', 'Sí'), ('N', 'No')]
  • f_imputa_iva Selection
    default='N' args: [('S', 'Sí'), ('N', 'No')]
  • f_moneda_extranjera Selection
    default='N' args: [('S', 'Sí'), ('N', 'No')]
  • f_monto_exento Integer
  • f_monto_gravado Integer
  • f_monto_gravado_10 Integer
  • f_monto_gravado_5 Integer
  • f_monto_no_gravado_exonerado Integer
  • f_monto_total Integer
  • f_no_imputa Selection
    default='N' args: [('S', 'Sí'), ('N', 'No')]
  • f_nombre_razon_social Char
    size=250
  • f_numero_comprobante Char
    size=20
  • f_numero_cuenta Char
    size=30
  • f_numero_identificacion Char
    size=20
  • f_periodo_mm_aaaa Char
    size=7
  • f_timbrado Char
    size=8
  • f_tipo_comprobante Selection
    args: TIPO_COMPROBANTE_SELECTION
  • f_tipo_identificacion Char
    size=2
  • libro_id Many2one → l10n_py.libro
    index=True ondelete='cascade' required=True args: 'l10n_py.libro'
  • manual_override Boolean
    default=False help='Marcado automáticamente quando o usuário edita um campo f_* de uma linha derivada de account.move: impede que action_generate_lines sobrescreva o valor na regeneração.' string='Editado manualmente'
  • move_id Many2one → account.move
    string='Comprobante de Origen' args: 'account.move'
  • payment_id Many2one → account.payment
    string='Pago de Origen' args: 'account.payment'
  • state Selection
    compute='_compute_state' default='ok' store=True args: [('ok', 'Ok'), ('erro', 'Error')]
  • tipo_registro Selection
    related='libro_id.tipo_registro' store=True string='Tipo de Registro'
Public methods (4)
  • action_fill_from_source(self)
  • action_restore_generated_values(self)
  • action_view_source_document(self)
  • write(self, vals)

New fields (4)
  • l10n_py_libro_ire_activo Boolean
    default=False string='Sujeto a IRE (Libros DNIT)'
  • l10n_py_libro_irp_rsp_activo Boolean
    default=False string='Sujeto a IRP-RSP (Libros DNIT)'
  • l10n_py_libro_iva_activo Boolean
    default=True string='Sujeto a IVA (Libros DNIT)'
  • l10n_py_libro_nc_nd_direction Selection
    default='padrao' required=True selection=[('padrao', 'Padrão (RG 12/24)'), ('invertida', 'Invertida')] string='Dirección NC/ND (Libros DNIT)'
Public methods (1)
  • write(self, vals)

New fields (1)
  • l10n_py_libro_electronic Boolean
    company_dependent=True default=False help='Indica que este proveedor emite comprobante electrónico ante la DNIT: usado como valor por defecto (copiado, editable) del campo homónimo en la factura de compra, para excluirla del Registro de Compras (ya pre-cargado por el Marangatu).' string='Emite comprobante electrónico (DNIT)'
Public methods (0)

No public methods.

Loading…

Loading…