cancel
Showing results for 
Search instead for 
Did you mean: 

Ventas NETAS

Former Member
0 Kudos

BUenas Tardes:

Tengo el siquiente query:

SELECT * FROM (

SELECT distinct T0.Cardcode' ' T0.Cardname 'Cliente', sum(T0.DocTotal) 'Venta Crèdito' ,0 as Cancelaciones FROM OINV T0 group by T0.Cardcode,T0.Cardname

union all

SELECT T0.Cardcode' ' T0.Cardname, 0,SUM(T0.DocTotal) FROM ORIN T0 GROUP BY T0.Cardcode,T0.Cardname

) AS T88

mi problema esta en que quiero que la columna de cancelaciones que tienen valores me aparezca a un lado de la columna de Ventas crédito correspondiente al cliente ; es decir:

Cliente Ventas Crédito Cancelaciones

01 Claudia 12000 100

y ahorita me aparece de la siguiente forma:

Cliente Ventas Crédito Cancelaciones

01 Claudia 12000 0

01 Claudia 0 100

Gracias!

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member210784
Active Contributor
0 Kudos

Hola.

No debes utilizar Union All en la consulta para que no salgan las devoluciones en filas aparte.

Para la columna donde deben ir las devoluciones colocas una subconsulta que traiga le valor requerido.

Además es mejor restringir el informe a un rango de fechas. Algo así:


SELECT T10.Cliente, SUM(T10.DocTotal) as 'Ventas', SUM(T10.Devoluciones) as 'Devoluciones'
FROM
(
	SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocTotal,
		'Devoluciones'=(SELECT SUM(T1.LineTotal) FROM RIN1 T1 WHERE T1.BaseEntry = T0.DocEntry) 
	FROM OINV T0
	WHERE T0.DocDate BETWEEN '[%0]' AND '[%1]'
) T10
GROUP BY T10.Cliente
ORDER BY T10.Cliente

Respecto a la factura, ¿no deberías tomar el subtotal antes de impuestos y retenciones?.

Espero sea de ayuda.

Saludos.

Edited by: Hector Daniel Hernandez Bacca on Feb 24, 2010 2:56 PM

Former Member
0 Kudos

Hola:

La consulta que me pones me marca errores en el from, la verdad no entendi bien que es lo que estas haciendo? Yo lo que quiero es traer la facturación en una columna y las notas de crédito en otra columna. No tendría que ocupar la table ORIN, de las fechas voy de acuerdo que es mejor en intervalo de fechas, pero no logro correr la consulta que me proporcionas.

Gracias

former_member210784
Active Contributor
0 Kudos

Hola.

¿Copiaste y pegaste la consulta tal cual está en el post?. Aquí corre bien.

La consulta hace lo que estás pidiendo:

- en la col DocTotal trae el toal del documento tal como lo tenías.

- en la col Devoluciones, la subconsulta suma las líneas de las Notas Crédito que tienen como documento base la factura.

Se desarrolla en dos etapas, de manera similar como lo planteaste al principio:

- en la primera etapa se relacionan las facturas con el total de devoluciones con NC.

- en la segunda, se totalizan las facturas y devoluciones por cada cliente (SN).

Hará falta pulirla un cpoco más, de acuerdo a lo que necesites. Por ejemplo lo que te pregunté respecto al subtotal con descuentos y antes de impuestos y retenciones.

Las notas crédito se enlazan a las facturas por las líneas del documento, por eso uso la tabla RIN1 (líneas de documento) y no ORIN (encabezado del documento).

Aquí va de nuevo, con menos espacios:


SELECT T10.Cliente, SUM(SubTotFac) as Venta, SUM(T10.Devoluciones) as Devolucion
FROM
(
SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocNum, T0.DocTotal, 
SubTotFac=(T0.DocTotal+WTSum-VatSum+DiscSum),
'Devoluciones'=(SELECT SUM(T1.LineTotal) FROM RIN1 T1 WHERE T1.BaseEntry = T0.DocEntry) 
FROM OINV T0
WHERE T0.DocDate BETWEEN '20100101' AND '20100131'
) T10
GROUP BY T10.Cliente
ORDER BY T10.Cliente

Quedo en espera de tus comentarios.

Saludos.

Edited by: Hector Daniel Hernandez Bacca on Feb 24, 2010 5:40 PM

former_member210784
Active Contributor
0 Kudos

Hola.

Cuando reemplazas las fechas fijas por variables de entrada, sucede el error que mencionas.

Para que funcione bien copia y pega este código:


/* SELECT FROM [dbo].[OINV] P0 */
DECLARE @F1 AS DATETIME
/* WHERE */
SET @F1 = /* P0.DocDate */ '[%0]'

/* SELECT FROM [dbo].[OINV] P1 */
DECLARE @F2 AS DATETIME
/* WHERE */
SET @F2 = /* P1.DocDate */ '[%1]'

SELECT T10.Cliente, SUM(SubTotFac) as Venta, SUM(T10.Devoluciones) as Devolucion
FROM
(
  SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocNum, T0.DocTotal, 
    SubTotFac=(T0.DocTotal+WTSum-VatSum+DiscSum),
    'Devoluciones'=(SELECT SUM(T1.LineTotal) FROM RIN1 T1 WHERE T1.BaseEntry = T0.DocEntry) 
  FROM OINV T0
  WHERE T0.DocDate BETWEEN @F1 AND @F2
) T10
GROUP BY T10.Cliente
ORDER BY T10.Cliente

Así debe correr bien.

Me cuentas cómo te va.

Saludos.