Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
amigosos
Contributor III
Contributor III

Fecha de Coste anterior a la fecha del acuerdo de precio

El objetivo es identificar cual era el coste que había de un determinado producto a la fecha del acuerdo de precio.

Para ello disponemos de dos tablas:

T_Historico_de_Costes:

     Articulo

     Fecha_Coste (fecha en la que se actualiza el coste del producto)

     Coste

T_Historico_Precios:

     Cliente

     Articulo

     Fecha_Inicio (a partir de cuando un determinado precio entra en vigor)

     Fecha_Caducidad (fecha fin, hasta cuando es valido un determinado precio, si dicho precio está vigente seguramente este campo estará vacío)

     Precio

He intentado mediante Set Analysis calcular cual es la Fecha_Coste anterior a la Fecha_Inicio máxima, pero el resultado no es correcto.

Había utilizado la siguiente expresion:

Max({<Fecha_Coste={"<=$(=Max(Fecha_Inicio))"}>} Fecha_Coste)

La cual sólo funciona si selecciono un sólo producto.

¿Alguien podría ayudarme?

Gracias de antemano.

4 Replies
juanma21
Contributor III
Contributor III

Hola, puedes usar Before, pero seria de gran ayuda si envias un qvd con un ejemplo, asi te podran ayudar mas.

Saludos

JM

rubenmarin

Hola, el set analysis se calcula antes de las filas, al igual que el $-expansion, por lo que devolverá el mismo resultado en todas las filas, aplicando la misma fecha a Fecha_Coste en todos los productos.

Si tienes que usar una fecha distinta para cada artículo creo que vas a necesitar un Aggr(), por ejemplo, suponiendo que fuese una tabla con artículo como dimension:

Max(Aggr(

  If(Fecha_Coste<=Max(TOTAL <Articulo> Fecha_Inicio), Fecha_Coste)

, Articulo, Fecha_Coste))

De esta forma el Aggr(... , Articulo, Fecha_Coste) devolverá, para cada combinación de Artículo y fecha de coste, la propia fecha de coste si esta es menor que la Fecha_Inicio más alta del artículo.


Si hay más de una Fecha_Coste menor que Max(Fecha_Inicio) el Max() exterior se queda con la más alta.


Otra opción es llevar los cálculos al script, añadiendo la Fecha_Coste correspondiente como un campo más a la tabla T_Historico_Precios, el rendimiento será mejor que calculándolo en el gráfico pero si no son demasiados datos puede que no sea necesario.

amigosos
Contributor III
Contributor III
Author

En primer lugar, agraceder a Ruben y Juan Manuel su predisposición a ayudarme en este problemilla.

Trato de poner un ejemplo adjuntando un excel con:

  • 2 tablas de donde proceden los datos
  • tabla simple a la que he llegado
  • tabla simple objetivo

Esperando que con este ejemplo puedan echarme una mano.

Muchas gracias y un saludo

rubenmarin

Hola, puedes probar con:

Max(Aggr(

  If(Fecha_Coste<=Max(TOTAL <CodCliente,Articulo> Fecha_Inicio), Fecha_Coste)

, CodCliente,Articulo, Fecha_Coste))