Hola.
tengo esta consulta en SAP B1 para ver ingresos diarios.
la cuestion es que cuando ingreso varios pagos aun mismo recibo me duplica el monto del documento segun el numero de facturas que pago, como puedo resolver ese problema.
SELECT T0."DocNum",
CASE
WHEN (Select T10."GroupNum" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry")='-1' AND T1."InvType"='13' AND
(Select T10."DocType" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry")='I' AND
(Select T10."TotalExpns" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry") = 0 then 'Contado'
WHEN (Select T10."GroupNum" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry") <> '-1' AND T1."InvType"='13' AND
(Select T10."DocType" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry")='I' AND
(Select T10."TotalExpns" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry") = 0 then 'Credito'
WHEN T1."InvType"='203' then 'Anticipo'
WHEN (Select T10."DocType" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry")='S'
OR (Select T10."TotalExpns" FROM OINV T10 Where T10."DocEntry"=T1."DocEntry") > 0 then 'Otros Ingresos'
END as "Tipo",
CASE
WHEN T0."TrsfrSum" > 0 then 'Transferencia'
WHEN T0."CashSum" > 0 then 'Efectivo'
WHEN T0."CheckSum" > 0 then 'Cheque'
WHEN T0."CreditSum" > 0 then 'Tarjeta de Credito'
END as "Forma de Pago",
T0."CardName", T0."DocDate", T0."DocTotal",T1."DocEntry",T0."DocCurr"
FROM ORCT T0 INNER JOIN RCT2 T1 ON T0."DocEntry" = T1."DocNum"
WHERE T0."DocDate" ='2019-09-12'
Hola Gracias por responder…
si usando ese campo me trae el importe de la factura.
pero me sigue duplicando el numero de recibio. y me lo piden resumido.
Pon un union y pegas de nuevo el Query, al primero le pones Null en el campo de DocTotal y al segundo le pones Null a todos los campos excepto a DocNum y DocTotal
Algo así:
SELECT
T0.“DocNum”,
T0.“CardName”,
T0.“DocDate”,
NULL
FROM ORCT T0 INNERJOIN RCT2 T1 ON T0.“DocEntry”= T1.“DocNum”
WHERE T0.“DocDate”=‘2019-09-12’
UNION
SELECT
T0.“DocNum”,
NULL,
NULL,
T0."DocTotal
FROM ORCT T0 INNERJOIN RCT2 T1 ON T0.“DocEntry”= T1.“DocNum”
Si por que es el total del documento de pago por eso te lo repite , la suma de los valores en el campo que te pase dan ese importe
tienes tres facturas afectadas por el pago en tu consulta dices dame lineas ejemplo , 3000, 3000 y 2000 pero ocupas un dato de cabecera que dice dame el total de documento osea el documento de pago en las tres lineas es el mismo documento de pago por eso te lo coloca el campo que te pase dice este es el importe por linea aplicado de ese total de pago
Buen día @nidia,
Para no repetir el numero de recibo, debes quitar el join con la tabla de detalle, ya que al hacer ese join, le estas diciendo que te muestre el detalle del recibo, y si pagas varias facturas con un mismo recibo, te va a “repitir” el numero de recibo.
Tu código quedaría de la siguiente manera:
SELECT T0."DocNum",
CASE WHEN (Select TOP 1 T10."GroupNum" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry")='-1' AND
(SELECT TOP 1 T1."InvType" FROM RCT2 T1) = '13' AND
(Select TOP 1 T10."DocType" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry")='I' AND
(Select TOP 1 T10."TotalExpns" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry") = 0 then 'Contado'
WHEN (Select TOP 1 T10."GroupNum" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry") <> '-1' AND
(SELECT TOP 1 T1."InvType" FROM RCT2 T1) = '13' AND
(Select TOP 1 T10."DocType" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry")='I' AND
(Select TOP 1 T10."TotalExpns" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry") = 0 then 'Credito'
WHEN (SELECT TOP 1 T1."InvType" FROM RCT2 T1) = '203' then 'Anticipo'
WHEN (Select TOP 1 T10."DocType" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry")='S' OR
(Select TOP 1 T10."TotalExpns" FROM OINV T10 INNER JOIN RCT2 T1 ON T10."DocEntry"=T1."DocEntry") > 0 then 'Otros Ingresos'
END as "Tipo",
CASE WHEN T0."TrsfrSum" > 0 then 'Transferencia'
WHEN T0."CashSum" > 0 then 'Efectivo'
WHEN T0."CheckSum" > 0 then 'Cheque'
WHEN T0."CreditSum" > 0 then 'Tarjeta de Credito'
END as "Forma de Pago",
T0."CardName", T0."DocDate", T0."DocTotal", T0."DocCurr"
FROM ORCT T0
WHERE T0."DocDate" ='2019-09-12'
Solo es cuestión de analizar lo que te solicitan, y buscar la forma de enlazar las tablas para lograr una consulta con todo lo que te están pidiendo.
Si te solicitaron el numero de las facturas que se están pagando, entonces sí es necesario el join, y tienes que explicarle que esa consulta les está mostrando exactamente lo que quieren.