Query Ventas Mostrador restando notas crédito

buenas tardes estoy realizando una consulta de las ventas realizadas en mostrador, por eso los filtro solo con el código del vendedor ( campo T0"SlpCode"), la consulta la estoy realizando de este año restando sus debidas notas crédito y cancelaciones, ya tengo un borrado como quedaría pero me salen valores negativos y ademas me salen facturas del año 2009, aunque ponga fecha del 2018 a alguien le ha pasado y me puede explicar por que se presenta esto

comparto la consulta que tengo gracias

SELECT T0."DocNum", sum(T1."LineTotal"),T2."SlpName" 
FROM OINV T0  
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry" 
INNER JOIN OSLP T2 ON T0."SlpCode" = T2."SlpCode" 
WHERE T0."DocDate"  >=[%1] and  T0."DocDate"  <=[%2] and  T0."CANCELED" = 'N' and   T2."SlpCode" IN (9,30,6,37) AND T1."LineTotal"  not like  '-%%' 
GROUP BY T0."DocNum", T0."DocTotal", T2."SlpName" 

UNION ALL 

SELECT T0."DocNum", sum(T1."LineTotal" * -1), T2."SlpName" 
FROM ORIN T0  
INNER JOIN RIN1 T1 ON T0."DocEntry" = T1."DocEntry" 
INNER JOIN OSLP T2 ON T0."SlpCode" = T2."SlpCode" 
WHERE T0."DocDate"  >=[%1] and  T0."DocDate"  <=[%2] and  T0."CANCELED" = 'N' and   T2."SlpCode" IN (9,30,6,37) AND T1."LineTotal"  not Like '-%%' 
GROUP BY T0."DocNum", T2."SlpName"

Buenas tardes @jeisson_tria1 porque mejor para la consulta no haces esto : WHERE T1.TargetType <> '14' T1 la INV1 para quitar las notas de crédito y no tengas que hacer el union, y probé la consulta de las facturas y funciono bien, intenta sin el union como te dije y me cuentas. saludos :smile:

Hola @jeisson_tria1
Los valores negativos son generados porque el valor de las notas credito las multiplicas por -1

1 me gusta

Prueba esta consulta, esta toma en cuenta la cantidad de artículos pero solo debes ver la estructura y modificara para que te tome en cuenta los campos que requieres.

SELECT T0.Artículo, T0.Descripción, SUM(T0.cantidad) FROM

( SELECT T0.[ItemCode] AS Artículo, T0.[Dscription] AS Descripción, sum(T0.[Quantity]) AS Cantidad FROM INV1 T0 INNER JOIN OINV T1 ON T0.[DocEntry] = T1.[DocEntry] WHERE T1.[DocDate] BETWEEN '20120101' AND '20120131' GROUP BY T0.[ItemCode], T0.[Dscription]

union all

SELECT T2.[ItemCode] AS Artículo, T2.[Dscription] AS Descripción, (-1)* sum(T2.[Quantity]) AS Cantidad FROM RIN1 T2 INNER JOIN ORIN T3 ON T2.[DocEntry] = T3.[DocEntry] WHERE T2.[DocDate] BETWEEN '20120101' AND '20120131' GROUP BY T2.[ItemCode], T2.[Dscription] )

T0

GROUP BY T0.Artículo, T0.Descripción order by T0.Artículo

Hola, buena tarde:

Me permití copiar tu ejemplo y agregar el importe de las lineas, solo que me muestra un renglón para la venta y otro para las devoluciones…

Yo tengo esta query, pero tambien me muestra dos renglones por articulo !!
Sabras que función le hace falta para que solo muestre UN renglón por articulo ???

Saludos y gracias…

SELECT 
T2.[ItemCode] 'clave', 
sum(T0.[Quantity]), 
sum(T0.[LineTotal]) 'Importe', 
sum(T0.[StockValue]) 'costo', 
sum(T0.[LineTotal]-T0.[StockValue]) 'utilidad'

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

WHERE 
T1.[CANCELED] = 'N' AND  T1.[DocDate] >=[%0] AND  T1.[DocDate] <=[%1] AND  T0.[ItemCode] <> 'Anticip Clientes' 

Group By
T2.[ItemCode]

UNION ALL

SELECT 
T2.[ItemCode] 'clave', 
-sum(T0.[Quantity]), 
-sum(T0.[LineTotal]) 'importe', 
-sum(T0.[StockValue]) 'costo', 
-sum((T0.[LineTotal]-T0.[StockValue])) 'utilidad'

FROM 
RIN1 T0  
INNER JOIN ORIN T1 ON T0.[DocEntry] = T1.[DocEntry] 
INNER JOIN OITM T2 ON T0.[ItemCode] = T2.[ItemCode] 

WHERE 
T1.[CANCELED] = 'N' and  T1.[DocDate]  >= [%0] and  T1.[DocDate] <=[%1] AND  T0.[ItemCode] <> 'Anticip Clientes'

Group By
T2.[ItemCode]

Si te fijas, la consulta original tiene esta estructura:

SELECT 
FROM
(
SELECT
FROM
WHERE
GROUP BY

UNION ALL

SELECT 
FROM 
WHERE
GROUP BY
) T0

GROUP BY

Tienes 2 select, cada uno agrupa y suma y al final vuelves a agrupar y sumar, asi que te falta el tercer paso, la agrupación y suma final haciendo uso de otro select.

Ok

Y podrías instruirme como se debe agregar, por favor??

Gracias…

Prueba este codigo.

SELECT T10.Clave, SUM(T10.Total), SUM(T10.Importe),  SUM(T10.Costo), SUM(T10.Utilidad)


FROM
(
SELECT
T2.[ItemCode] AS Clave,
SUM(T0.[Quantity]) AS Total,
SUM(T0.[LineTotal]) AS Importe,
SUM(T0.[StockValue]) AS Costo,
SUM(T0.[LineTotal]-T0.[StockValue]) AS Utilidad

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

WHERE
T1.[CANCELED] = ‘N’ AND T1.[DocDate] >=[%0] AND T1.[DocDate] <=[%1] AND T0.[ItemCode] <> ‘Anticip Clientes’

Group By
T2.[ItemCode]

UNION ALL

SELECT
T2.[ItemCode] AS Clave,
-SUM(T0.[Quantity]) AS Total,
-SUM(T0.[LineTotal]) AS Importe,
-SUM(T0.[StockValue]) AS Costo,
-SUM((T0.[LineTotal]-T0.[StockValue])) AS Utilidad

FROM
RIN1 T0
INNER JOIN ORIN T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OITM T2 ON T0.[ItemCode] = T2.[ItemCode]

WHERE
T1.[CANCELED] = ‘N’ AND T1.[DocDate] >= [%0] AND T1.[DocDate] <=[%1] AND T0.[ItemCode] <> ‘Anticip Clientes’

Group By
T2.[ItemCode]
)

T10
GROUP BY 

T10.Clave

Camilog

Te super agradezco tu ayuda, me acabas de hacer mas productivo mi día…

Soy de área contable, pero me gusta buscar mis propias soluciones y sobre todo, no dejar de aprender…

Sin embargo, quiero pedirte otro favor, claro si me lo permites

Tengo otra query para la parte de compras, pero me hace lo mismo y mas, me muestra un renglon para las entradas, otro para las devoluciones y una tercera, para el “precio de entrega” (en mi caso gastos de importación), es decir, estoy “uniendo” tres tablas, el neto de las transacciones es correcto, pero las unidades no…

Por favor, me puedes ayudar con su complemento???

Ah y sabes si hay algún manual o vídeo donde pueda aprender mas de este tema??

La query es la siguiente:

SELECT
T2.[ItemCode], 
sum(T1.[Quantity]), 
sum(T1.[LineTotal])

FROM
OPDN T0
INNER JOIN PDN1 T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OITM T2 ON T1.[ItemCode] = T2.[ItemCode]

WHERE T0.[CANCELED] = 'N' and  T0.[DocDate]  >= [%0] and  T0.[DocDate] <=[%1]

GROUP BY 
T2.[ItemCode]

Union All

SELECT 
T2.[ItemCode], 
-sum(T1.[Quantity]), 
-sum(T1.[LineTotal])

FROM 
ORPD T0  
INNER JOIN RPD1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
INNER JOIN OITM T2 ON T1.[ItemCode] = T2.[ItemCode] 

WHERE T0.[CANCELED] ='N' and  T0.[DocDate]  >= [%0] and  T0.[DocDate] <=[%1] 

GROUP BY 
T2.[ItemCode]

Union All

SELECT 
T1.[ItemCode], 
sum(T1.[Quantity]), 
sum(T1.[TtlExpndLC])

FROM 
OIPF T0  
INNER JOIN IPF1 T1 ON T0.[DocEntry] = T1.[DocEntry] 

WHERE 
T0.[DocDate] >=[%0] AND  T0.[DocDate] <=[%1] AND  T0.[DocNum] <> '31' AND  T0.[DocNum] <> '42'

GROUP BY 
T1.[ItemCode]

Saludos y nuevamente, gracias…

Camilog

Hola de nuevo, ¿es posible hacer una query con el resultado de las dos querys anteriores??

y en su caso agragar tabla mas, como seria el stock del articulo!!

Saludos…

Señores… una pausa… sus códigos no se formatean en automático, por favor, cuando su comentario incluya código, den el formato correspondiente, por favor.

:wink:

Interesante su tema, saludos.

1 me gusta

Gerardo!! no vi la opción del codigo :confused: pero gracias, lo tendré en cuenta a la próxima. :smile:

1 me gusta

Si es posible, es algo confuso pero si es posible.

Por ejemplo usar las tablas OINV y ORIN para ver el total de ventas, eso lo tienes agrupado en un select, luego haces otro join, esta vez con OITM y OWHS (No estoy seguro de la OWHS ya que no ando en el trabajo), haces la union con el ID de los articulos y hay tendrias:

Saldos de ventas en pesos, saldos de ventas en cantidad de articulos y saldos actuales de stock.

camilog

Gracias, espero hacer el intento en unos días, ya que por ahora debemos empezar a preparar el cierre de mes

Habrás tenido oportunidad de revisar los datos de la segunda query que te comente, es para las compras por articulo y Gastos de importación

Saludos y gracias…

Buena tarde:

¿a que te refieres con el formato?

Por otro lado, quiero saber si te puedo hacer una consulta, es relacionada a este tema, ya que hay una query, a la que le asigne un rango de fecha y cuando lo quiero cambiar por una variable, me muestra un error

Saludos y gracias…

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