Suma de una columna con One2many

907 views
Skip to first unread message

JUAN FRANCISCO CARRASQUEL RAMIREZ

unread,
Sep 28, 2016, 5:14:20 PM9/28/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
  • Tengo el siguiente error odoo v8 : A raiz de que quiero realizar una suma de campos que contiene mi campo One2many, me genera el error que se observa en la imagen, piece representa una clase en la cual tengo asignado mi campo One2many y realizo sumatorias, para obtener totales que usare en mi reporte PDF, a continuación les explico el proceso:



Pantalla Nº 2: En la siguiente imagen pueden observar un modulo que captura datos char  en su clase propia llamada pickup y un campo One2many que realiza cálculos float a través de otra clase llamada Pieces, actualmente puedo sumar, dos variables y mostrarlas en el total resaltado abajo en este ejemplo observamos la suma de las variables "Volumen Individual"= 2700000000,0000 y"Volumen Total en  cm3=81000000,0000 obteniendo como resultante en la variable totales que se encuentra en la clase pickup  Totales= 108000000,00, como se puede observar en este paso normalmente me arroja la suma requerida, pero al ingresar otra pieza con otras sumas me da el problema mayor.


Pantalla 3:Se puede observar el campo One2many con otras piezas añadidas de ejemplo, y preparándose para añadir otra nueva pieza, dando click en Añadir elemento procedo a realizar el calculo de la pieza para almacenarlo en la BD.


Posteriormente paso a realizar el calculo y guardo.




Una vez guardado mi calculo se anexa en la vista tree del campo One2many,  procedo a guardar mi información donde requiero que en totales se sume toda la columna de Volumen Individual" y me muestre su resultado en totales para así obtener un total de piezas como en el primer ejemplo.





Como pudiera resolver esto para obtener sumatoria de esta columna la función para la suma con un contador no genera resultados y le asigno las variables "Volumen Individual" y"Volumen Total en  cm3

Pero no obtengo resultado alguno. la variable totales sale en blanco.


    def _get_total(self, cr, uid, ids, field_name, arg, context=None):

        result = {}

        for rec in self.browse(cr,uid,ids,context=context):

            totales = 0

            for dimensiones in rec.dimensiones:

                totales += self.dimensiones.total

            result[rec.id] = totales

        return result



EL .PY

    totales = fields.Float(_(u'Totales Piezas:'), help='Resultado del Total de todas las piezas.',compute='_get_total') 


En este caso no se q estare haciendo mal? alguien que me pueda aportar una idea

Gustavo Orrillo

unread,
Sep 29, 2016, 5:58:54 AM9/29/16
to odoo-ar...@googlegroups.com
un par de puntos a tener en cuenta:

- donde dicen singleton, ahi el sistema esta esperando una sola fila, por algun motivo la busqueda o el objeto tiene un array. Chequea eso
 en el codigo... cambia la linea

                totales += self.dimensiones.total

por

                totales += dimensiones.total

y contame como anda
saludos

--
Recuerda siempre poner la mayor cantidad de datos para que se entienda bien que necesitas y que respondes. Algunos errores comunes:
 
- Siempre mencionar en que versión de odoo trabajas.
- Siempre mencionar si el servidor esta en LINUX o en windows y en que versión.
- No alcanza con colocar el debug del error, debes indicar que necesitas que haga el código.
- Comparte tu código en un servidor abierto como Launchpad u otro.
- Si haces un manual, tutorial o algo de interés comunal, trata de usar google docs.
 
Tu tiempo es tan valioso como el de cualquiera de la comunidad. Aquí se valora el aporte que hagas.
 
Nuestras normas mínimas de convivencia puede leerlas en https://groups.google.com/d/forum/odoo-argentina?hl=es-ES
---
Has recibido este mensaje porque estás suscrito al grupo "odoo-Argentina - Preguntas y respuestas para personalizadores" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-argentina+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a odoo-argentina@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

JUAN FRANCISCO CARRASQUEL RAMIREZ

unread,
Oct 27, 2016, 9:34:06 AM10/27/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Saludos comunidad despues de largo analizar encontre una solución la cual es la siguiente:


    @api.onchange('total1','total')
    def sum_tol(self):
        self.totales = 0
        for s in range(0,len(self.dimensiones)):
                self.totales = self.totales + self.dimensiones[s].total1

con esto logre realizar la suma necesitada, muchas gracias por sus aportes Gustavo saludos y gracias.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a odoo-argentin...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a odoo-ar...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages