Hola a tod@s. Estoy tratando de realizar un query para consultar los pedidos de compra con sus respectivas facturas, el principal problema que he encontrado es que hay algunos pedidos que tienen entrada de mercancía y a su vez esta entrada se liga a la factura, en fin tengo esta consulta:
SELECT DISTINCT T0.[DocNum], T0.[DocDate], T0.[CardName], T0.[DocCur],
'Subtotal' = CASE T0.[DocCur] WHEN 'MXN' THEN (T0.[DocTotal]-T0.[VatSum]) ELSE (T0.[DocTotalFC]-T0.[VatSum]) END, 'Impuesto' = T0.[VatSum],
'Total' = CASE T0.[DocCur] WHEN 'MXN' THEN T0.[DocTotal] ELSE T0.[DocTotalFC] END,
T2.DocNum, T2.[DocStatus], FE.DocNum
FROM OPOR T0 INNER JOIN POR1 T1 ON T0.[DocEntry] = T1.[DocEntry]
LEFT OUTER JOIN OPCH T2 ON T1.[TargetType] = T2.[ObjType] AND T1.[TrgetEntry] = T2.[DocNum]
INNER JOIN PCH1 T3 ON T2.[DocEntry] = T3.[DocEntry]
LEFT OUTER JOIN
(
SELECT DISTINCT T2.[DocNum], T2.[DocEntry], T1.[BaseType], T1.[BaseEntry]
FROM OPDN T0 INNER JOIN PDN1 T1 ON T0.[DocEntry] = T1.[DocEntry]
LEFT JOIN OPCH T2 ON T1.[TargetType] = T2.[ObjType] AND T1.[TrgetEntry] = T2.[DocNum]
WHERE T1.[BaseType] = '22' AND T1.[TargetType] = '18'
) FE ON FE.[BaseType] = T0.[DocType] AND FE.[BaseEntry] = T0.[DocNum]
WHERE T0.[CANCELED]='N' AND T2.[CANCELED]='N'
El error que tengo es que al traer en el SELECT el campo FE.DocNum, me arroja lo siguiente:
Conversion failed when converting the varchar value ‘I’ to data type int.
La idea es colocar un CASE para traer el valor de la factura según sea el caso (ya sea que parta del pedido o de la entrada de mercancía).
lo primero que me llama la atención es que enlazas el trgetEntry con el docnum; creo que debería ser el docentry del documento destino. Cuando utilizas campos “XXXEntry” no puedes compararlos con el docnum porque el docnum lo parametrizas y puede haber el mismo valor en diferentes ejercicios fiscales; los “XXXEntry” los gestiona SBO y serán únicos siempre.
Gracias por la observación, ya realice la corrección, pero me sigue mandando el mismo error. También intente utilizar CAST y CONVERT, pero me arroja el mismo error.
Hola @Mike1
Tu error esta aquí FE.[BaseType] = T0.[DocType]
Lo primero es que estas comparando dos campos que no tienen ninguna relacion y lo segundo son tipos de datos diferentes.