esto lo hace ella en excel y lo quiere sacar mas rapido en query manager
tengo la idea de que en si todo sale de facturas de proveedores en teoria pero como puedo saber a que pedido (OC), pedido de entrada de mercancia y pago efectuado (OP), si es que esta pagada la factura, estan ligados a la factura
hola @Gera_Mendez entiendo que pueda ser algo ambigua mi pregunta quiza no la estructure correctamente, el problema no radica en los saldos ni las comparaciones de si han pagado a los proveedores o no, mas bien se encuentra en como obtener del campo comentarios los grupos de numeros a los cuales se hace referencia un pedido, una entrada de mercancia o un pago efectuado
¿Has leído esos enlaces o buscado algo al respecto?
Está explicado en varios posts.
Lo que ves en el mapa de relaciones es la relación entre los distintos documentos y las distintas tablas. La unión de unos documentos con otros se hace a nivel de líneas, cada línea de documento está referenciada a su documento base y a su documento destino, con lo cual puedes construir la información en ambas direcciones.
Ese campo comentarios solo recoje la información de como se encadena la información y es configurable a nivel de sociedad, para que el texto que se ve, sea de una forma u otra.
De hecho si revisas o buscas bien, encontrarás varias querys ya hechas con lo que solicitas.
SELECT T0.[CardCode] as 'Codigo', T0.[CardName] as 'Nombre', T0.[DocNum] as 'Factura', 'Plazo' + ' ' + cast(T1.instlmntid as varchar) + ' ' + 'de' + ' ' + CAST(t0.Installmnt as varchar) as 'Plazo', cast(t0.[FolioPref] as varchar) + '-' + cast(T0.[FolioNum] as varchar) as 'Folio', T0.docdate as 'Fecha Creación', t1.[DueDate] as 'Fecha Vencimiento', case when (datediff(day,T1.[DueDate],getdate())< 0) then 0 else datediff(day,T1.[DueDate],getdate()) end as 'Días de Atraso', case when (datediff(day,T1.[DueDate],getdate())< 0) then datediff(day,T1.[DueDate],getdate())*-1 else 0 end as 'Días Para Pago', T0.DocTotal as 'Importe Original', (T1.[InsTotal] - T1.[VatSum]) as 'SubTotal', t1.[VatSum] as 'IVA', t1.[InsTotal] as 'Total', t1.PaidToDate as 'Pagado', t1.[InsTotal] - t1.paidtodate as 'Por Pagar', Case t1.[Status] When 'O' Then 'Abierta' End as 'Status Doc' FROM OPCH T0 inner join PCH6 t1 on t0.docentry = t1.docentry WHERE T0.DocDate >= '[%0]' and t0.DocDate <= '[%1]' and t1.[Status] = 'O' order by T1.instlmntid, t1.[VatSum], T0.docdate
Es lo que trato de explicarte en los links que te he enlazado, esa información se guarda de manera interna y la relación entre documentos se basa en lo siguiente:
al final fue mas simple de lo que yo pensaba aqui el query que aceptaron funcionando
select T0.[CardCode], T0.[CardName], T0.[DocEntry], T0.[DocNum],
case when T0.[DocCur] = ‘USD’ then T0.[DocTotalFC]
when T0.[DocCur] = ‘MXP’ then T0.[DocTotal] end AS [Total Documento],
case when T0.[DocCur] = ‘USD’ then T0.[PaidSumFc]
when T0.[DocCur] = ‘MXP’ then T0.[PaidSum] end as [Total Aplicado],
case when T0.[PaidSum] = T0.[DocTotal] then ‘PAGADO’
when T0.[PaidSum] < T0.[DocTotal] then ‘PENDIENTE’ END AS [STATUS] ,
T0.[DocDate], T0.[DocDueDate], cast(DATEDIFF(DAY, T0.[DocDueDate], GETDATE()) as varchar) + ’ Dias vencidos’ [Vencimiento]
from OPCH T0 WHERE T0.[CANCELED] = ‘N’ and T0.[CardName] = ‘[%0]’ and T0.[DocDate] between ‘[%1]’ and ‘[%2]’
Es de traca, la matraca…
Tu consulta de solución no resuelve la problemática que contabas en el enunciado…
Además que no has seguido ninguna recomendación…para que lo intentarás…
Una de dos…
1.- O enunciaste mal
2.- O resolviste mal