espero que les sea util.
select
T1.cardcode ‘Codigo’,
Convert(char(40),T1.cardname) ‘Nombre’,
t1.Phone1,
case T0.transtype
when ’13’ then ‘Factura’
when ’14’ then ‘Nota Credito’
when ’24’ then ‘Pagos’
else ‘Otro’
end ‘Tipo Trans’,
Ref1 ‘Referencia’,
CONVERT(VARCHAR(10), RefDate, 103) ‘Fecha Docto’ ,
CONVERT(VARCHAR(10), duedate, 103) ‘Vence Docto’,
CASE
when (DATEDIFF(dd,refdate,current_timestamp))+1 < 31
then
case
when syscred <> 0 then isnull(-syscred,0)
else isnull(sysdeb,0)
end
end “0-30 Dias”,
case when ((datediff(dd,refdate,current_timestamp))+1 > 30
and (datediff(dd,refdate,current_timestamp))+1< 61)
then
case
when syscred <> 0 then isnull(-syscred,0)
else isnull(sysdeb,0)
end
end “31 to 60 Dias”,
case when ((datediff(dd,refdate,current_timestamp))+1 > 60
and (datediff(dd,refdate,current_timestamp))+1< 91)
then
case
when syscred <> 0 then isnull(-syscred,0)
else isnull(sysdeb,0)
end
end “61 to 90 Dias”,
CASE
when (DATEDIFF(dd,refdate,current_timestamp))+1 > 90
then
case
when syscred= 0 then isnull(sysdeb,0)
when sysdeb= 0 then isnull(-syscred,0)
end
end “90 + Dias”
from dbo.JDT1 T0 with(nolock)
INNER JOIN
dbo.OCRD T1 with(nolock)
ON T0.shortname = T1.cardcode
and T1.cardtype = ‘c’
where T0.intrnmatch = ‘0’
and T0.BALDUEDEB != T0.BALDUECRED
Roger bastante útil, gracias.
un par de preguntas:
porqué el saldo de la cuenta del SN (Balance) no tiene nada que ver con las transacciones del reporte (pagos, facts, etc) ?
donde puedo conocer más código para hacer queries?
Gracias nuevamente.
no entendi muy bien.
quiza a veces pasa que el balance del cliente no es igual al de las facturas pendientes de pago quiza por reconciliaciones pendientes o reciben pagos pero no lo amarran a la factura, pagos a cuenta, si tienes algun ejemplo podrias hacermelo llegar y seguro resolvemos ese asunto.
Eres un excelente gracias a tus conocimiento amigo
Amigo estoy trabajando en este informe para traer el plazo de los documentos hago un inner join con oinv ?
tienes que hacer un sub query con un case asi por ejemplo
case T0.transtype
when ’13’ then (select docduedate from oinv with(nolock) where docnum=t0.Ref1)
when ’14’ then (select docduedate from orin with(nolock) where docnum=t0.Ref1)
end
espero te sirva.
Siento ser tan novato pero no se ni donde ponerlo seguiré intentando haber si logro que me de
sabes que, no lo ocupas porque el campo
CONVERT(VARCHAR(10), duedate, 103) ‘Vence Docto’,
tiene lo que necesitas, la fecha en que vence el docto.
tienes razón ya lo resolví ahora ando en otro problema y es que al intentar hacer una resta de DataDate contra la fecha de vencimiento al ser un valor tipo cadena me lo impide
También ya lo resolví
que me alegra, saludos y a la orden.
Gracias Roger solo me falta un punto para poner a funcionar este informe necesito agregar un tipo de documento que son los cheques devueltos y que no me muestre nada mas ya que me muestra registros del diario que están afectando el valor de la cartera pero no entiendo para que sirve when ’13’ ?? como agregaria ese when ’25’ then ‘Cheques Devueltos’ end ‘Tipo Trans’, ?
case T0.transtype
when ’13’ then ‘Factura’
when ’14’ then ‘Nota Credito’
when ’24’ then ‘Pagos’
else ‘Otro’
end ‘Tipo Trans’,
ese es el tipo interno de transaccion para sap, lo puse asi para que a nivel de usuario puedas entender que tipo de transaccion es.
el tipo 25 no existe, busca en google sap b1 object types enumeration
y sabras cual es.
Listo ya mire es el 30 pero ahora me aparecen los que no son cheques también como cheques. ya mire que es debido a que estos dos tipos de documentos se realizan por el mismo lugar pero no se como podría evitar para que no se muestren los otros
30 es asientos contables, no cheques devueltos, para que los podas identificar usa codigos de transaccion para los asientos contables, te adjunto una pantalla para que te hagas a la idea
el query al final con lo que pedis quedaria asi:
select
T1.cardcode ‘Codigo’,
Convert(char(40),T1.cardname) ‘Nombre’,
t1.Phone1,
case T0.transtype
when ’13’ then ‘Factura’
when ’14’ then ‘Nota Credito’
when ’24’ then ‘Pagos’
else ‘Otro’
end ‘Tipo Trans’,
t0.Ref1 ‘Referencia’,
t2.TransCode AS ‘Codigo tRANS’,
CONVERT(VARCHAR(10), t0.RefDate, 103) ‘Fecha Docto’ ,
CONVERT(VARCHAR(10), t0.DueDate, 103) ‘Vence Docto’,
DATEDIFF(day,t0.refdate,t0.duedate) as ‘Dias’,
CASE
when (DATEDIFF(dd,t0.RefDate,current_timestamp))+1 < 31
then
case
when syscred <> 0 then isnull(-BALDUECRED,0)
else isnull(sysdeb,0)
end
end “0-30 Dias”,
case when ((datediff(dd,t0.RefDate,current_timestamp))+1 > 30
and (datediff(dd,t0.RefDate,current_timestamp))+1< 61)
then
case
when syscred <> 0 then isnull(-BALDUECRED,0)
else isnull(sysdeb,0)
end
end “31 to 60 Dias”,
case when ((datediff(dd,t0.RefDate,current_timestamp))+1 > 60
and (datediff(dd,t0.RefDate,current_timestamp))+1< 91)
then
case
when syscred <> 0 then isnull(-BALDUECRED,0)
else isnull(sysdeb,0)
end
end “61 to 90 Dias”,
CASE
when (DATEDIFF(dd,t0.RefDate,current_timestamp))+1 > 90
then
case
when syscred= 0 then isnull(sysdeb,0)
when sysdeb= 0 then isnull(-BALDUECRED,0)
end
end “90 + Dias”
from dbo.JDT1 T0 with(nolock)
INNER JOIN
dbo.OCRD T1 with(nolock)
ON T0.shortname = T1.cardcode
and T1.cardtype = ‘C’
inner join
ojdt t2 on t0.transid=t2.transid
where T0.intrnmatch = ‘0’
and T0.BALDUEDEB != T0.BALDUECRED
Esa idea también me había venido a la mente pero como vez solo necesito que salgan los que tienen OKCD y los otros que dicen cheque y están en blanco no eso es lo único que me tiene penando para terminar el informe
te voy a cobrar por tanta pregunta, jajajajajaja, filtralo en crystal, en suprimir ponele
({campo.tipotransaccion})<>”ckde”
o no se como se llame, asi tu crystal lo hara.
Lastimosamente sigo sin lograrlo 🙁 esto ya me tiene loco cóbrame barato jajajaja
escribime a mi correo personal rjovel @ gmail . com
quita los espacios porque aca cambia el formato el portal.
Hola estimado Roger, super útil tu aporte, tendrás algún query para Antigüedad de Saldos Proveedores ??