Query SQL para Reporte de Comisiones

No se si ponerlo acá o no, pero creo que si, ya que es referente a un reporte de SP B1.

Bien tengo que hacer un reporte para pagar comisiones a mis vendedores. El tema es que he enfrentado el QUERY desde dos perspectivas:
1- Usando el Pago
2- Usando la Factura
Desde cualquier forma cada vez que hago el INNER JOIN al Detalle del Pago (RCT2) me duplica o triplica los registro y si la factura tiene mas de 1 detalle eso hace por cada uno. Entonces no sabría como enfrentar dicha situación. Por qué tengo que mirar el detalle del pago? Es que es el único que me víncula con la Factura; porque ORCT NO TIENE ENLACE DIRECTO CON OINV o al menos no he podido encontrarlo.

SELECT 
	T0."DocEntry" AS DocEntryFac, 
	T0."NumAtCard" AS No_Factura, 
	T1."ItemCode" AS Cod_Prod, 
	T1."Dscription" AS Prod,
	T0."CardCode" AS Cod_Cliente, 
	T0."CardName" AS Cliente, 
	T0."DocCur" AS Moneda, 
	T1."GTotal" AS Mnt_Linea, 
	T0."DocTotal" AS Mnt_Factura,
	CASE 
		WHEN T2."U_FC_Afect" != '' THEN 'SI' 
		ELSE 'NO' 
	END AS N_Cred,
	CASE 
		WHEN T2."U_FC_Afect" != '' AND T7."ItemCode" = 'FLE-VTAS' THEN 0 
		WHEN T2."U_FC_Afect" != '' AND T7."ItemCode" != 'FLE-VTAS' THEN (T1."GTotal" - T2."DocTotal")	
		ELSE 0 
	END AS Mnt_Final,  
	T8."SlpName" AS Vendedor,
	CASE 
		WHEN T7."U_GRP_COM" != '' AND T8."SlpCode" = 1 THEN (SELECT "U_RRS" FROM "RUMIX"."@COMISIONES" WHERE "U_GRUPO" = T7."U_GRP_COM") 
		WHEN T7."U_GRP_COM" != '' AND T8."SlpCode" = 2 THEN (SELECT "U_JBS" FROM "RUMIX"."@COMISIONES" WHERE "U_GRUPO" = T7."U_GRP_COM") 
		WHEN T7."U_GRP_COM" != '' AND T8."SlpCode" = 3 THEN (SELECT "U_BGK" FROM "RUMIX"."@COMISIONES" WHERE "U_GRUPO" = T7."U_GRP_COM") 
		WHEN T7."U_GRP_COM" != '' AND T8."SlpCode" = 4 THEN (SELECT "U_STB" FROM "RUMIX"."@COMISIONES" WHERE "U_GRUPO" = T7."U_GRP_COM") 
		WHEN T7."U_GRP_COM" != '' AND T8."SlpCode" = 6 THEN (SELECT "U_GKF" FROM "RUMIX"."@COMISIONES" WHERE "U_GRUPO" = T7."U_GRP_COM") 
		WHEN T7."U_GRP_COM" != '' AND T8."SlpCode" = 7 THEN (SELECT "U_LIB" FROM "RUMIX"."@COMISIONES" WHERE "U_GRUPO" = T7."U_GRP_COM") 
		WHEN T7."U_GRP_COM" != '' AND T8."SlpCode" = 8 THEN (SELECT "U_ERG" FROM "RUMIX"."@COMISIONES" WHERE "U_GRUPO" = T7."U_GRP_COM") 
		ELSE 0 
	END AS por100
-- FACTURA --
FROM "RUMIX"."OINV" T0 
	-- DETALLE DE FACTURA --
	INNER JOIN "RUMIX"."INV1" T1 ON T0."DocEntry" = T1."DocEntry"
	-- NOTAS DE CREDITO --
	LEFT JOIN "RUMIX"."ORIN" T2 ON T0."NumAtCard" = T2."U_FC_Afect" AND T2."CANCELED" = 'N'
	-- DETALLES DEL PAGO --
	INNER JOIN "RUMIX"."RCT2" T3 ON T0."DocEntry" = T3."DocEntry" 
	-- ARTICULOS --
	LEFT JOIN "RUMIX"."OITM" T7 ON T1."ItemCode" = T7."ItemCode"  
	-- VENDEDORES --
	INNER JOIN "RUMIX"."OSLP" T8 ON T0."SlpCode" = T8."SlpCode" 
WHERE T0."NumAtCard" = '001-001-0002692'

Esto es lo más sencillo, lo cierto es que así me duplica cada línea de mi detalle. Y si le saco la línea

INNER JOIN "RUMIX"."RCT2" T3 ON T0."DocEntry" = T3."DocEntry" 

Ya no las duplica.

Alguna ilustración al respecto?
Saludos,
David

Creo haber encontrado la respuesta yo mismo. Agregué después de “Mnt_Factura” esta línea:

(SELECT SUM("SumApplied") FROM "RUMIX"."RCT2" WHERE "DocEntry" = T0."DocEntry") AS Total_Pago,

Y así ya creo que tengo el dato; aún así hay datos que debo sacar de ORCT que no sabría. Si me pueden dar una idea de como sacar datos de ORCT?.

Gracias,
David

Bueno al final procedí a hacer un Group BY todos los campos y así se estableció un solo registro. Por cada detalle de Factura. Ahora si se terminó.

Saludos,
David

1 me gusta

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