Buenas Noches a la comunidad de sap , estoy intentando hacer un análisis de venta mensual de los artículos vendidos, pero observo que análisis de ventas del nativo no toma las facturas que se aplicó una nota de crédito , y el query que realice me muestra un análisis de ventas tomando en cuenta las NC y cuando comparó con el nativo no me muestra la misma cantidad vendida del mes estaria muy agradecido quien me brinde la ayuda…
Declare @fromdate as datetime
Declare @Todate as datetime
set @fromdate = ( select min(Ta.[docDate]) from inv1 ta where Ta.[docDate] >= [%0])
set @Todate = ( select max(Tb.[docDate]) from inv1 tb where Tb.[docDate] <= [%1])
SELECT
T0."CardName",
T0."DocDate",
T0."DocNum",
T0.[DocStatus] as Documento,
T0.[DocTotal] as Monto_FAct,
T3."ItemCode",
T3."Dscription",
T3."NoInvtryMv",
T3."Quantity" as Cantidad,
T3."PriceBefDi" as Precio_Venta_Unitario,
T3."StockPrice" as Costo_Unitario_Articulo,
T3."LineTotal" as Venta_Total,
T3."StockValue"as Costo_Venta_Total,
(T3."LineTotal" -
T3."StockValue") as Ganancia,
T0."DiscPrcnt",
T0."DiscSum",
T0."Series"
FROM OINV T0
INNER JOIN INV1 T3 ON T0."DocEntry" = T3."DocEntry"
WHERE T0."DocDate" BETWEEN @fromdate AND @Todate AND T0."CANCELED" ='N' AND T0."DocType"= 'I'
UNION ALL
--Notas Credito
SELECT
T0."CardName",
T0."DocDate",
T0."DocNum",
T0.[DocStatus] as Documento,
T0.[DocTotal] as Monto_FAct,
T3."ItemCode",
T3."Dscription",
T3."NoInvtryMv",
T3."Quantity" as Cantidad,
T3."PriceBefDi" as Precio_Venta_Unitario,
T3."StockPrice" as Costo_Unitario_Articulo,
T3."LineTotal" as Venta_Total,
T3."StockValue" as Costo_Venta_Total,
(T3."LineTotal" -
T3."StockValue") as Ganancia,
T0."DiscPrcnt",
T0."DiscSum",
T0."Series"
FROM ORIN T0
INNER JOIN RIN1 T3 ON T0."DocEntry" = T3."DocEntry"
WHERE T0."DocDate" BETWEEN @fromdate AND @Todate AND T0."CANCELED" ='N' AND T0."DocType" ='I'
ORDER BY "DocDate", "DocNum"
NO entiendo, tu explicación si dice que el nativo no procesa las facturas con notas de credito y en tu query estas adicionando las NC es logico que no te van a coincidir las consultas.
@lxrealmtz , Quiero realizar un reporte del análisis de ventas mensual donde me refleje la cantidad de artículos vendidos, importes de ventas, Ganancia Bruta,% de ganancia bruta . este query que yo realice no me funciona bien ya que me trae el dato de la NC y lo toma como un análisis de ventas incluyendo la factura que se realizó la NC, no se mi explico bien
@lxrealmtz Correcto pero el análisis de ventas del nativo , en su análisis al parecer no toma en cuentas ni la factura que se Aplicó la NC , y tampoco la Nc , corrijanme si no es asi , tendran un análisis parecido al nativo
checa este de articulos, la verdad yo no lo uso ya que lo que nosotros facturamos son servicios.
DECLARE @cambio numeric(22,12 )
SET @cambio=(SELECT avg(T0.[Rate])
FROM ORTT T0
WHERE T0.[Currency] ='MXP'
and T0.[RateDate] between [%0] and [%1])
SET @cambio = IIF(@cambio > 0, @cambio, 1) --VERIFICARMOS QUE LA TASA > 0
SELECT
T1.[ItemCode]
,T2.[SWW]
, T1.[Dscription]
, AVG(T1.[Price]*@cambio)AS 'Precio Prome '
, T2.[AvgPrice]as 'Costo'
,(AVG(T1.[Price]*@cambio)-T2.[AvgPrice]) as'Ganancia'
,((AVG(T1.[Price]*@cambio)-T2.[AvgPrice])/ AVG(T1.[Price]*@cambio))*100 as '%'
,(SELECT
SUM(T4.[Quantity])
FROM
OINV T3 INNER JOIN INV1 T4 ON T3.DocEntry = T4.DocEntry
WHERE
T3.[DocDate] between [%0] and [%1]
and T3.[InvntSttus] <> 'C'
and T4.[ItemCode] =T1.[ItemCode]) as 'Total item Vendidas'
,(T2.[AvgPrice]-(T2.[AvgPrice]*0.2)) as 'Costo -20%'
FROM
OINV T0 INNER JOIN INV1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode
WHERE
T0.[DocDate] between [%0] and [%1]
--and T0.[DocStatus] not Like 'c%%'
-- and T0.[InvntSttus] not Like 'c%%'
and T1.[Price] > 0
and T1.[ItemCode] NOT Like 'PRODUC%%'
GROUP BY
T1.[ItemCode]
,T2.[SWW],T1.[Dscription]
,T2.[AvgPrice]
ORDER BY
T1.[ItemCode]
tengo este otro que es un Reporte de Ventas por Gerente.
espero alguno te ayude.
select T0.CardCode,T0.CardName,T0.DocNum,T3.PymntGroup,T0.DocDate,T4.SlpName,T6.descript 'zona',T7.GroupName 'Tipo Cliente',T8.ListName 'Lista De Precio',T0.DocTotal-T0.VatSum 'brutas'
,(select isnull(SUM(T1.DocTotal - t1.VatSum),0) from ORIN as T1 where T1.TransId = T2.TransId)as Total
from OINV T0
left join OJDT as T2 on convert(varchar,T0.DocNum )= T2.Ref2
INNER JOIN OCTG T3 ON T0.GroupNum = T3.GroupNum
INNER JOIN OSLP T4 ON T0.SlpCode = T4.SlpCode
INNER JOIN OCRD T5 ON T0.CardCode = T5.CardCode
LEFT JOIN OTER T6 ON T5.Territory = T6.territryID
INNER JOIN OCRG T7 ON T5.GroupCode = T7.GroupCode
INNER JOIN OPLN T8 ON T5.ListNum = T8.ListNum
WHERE (T0.[DocDate] BETWEEN [%0] and [%1]) AND T4.[SlpName] = [%2]
El reporte nativo si toma en cuenta las notas de crédito, pero siempre y cuando estén ligadas a las facturas, si las notas de cargo y crédito están sueltas no las veras reflejadas.
@jose_saul_san saludos , Entiendo que si las toma en cuentas , pero te doy un ejemplo sencillo A la hora de sacar un análisis de ventas de las cantidades vendidas de un artículos el mes de Junio , a parte de su importe de ventas y ganancias . el nativo me muestra ese análisis pero si en ese periodo del mes a una factura se le aplicó una nota de crédito parcial es decir que de ese articulo x se le aplicó la NC , el análisis no toma en cuenta ese articulo que se le aplico la NC ,pero el query que yo tengo si me lo toma como un análisis de esa factura , quien me podria ayudar con este análisis como en el nativo ya que desde ahí partiría y le colocaria mas campos
o bien sigue modificando el que tienes que se basa en tus facturas y notas de credito de ventas . como te digo yo no uso esos reporte de los analisis de ventas por que lo que damos son sevicios y nuestros servicos ya incluyen los materiales y como tal los facturamos.
Que tal, yo creo que es por las fechas, debe de existir un campo que indique que tal factura fue copiada a nota de crédito, utilízalo para excluir dichas facturas, de esta manera obtendrás un análisis de ventas con los mismos registros.
Pon dentro del query un filtro (where)para que no te tome la NC, hay un campo que te dice que tipo de documento es, con este campo le puedes decir que lo ignore.