{
-------------------------------------------------------------------------------
PROGRAMA             :  TEPRRP001
OBJETIVO             :  Validacion de Depositos Por Banco
PROGRAMADOR          :  Tadeo A. Ferreras 
FECHA REALIZACION    :  Sept. 28, 1993 
-------------------------------------------------------------------------------
}
GLOBALS "teprgb000.4gl"

    DEFINE fecha1,fecha2,fecha_corte DATE ,
           opt5 CHAR(1)
  
##### Definicion de las variables del reporte
    DEFINE deposito1 RECORD
           num_doc        SMALLINT,
           cuenta_no      CHAR(8),
           descripcion    CHAR(46),
           cta_banco      CHAR(13),
           procedencia    SMALLINT,
           descrip2       CHAR(30),
           fecha          DATE,
           monto          DECIMAL(12,2)
    END RECORD

 ###### Funcion de busqueda de informteion
FUNCTION teprrp001()

#   WHENEVER ERROR CONTINUE

    OPTIONS
       FORM LINE 8,
       ERROR LINE 23,
       COMMENT LINE 21,
       PROMPT LINE 14

    OPEN FORM tefmrp001 FROM "tefmrp001"
    DISPLAY FORM tefmrp001
    CALL pantalla()
    DISPLAY "teprrp001" AT 4,3 ATTRIBUTE(RED)
    DISPLAY "Validacion de Depositos Por Banco" AT 6,24 ATTRIBUTE(BLACK)

    LET tipo_papel = 1
    CALL msgrp000(tipo_papel)
    CALL defecto(impresor) RETURNING imprime,letras.*,archivo

# Creando el criterio de busqueda de informteion 
  
  INPUT BY NAME fecha1,fecha2
    ON KEY(CONTROL-P)
      CALL busca_printer() RETURNING imprime,letras.*,archivo

  AFTER FIELD fecha1    
     IF fecha1 IS NULL THEN
        LET numero_msg = 16
        CALL msg(numero_msg)
        NEXT FIELD fecha1
     END IF

  AFTER FIELD fecha2    
     IF fecha2 IS NULL THEN
        LET numero_msg = 16
        CALL msg(numero_msg)
        NEXT FIELD fecha2
     END IF

     IF fecha1 > fecha2 THEN
        LET numero_msg = 189
        CALL msg(numero_msg)
        NEXT FIELD fecha1
     END IF
  END INPUT
  
     IF int_flag THEN
        LET numero_msg = 2
        CALL msg(numero_msg)
        LET int_flag = FALSE
        RETURN
     END IF

CONSTRUCT criterio ON c.cuenta_no,c.num_doc,c.procedencia
                   FROM cuenta_no,num_doc,procedencia
    ON KEY(CONTROL-P)
      CALL busca_printer() RETURNING imprime,letras.*,archivo

    AFTER CONSTRUCT
      EXIT CONSTRUCT
  END CONSTRUCT

    LET parametro = "D"
    CALL elijeimpresion(parametro) RETURNING orden,destino,letras.*

              IF int_flag THEN
                 LET numero_msg = 2
                 CALL msg(numero_msg)
                 LET int_flag = false
                 RETURN
              END IF
 ##### Selecionando la prima del dolar actual

 LET selec = 
"SELECT c.num_doc,c.cuenta_no,a.descripcion,c.cta_banco,c.procedencia, ",
"       b.descripcion,c.fecha,c.monto ",
"FROM tetb00001 c,cgtb00001 a,tetb00002 b ",
"WHERE a.cuenta_no = c.cuenta_no AND c.status_t IS NULL AND ",
"      c.procedencia = b.procedencia AND b.status_t IS NULL AND ",
"      c.fecha BETWEEN ? AND ? AND ",criterio CLIPPED

    DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
                ATTRIBUTE (REVERSE,BOLD)

   PREPARE comando FROM selec 
   DECLARE busca1 CURSOR FOR comando       
   OPEN busca1 USING fecha1,fecha2

   START REPORT deposito1s TO archivo
      
   DISPLAY "                                                " AT 19,14
   DISPLAY "<< Reporte Generandose ...  Por Favor Espere. >>"
           AT 19,14 ATTRIBUTE (REVERSE) 

   WHILE STATUS != NOTFOUND 
         FETCH busca1 INTO deposito1.*

         IF STATUS = NOTFOUND THEN
            EXIT WHILE
         END IF

         IF int_flag THEN
            LET numero_msg = 2
            CALL msg(numero_msg)
            LET int_flag = false
            RETURN
         END IF

         DISPLAY deposito1.num_doc   AT 21,20 
         DISPLAY deposito1.cuenta_no AT 21,35 

         OUTPUT TO REPORT deposito1s(deposito1.*)  
   END WHILE
   FINISH REPORT deposito1s 
   #RUN imprime
   CALL fdestino(destino,archivo,imprime)
   CLEAR SCREEN
END FUNCTION

 #### Funcion que genera el reporte
REPORT deposito1s(x)
    DEFINE x RECORD
           num_doc        INTEGER,
           cuenta_no      CHAR(8),
           descripcion    CHAR(46),
           cta_banco      CHAR(13),
           procedencia    SMALLINT,
           descrip2       CHAR(30),
           fecha          DATE,
           monto          DECIMAL(12,2)
    END RECORD
    DEFINE descr CHAR(30)

    DEFINE hora CHAR(5)
    DEFINE fecha5 DATE 
    DEFINE dias   INTEGER
    DEFINE tasa,deprec DECIMAL(8,2)
    DEFINE valor_libro,depr_teum,total1 DECIMAL(12,2)
    DEFINE total2,total3,total4,total5 DECIMAL(12,2)

    OUTPUT
       TOP MARGIN 0
       LEFT MARGIN 0
       BOTTOM MARGIN 2

    ##### Sorteando la salida de la informteion

    ORDER BY x.cuenta_no,x.procedencia,x.num_doc

    FORMAT
      PAGE HEADER

        LET hora = time

           PRINT COLUMN   1, letras.comp_on,letras.negrillas_on
           PRINT COLUMN   1, "teprrp001",
                 COLUMN  20, "R A Y . O . V A C  D O M I N I C A N A,  S. A.",
                 COLUMN  78, "Pag. ",pageno USING "###"
           PRINT COLUMN  20, "             Sistema de Tesoreria             ",
                 COLUMN  78, today using "dd/mm/yy"
           PRINT COLUMN  20, "      Validacion de Depositos Por Bancos      ",
                 COLUMN  81, hora
           PRINT COLUMN  31, "Del ",fecha1 USING "dd/mm/yy"," Al ",
                                    fecha2 USING "dd/mm/yy"   #,letras.normal,
                              #letras.comp_on

          PRINT COLUMN 1, "--------------------------------------------------",
                          "--------------------------------------------------",
                          "--------------------------------------------"
                         
           PRINT COLUMN   1, "Banco",
                 COLUMN  60, "Procedencia",
                 COLUMN  91, "Cta. Banco",
                 COLUMN 107, "Num. Dcto.",
                 COLUMN 122, "Fecha",
                 COLUMN 136, "Monto"

          PRINT COLUMN 1, "--------------------------------------------------",
                          "--------------------------------------------------",
                          "--------------------------------------------"
                          , letras.negrillas_off

      BEFORE GROUP OF x.cuenta_no   
             LET total1 = 0 

             PRINT COLUMN   1,letras.negrillas_on
             PRINT COLUMN   1,x.cuenta_no," ",x.descripcion;

       BEFORE GROUP OF x.procedencia
              LET total2 = 0
             PRINT COLUMN  60,letras.negrillas_off,x.procedencia USING "&",
                              " ",x.descrip2;

      ON EVERY ROW
         IF x.monto IS NULL THEN
            LET x.monto = 0
         END IF
            
         IF total3  IS NULL THEN
            LET total3  = 0
         END IF
 
         LET total1 = total1 + x.monto
         LET total2 = total2 + x.monto
         LET total3 = total3 + x.monto

         PRINT COLUMN  91,x.cta_banco,
               COLUMN 109,x.num_doc USING "&&&&&&",
               COLUMN 121,x.fecha USING "dd/mm/yy", 
               COLUMN 130,x.monto USING "###,###,###.##"

              #### Acumulando los totales de las columnas por cuenta

    AFTER GROUP OF x.procedencia
          PRINT COLUMN   1,letras.negrillas_on 
          PRINT COLUMN 105,"Total Por Procedencia :",
                COLUMN 130,total2 USING "###,###,###.##"
          PRINT COLUMN   1,letras.negrillas_off
          LET Total2 = 0

    AFTER GROUP OF x.cuenta_no  
          PRINT COLUMN   1,letras.negrillas_on 
          PRINT COLUMN 105,"Total Por Cuenta :",
                COLUMN 130,total1 USING "###,###,###.##"
          PRINT COLUMN   1,letras.negrillas_off
          LET Total1 = 0

    ON LAST ROW
          PRINT COLUMN   1,letras.negrillas_on 
          PRINT COLUMN 105,"Total General :",
                COLUMN 132,total3 USING "###,###,###.##"
          PRINT COLUMN   1,letras.normal,letras.negrillas_off
                           LET total1 = 0
                           LET total2 = 0
                           LET total3 = 0
     END REPORT

