Comment 3 for bug 919410

Revision history for this message
Juan Márquez (jmarquez) wrote :

Voy a exponer una idea compleja pero que a mi me dio exelentes resultados para el sistema del IVA. La idea principal es hacer que toda la información de la declaración del IVA sea dinamica y permita modificarla en funció de los cambios a la ley y formatos.

Creo que se deben crear los siguientes modelos (nombres sujetos a revision):

forma_iva: para almacenar los datos del formulario (a veces cambia)
   - name
   - base: boolean (base = true es la planilla activa como en res_currency) solo puede haber una planilla en True

forma_iva_lines: Almacena todos los campos definidos en la planilla
   - parent_id (m2o a forma_iva.id)
   - code: para facilidad de uso y referencia
   - name: Texto de la linea (etiquetas de la planilla)
   - key_value: string con key de diccionario (ver campo data en delaracion_iva)

Los dos modelos anteriores no son más que una plantilla para la declaración.

delaracion_iva: guarda los datos de una declaracion generada
   - fecha_presentacion
   - fecha_contable
   - numero_planilla (el nro de planilla de declaracion asignado por el seniat)
   - certificado: (si hay exedente de credito fiscal el nro del certificado correspondiente
   - status: (draft, done)
   - data: este campo debe ser de tipo text y contener un diccionario python donde cada clave puede ser un valor o una tupla con los datos que serán usados para rellenar la planilla (forma_iva_lines.key_value)

iva_lines: este modelo almacenara APUNTADORES a los registros mostrados en los libros de compras y ventas
   - domain: (compras o ventas)
   - model: (Indica el modelo al que apunta con nombre openerp: 'account.invoice', 'ajuste', etc
   - line_id: apunta al ID de la transaccion (registro) del modelo antes indicado
   - type: 1 registro, 2 complemento, 3 anulacion, 4 ajuste
   - parent_id1: apuntador al registro de origen (en este modelo) aplica si type != 1

Adicionalmente se requeriran varias validaciones del tipo si declaracion_iva.status = done no se pueden modificar los registros.

La intención es poder crear un proceso que cargue la planilla y llene el diccionario con los datos para poder llenar la plantilla de la declaración.

Por ahora lo dejo hasta aquí, la intención es sólo iniciar la revisión de la idea.