Stock por almacén valorizado
La mayoría de clientes que tenemos actualmente son del rubro retail. En el rubro es muy importante mantener los stock de las tiendas dentro de los rangos establecidos en los mínimos y máximos.
Mi primer query para calcular el stock (simulando la auditoria de stock pero no tan lento) cuando la implementé en un cliente retail grande fue como si me hubieran vaciado un balde con agua fría, era lentísima (30 minutos mas o menos), más rápida que el auditoria de stock pero muy lenta de todas maneras.
Con ese problema, me puse en plan «optimizar el query» y obtuve el siguiente código, mucho mas rápido y con el mismo resultado.
declare @date date set @date = (/*select top 1 A.RefDate from OJDT A where A.RefDate=*/'[%0]') select distinct T2.[ItemCode], T2.[ItemName], T1.[WhsCode], T1.WhsName, isnull(sum(T6.Saldo),0) [Stock], (case sum(T7.TransValue) when 0 then 1 else sum(T7.TransValue) end)/(case sum(T7.Saldo) when 0 then 1 else sum(T7.Saldo) end) [PMP], sum(T6.Saldo)*((case sum(T7.TransValue) when 0 then 1 else sum(T7.TransValue) end)/(case sum(T7.Saldo) when 0 then 1 else sum(T7.Saldo) end)) [Valorizado] from OITM T2 inner JOIN OITW T0 ON T0.ItemCode=T2.ItemCode inner JOIN OWHS T1 ON T1.WhsCode=T0.WhsCode left join ( select A0.ItemCode, A0.Warehouse, (A0.InQty-A0.OutQty) [Saldo], A0.TransValue from OINM A0 where A0.DocDate<=@date ) T6 on T6.ItemCode=T0.ItemCode and T6.Warehouse=T0.WhsCode left join ( select A1.ItemCode, sum(A1.InQty-A1.OutQty) [Saldo], sum(A1.TransValue) [TransValue] from OINM A1 where A1.DocDate<=@date group by A1.ItemCode ) T7 on T7.ItemCode=T0.ItemCode and T7.ItemCode=T6.ItemCode group by T2.[ItemCode], T2.[ItemName], T1.[WhsCode], T1.WhsName having sum(T6.Saldo)<>0 order by 1,3
Y desde ese momento es este el código que dejo en cada nuevo cliente.
Espero les sirva.
Saludos
como harias para obtener la cantidad acumulada que sale en SAP?
El reporte hace exactamente eso.
Hola;
Puedes compartir el script de las tablas que usas para esa consulta.
No entiendo a que te refieres, en el script se ven las tablas de la consulta
Hola muy buen aporte, pero si quisiera saber el detalle del lote del producto, que deberia modificar?
Un montón, no recuerdo las tablas en este momento.
Felicitaciones, muy buen aporte, aprovecho la oportunidad para saber si tienen algun query que muestre los stock por lote de un producto.
el area de ventas necesita visualizar los productos y los stocks de cada lote, gracias.
No lo tengo, ya no estoy en consultoría, sin embargo te digo que una vez lo hice y es muy difícil.
oye y si quisiera ver el resultado pero por tipo de movimiento y fechas, se q es mas tardado pero me gustaria ver los mivimientos como el de auditoria de estoy pero en una sola consulta.
gracias.
Excelente reporte, me has ayudado un buen, muchas gracias
Que tal Felipe, el query está muy bueno, pero aparte del filtro de fecha quisiera agregarle un filtro más que es el de Almacén, espero me puedas apoyar, ya que he intentado agregarle un where pero no me muestra ningùn dato cuando genero el reporte
Estimado Felipe,
Una consulta, estoy comparando el valorizado de tu consulta, con el valorizado que muestra SAP en el informe de auditoria de stock y en algunos almacenes hay diferencias.
A que podría deberse esto?
Gracias
Se debe a que la query está pensada para cuadrar con la contabilidad, con el saldo de las cuentas de existencias, no con los almacenes ya que si usas costo a nivel de empresa deben haber almacenes en negativo y eso no es posible.
Saludos
Y que tabla podría usar para sacar el costo del reporte de auditoria de stock, supongo que debe haber un lugar donde se guarde el totalizado por almacén para poder dividirlo contra el saldo y tener el costo unitario.
Gracias
Tienes que intervenir este trozo de código
Por este otro
buen dia felipe, intente modificar el trozo de codigo, pero me sale un mensaje de error, me podrias ayudar poniendo el codigo completo .
gracias
ESTE SERIA EL CODIGO, PARA QUE NO TE SALGA EL ERROR.:
left join (
select A1.ItemCode, A1.Warehouse,
sum(A1.InQty-A1.OutQty) [Saldo],
sum(A1.TransValue) [TransValue]
from OINM A1
where A1.DocDate<=@date
group by A1.ItemCode, A1.Warehouse
) T7 on T7.ItemCode=T0.ItemCode and T7.ItemCode=T6.ItemCode and T7.Warehouse=T0.WhsCode
buen dia
ojala me puedas ayudar
la empresa que trabajo compra libros, es un decir hoy compramos 100 libros a un costo en un dos semanas hay una oferta y nos los vende mas baratos y compramos 100 a otro costo, como se hacen traspasos a los otros almacenes los de un costo quedan en un almacen y si traspaso mas, los del segundo costo quedan en el mismo almacen, si yo saco un inventario, valudo me hace un promedio d elos dos costos.
yo quiero que me desglose cuantos quedan de cada costo
muchas gracias, ojala me puedas ayudar
Buenas tardes
Usas PMP o FIFO?
Atte.
buenas tardes usos fifo