Ayuda SAP

Reporte diario de ingresos y duplica el monto

Etiquetas: #<Tag:0x00007f01ae95d510>

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'

Gracias por responder a mi post.
ya intente hacerlo de esa forma, pero persiste el problema.

antes del from agregue esto T1.SumApplied, que va basado en el importe aplicado por linea tienes el dato cabecera por eso te repite

T0.CardName, T0.DocDate, T0.DocTotal, T1.SumApplied, T1.DocEntry,T0.DocCurr

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.

Hola @nidia, puedes intentar lo siguiente:

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 INNER JOIN RCT2 T1 ON T0.“DocEntry”= T1.“DocNum”

WHERE T0.“DocDate”=‘2019-09-12’

UNION

SELECT

T0.“DocNum”,

NULL,

NULL,

T0."DocTotal

FROM ORCT T0 INNER JOIN RCT2 T1 ON T0.“DocEntry”= T1.“DocNum”

WHERE T0.“DocDate”=‘2019-09-12’

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.

Saludos.

1 me gusta

Gracias por responder.
me ayuda mucho su aporte.

1 me gusta