Análisis de ventas, cantidad por vendedor por mes

Buen día , tengo este código y quiero sacar la cantidad vendida por agente por mes. Pero revisando las cantidades con el reporte de análisis de ventas por artículos por mes me salen diferencias en algunos meses, no logro que me cuadre la cantidad. Alguien sabe si me falta algo a mi código ?

SELECT DISTINCT Max(T4.[CardCode]) as 'Cliente ', Max(T4.[CardName]) as 'Cliente',  T1.[ItemCode] , Max(T1.[Dscription]) as 'Descripción', Max(T2.[SlpName]) as 'Agente', 

(CASE WHEN MONTH (T0.[DocDate])= 1 THEN  SUM (T1.[Quantity]) ELSE 0 END)  'ENERO',
(CASE WHEN MONTH (T0.[DocDate]) = 2 THEN SUM (T1.[Quantity]) ELSE 0 END) AS FEBRERO,
(CASE WHEN MONTH (T0.[DocDate]) = 3 THEN SUM (T1.[Quantity]) ELSE 0 END) AS MARZO,
(CASE WHEN MONTH (T0.[DocDate]) = 4 THEN SUM (T1.[Quantity]) ELSE 0 END) AS ABRIL,  
(CASE WHEN MONTH (T0.[DocDate]) = 5 THEN SUM (T1.[Quantity]) ELSE 0 END) AS MAYO,
(CASE WHEN MONTH (T0.[DocDate]) = 6 THEN SUM (T1.[Quantity]) ELSE 0 END) AS JUNIO, 
(CASE WHEN MONTH (T0.[DocDate]) = 7 THEN SUM (T1.[Quantity]) ELSE 0 END) AS JULIO, 
(CASE WHEN MONTH (T0.[DocDate]) = 8 THEN SUM (T1.[Quantity]) ELSE 0 END) AS AGOSTO,
(CASE WHEN MONTH (T0.[DocDate]) = 9 THEN SUM (T1.[Quantity]) ELSE 0 END) AS SEPTIEMBRE,
(CASE WHEN MONTH (T0.[DocDate]) = 10 THEN SUM (T1.[Quantity]) ELSE 0 END) AS OCTUBRE,
(CASE WHEN MONTH (T0.[DocDate]) = 11 THEN SUM (T1.[Quantity]) ELSE 0 END) AS NOVIEMBRE,
(CASE WHEN MONTH (T0.[DocDate]) = 12 THEN SUM (T1.[Quantity]) ELSE 0 END) AS DICIEMBRE



FROM OINV T0  
INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
INNER JOIN OSLP T2 ON T0.[SlpCode] = T2.[SlpCode] 
INNER JOIN NNM1 T3 ON T0.[Series] = T3.[Series] 
INNER JOIN OCRD T4 ON T0.[CardCode] = T4.[CardCode]

WHERE (T3.[SeriesName]  BETWEEN  [%0]  AND [%1]) AND (T0.[DocDate] BETWEEN [%2] AND  [%3])

group by T1.[ItemCode] ,  T0.[DocDate]

Debes tomar en cuenta tambien las tablas de cabecera y detalle de las notas de crédito, porque en el reporte de Analisis de Ventas tambien las toma en cuenta, de lo contrario nunca te va a cuadrar, y tomar en cuenta el estatus de cada documento, en caso de que se requiera que la cantidad sea negativa.

Entonces puedes usar Union para que ahora si en una sola tabla te tome todos los documentos con sus cantidades y/o piezas con la cantidad correcta (positiva o negativa)

Ya hice una unión con las notas de crédito y agregue lo demás que me mencionas, pero aun así me sigue saliendo exactamente igual no afecto en nada. Y sigue sin cuadrar las cantidades.
Mi código quedo así.

SELECT DISTINCT
T5.[CardCode] as 'Código del cliente', 
T5.[CardName] as 'Cliente', 
T1.[ItemCode] as 'Código del artículo', 
T1.[Dscription], 
T4.[SlpName],
(CASE WHEN MONTH (T0.[DocDate])= 1 THEN  SUM (T1.[Quantity]) ELSE 0 END) AS 'ENERO',
(CASE WHEN MONTH (T0.[DocDate]) = 2 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'FEBRERO',
(CASE WHEN MONTH (T0.[DocDate]) = 3 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'MARZO',
(CASE WHEN MONTH (T0.[DocDate]) = 4 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'ABRIL',  
(CASE WHEN MONTH (T0.[DocDate]) = 5 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'MAYO',
(CASE WHEN MONTH (T0.[DocDate]) = 6 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'JUNIO', 
(CASE WHEN MONTH (T0.[DocDate]) = 7 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'JULIO', 
(CASE WHEN MONTH (T0.[DocDate]) = 8 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'AGOSTO',
(CASE WHEN MONTH (T0.[DocDate]) = 9 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'SEPTIEMBRE',
(CASE WHEN MONTH (T0.[DocDate]) = 10 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'OCTUBRE',
(CASE WHEN MONTH (T0.[DocDate]) = 11 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'NOVIEMBRE',
(CASE WHEN MONTH (T0.[DocDate]) = 12 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'DICIEMBRE',
CASE 
WHEN T0.[DocStatus] = 'O' THEN 'Abierto'
WHEN T0.[DocStatus] = 'C' THEN 'Cerrado'
End 'Status'


FROM OINV T0  
INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
LEFT JOIN OITM T2 ON T1.[ItemCode] = T2.[ItemCode] 
LEFT JOIN OITB T3 ON T2.[ItmsGrpCod] = T3.[ItmsGrpCod] 
INNER JOIN OSLP T4 ON T0.[SlpCode] = T4.[SlpCode] 
INNER JOIN OCRD T5  ON T5.[CardCode] = T0.[CardCode] 

WHERE  (T0.[DocDate] between [%0] and [%1]) AND (T4.[SlpName] = [%2] )


GROUP BY  T5.[CardCode],T5.[CardName],T1.[ItemCode],T1.[Dscription], T0.[DocDate], T4.[SlpName], T0.[DocStatus]

UNION ALL

SELECT 
T5.[CardCode], 
T5.[CardName], 
T1.[ItemCode], 
T1.[Dscription], 
T4.[SlpName],
(CASE WHEN MONTH (T0.[DocDate])= 1 THEN  SUM (T1.[Quantity]) ELSE 0 END) AS 'ENERO',
(CASE WHEN MONTH (T0.[DocDate]) = 2 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'FEBRERO',
(CASE WHEN MONTH (T0.[DocDate]) = 3 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'MARZO',
(CASE WHEN MONTH (T0.[DocDate]) = 4 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'ABRIL',  
(CASE WHEN MONTH (T0.[DocDate]) = 5 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'MAYO',
(CASE WHEN MONTH (T0.[DocDate]) = 6 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'JUNIO', 
(CASE WHEN MONTH (T0.[DocDate]) = 7 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'JULIO', 
(CASE WHEN MONTH (T0.[DocDate]) = 8 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'AGOSTO',
(CASE WHEN MONTH (T0.[DocDate]) = 9 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'SEPTIEMBRE',
(CASE WHEN MONTH (T0.[DocDate]) = 10 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'OCTUBRE',
(CASE WHEN MONTH (T0.[DocDate]) = 11 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'NOVIEMBRE',
(CASE WHEN MONTH (T0.[DocDate]) = 12 THEN SUM (T1.[Quantity]) ELSE 0 END) AS 'DICIEMBRE',
CASE 
WHEN T0.[DocStatus] = 'O' THEN 'Abierto'
WHEN T0.[DocStatus] = 'C' THEN 'Cerrado'
End 'Status'


FROM ORIN T0  
INNER JOIN RIN1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
LEFT JOIN OITM T2 ON T1.[ItemCode] = T2.[ItemCode] 
LEFT JOIN OITB T3 ON T2.[ItmsGrpCod] = T3.[ItmsGrpCod] 
INNER JOIN OSLP T4 ON T0.[SlpCode] = T4.[SlpCode]  
INNER JOIN OCRD T5  ON T5.[CardCode] = T0.[CardCode]


WHERE   T0.[DocDate] between [%0] and [%1] AND (T4.[SlpName] = [%2] )

GROUP BY T5.[CardCode], T5.[CardName], T1.[ItemCode],T1.[Dscription], T0.[DocDate], T4.[SlpName], T0.[DocStatus]

Y porque no usas el reporte nativo de análisis de ventas?

Porque tengo que agregar otros campos que no vienen en el reporte nativo de análisis de ventas y los requieren.

Como siempre te recomiendo empezar con lo sencillo.

Primero: verificar que el total de unidades de venta - total de unidades de venta de abono en un periodo de tiempo es la cifra que quieres ir desmembrando

Segundo:Ir obteniendo los parciales por meses y ver que sigue cuadrando la cifra

Tercero: Luego añades el resto de join con tablas para incorporar el resto de datos y ver que la cifra sigue cuadrando.

Elizabeth te recomiendo que analices bien la información y todo lo que conlleva el reporte nativo de SAP.

Aparte de la Union, tambien considera condiciones especiales de tu empresa, como las facturas canceladas que también deben estar como negativas o las notas de débito, en mi caso por ejemplo como estoy en México pues considero todas las condiciones fiscales del país, como son el tipo de usos, etc.

Si te parece mandame un mensaje privado y te ayudo a revisar tu caso a detalle. Saludos.

1 me gusta

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.