Error en Query Pagos Efectuados

Buenas tardes amigos, que tengan un buen día, hoy vengo a pedir de su sabiduría, he estado trabajando en un query de pagos efectuados reconciliados, y todo sale bien, excepto en la parte del where final, donde me dice el problema, “error al intentar convertir fecha a cadena” pero las únicas fechas que uso son 2 y ya use el convert, el cast, pero no encuentro la solución, espero me pueden ayudar. Saludos.

Pego el query para que observen su estructura.

SELECT     P1.DocNum AS 'Factura',
           P1.DocDate AS 'Fecha Factura',
           P1.CardName AS 'Proveedor', 
           P1.LicTradNum As 'RFC', 
           P1.NumAtCard AS 'Factura',
           P1.Importe, 
           P1.IVA, 
           P1.WTSum AS 'Retención IVA', 
           P1.Max1099 as 'Total', 
           P2.DocTotal as 'Importe pagado', 
           'Pago' = 'PP'+CAST(P2.DocNum AS VARCHAR)+' - '+'ID'+CAST(P1.ReconNum AS VARCHAR),
           P2.DocDate AS 'Fecha pago'
FROM 
 (SELECT DISTINCT T0.DocNum, 
             T1.ReconNum, 
             T0.CardName, 
             T0.DocDate, 
             T3.LicTradNum, 
             T0.NumAtCard,
             T0.Canceled,
             T2.IsSystem,
             T2.ReconType, 
             'Importe' = IIF(T0.DpmAmnt = 0, T0.Max1099 - T0.VatSum, T0.DpmAmnt - T0.VatSum), 
             'IVA' = IIF(T0.DpmAmnt = 0, T0.VatSum, T0.VatSum + T0.Max1099 - T0.DpmAmnt), 
             T0.WTSum, 
             T0.Max1099  
 FROM OPCH T0 
  INNER JOIN ITR1 T1 ON T0.TransID = T1.TransID 
  INNER JOIN OITR T2 ON T1.ReconNum = T2.ReconNum 
  LEFT JOIN OCRD T3 ON T0.CardCode = T3.CardCode 
 WHERE T0.Canceled = 'N' AND 
           T2.IsSystem = 'N' AND
           T2.ReconType = '0'  AND 
           T1.SrcObjTyp <> '204' AND 
           T1.SrcObjTyp <> '19' AND 
           T1.SrcObjTyp <> '30' AND 
           T1.SrcObjTyp <> '14' AND 
           T1.SrcObjTyp <> '321' AND 
           T1.SrcObjTyp <> '24' AND 
           T1.SrcObjTyp <> '13' AND  
           T1.SrcObjTyp <> '57') P1

   INNER JOIN

 (SELECT DISTINCT T0.DocNum, 
             T1.ReconNum,       
             T0.DocTotal,
             T0.DocDate,
             T1.SrcObjTyp
  FROM OVPM T0 
   INNER JOIN ITR1 T1 ON T0.TransID = T1.TransID 
   INNER JOIN OITR T2 ON T1.ReconNum = T2.ReconNum 
WHERE T1.SrcObjTyp <> '204' AND 
           T1.SrcObjTyp <> '19' AND 
           T1.SrcObjTyp <> '30' AND 
           T1.SrcObjTyp <> '14' AND 
           T1.SrcObjTyp <> '321' AND 
           T1.SrcObjTyp <> '24' AND 
           T1.SrcObjTyp <> '13' AND  
           T1.SrcObjTyp <> '57' AND T2.ReconType = '0' AND T2.IsSystem = 'N')  P2 ON P1.ReconNum = P2.ReconNum
WHERE
 P2.DocDate >= '[%0]' AND P2.DocDate <= '[%1]'

Hola @Enrique1, ¿ya corroboraste la manera en que estás poniendo la fecha? Yo tenía problemas por poner formato DD/MM/AAAA cuando debía usar MM/DD/AAAA.

Hola @JonathanAzael gracias por responder, a lo que comentas, ya hice el convert y cast con el formato 101 que vendría siendo MM/DD/AAAA y aun asi sale el mismo error :confused:

Si lo corres en sql te da el mismo error, yo lo estuve corriendo y los formatos con los que no me dio error fue MM/DD/YYYY y YYYY/MM/DD checa tu sap en que formato lo acomoda

1 me gusta

@Enrique1, lo ejecuté directamente en SQL y no me dio problemas, debe ser algo distinto al momento de pasar los parámetros con las variables, límites de fechas, separador, formato, etc…

@JonathanAzael es el detalle, que lo ejecuto en sql y me sale bien, pero acá en SAP me manda el error, veré si ,modifico la estructura para estar seguro si es algo parecido. @Carlos_Rabiel checare el formato de mi SAP para cambiar la fecha, gracias amigos.

Lo único que se me ocurre es que revises formatos de idioma tanto en el sistema como en SQL y en el equipo en general, que exista algún conflicto

Es lo que estoy checando pero todos tienen formato DD/MM/YYYY :sob:, aver que mas se me ocurre mover, gracias por las ideas

Puedes intentar lo siguiente

Convert(nvarchar,P2.DocDate,103) >= '[%0]' AND Convert(nvarchar,P2.DocDate,103) <= '[%1]'

o si no funciona el convert también pónselo al parametro que estas pidiendo

@Carlos_Rabiel disculpa que no te conteste ayer, no funciono, aparte de que me pidieron nuevas cosas y estoy trabajando en ellas, gracias por la ayuda :smile:

Ya encontré la solución, declare las variables que ocupaba para el filtro por fechas,

DECLARE @FECHA1 DATETIME /* WHERE */ set @FECHA1 = /* F0.DocDate */ '[%0]' /*SELECT FROM [dbo].[OVPM] F0*/ DECLARE @FECHA2 DATETIME /* WHERE */ set @FECHA2= /* F0.DocDate */ '[%1]'

Y ya el filtro agarro bien, gracias a todos amigos por la ayuda.

Este query de pagos efectuados solo muestra los que fueron por reconciliación o los que fueron en automático a un documento también los muestra?

@Un_Tal_Erik_J solo muestra los reconciliados manual, tengo otro para los automáticos, pero puedes modificarlo para que salgan también los automáticos en los where, saludos

Sera posble que puedas compartir ambas consultas precisamente requiero un reporte de esto para el tema de la DIOT

@Un_Tal_Erik_J solo en los where el ReconType le agregas un ‘OR’ y pones que sea = a ‘3’ que son los pagos, así saldran los manuales y los automaticos, tambien en el ‘Pago’, debes agregar un CASE para comparando el ReconType para cuando sea ‘0’ agrege el ID y cuando sea ‘3’ salga solo el pago. Saludos.

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