Query de ventas acumuladas por articulo

Buen día y de antemano gracias por la ayuda que puedan darme, mi necesidad es la siguiente, necesito generar una consulta que me de las ventas reales por producto y por mes filtrado por el almacen de donde sale el producto, tengo la siguiente consulta, el problema es que cuando trato de cuadrar con el reporte de sap “ANALISIS DE VENTAS POR ARTICULO”, no me cuadra la informacion de mi consulta vs este reporte.

CONSULTA:

SELECT DISTINCT T1.ItemCode as Articulo,T1.[Dscription] as Descripcion,T1.WhsCode as Almacen,

SUM(CASE WHEN Month(T1.Docdate)=1 then (T1.Quantity) else 0 END) as Enero,
SUM(CASE WHEN Month(T1.Docdate)=2 then (T1.Quantity) else 0 END) as Febrero,
SUM(CASE WHEN Month(T1.Docdate)=3 then (T1.Quantity) else 0 END) as Marzo,
SUM(CASE WHEN Month(T1.Docdate)=4 then (T1.Quantity) else 0 END) as Abril,
SUM(CASE WHEN Month(T1.Docdate)=5 then (T1.Quantity) else 0 END) as Mayo,
SUM(CASE WHEN Month(T1.Docdate)=6 then (T1.Quantity) else 0 END) as Junio,
SUM(CASE WHEN Month(T1.Docdate)=7 then (T1.Quantity) else 0 END) as Julio,
SUM(CASE WHEN Month(T1.Docdate)=8 then (T1.Quantity) else 0 END) as Agosto,
SUM(CASE WHEN Month(T1.Docdate)=9 then (T1.Quantity) else 0 END) as Septiembre,
SUM(CASE WHEN Month(T1.Docdate)=10 then (T1.Quantity) else 0 END) as Octubre,
SUM(CASE WHEN Month(T1.Docdate)=11 then (T1.Quantity) else 0 END) as Noviembre,
SUM(CASE WHEN Month(T1.Docdate)=12 then (T1.Quantity) else 0 END) as Diciembre,

ISNULL((SELECT DISTINCT (SUM(Y.InQty)-SUM(Y.OutQty))FROM OINM Y WHERE Y.ItemCode = T1.ItemCode AND Y.Warehouse = T1.WhsCode),0) as 'Stock'
--ISNULL((SELECT DISTINCT (SUM(Y.OutQty))FROM OINM Y WHERE Y.ItemCode = T1.ItemCode AND Y.Warehouse = T1.WhsCode),0) as 'Stock'

FROM INV1 T1

WHERE T1.Docdate>=[%0%] and T1.Docdate<=[%1%] AND T1.TargetType <> '14' AND T1.WhsCode='PT-MEX'

Group By T1.ItemCode,T1.[Dscription],T1.WhsCode

Order by T1.ItemCode

No tienes tema de presentación, por favor ingresa a #presentaciones y crea un tema nuevo.
Deduzco que hablamos de que tienes Business One, verdad?

Hola @Angel1

Mira el siguiente post (léelo todo), creo que ahí está lo que necesitas y entenderás porque no te cuadra tu query:

Saludos,

2 Me gusta

Hola juliosura, muchas gracias por tu pronta respuesta si me funciono el query, pero al mismo tiempo me causo una pregunta y una necesidad:
La pregunta es: En este query muestra esta linea WHERE T0.DocDate BETWEEN ‘20170201’ AND ‘20170228’ AND (T0.TransType=13 OR T0.TransType=14), revisando los datos no me cuadra contra el sistema pero si utilizo el numero 15, me cuadra sin problema a que se debe esto?

Y la necesidad es que tengo que utilizar el dato de la tabla OITW con el campo OnHand para que en la misma columna me de el inventario disponible del producto, sin embargo no se como hacer que me “jale” el almacen por default ya que colocandole un inner join a esta tabla me mueve las cantidades.

Muchas gracias por tu ayuda.

Hola @Angel1
El TransType=13 es para facturas, el TransType=14 para notas de crédito, el TransType=15 es para entregas.

La tabla OINM tiene un campo llamado Warehouse, con ese campo tienes que hacer un join a OITW y lograras obtener lo que necesitas.

Saludos.

1 me gusta

Hola Juliosura, pues haciendo algunos cambios ya pude obtener lo que necesito aunque con algunas interrogantes mas, ojala puedas aclaramelo o algien mas pudiera hacerlo:

Tomando como base la consulta que me hiciste favor de indicarme las dudas son las siguientes:

Abri la base OINM en la cual NO TENGO NINGUN MOVIMIENTO ‘13’ supongo que este solo se utiliza si metemos la factura “manual” y las mias vienen de una entrega es decir movimiento ‘15’.

1.¿Debo de considerar entonces en mi consulta colocar tanto 15 como 13?

Al considerar el movimiento 15 “casi” cuadro con el reporte de analisis de ventas que emite sap, y esto es porque el movimiento 15 tambien considera las facturas canceladas.

¿Como puedo identifcar estas y que no lo muestre en el reporte?

y por ultimo, pensando en que mi usuario podria cambiar desde la factura algun item, ya sea añadiendo lineas o borrandolas

¿Es posible restringir a que solo lo que “jale” de la entrega es lo que facture sin poder añadir o borrar lineas?

perdon por tantas lineas pero quiero entender lo mas posible, muchas gracias por tu ayuda y paciencia

@Angel1

No sé que conocimientos tienes y ya que no tienes presentación, como lo menciono @SidV, posiblemente te queden más dudas:

Existe un campo llamado “CANCELED” en las tablas de los documentos de marketing (para diferenciar los cancelados), así que puedes limitar el query haciendo uso de dicho campo. (deberían cancelar facturas únicamente con notas de crédito, como buena práctica)

Si tomas en cuenta solo facturas o entregas o notas de crédito, etc. dependerá de si las usan o no en tu empresa. Generalmente solo se utilizan facturas y notas de crédito ya que al realizar la factura se hace la entrega. Las identificas según el número (13,14,15), para que no lo muestre en el reporte… pues no sé si usas Crystal o es una consulta de usuario, así que no te sabría decir como no mostrarlas en el reporte.

Las facturas una vez creadas no se pueden modificar (agregar o quitar items). La última pregunta no la entiendo.

Saludos,

2 Me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.