Skip to Content
Author's profile photo Roger Jovel

Antigüedad de Saldos Cliente, Via Query manager

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

Assigned Tags

      18 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Rolando Martinez-Bravo
      Rolando Martinez-Bravo

      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.

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      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.

      Author's profile photo Former Member
      Former Member

      Eres un excelente gracias a tus conocimiento amigo

      Author's profile photo Former Member
      Former Member

      Amigo estoy trabajando en este informe para traer el plazo de los documentos hago un inner join con oinv ?

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      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.

      Author's profile photo Former Member
      Former Member

      Siento ser tan novato pero no se ni donde ponerlo seguiré intentando haber si logro que me de

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      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.

      Author's profile photo Former Member
      Former Member

      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í

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      que me alegra, saludos y a la orden.

      Author's profile photo Former Member
      Former Member

      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',

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      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.

      Author's profile photo Former Member
      Former Member

      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

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      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

      cheque devuelto.png

      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

      Author's profile photo Former Member
      Former Member

      Sap cartera.jpg

      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

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      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.

      Author's profile photo Former Member
      Former Member

      Lastimosamente sigo sin lograrlo 🙁 esto ya me tiene loco cóbrame barato jajajaja

      Author's profile photo Roger Jovel
      Roger Jovel
      Blog Post Author

      escribime a mi correo personal rjovel @ gmail . com

      quita los espacios  porque aca cambia el formato el portal.

      Author's profile photo Former Member
      Former Member

      Hola estimado Roger, super útil tu aporte,  tendrás algún query para Antigüedad de Saldos Proveedores ??