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]