El 13 de mayo de 2016, 11:18, Luis Deiana <[email protected]>
escribió:

> Buenos dias, puedo introducir una formula condicional para comprar 2
> listas en el campo Formula ?
> Algo asi por ejemplo:
> if ( price_list.compute_price_list(1) >= unit_price ;
> price_list.compute_price_list(1) ; unit_price )
> De ser posible si alguien poede decime como seria la sintaxis. Gracias.
>

​Hola Luis,
creo que lo que necesitas es agregar (desde tu propio módulo) al contexto
de la formula una función que te sirva para lo que tenés que calcular.
Segun tu ejemplo, te serviría poner la funcion max() de python. Pero
tambien podrías definir cualquier funcion tuya e incorporarla al contexto
de la funcion.

Te muestro un ejemplo de cómo lo harías:

def sum(par1, par2):
    return par1 + par2

class PriceList:
    __name__ = 'product.price_list'
    def get_context_formula(
            self, party, product, unit_price, quantity, uom):

        context = super(PriceList, self).get_context_formula(
            party, product, unit_price, quantity, uom)
        context.setdefault('names', {})
        context.setdefault('functions', {})

        # Ademas de agregar la funcion sum agregaré una variable 'value'
        value = 10  # Lo que sea necesario para hallar su valor

        context['names']['value'] = value  # Agrego la nueva variable
        context['functions']['sum'] = sum   # Agrego la nueva función

        return context


class PriceListLine:
    __name__ = 'product.price_list.line'

    @classmethod
    def __setup__(cls):
        super(PriceListLine, cls).__setup__()

# Por último: agrego algo de ayuda al usuario que va a tener que escribir
la formula
# describiendo las nuevas funcionalidades que puede utilizar

        cls.formula.help += ('\n- value: '
            'always 10.'
            '\n- sum(param1, param2): '
            'the sum of param1 and param2')


El ejemplo no lo he probado en funcionamiento tal cual como te lo muestro
aquí, pero creo que te va a funcionar ya que esta basado en un ejemplo real
que tengo en funcionamiento (aunque extra simplificado).

​Cualquier duda pregunta nuevamente.
Saludos,
Karla.

-- 
-------------------------
Karla  Mª  Stenger  Sábat
[email protected]

Responder a