Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola queridos colegas.
Estoy tratando de hacer una suma acumulada, aquí la cuestión es que las unidades las tengo que sumar o restar dependiendo del tipo de comprobante. Ventas resta unidades y Remito Stock suma. La expresión que estaba usando es
RangeSum(Above(TOTAL Sum([IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)))
Intente condicionando con una condición así:
if(
Tipo_Movimiento = 'Remitos_Stock',
RangeSum(Above(TOTAL Sum([IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL))),
RangeSum(Above(TOTAL Sum(-([IT_MovimientosMercaderia.Unidades])), 0, RowNo(TOTAL)))
)
Pero el resultado no es el esperado, por ejemplo en este caso debería dar como resultado la columna de stock
-80
21780
24000
23997
23987
Cambien intente cambiar el signo de la columna de unidades con la expresión:
if(
Tipo_Movimiento = 'Remitos_Stock',
[IT_MovimientosMercaderia.Unidades],
-([IT_MovimientosMercaderia.Unidades])
)
Veo la columna con los valores con los signo bien, pero no me imagino como hacer la sumatoria de la columna en la de stock.
Muchas Gracias por su ayuda de antemano
La mejor solución sigue siendo lo que comenté en el anterior post sobre tener un campo con el stock en el signo correcto para que sea solo sumarlos.
Si quieres antes de hacerlo puedes probar con incluirlo todo en un único above:
RangeSum(
Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'3','5','11','12','18','19'}>}[IT_MovimientosMercaderia.Unidades])
+Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'1','2','15','20'}, [Remitos_Stock.ID_Deposito_Stock_Destino] = {'1'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'7','8','9','10','14','16','17','21','100001'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'1','2','15','20'}, [Remitos_Stock.ID_Deposito_Stock] = {'1'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Ventas'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Remitos_Ventas'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL))
Hola Andrés, podrías probar si así te funciona:
RangeSum(Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Stock'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)), -Above(TOTAL Sum({<Tipo_Movimiento-={'Remitos_Stock'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)))
Hola Ruben gracias por tu ayuda, tu expresión me ayudo bastante usando la misma lógica, agrega algunas opciones mas para ir afinando el filtrado y las opciones, pero obtengo un comportamiento no deseado.
RangeSum(
Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'3','5','11','12','18','19'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)),
Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'1','2','15','20'}, [Remitos_Stock.ID_Deposito_Stock_Destino] = {'1'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)),
-Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'7','8','9','10','14','16','17','21','100001'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)),
-Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'1','2','15','20'}, [Remitos_Stock.ID_Deposito_Stock] = {'1'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)),
-Above(TOTAL Sum({<Tipo_Movimiento={'Ventas'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)),
-Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Ventas'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL)),
)
Viene realizando los cálculos con 24000 que es el ultimo de Remitos_Stock, pero no los mantiene en el acumulado, quizás mi expresión no es la mas optima pero es lo que me imagine hacer. En esta imagen muestra cuando llega a otro Remitos_Stock y ahí si le aplica el calculo.
En cada tipo de comprobante tengo para aplicar filtro y también si lo resta o las suma a la unidades.
Valoro mucho tu tiempo, gracias !!!
Hola Andrés, parece que se está saltando filas, con un ejemplo me podría hacer una idea de lo que está haciendo.
En cualquier caso si va a tener tantos condicionantes sería mejor dejar preparado en el script el campo unidades con el signo que corresponda.
Puedes crear un campo adicional que se llame por ejemplo UnidadesSigno donde multipliques el campo [IT_MovimientosMercaderia.Unidades] por 1 o -1 según las condiciones que has puesto, así solo tendrías que hacer:
RangeSum(Above(TOTAL Sum([IT_MovimientosMercaderia.UnidadesSigno]), 0, RowNo(TOTAL)))
Usando mappings joins o lookup puedes comprobar datos de otras tablas para llevar el valor de ID_Codigo_Accion o ID_Deposito_Stock a la tabla de IT_MovimientosMercaderia y hacer las comprobaciones.
Saludos.
Perdón, quizás en contestar apurado no demostré mejor el ejemplo, aquí realice unas imágenes que explican mejor lo acontecido. y la formula también en imagen que es mas visible y ordenado que poner texto. No me quiero dar por vencido porque pienso que falta muy poco. Estuve intentando todo el dia. Jejeje sin exito!
Y la expresión la dejo a continuación. Lo que trate de realizar es que, dependiendo del tipo de comprobante. Remitos_Stock - Ventas - Remitos_Ventas y de parámetros que tienen cualquier de esos 3 tipos de comprobantes, reste o sume la cantidad de unidades. Espero haberlo explicado mejor.
Mas que agradecido por su tiempo. Saludos
La mejor solución sigue siendo lo que comenté en el anterior post sobre tener un campo con el stock en el signo correcto para que sea solo sumarlos.
Si quieres antes de hacerlo puedes probar con incluirlo todo en un único above:
RangeSum(
Above(TOTAL Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'3','5','11','12','18','19'}>}[IT_MovimientosMercaderia.Unidades])
+Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'1','2','15','20'}, [Remitos_Stock.ID_Deposito_Stock_Destino] = {'1'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'7','8','9','10','14','16','17','21','100001'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Remitos_Stock'},[Remitos_Stock.ID_Codigo_Accion]={'1','2','15','20'}, [Remitos_Stock.ID_Deposito_Stock] = {'1'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Ventas'}>}[IT_MovimientosMercaderia.Unidades])
-Sum({<Tipo_Movimiento={'Remitos_Ventas'}>}[IT_MovimientosMercaderia.Unidades]), 0, RowNo(TOTAL))
Muchas Gracias por tu ayuda.
Efectivamente al agregar todo dentro de un Above, funciono con los resultados esperados.
👏👏👏👏👏👏👏