cancel
Showing results for 
Search instead for 
Did you mean: 

INFORME ANALISIS DE VENTAS X ARTICULOS

former_member1210224
Participant
0 Kudos

Buenas tardes,

Alguien me puede ayudar con el query del informe de análisis de ventas x artículos, pues necesito sacar la rentabilidad por artículo vendido y no lo he podido hallar, he probado varios Querys, pero ninguno me cuadra con el que saca SAP directamente, ya tengo el de clientes y el de vendedores.

De antemano les agradezco a quienes me puedan ayudar con este query, pues necesito entregar un informe a la gerencia de forma automático y no he podido.

Un saludo y quedo a la espera de una pronta respuesta.

OSCAR GALLEGO

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

buenas Tardes Tengo un problema espero me puedan ayudar, tengo un proceso almacenado de ventas por articulo por cliente y a la hora de trasladarlo a crystal reports no me cuadra ya no me descuenta las notas de crédito me podrían ayudar??

USE [SBOSIP_ASC2]

GO

/****** Object:  StoredProcedure [dbo].[ASC_ServXcte]    Script Date: 20/06/2016 04:15:57 p.m. ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

-- =============================================

-- Author: <Author,,Name>

-- Create date: <Create Date,,>

-- Description: <Description,,>

-- =============================================

ALTER PROCEDURE [dbo].[ASC_ServXcte]

  -- Add the parameters for the stored procedure here

  @FechaInicial date,

  @FechaFinal  date

AS

BEGIN

   

  -- SET NOCOUNT ON added to prevent extra result sets from

  -- interfering with SELECT statements.

  SET NOCOUNT ON;

    -- Insert statements for procedure here

  SELECT T0.[CardCode] Codigo_Cliente, T0.[CardName] Nombre_Cliente, T0.[DocDate] Fecha_Factura, T0.[DocNum] Num_Factura,

  case when T0.[DocCur]='$' then 'Peso Mexicano' else 'Dólares' end Moneda, T0.[DocRate] Tipo_Cambio,

  T1.[ItemCode] Código_Servicio, T1.[Dscription] Nombre_Servicio, T1.[Quantity] Cantidad,

  T1.[Price] Precio_Unitario, T1.[Quantity] * T1.[Price] Importe, T3.[PymntGroup] Dias_Crédito, T0.[CANCELED] Cancelado,

  T1.[LineTotal] Total_Factura

  FROM OINV T0  INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry]

  INNER JOIN OCRD T2 ON T0.[CardCode] = T2.[CardCode]

  INNER JOIN OCTG T3 ON T0.[GroupNum] = T3.[GroupNum]

  WHERE T0.DocDate BETWEEN @FechaInicial AND @FechaFinal

  AND T0.CANCELED = 'N'

  UNION ALL

  SELECT T0.[CardCode] Codigo_Cliente, T0.[CardName] Nombre_Cliente, T0.[DocDate] Fecha_Factura, T0.[DocNum] Num_Factura,

  case when T0.[DocCur]='$' then 'Peso Mexicano' else 'Dólares' end Moneda, T0.[DocRate] Tipo_Cambio,

  T1.[ItemCode] Código_Servicio, T1.[Dscription] Nombre_Servicio, T1.[Quantity] Cantidad,

  T1.[Price] Precio_Unitario, T1.[Quantity] * T1.[Price] Importe, T3.[PymntGroup] Dias_Crédito, T0.[CANCELED] Cancelado,

  T1.[LineTotal] Total_Factura

  FROM OINV T0  INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry]

  INNER JOIN OCRD T2 ON T0.[CardCode] = T2.[CardCode]

  INNER JOIN OCTG T3 ON T0.[GroupNum] = T3.[GroupNum]

  WHERE T0.CANCELED = 'Y' AND T1.TargetType=13

  AND T0.DocDate BETWEEN @FechaInicial AND @FechaFinal

  AND  month(T0.DocDate) not in (SELECT month (T10.DocDate) FROM OINV T10  INNER JOIN INV1 T11 ON T10.[DocEntry] = T11.[DocEntry]

    WHERE T10.DocEntry=T1.TrgetEntry)

END

bfierro
Active Participant
0 Kudos

Hola Luis.

Es recomendable que crees un nuevo post con tu consulta.

No veo en tu query que tengas la tabla Orin - Rin1(Notas de crédito de Ventas), a no ser que la lógica  de la consulta no sea traer ventas -  Notas de credito en un rango de fechas.

Saludos

Former Member
0 Kudos

Estimado, no se si ya lo resolviste pero yo lo hago asi.. lo podes usar como base para tu reporte, este cuadra contra el analisis de ventas por articulo de modulo de ventas-reportes, uso SBO 8.82

SELECT  ItemCode,

                    Sum(TotFac) - SUM(TotNC) as  'FacturadoNeto',

                    Sum(GBrutaFac)-SUM(GbrutaNC) as  'GBruta',

                    Round((Sum(GBrutaFac)-SUM(GbrutaNC))/

                                        case when  (Sum(TotFac) - SUM(TotNC))= 0 then 1 else (Sum(TotFac) - SUM(TotNC)) end  *100,2) as '% Margen'

FROM (

SELECT

ItemCode = T1.ItemCode,

TotFac = Sum(T1.Linetotal),

GBrutaFac = SUM(T1.GrssProfit),

TotNc= 0,

GbrutaNC = 0

FROM OINV T0 (NOLOCK) INNER JOIN INV1 T1 (NOLOCK) ON T0.DocEntry = T1.DocEntry                                

WHERE (T0.[DocDate] >='20130701' AND  T0.[DocDate] <='20130731')

  and T0.DocType  = 'I' -- solo facturas por articulos

Group by  T1.ItemCode

Union

SELECT

ItemCode = T1.ItemCode,

TotFac = 0,

GBrutaFac = 0,

TotNc= Sum(T1.LineTotal),

GbrutaNC = SUM(T1.GrssProfit)

FROM ORIN T0 (NOLOCK) INNER JOIN RIN1 T1 (NOLOCK) ON T0.DocEntry = T1.DocEntry                                

WHERE (T0.[DocDate] >='20130701' AND  T0.[DocDate] <='20130731')

  and T0.DocType  = 'I' -- solo NC por articulos

Group by T1.ItemCode

) T

Group by  ItemCode

Saludos

RC

Former Member
0 Kudos

Estimado, se agradece la información,

ahora como puedo agregarle el campo nombre del fabricante al informe

ya que cuando agrupo los códigos de los artículos se repiten.

Muchas gracias por tu aporte.

Former Member
0 Kudos

Estimado La Consulta quedaría así


SELECT  ItemCode, 

  Marca,

        Sum(TotFac) - SUM(TotNC) as  'FacturadoNeto', 

        Sum(GBrutaFac)-SUM(GbrutaNC) as  'GBruta', 

        Round((Sum(GBrutaFac)-SUM(GbrutaNC))/case when  (Sum(TotFac) - SUM(TotNC))= 0 then 1 else (Sum(TotFac) - SUM(TotNC)) end  *100,2) as '% Margen' 

FROM ( 

SELECT  

ItemCode = T1.ItemCode,

Marca = (Select T2.FirmName from OMRC T2 JOIN OITM T3 on T2.FirmCode = T3.FirmCode where T3.ItemCode=T1.Itemcode),

TotFac = Sum(T1.Linetotal),  

GBrutaFac = SUM(T1.GrssProfit), 

TotNc= 0, 

GbrutaNC = 0 

FROM OINV T0 (NOLOCK) INNER JOIN INV1 T1 (NOLOCK) ON T0.DocEntry = T1.DocEntry                                  

WHERE (T0.[DocDate] >='20130701' AND  T0.[DocDate] <='20130731') 

  and T0.DocType  = 'I' -- solo facturas por articulos 

Group by  T1.ItemCode

Union 

SELECT  

ItemCode = T1.ItemCode, 

Marca = (Select T2.FirmName from OMRC T2 JOIN OITM T3 on T2.FirmCode = T3.FirmCode where T3.ItemCode=T1.Itemcode),

TotFac = 0, 

GBrutaFac = 0, 

TotNc= Sum(T1.LineTotal),  

GbrutaNC = SUM(T1.GrssProfit) 

FROM ORIN T0 (NOLOCK) INNER JOIN RIN1 T1 (NOLOCK) ON T0.DocEntry = T1.DocEntry                                  

WHERE (T0.[DocDate] >='20130701' AND  T0.[DocDate] <='20130731') 

  and T0.DocType  = 'I' -- solo NC por articulos 

Group by T1.ItemCode

) T 

Group by  ItemCode, Marca 

espero te sirva.

Saludos

RC

Former Member
0 Kudos

Estimado Rodolfo,

ya se resolvió el tema de los servicios, ahora tengo el problema que cuando hay un documento que tiene repetido el mismo articulo con diferentes cantidades

este no lista la cantidad total, solo emite la cantidad de la primera linea en el detalle del documento por lo cual me descuadra los totales finales.

TE DEJO LA CONSULTA REALIZADA,  SI LA PUEDES REVISAR.

Muchas Gracias por tu apoyo.

------ consulta Venta general ( listado de todos los movimientos de ventas y que podemos filtrar.

------ estos incluyen facturas manuales internas, facturas de reserva, facturas electronicas, facturas nulas

------ notas de creditos manuales internas, notas de creditos electronicas, nulas.

------ OBJETIVO EMITIR EN SOLO INFORME TODA LA INFORMACION  DE VENTAS, LA CUAL PUEDE SER ADMINISTRADA POR LOS USUARIOS

------ CON DIFERENTES FILTROS DE FECHAS , TIPO DOCUMENTO, ETC.

---------------------------------------------------------------------------------------------------------------

SELECT T0.[DocNum] ,T0.[FolioNum],T0.isIns,T0.Indicator,

T0.[CardCode], T0.[CardName] as "Nombre Cliente",

t1.itemcode,

t1.dscription,

Marca = (Select T2.FirmName from OMRC T2 JOIN OITM T3 on T2.FirmCode = T3.FirmCode where T3.ItemCode=T1.Itemcode),

T0.[TaxDate] as "Fecha",

T1.[Quantity] as "Cantidad",

CASE

WHEN T0.DocType = 'S' THEN T1.Price

WHEN T0.Discprcnt > 0 and T1.Discprcnt <= 0 THEN  T1.price - (T1.price * T0.Discprcnt)/100

WHEN T0.DiscPrcnt <=0 AND T1.DiscPrcnt <=0 THEN T1.Price

WHEN T0.DiscPrcnt <=0 and T1.DiscPrcnt > 0 THEN T1.Price

WHEN T0.DiscPrcnt > 0 AND T1.DiscPrcnt > 0 THEN T1.price - (T1.price * T0.Discprcnt)/100

  END  as "Precio",

CASE

WHEN T0.DocType = 'S' THEN T1.Price

WHEN T0.Discprcnt > 0 and T1.Discprcnt <= 0 THEN  (T1.price - (T1.price * T0.Discprcnt)/100)* T1.Quantity

WHEN T0.DiscPrcnt <=0 AND T1.DiscPrcnt <=0 THEN T1.[Quantity]* T1.[Price]

WHEN T0.DiscPrcnt <=0 and T1.DiscPrcnt > 0 THEN T1.[Quantity]* T1.[Price]

WHEN T0.DiscPrcnt > 0 AND T1.DiscPrcnt > 0 THEN (T1.price - (T1.price * T0.Discprcnt)/100)* T1.Quantity

END as "Total Linea",

Vendedor = (Select T4.slpname from OSLP T4 JOIN OINV T3 on T4.SlpCode = T3.SlpCode where T3.DocEntry=T1.DocEntry)

FROM OINV T0  INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry

union

SELECT T0.[DocNum] ,T0.[FolioNum],T0.isIns,T0.Indicator,

T0.[CardCode], T0.[CardName] as "Nombre Cliente",

t1.itemcode,

t1.dscription,

Marca = (Select T2.FirmName from OMRC T2 JOIN OITM T3 on T2.FirmCode = T3.FirmCode where T3.ItemCode=T1.Itemcode),

T0.[TaxDate] as "Fecha",

T1.[Quantity] as "Cantidad" ,

CASE

WHEN T0.DocType = 'S' THEN T1.Price * -1

WHEN T0.Discprcnt > 0 and T1.Discprcnt <= 0 THEN  T1.price - (T1.price * T0.Discprcnt)/100

WHEN T0.DiscPrcnt <=0 AND T1.DiscPrcnt <=0 THEN T1.Price *-1

WHEN T0.DiscPrcnt <=0 and T1.DiscPrcnt > 0 THEN T1.Price *-1

WHEN T0.DiscPrcnt > 0 AND T1.DiscPrcnt > 0 THEN T1.price - (T1.price * T0.Discprcnt)/100

  END  as "Precio",

CASE

WHEN T0.DocType = 'S' THEN T1.Price *-1

WHEN T0.Discprcnt > 0 and T1.Discprcnt <= 0 THEN  (T1.price - (T1.price * T0.Discprcnt)/100)* (-T1.Quantity)

WHEN T0.DiscPrcnt <=0 AND T1.DiscPrcnt <=0 THEN (T1.[Quantity]* T1.[Price]* -1)

WHEN T0.DiscPrcnt <=0 and T1.DiscPrcnt > 0 THEN (T1.[Quantity]* T1.[Price]* -1)

WHEN T0.DiscPrcnt > 0 AND T1.DiscPrcnt > 0 THEN (T1.price - (T1.price * T0.Discprcnt)/100)* (-T1.Quantity)

END as "Total Linea",

Vendedor = (Select T4.slpname from OSLP T4 JOIN ORIN T3 on T4.SlpCode = T3.SlpCode where T3.DocEntry=T1.DocEntry)

FROM ORIN T0 INNER JOIN RIN1 T1 ON T0.DocEntry = T1.DocEntry

Muchas gracias por la respuesta, me sirvió mucho.

Aprovechando el tema, cuando se realiza una factura o nota de crédito en la cual no hay articulo solo se usa servicio,

el informe de ventas por articulo no cuadra con el de vendedor o de cliente.

tomando esta misma consulta, como hago para que el informe también incluya esta venta de servicio y asi me cuadre con los otros informes?

De antemano muchas gracias.

Saludos.

JO.

Message was edited by: JAIME OLGUIN