Skip to Content

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

To report this post you need to login first.

18 Comments

You must be Logged on to comment or reply to a post.

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

    (0) 
    1. Roger Jovel 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.

      (0) 
    1. Roger Jovel 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.

      (0) 
        1. Roger Jovel 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.

          (0) 
          1. Juan Franco

            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í

            (0) 
              1. Juan Franco

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

                (0) 
                1. Roger Jovel 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.

                  (0) 
                  1. Juan Franco

                    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

                    (0) 
                    1. Roger Jovel 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

                      (0) 
                      1. Juan Franco

                        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

                        (0) 
                        1. Roger Jovel 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.

                          (0) 

Leave a Reply