Stock según fecha/Almacen (Solo productos Activos)

Buen dia todos.
Espero me puedan ayudar de suma importancia.
Me pidieron un informa de stock a la fecha 30/12/2016 (ojo solo materiales activos del Almacén 01 - Principal)

Elabore una consulta para esto donde : tengo los siguientes datos :

esta cosnulta me manda un cuadro a rellenar lo siguiente :

al rellenar los datos como “Si” y el el comido de almacen 01

me manda la siguiente consulta :

Mi tema es el siguiente :
Me gustaría saber que hacer para que en vez de mandarme el stock actual del producto, me mande el stock de una fecha seleccionada de todos los productos en general (claro cumpliendo las características de activos inventariables y de almacen 01)

Espero puedan ayudarme.( es de suma importancia)

Muchas Gracias de antemano.

Hola @EduarCG,

A esa consulta debe agregar un Join a la OINM, sustituye el T0.OnHand por la suma de la diferencia de los campos de entrada y salida de artículos (InQty - OutQty).
Luego en el WHERE define el periodo de tiempo con DocDate.

Saludos.

2 Me gusta

Buen Dia @juliosura

Estoy un poco perdido ( por no no decir aun me falta aprender eso un poco mas), me podrías dar un poco mas de detalles .

Saludos

Buen día.

¿Por qué no generar el informe de auditoría de stock? ¿Que te llevó a querer hacer un query al respecto?

1 me gusta

Buen dia @Gera_Mendez

lo que paso fue que se tienen demasiados códigos erroneos activos, los cuales también figuran en auditoria de stock,asu vez, esta consulta me ayuda a separar códigos inactivos y activos según almacén ( sean o no inventariables.).

Si no quieres ver los artículos inactivos en tus reportes, puedes hacerlo mediante la siguiente parametrización:

El almacén es elegible en los parámetros del informe de auditoría de stocks.

@Gera_Mendez
tal cual infomas procedi, pero como ves en la siguiente imagen se necesitaba saber el stock minimo, el precio promedio y la unidad de medida incluida, dado que la auditoria de stock no te arroja esos datos .

Espero puedan Ayudarme.

Saludos.

Lo bueno es que ahora sabes algo extra sobre Business One.

La respuesta de @juliosura es la ideal para tu caso, realiza un select sencillo a la tabla OINM (Select Top 10 * FROM OINM) para que puedas apreciar la información que te brinda dicha tabla y así puedas ligarla a tu consulta original.

Una opción pudiera ser por medio de un Select anidado.

Saludos.

2 Me gusta

Por cierto @EduarCG, haré una pausa para comentarte que tienes varios post abiertos, creo que has recibido buen apoyo en la comunidad de parte de varias personas, una manera de agradecerles su apoyo es marcando con un “me gusta” sus respuestas, es una manera de decirle: “gracias por apoyarme compañero”.
Sobre el hecho de cerrar tus temas, esto es importante para poder mantener el orden de la comunidad, así como tu has tenido estas dudas, alguna otra persona también las pudiera tener y marcar la respuesta correcta les sería de mucha ayuda. Si no lograste solucionar tus temas, no dudes en comentarlo en sus respectivos comentarios para así en conjunto poder ofrecerte nuevas ideas al respecto.

Sigue participando activamente, esto hace que nuestro foro siga activo con buenos temas.

Saludos.

1 me gusta

Muchas Gracias por el recordatorio @Gera_Mendez, l oque sucede es que recién hoy el servidor volvió a la vida, y estoy enfocándome en todos los problemas que teníamos en ese entonces, actualmente tengo 2 post abiertos, estoy iniciando con las soluciones y tips brindados por los compañeros, no demorare mucho en dar una respuesta clara y concisa en cada uno de los Post.

Gracias.

1 me gusta

OK @EduarCG:

En el generador de consultas ya tienes la OITM y la OITW, ahora coloca la OINM, con esto se hará el Join que necesitas.
Ahora copia el query, ve al SQL y el campo “T0.OnHad” lo sustituyes por “SUM(T2.InQty - T2.OutQty)” (Suponiendo que OINM es T2).
Lo del WHERE es la condición que debes colocar ya sea un rango de tiempo (haciendo uso del operador BETWEEN) o hasta una fecha específica. (…Ahh se me olvidaba: al utilizar la función SUM, deberas agrupar los demás campos haciendo uso de GROUP BY)

Saludos.

1 me gusta

@juliosura
he generado la consulta, me quedo asi :

SELECT T0.[ItemCode], T0.[ItemName], T1.[WhsCode], SUM(T2.InQty - T2.OutQty), T0.[CntUnitMsr], T1.[AvgPrice], T0.[validFor], T0.[InvntItem] FROM OITM T0  INNER JOIN OITW T1 ON T0.[ItemCode] = T1.[ItemCode] INNER JOIN OINM T2 ON T0.[ItemCode] = T2.[ItemCode] WHERE T0.[InvntItem] =[%0] AND  T1.[WhsCode] =[%1] AND  T0.[validFor] =[%0] AND T2.[DocDate] >=[%2] AND  T2.[DocDate] <=[%3] GROUP BY T0.[ItemCode], T0.[ItemName], T1.[WhsCode], T0.[CntUnitMsr], T1.[AvgPrice], T0.[validFor], T0.[InvntItem], T0.[frozenFor], T1.[ItemCode] ORDER BY T0.[frozenFor], T0.[validFor], T1.[WhsCode], T1.[ItemCode], T0.[InvntItem]

Con siguiente cuadro a rellenar :

Esto me arroja la siguente ventana :

como veras me arroja un numero en Negativo cuando se supone según su auditoria de Stock del producto el segun fecha antes del 30/01/2016 quedaba 170 mts

por favor me puedes indicar que hice mal o que debo de modificar.

Gracias.

1 me gusta

@EduarCG, lo que pasa es que han habido mas salidas que entradas de ese item en el almacén seleccionado y en el período de tiempo que has definido, por eso obtienes un valor negativo.

Compañeros, recuerden que SAP maneja fechas de contabilización y fechas de creación (en el caso que nos compete)

Si generas la auditoría de stock por “fecha sistema”, jamás te arrojará stocks negativos, si generas tu auditoría de stock por “fecha de contabilización” posiblemente te arrojará stocks negativos, lo mismo pasará con el tipo de fecha que elijan en el query.

Si deseas el reporte para cuestiones contables, la fecha de contabilización es la adecuada.

Si deseas el reporte para cuestiones de inventarios, la fecha sistema (fecha de creación) te dará los movimientos tal cual se fueron registrando, asegurándote que nunca tendrás stocks negativos.

Saludos.

1 me gusta

@Gera_Mendez gracias.
Ingresando los datos dados e intercambiando por fecha de creacion ( CreateDate) , me sale en positivo, pero me salta un pequeño problema , el cual es el siguiente :
Me arroja la cantidad total stock a nivel general de totos los almacenes segun fecha :
Alm 01 : 170 mst
Alm 02 : 30 mts
Alm 04 : 8674.1 mts

Me podrías decir o dar un pauta de como hacer para que solo me arroje los datos del almacén seleccionado, que en este caso seria el Alm 01 ( Principal)

Estos son mis criterios de Seleccion, pero sin embargo en Alm me ahorra la sumatoria de todos los stock de Alm segun fecha dada.

Gracias.

El T1.[WhsCode] =[%1] debería ser T2.[WhsCode] =[%1].

Prueba y nos comentas.

Me salta este error :

1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Se especificó una expresión no booleana en un contexto donde se esperaba una condición, cerca de ‘GROUP’. 2). [Microsoft][SQL Server Native Client 11.0][SQL Server]Se especificó una expresión no booleana en un contexto donde se esperaba una condición, cerca de ‘GROUP’. 3). [Microsoft][SQL Server Native Client 11.0][SQL Server]No se puede preparar la instrucción o instrucciones. ‘’ (SWEI)

Quize probar cambiando todos los criterios donde incluya erl T1.whscode a T2.WhsCode , y me sigue saltando el mismo error

Que pena, disculpa, la tabla OINM no llama WhsCode al campo del almacén, en dicha tabla el campo es T2.[Warehouse] =[%1]

Por ello es importante también que al solicitar un apoyo, traten de estudiar las tablas, si se te proporciona la consulta, el conocimiento que adquieres es menor al que pudieras obtener estudiando la tabla tu mismo (es consejo).

Saludos, seguimos pendientes.

No olvides que una manera de agradecer los comentarios es por medio de un “me gusta”

2 Me gusta

Gracias a @juliosura y @Gera_Mendez

Ya pude resolver el problema , lo que pasa es que no era Tx.WhsCode , la Tabla OINM lo tiene como Tx.Warehouse.
Creando eso me boto el resultado correcto :slight_smile: y me quedo asi :smiley:

Posdt: Justo te iba a responder eso de el nombre xD

Muchísimas GraCIAS

2 Me gusta

No olvides marcar la respuesta que consideres servirá de mayor orientación para futuras consultas.

Saludos y gracias por retroalimentar tus post. :slight_smile: