Skip to Content

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

18 Comments
You must be Logged on to comment or reply to a post.
  • 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.

    • 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.

        • 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í

          • 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

            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

            /
            cheque devuelto.png
          • 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

            /
            Sap cartera.jpg
          • 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.