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