cancel
Showing results for 
Search instead for 
Did you mean: 

Reporte de Ventas e Inventario

Former Member
0 Kudos

Hola,

Tengo la necesidad de crear un reporte de que me traiga todos los artículos en el inventario y también las ventas de estos artículos, ya tengo la consulta que me trae los artículos y su stock por almacén, mi duda es como hacer la condición o query para que me traiga las ventas de dichos artículos.

Algo así tengo que presentar.

Por el momento tengo esto

SELECT T0.ItemCode as IDArticulo, T0.Dscription Articulo, T0.OnHand AS 'Stock Total', T0.DistNumber Lote,

     T1.WhsCode IDAlmacen, T3.WhsName Almacen,T0.ItmsGrpCod IDGrupo,T0.ItmsGrpNam Grupo, T0.U_UnidadNegocio UnidadNegocio, T1.OnHand Stock, T0.[Vendido],

     T0.U_Color Color, T0.U_Fabric Fabricante, T0.U_Modelo Modelo, T0.U_SeasonPr TemporadaPr , T0.U_Year Año, T0.LastPurPrc UltimoPrecioCompra, T0.Price Precio

FROM

( SELECT T10.ItemCode, T10.Dscription, T11.OnHand, T12.DistNumber, T11.ItmsGrpCod, T13.ItmsGrpNam, T11.U_UnidadNegocio,

  T11.U_Color, T11.U_Fabric, T11.U_Modelo, T11.U_SeasonPr, T11.U_Year, T11.LastPurPrc, T14.Price,

     'Vendido'=(SELECT Count(OutQty) as Vendidos FROM OINM WHERE TransType = 13

               AND ItemCode = T10.ItemCode GROUP BY OutQty)

     FROM INV1 T10 INNER JOIN OITM T11 ON T10.ItemCode = T11.ItemCode

     INNER JOIN OBTN T12 ON T12.ItemCode = T11.ItemCode

     INNER JOIN OITB T13 ON T13.ItmsGrpCod = T11.ItmsGrpCod

     INNER JOIN ITM1 T14 ON T14.ItemCode = T11.ItemCode

     WHERE T11.Onhand > 0 and T14.PriceList = '1'

     GROUP BY T10.ItemCode, T10.Dscription, T11.OnHand, T12.DistNumber, T11.ItmsGrpCod, T13.ItmsGrpNam, T11.U_UnidadNegocio, T11.U_Color, T11.U_Fabric, T11.U_Modelo, T11.U_SeasonPr, T11.U_Year, T11.LastPurPrc, T14.Price) T0

     INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode AND T1.OnHand > 0

     INNER JOIN OWHS T3 ON T3.WhsCode = T1.WhsCode

WHERE T0.ItemCode = '50644582059'

ORDER BY T0.ItemCode

Este query me muestra la siguiente información

hasta el momento me muestra los artículos por almacén y el stock de los mismos, ahora quier saber cuantos artículos se vendieron por almacen, al hacer el query me suma las ventas del artículo pero de todos los almacenes y en la columna de Vendido aparece 8 pero lo correcto es algo como esto.

No se como agregar este query para que divida las ventas por almacén.

Agradezco sus respuesta,

Saludos!

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hola Claudia.

En el query te falta agrupar por almacén y por eso te suma todos los almacenes en el subquery de Vendido. Además que veo usas la función COUNT y lo recomendable sería usar la función SUM.

Intenta editar el subquery de Vendidon para que quede así:

Select sum(OutQty) from OINM JC where JC.TransType = '13' and JC.ItemCode =T0.ItemCode and JC.WhsCode = T0.WhsCode

Revísalo y nos cuentas cómo te fue...

Saludos,

JC.

Former Member
0 Kudos

Hola Juan,

Gracias por tú respuesta, tenias razón ahora ahora el query ya me trae el numero de artículos por almacén.

Sólo que ahora tengo otro problema, tengo el campo stock total que es la suma del articulo en todos los almacenes, pero necesito la suma de artículos por almacén,  como cambie el query para resolver el problema 1, ahora el query me multiplica filas cuando mando traer el OnHand por almacén.

Anteriormente traía el stock total y el stock por almacén de forma correcta pero si antes traía 5 columnas ahora me manda 25, no se porque sucede esto.

el query quedo de está forma:

SELECT T0.ItemCode as IDArticulo, T0.Dscription Articulo, T0.OnHand AS 'Stock Total', T0.DistNumber Lote,

     T0.WhsCode IDAlmacen, T0.WhsName Almacen,

     T1.Onhand as Stock,

     T0.ItmsGrpCod IDGrupo,T0.ItmsGrpNam Grupo, T0.U_UnidadNegocio UnidadNegocio, T0.[Vendido],

     T0.U_Color Color, T0.U_Fabric Fabricante, T0.U_Modelo Modelo, T0.U_SeasonPr TemporadaPr ,

     T0.U_Year Año, T0.LastPurPrc UltimoPrecioCompra, T0.Price Precio

FROM

( SELECT T10.ItemCode, T10.Dscription, T11.OnHand, T12.DistNumber, T11.ItmsGrpCod, T13.ItmsGrpNam, T11.U_UnidadNegocio,

  T11.U_Color, T11.U_Fabric, T11.U_Modelo, T11.U_SeasonPr, T11.U_Year, T11.LastPurPrc, T14.Price, T16.WhsCode, T16.WhsName, t15.Onhand as Stock,

     'Vendido'=(SELECT Sum(OutQty) as Vendidos FROM OINM  WHERE TransType = '13'

               AND ItemCode = T10.ItemCode and Warehouse = T16.WhsCode GROUP BY OutQty)

     FROM INV1 T10 INNER JOIN OITM T11 ON T10.ItemCode = T11.ItemCode

     INNER JOIN OBTN T12 ON T12.ItemCode = T11.ItemCode

     INNER JOIN OITB T13 ON T13.ItmsGrpCod = T11.ItmsGrpCod

     INNER JOIN ITM1 T14 ON T14.ItemCode = T11.ItemCode

     INNER JOIN OITW T15 ON T11.ItemCode = T15.ItemCode AND T15.OnHand > 0

     INNER JOIN OWHS T16 ON T16.WhsCode = T15.WhsCode

     WHERE T11.Onhand > 0 and T14.PriceList = '1'

     GROUP BY T10.ItemCode, T10.Dscription, T11.OnHand, T12.DistNumber, T11.ItmsGrpCod, T13.ItmsGrpNam,

   T11.U_UnidadNegocio, T11.U_Color, T11.U_Fabric, T11.U_Modelo, T11.U_SeasonPr, T11.U_Year,

   T11.LastPurPrc, T14.Price, T16.WhsCode, T16.WhsName, T15.OnHand) T0

  INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode AND T1.OnHand > 0

WHERE T0.ItemCode = '50644582059'

ORDER BY T0.ItemCode

Agradezco su apoyo.

Former Member
0 Kudos

Necesitas ampliar el JOIN T15 (OITW) para que también se haga el match con WhsCode. No tengo acceso de momento a una BD de SAP como para hacer pruebas, pero yo pondría tu INNER JOIN así:

INNER JOIN OITW T15 ON T11.ItemCode = T15.ItemCode and T10.WhsCode = T15.WhsCode AND T15.OnHand > 0

Lo anterior para la "tabla" T0 que construyes para tu FROM principal, y también haz algo similar en el INNER JOIN de OITW general (T1), para que quede así:

INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode and T0.WhsCode = T1.WhsCode AND T1.OnHand > 0

Lo que pasa es que como OITW guarda la información de todos los almacenes, tu query te va estar repitiendo la información si no relacionas también el código de almacén desde alguna tabla.

Espero te sea de utilidad esta información.

Saludos,

JC.