{
-------------------------------------------------------------------------------
PROGRAMA             :  VEPRRP003
OBJETIVO             :  Comisiones por Ventas  
PROGRAMADOR          :  Juan Fco. Soto           
FECHA REALIZACION    :  Mayo 27, 1993   
-------------------------------------------------------------------------------
}
GLOBALS "teprgb000.4gl"

    DEFINE mes SMALLINT
    DEFINE cod_cia SMALLINT
FUNCTION teprrp003()

    DEFINE vendedor RECORD
          cod_vend       SMALLINT,
          sec_vend       SMALLINT,
          fecha_factura  DATE,    
          factura        INTEGER,  
          cod_n          SMALLINT,
          cod_grupo      SMALLINT,
          cod_tipo       SMALLINT,
          cod_sec        SMALLINT,
          cantidad       INTEGER  ,
          porc_venta     DECIMAL(10,4),
          precio         DECIMAL(10,2),
          descrip_esp    CHAR(30),
          nombre_vend    CHAR(30), 
          apellido_vend  CHAR(30) ,
          vende          CHAR(6)
     END RECORD

    #WHENEVER ERROR CONTINUE

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

    OPEN FORM tefmrp003 FROM "tefmrp003"
    DISPLAY FORM tefmrp003
    CALL pantalla()
    DISPLAY "teprrp003" AT 4,3 ATTRIBUTE(RED)
    DISPLAY " Comision por Ventas  " AT 6,29 ATTRIBUTE(BLACK)

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

   INPUT BY NAME cod_cia,mes
     ON KEY(CONTROL-P)
        CALL defecto(impresor) RETURNING imprime,letras.*,archivo
    AFTER INPUT
      EXIT INPUT
    END INPUT

  CONSTRUCT criterio ON a.cod_vend, a.sec_vend,a.ventas,b.cod_n,b.cod_grupo,
                        b.cod_tipo,b.cod_sec
                   FROM cod_vend,sec_vend,ventas,cod_n,cod_grupo,cod_tipo,
                        cod_sec
     ON KEY(CONTROL-P)
        CALL defecto(impresor) 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

      START REPORT comision TO "oscar" #archivo  

    DISPLAY "                                                     " AT 19,14
    DISPLAY "<< Buscando Las Informaciones... Espere Por Favor  >>" AT 19,14

      LET selec =
         "SELECT a.cod_vend,a.sec_vend,a.fecha_factura,a.factura,b.cod_n, ",
         "       b.cod_grupo,b.cod_tipo,b.cod_sec,b.cantidad,d.porc_ventas, ",
         "       b.precio ",
         "FROM vetb00002 a,vetb00003 b,vetb00011 d, prdtable c ",
         "WHERE a.fecha_factura between c.fecha_inicio AND c.fecha_corte AND ",
         "      a.factura=b.factura AND c.mes=? AND a.cod_vend=d.cod_vend AND ",
         "      a.sec_vend = d.sec_vend AND b.cod_n = d.cod_n AND ",
         "      b.cod_grupo = d.cod_grupo AND b.cod_tipo = d.cod_tipo AND ",
         "      b.cod_sec = d.cod_sec AND a.cod_cia = ? AND ",criterio clipped,
         "  AND a.status_t is null ORDER BY 1,2,4"

      PREPARE b_vende FROM selec
      DECLARE c_vende CURSOR FOR b_vende
      OPEN c_vende USING mes,cod_cia

    DISPLAY "                                                     " AT 19,14
    DISPLAY "<< Reporte Generandose... Espere Por Favor  >>" AT 19,14

      WHILE STATUS != NOTFOUND
      FETCH   c_vende INTO vendedor.*
      IF status = notfound THEN
         EXIT WHILE
      END IF
       SELECT a.descrip_esp INTO vendedor.descrip_esp FROM intb00001 a
       WHERE a.cod_n = vendedor.cod_n and a.cod_grupo = vendedor.cod_grupo and
             a.cod_tipo = vendedor.cod_tipo and a.cod_sec  = vendedor.cod_sec

       SELECT a.nom_emp,a.apell_emp 
       INTO vendedor.nombre_vend,vendedor.apellido_vend
       FROM adtb00003 a 
       WHERE a.cod_emp = vendedor.cod_vend and a.cod_emp_sec = vendedor.sec_vend

       LET vendedor.vende = vendedor.cod_vend using "&&",
                            vendedor.sec_vend using "&&&&"

       OUTPUT TO REPORT comision (vendedor.*)
    END WHILE

   FINISH REPORT comision
   #RUN imprime
   #CALL fdestino(destino,archivo,imprime)
   CLEAR SCREEN
END FUNCTION
REPORT comision(x)
    DEFINE x RECORD
          cod_vend       SMALLINT,
          sec_vend       SMALLINT,
          fecha_factura  DATE,    
          factura        INTEGER,  
          cod_n          SMALLINT,
          cod_grupo      SMALLINT,
          cod_tipo       SMALLINT,
          cod_sec        SMALLINT,
          cantidad       INTEGER  ,
          porc_venta     DECIMAL(10,4),
          precio         DECIMAL(10,2),
          descrip_esp    CHAR(30),
          nombre_vend    CHAR(30), 
          apellido_vend  CHAR(30) ,
          vendedor       CHAR(6)  
    END RECORD

    DEFINE nombre_mes CHAR(10)
    DEFINE total_clientes INTEGER 
    DEFINE hora CHAR(5)
    DEFINE i SMALLINT
    DEFINE porc DECIMAL(10,4)
    DEFINE total_gen,total_vend,valor_pagar DECIMAL(12,2)

    OUTPUT
      TOP MARGIN 0
      LEFT MARGIN 0
      BOTTOM MARGIN 4

    ORDER BY x.vendedor,x.factura

    FORMAT
      PAGE HEADER
        LET hora = time
        CALL meses()
        LET nombre_mes = mes1[mes]

        PRINT COLUMN 1,  letras.doce, letras.negrillas_on 
        PRINT COLUMN 1, "teprrp003",
              COLUMN 27, "R A Y . O . V A C  D O M I N I C A N A,  S. A.",
              COLUMN 92, "Pag. ",pageno using "###"
        PRINT COLUMN 41, "Sistema de Ventas ",
              COLUMN 90, today using "dd/mm/yyyy"
        PRINT COLUMN 34, "Relacion comision por Vendedor",
              COLUMN 95, hora, letras.negrillas_off

        PRINT COLUMN 40, letras.doble_on,nombre_mes,letras.doble_off
        IF cod_cia = 1 THEN
            PRINT COLUMN 1, "Rayovac Dominicana"
        ELSE
           PRINT COLUMN 1, "Distribuidora Dominicana de Pilas"
        END IF

        SKIP 1 LINES
        PRINT COLUMN 1, "--------------------------------------------------",
                        "--------------------------------------------------", 
                        "--------------------"
        PRINT COLUMN 93, "COMISION"

         PRINT COLUMN   2, "FACTURA",   
              COLUMN  10, "FECHA",
              COLUMN  20, "PRODUCTO",
              COLUMN  66, "PRECIO",
              COLUMN  75, "UNIDADES",    
              COLUMN  84, "COMISION",     
              COLUMN  93, "A PAGAR" 

              PRINT COLUMN 1, 
                    "--------------------------------------------------", 
                    "--------------------------------------------------", 
                    "--------------------"

      IF total_gen is null THEN
         LET total_gen = 0
      END IF
      SKIP 1 LINE
      BEFORE GROUP OF x.vendedor
             LET total_vend = 0
             PRINT COLUMN  1,letras.doble_on,"VENDEDOR : ", 
                             x.nombre_vend clipped," ",
                             x.apellido_vend clipped, letras.doble_off 

             SKIP 1 LINE
      ON EVERY ROW

             IF cod_cia = 1 THEN
                LET valor_pagar = x.cantidad * x.porc_venta
                LET porc = x.porc_venta 
             ELSE
                LET valor_pagar = (x.cantidad * x.precio) * (x.porc_venta / 100)
                LET porc = x.porc_venta / 100
             END IF

             PRINT COLUMN 1, x.factura using "&&&&&&",
                   COLUMN 9, x.fecha_factura using "dd/mm/yyyy",
                   COLUMN 20, x.cod_n using "&","-",x.cod_grupo using "&","-",
                              x.cod_tipo using "&&","-",x.cod_sec using "&&&", 
                              " ",x.descrip_esp," ";
             IF cod_cia = 2 THEN                                 
                PRINT COLUMN 63, x.cantidad * x.precio using "##,###,###";
             END IF

             PRINT COLUMN 74, x.cantidad using "###,###",
                   COLUMN 84, porc using "###.####",
                   COLUMN 91, valor_pagar using "###,###.##"

            LET total_vend = valor_pagar + total_vend

      AFTER GROUP OF x.vendedor
            PRINT COLUMN 91, "----------"
            PRINT COLUMN  50, "Total A Pagar: ",
                  COLUMN 91, total_vend using "###,###.##"
            SKIP 1 LINE
            LET total_gen = total_gen + total_vend
            LET total_vend     = 0 
        AFTER GROUP OF x.factura
           SKIP 1 LINE
     END REPORT

FUNCTION meses()

LET mes1[1] = "Enero"
LET mes1[2] = "Febrero"
LET mes1[3] = "Marzo"
LET mes1[4] = "Abril"
LET mes1[5] = "Mayo"
LET mes1[6] = "Junio"
LET mes1[7] = "Julio"
LET mes1[8] = "Agosto"
LET mes1[9] = "Septiembre"
LET mes1[10] = "Octubre"
LET mes1[11] = "Noviembre"
LET mes1[12] = "Diciembre"
END FUNCTION
