{ ------------------------------------------------------------------------------- PROGRAMA : CCPRRP035 OBJETIVO : Comisiones por Ventas Totalizado PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Oct. 06, 1994 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" # Variables para controlar que el nombre del articulo y del vendedor # se busque una sola vez DEFINE resumen RECORD LIKE cctb00006.* DEFINE fact_ant INTEGER DEFINE p_datos RECORD fecha_in DATE, fecha_fin DATE END RECORD DEFINE porc_rep,porciento,p_itbi DECIMAL(8,2) DEFINE p_neto,t_valor,valor_desc DECIMAL(12,2) DEFINE fecha1,fecha2 DATE DEFINE selec18,selec19 CHAR(1000) DEFINE p_mes SMALLINT DEFINE codigo,codigo_ant CHAR(7) DEFINE vende,vende_ant CHAR(7) DEFINE p_ano CHAR(4) DEFINE porc_vv,porc_v,porc_c,comision_c,t_comision,tt_comision_d, t_comision_d,t_neto,neto,tt_comision_c,t_comision_c,tt_neto, ttt_comision_d, tt_cobrado,t_cobrado,cobrado,comision_d DECIMAL(14,4) # Variables para la captura de la informacion del reporte DEFINE mes SMALLINT DEFINE cod_cia SMALLINT DEFINE salir,salir18,salir19,ventas CHAR(1) DEFINE idx1,idx18,idx19 INTEGER FUNCTION ccprrp035() # Variables que toman los valores del query y a la vez estas mismas variables # Asignan estos valores a otra que se imprimira posteriormente DEFINE vendedor RECORD cod_cia SMALLINT, sec_vend SMALLINT, fecha_factura DATE, factura INTEGER, cond_pago SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER , precio DECIMAL(10,2), porciento LIKE vetb00002.porc_desc, codigo CHAR(7) END RECORD DEFINE porciento RECORD sec_vend SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, porc_ventas DECIMAL(10,4) END RECORD # Atrapa el error de run-time # WHENEVER ERROR CONTINUE # Especificaciones para el desplegue de errores y formulario. # Reserva lineas para tales fines. OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 # Desplegue del formulario de entrada de informacion OPEN FORM ccfmrp035 FROM "ccfmrp035" DISPLAY FORM ccfmrp035 #---------------------------------------------------------- CALL pantalla() DISPLAY "ccprrp035" AT 4,3 DISPLAY "Comision Por Vendedor Totalizado" AT 6,24 ## Tipo de papel necesari para imprimir el reporte LET tipo_papel = 2 CALL msgrp000(tipo_papel) # Entrada de datos para el reporte INPUT BY NAME p_ano,p_mes AFTER FIELD p_ano IF p_ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano END IF AFTER FIELD p_mes IF p_mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes END IF SELECT a.fecha_inicio,a.fecha_corte INTO fecha1,fecha2 FROM prdtable a WHERE a.ano = p_ano AND a.mes = p_mes END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT BY NAME criterio ON a.cod_cia,a.sec_vend #------------------------------------------------------------------- # Chequo de la cancelacion del programa con la variable global int_flag IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF #-------------------------------------------------------------------- # Borra la tabla temporal para el resumen de los empleados DELETE FROM cctb00006 # Prepara al sistema operativo para recibir el reporte START REPORT reporte35 TO "C:\\archivo" # Buscando las informaciones del reporte DISPLAY " " AT 19,14 LET selec19 = "SELECT a.cod_cia,a.sec_vend,a.fecha_factura,a.factura,a.cond_pago, ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ", " a.porc_desc ", "FROM vetb00002 a,vetb00003 c ", "WHERE a.fecha_factura between ? and ? and ", " a.ventas=1 and a.factura=c.factura AND a.status_t is null AND ", criterio clipped," ORDER BY 1,2,6,7,8,9" DISPLAY "Buscando Facturas... Espere Por Favor" AT 19,14 PREPARE b_vende FROM selec19 DECLARE c_vende CURSOR FOR b_vende OPEN c_vende USING fecha1,fecha2 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere >>" AT 19,14 ATTRIBUTE (REVERSE) # Loop para darle salida al Query hasta que la variable global status = 100 LET codigo_ant = " " LET salir = "N" WHILE salir != "S" FETCH c_vende INTO vendedor.* IF status = notfound THEN LET salir = "N" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF vendedor.precio IS NULL THEN LET vendedor.precio = 0 END IF IF vendedor.cantidad IS NULL THEN LET vendedor.cantidad = 0 END IF # Busco la descripcion del articulo LET vendedor.codigo = vendedor.cod_n using "&",vendedor.cod_grupo using "&", vendedor.cod_tipo using "&&",vendedor.cod_sec using "&&&" IF vendedor.sec_vend != 8888 THEN OUTPUT TO REPORT reporte35 (vendedor.*) END IF END WHILE # Aqui se le especifica al sistema operativo que el reporte ha terminado # el sistema operativo hace el resto FINISH REPORT reporte35 #--------------------------------------------------------------------- CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION # Rutina de reporte REPORT reporte35(x) # Variable que toma el valor de la funcion que llamo a esta rutina DEFINE x RECORD cod_cia SMALLINT, sec_vend SMALLINT, fecha_factura DATE, factura INTEGER, cond_pago SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER , precio DECIMAL(10,2), porciento LIKE vetb00002.porc_desc, codigo CHAR(7) END RECORD # Esta variable toma el valor del nombre del mes para imprimirse DEFINE nombre_vend CHAR(30), apellido_vend CHAR(30) DEFINE nombre_mes CHAR(10) DEFINE porc_ventas DECIMAL(10,4) #------------------------------------------------------------------ # Estas variables son constantes en todos los reportes de RAYOVAC # para no estar definiendolas en cada momento. # Estas variables son los caracteres ASCII para ser interpretados por # el printer. DEFINE valor_devuelto DECIMAL(12,2) DEFINE j,k INTEGER DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(3) DEFINE negrillas_off CHAR(3) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE normal CHAR(3) #---------------------------------------------------------------------- # Esta variable es para asignarle la hora del dia e imprimir en HH:MM DEFINE hora CHAR(5) #----------------------------------------------------------------------- # Con esta variable se hace un calculo porcentual DEFINE porc DECIMAL(10,4) #----------------------------------------------------------------------- # Variables totales del reporte DEFINE tt_unidades,t_unidades,vt_vend,total_vend,valor_pagar DECIMAL(12,2) DEFINE t_total_vend,j_valor,j_unidades,valor_pagar1,v_valor,vv_valor, t_cant_dev,cant_dev,tt_cant_dev,tt_total_vend,otro_desc, descuentos,und_descuento,und_netas,ventas_netas,ttt_cant_dev , t_Desc,t_und_netas,tt_valor,tt_valor1,tt_und_netas,ttt_und_netas DECIMAL(12,2), precio_neto,precio_bruto,porciento,porc_dev DECIMAL(8,4), f_ventas,f_adicional,f_cobros,f_ck,f_dev,f_neto DECIMAL (12,2) # Definicion de salida del reporte, margenes. OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 4 #------------------------------------------------------------------------ #ORDER BY x.cod_cia,x.sec_vend,x.codigo FORMAT PAGE HEADER # Asignaciones de los valores ASCII para la impresion LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 69 LET comp_on = ASCII 031 #LET comp_on = ASCII 27,ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 15 LET hora = time # Funcion que busca los meses del ano SELECT descrip INTO nombre_mes FROM mestable WHERE mes = p_mes #-------------------------------------------------------------------------- LET lj = (197 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "ccprrp035", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 190, "Pag. ",pageno using "###" PRINT COLUMN 76, " Sistema de Cuentas por Cobrar", COLUMN 190, today using "dd/mm/yy" PRINT COLUMN 76, " Comision por Vendedor Totalizado", COLUMN 193, hora PRINT COLUMN 40, " " PRINT COLUMN 1, "DESDE: ",fecha1 using "dd/mm/yy", " HASTA: ",fecha2 using "dd/mm/yy" PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------" PRINT COLUMN 56, " VENTAS ", COLUMN 98, "COBROS", COLUMN 145, "DEVOLUCIONES" PRINT COLUMN 2, "VENDEDOR", COLUMN 46, "VALOR", COLUMN 56, "UNIDADES", COLUMN 68, "COM./VENTA", COLUMN 81, "COMISION", COLUMN 97, "COBRADO", COLUMN 106, "COM./COBROS", COLUMN 125, "ITBIS", COLUMN 133, "COMISION", COLUMN 144, "CKS DVTOS", COLUMN 162, "CANTIDAD", COLUMN 176, "COMISION", COLUMN 194, "NETO" PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------" SKIP 1 LINE BEFORE GROUP OF x.cod_cia IF x.cod_cia = 1 THEN PRINT COLUMN 2, p_companias.nombre CLIPPED END IF IF x.cod_cia = 2 THEN PRINT COLUMN 2, p_companias.nombre CLIPPED END IF LET j = x.cod_cia LET k = 0 LET tt_valor = 0 LET tt_und_netas = 0 LET tt_unidades = 0 LET t_neto = 0 LET t_total_vend = 0 LET t_comision_c = 0 LET tt_comision_d = 0 LET tt_cant_dev = 0 LET t_cobrado = 0 BEFORE GROUP OF x.sec_vend LET k = k + 1 LET t_desc = 0 LET t_unidades = 0 LET total_vend = 0 LET t_cant_dev = 0 LET t_comision_d = 0 LET t_und_netas = 0 { # busca el promedio de descuento por vendedor para las pilas de carbon IF x.cod_cia = "1" THEN LET porciento = 1 SELECT avg(a.porc_desc) INTO porciento FROM vetb00002 a,vetb00003 b WHERE (a.sec_vend = x.sec_vend) AND (a.factura = b.factura) AND (a.fecha_factura BETWEEN fecha1 AND fecha2) AND a.status_t IS NULL IF porciento IS NULL THEN LET porciento = 1 END IF END IF #----------------------------------------------------------------------------- } # Impresion del nombre del vendedor SELECT nom1_emp,apell1_emp INTO nombre_vend,apellido_vend FROM adtb00003 WHERE num_emp = x.sec_vend LET porc_vv = 0 SELECT MAX(a.porc_ventas) INTO porc_vv FROM vetb00011 a WHERE a.sec_vend = x.sec_vend IF porc_vv IS NULL THEN LET porc_vv = 0 END IF PRINT COLUMN 2,x.sec_vend," ",nombre_vend clipped," ", apellido_vend clipped; BEFORE GROUP OF x.codigo #SKIP 1 LINE IF t_total_vend is null THEN LET t_total_vend = 0 END IF LET porc_ventas = 0 SELECT UNIQUE a.porc_ventas INTO porc_ventas FROM vetb00011 a WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec AND a.sec_vend = x.sec_vend AND a.status_t IS NULL IF porc_ventas IS NULL THEN LET porc_ventas = 0 END IF ON EVERY ROW LET porc = porc_ventas LET valor_pagar = 0 LET porciento = x.porciento /100 LET descuentos = (x.cantidad*x.precio) * porciento LET t_desc = t_desc + descuentos IF x.cod_cia = 1 THEN IF x.cantidad != 0 THEN LET precio_bruto = x.cantidad*x.precio / x.cantidad END IF LET precio_neto = precio_bruto - porciento IF precio_neto != 0 THEN LET und_descuento = descuentos / precio_neto END IF LET ventas_netas = (x.cantidad * x.precio) - descuentos LET und_netas = x.cantidad - und_descuento LET valor_pagar = und_netas * porc_ventas { Este Vendedor Cobrara comision por monto vendido Modificado Por: Juan F. Soto Fecha : Febrero 14, 1996 IF x.sec_vend = 144 THEN LET valor_pagar = ((x.cantidad * x.precio) - descuentos) * porc_ventas END IF } END IF # Para el vendedor que factura en la compania que usualmente es al contado # se le paga el porciento por valores brutos vendidos #----------------------------------------------------------------------------- # Esta es la acumulacion de lo que se le va ha pagar al vendedor LET total_vend = valor_pagar + total_vend LET t_und_netas = und_netas + t_und_netas AFTER GROUP OF x.sec_vend LET porc_c = 0 LET cant_dev = 0 LET comision_d = 0 IF x.cod_cia = 1 THEN SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*c.porc_ventas) INTO t_cant_dev,t_comision_d FROM iptb00006 a,vetb00028 b,OUTER vetb00011 c WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND a.status_t IS NULL AND a.cod_mov IN(12,13) AND a.cod_n = 3 AND a.cod_sp_sec = b.sec_cliente AND a.fecha BETWEEN fecha1 and fecha2 AND b.sec_vend = c.sec_vend AND b.sec_vend = x.sec_vend SELECT MAX(a.porc_cobros) INTO porc_c FROM vetb00011 a WHERE a.sec_vend = x.sec_vend AND a.cod_n = 3 ELSE SELECT SUM(a.cantidad_2),SUM((a.cantidad_2*d.precio)*c.porc_ventas) INTO t_cant_dev,t_comision_d FROM iptb00006 a,vetb00028 b,OUTER vetb00011 c,vetb00025 d WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec AND a.status_t IS NULL AND a.cod_mov IN(12,13) AND a.cod_n > 3 AND a.cod_sp_sec = b.sec_cliente AND d.sec_cliente IS NULL AND b.sec_vend = c.sec_vend AND b.sec_vend = x.sec_vend AND a.fecha BETWEEN fecha1 and fecha2 SELECT MAX(a.porc_ventas),MAX(a.porc_cobros) INTO porc_v,porc_c FROM vetb00011 a WHERE a.sec_vend = x.sec_vend AND a.cod_n = 6 END IF IF t_cant_dev IS NULL THEN LET t_cant_dev = 0 END IF IF t_comision_d IS NULL THEN LET t_comision_d = 0 END IF IF t_comision_d < 0 THEN LET t_comision_d = t_comision_d * -1 END IF IF porc_c IS NULL THEN LET porc_c = 0 END IF LET cobrado = 0 SELECT sum(a.valor*-1) INTO cobrado FROM CCTB00001 A,VETB00002 B WHERE A.APLICA_A = B.FACTURA AND A.FECHA_ORIG BETWEEN fecha1 AND fecha2 AND A.TIPO_DOC = "PG" AND A.COD_EMP_SEC = x.sec_vend AND b.fecha_factura > "010194" AND A.STATUS_T IS NULL and b.cod_cia = x.cod_cia IF t_cobrado IS NULL THEN LET t_cobrado = 0 END IF IF tt_cobrado IS NULL THEN LET tt_cobrado = 0 END IF IF t_comision_c IS NULL THEN LET t_comision_c = 0 END IF IF tt_comision_c IS NULL THEN LET tt_comision_c = 0 END IF IF tt_cant_dev IS NULL THEN LET tt_cant_dev = 0 END IF IF ttt_cant_dev IS NULL THEN LET ttt_cant_dev = 0 END IF IF tt_comision_d IS NULL THEN LET tt_comision_d = 0 END IF IF ttt_comision_d IS NULL THEN LET ttt_comision_d = 0 END IF IF tt_total_vend IS NULL THEN LET tt_total_vend = 0 END IF IF cobrado IS NULL THEN LET cobrado = 0 END IF IF porc_c IS NULL THEN LET porc_c = 0 END IF IF tt_neto IS NULL THEN LET tt_neto = 0 END IF LET comision_c = 0 LET comision_c = (cobrado/1.08) * porc_c LET neto = total_vend + comision_c - t_comision_d LET tt_valor = tt_valor + GROUP SUM(x.precio*x.cantidad) - t_Desc LET tt_und_netas = tt_und_netas + t_und_netas PRINT COLUMN 39, GROUP SUM(x.precio*x.cantidad)- t_desc using "##,###,###.##", COLUMN 55, t_und_netas using "##,###,###"; #COLUMN 55, GROUP SUM(x.cantidad)-t_cant_dev using "##,###,###"; IF x.cod_cia = 1 THEN PRINT COLUMN 68, " "; ELSE LET total_vend = (GROUP SUM(x.precio*x.cantidad)- t_desc)*porc_v PRINT COLUMN 68, porc_v using "#,###.####"; END IF PRINT COLUMN 79, total_vend using "###,###.##", COLUMN 93, cobrado using "##,###,###.##", COLUMN 104, porc_c using "#,###.####", COLUMN 121, cobrado - (cobrado/1.08) using "###,###.##", COLUMN 132, comision_c using "###,###.##", COLUMN 144, "__________", COLUMN 157, t_cant_dev using "##,###,###.##", COLUMN 174, t_comision_d using "###,###.##", COLUMN 185, total_vend+comision_c-t_comision_d using "###,###,###.##" IF x.sec_vend = 338 or x.sec_vend = 367 THEN LET t_valor = 0 IF x.cod_cia = 1 THEN CALL teprrp005(x.sec_vend) END IF ELSE LET t_valor = 0 END IF # Busca los cheques devueltos de cuentas por cobrar SELECT SUM(a.valor) INTO valor_devuelto FROM cctb00001 a,vetb00002 b WHERE b.cod_cia = x.cod_cia and (a.cod_emp_Sec = x.sec_vend and a.fecha_orig between fecha1 and fecha2 and a.tipo_doc = "ND" and a.valor_cheque is not null) and (a.aplica_a = b.factura) and a.status_t is null IF x.cod_cia = 1 THEN SELECT unique a.porc_cobros INTO porc_dev FROM vetb00011 a WHERE a.sec_vend = x.sec_vend and a.cod_n = 3 and status_t is null ELSE SELECT unique a.porc_cobros INTO porc_dev FROM vetb00011 a WHERE a.sec_vend = x.sec_vend and a.cod_n in (6,9) and status_t is null END IF IF valor_devuelto is null THEN LET valor_devuelto = 0 END IF IF valor_devuelto != 0 THEN LET valor_devuelto = valor_devuelto / 1.08 LET valor_devuelto = valor_devuelto * porc_dev END IF #---------------------------------------------------------------------------- { INSERTA EN LA TABLA TEMPORAL CCTB00006 LOS REGISTROS PARA IMPRIMIR UN RESUMEN POR VENDEDOR AL FINAL DEL REPORTE } INSERT INTO cctb00006 VALUES (x.sec_vend,nombre_vend,apellido_vend,total_vend, t_valor,comision_c,valor_devuelto,t_comision_d,neto, user,current) { LET arreglo[j,k].ck_devuelto = valor_devuelto LET arreglo[j,k].comision_v = total_vend LET arreglo[j,k].comision_c = comision_c LET arreglo[j,k].comision_d = t_comision_d } # Acumulacion de los totales por compania LET t_neto = t_neto + neto LET t_cobrado = t_cobrado + cobrado LET t_comision_c = t_comision_c + comision_c LET t_total_vend = t_total_vend + total_vend LET tt_cant_dev = tt_cant_dev + t_cant_dev LET tt_comision_d = tt_comision_d + t_comision_d LET tt_neto = tt_neto + neto LET ttt_cant_dev = ttt_cant_dev + t_cant_dev LET ttt_comision_d= ttt_comision_d + t_comision_d LET tt_cobrado = tt_cobrado + cobrado LET tt_comision_c= tt_comision_c + comision_c LET tt_total_vend= tt_total_vend + total_vend LET total_vend = 0 SKIP 1 LINE AFTER GROUP OF x.cod_cia PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------" PRINT COLUMN 2, "Total Cia. ", COLUMN 39, tt_valor using "##,###,###.##", COLUMN 55, tt_und_netas using "##,###,###", COLUMN 79, t_total_vend using "###,###.##", COLUMN 93, t_cobrado using "##,###,###.##", COLUMN 121, t_cobrado - (t_cobrado/1.08) using "###,###.##", COLUMN 132, t_comision_c using "###,###.##", COLUMN 144, "__________", COLUMN 157, tt_cant_dev using "##,###,###.##", COLUMN 174, tt_comision_d using "###,###.##", COLUMN 185, t_neto using "###,###,###.##" PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------" IF tt_valor1 IS NULL THEN LET tt_valor1 = 0 END IF IF ttt_und_netas IS NULL THEN LET ttt_und_netas = 0 END IF LET tt_valor1 = tt_valor1 + tt_valor LET ttt_und_netas = ttt_und_netas + tt_und_netas LET tt_valor = 0 SKIP 1 LINE ON LAST ROW PRINT COLUMN 2, "Total General ", COLUMN 39, tt_valor1 using "##,###,###.##", COLUMN 55, ttt_und_netas using "##,###,###", COLUMN 79, tt_total_vend using "###,###.##", COLUMN 93, tt_cobrado using "##,###,###.##", COLUMN 119, tt_cobrado - (tt_cobrado/1.08) using "#,###,###.##", COLUMN 132, tt_comision_c using "###,###.##", COLUMN 144, "__________", COLUMN 157, ttt_cant_dev using "##,###,###.##", COLUMN 174, ttt_comision_d using "###,###.##", COLUMN 185, tt_neto using "###,###,###.##" PRINT COLUMN 1, "===================================================", "===================================================", "===================================================", "=============================================" PRINT COLUMN 98, "Comision", COLUMN 161, "Comision" PRINT COLUMN 2, "Total Por Vendedor", COLUMN 98, "Adicional", COLUMN 155, "Cks. Devueltos" PRINT COLUMN 2, "------------------", COLUMN 98, "---------", COLUMN 155, "---------------" LET f_ventas = 0 LET f_adicional = 0 LET f_cobros = 0 LET f_ck = 0 LET f_dev = 0 LET f_neto = 0 DECLARE busca_r CURSOR FOR SELECT a.sec_vend,a.nombre,a.apellido,SUM(a.comision_venta), SUM(a.comision_adicional),SUM(a.comision_cobros), SUM(a.comision_ck),SUM(a.comision_dev) FROM cctb00006 a GROUP BY 1,2,3 ORDER BY 1 FOREACH busca_r INTO resumen.* PRINT COLUMN 1, resumen.sec_vend USING "&&&&"," ", resumen.nombre,resumen.apellido CLIPPED, COLUMN 79, resumen.comision_venta USING "##,###,###.##", COLUMN 93, resumen.comision_adicional USING "##,###,###.##", COLUMN 132, resumen.comision_cobros USING "###,###.##", COLUMN 144, "__________", COLUMN 157, resumen.comision_ck USING "##,###,###.##", COLUMN 174, resumen.comision_dev USING "###,###.##", COLUMN 185, resumen.comision_venta + resumen.comision_adicional + resumen.comision_cobros - resumen.comision_dev - resumen.comision_ck USING "((((,(((,(((.##)" LET f_ventas = f_ventas + resumen.comision_venta LET f_adicional = f_adicional + resumen.comision_adicional LET f_cobros = f_cobros + resumen.comision_cobros LET f_ck = f_ck + resumen.comision_ck LET f_dev = f_dev + resumen.comision_dev LET f_neto = f_neto + resumen.comision_venta + resumen.comision_adicional + resumen.comision_cobros - resumen.comision_dev - resumen.comision_ck END FOREACH PRINT COLUMN 79, "-------------", COLUMN 93, "-------------", COLUMN 132, "----------", COLUMN 157, "-------------", COLUMN 174, "----------", COLUMN 185, "----------" PRINT COLUMN 79, f_ventas USING "##,###,###.##", COLUMN 93, f_adicional USING "##,###,###.##", COLUMN 132, f_cobros USING "###,###.##", COLUMN 157, f_ck USING "##,###,###.##", COLUMN 174, f_dev USING "###,###.##", COLUMN 185, f_neto USING "###,###.##" PRINT comp_off END REPORT FUNCTION teprrp005(sec_vend) DEFINE imprime CHAR(1) DEFINE sec_vend,cod_cia SMALLINT 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 , precio DECIMAL(10,2), recibo INTEGER, fecha DATE, valor_c DECIMAL(12,2), porc_venta DECIMAL(10,4), descrip_esp CHAR(30), nombre_vend CHAR(30), apellido_vend CHAR(30) , vende CHAR(6), codigo CHAR(7) END RECORD IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF START REPORT reporte_5 TO "jh1" DISPLAY "Buscando Liq. Comision... Espere Por Favor" AT 19,14 DECLARE c_vende1 CURSOR FOR SELECT UNIQUE d.cod_emp,d.cod_emp_sec,a.fecha_factura,a.factura, b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.cantidad, b.cantidad * b.precio ,d.num_doc,d.fecha_orig,d.valor, a.porc_desc,' ',' ',' ',' ',' ',a.porc_desc,a.porc_itbi,a.neto FROM vetb00002 a,vetb00003 b ,cctb00005 c,cctb00001 d WHERE d.fecha_orig between fecha1 and fecha2 and (a.fecha_factura > "010194") and (a.factura = b.factura) and (a.cod_cia = 1) and a.status_t is null and (b.cod_n = c.cod_n and b.cod_grupo = c.cod_grupo and b.cod_tipo = c.cod_tipo and b.cod_sec = c.cod_sec) and d.cod_emp_sec in (sec_vend) and d.tipo_doc = "PG" and d.aplica_a = a.factura and d.status_t is null FOREACH c_vende1 INTO vendedor.*,porciento,p_itbi,p_neto DISPLAY "Vendedor: ",vendedor.sec_vend using "&&&&"," ", vendedor.cod_n using "&","-",vendedor.cod_grupo using "&","-", vendedor.cod_tipo using "&&","-",vendedor.cod_sec using "&&&" AT 13,1 SELECT nom1_emp,apell1_emp INTO vendedor.nombre_vend,vendedor.apellido_vend FROM adtb00003 WHERE num_emp = vendedor.sec_vend LET vendedor.vende = vendedor.sec_vend using "&&&&" LET vendedor.codigo = vendedor.cod_n using "&", vendedor.cod_grupo using "&", vendedor.cod_tipo using "&&", vendedor.cod_sec using "&&&" LET valor_desc = vendedor.precio * (porciento/100) LET vendedor.precio = vendedor.precio - valor_desc LET vendedor.precio = vendedor.precio + vendedor.precio * (p_itbi / 100) LET porc_rep = (vendedor.precio / p_neto) * 100 OUTPUT TO REPORT reporte_5 (vendedor.*,porc_rep,p_neto) END FOREACH DISPLAY " " AT 19,14 FINISH REPORT reporte_5 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte_5(x,porc,p_neto1) 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 , precio DECIMAL(10,2), recibo INTEGER, fecha DATE, valor_c DECIMAL(12,2), porc_venta DECIMAL(10,4), descrip_esp CHAR(30), nombre_vend CHAR(30), apellido_vend CHAR(30) , vendedor CHAR(6) , codigo CHAR(7) END RECORD DEFINE nombre_mes CHAR(10) DEFINE ii,total_clientes INTEGER DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE i SMALLINT DEFINE porc DECIMAL(10,4) DEFINE t_valor1,p_neto1,valor DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 4 ORDER BY x.vendedor,x.factura,x.codigo,x.recibo FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time BEFORE GROUP OF x.vendedor LET t_valor = 0 LET t_valor1 = 0 ON EVERY ROW IF x.recibo is not null THEN IF x.valor_c < 0 THEN LET x.valor_c = x.valor_c * -1 END IF IF x.precio < x.valor_c THEN LET valor = x.valor_c * (porc / 100) ELSE LET valor = x.valor_c END IF LET t_valor = (valor * .01275) + t_valor LET t_valor1 = valor + t_valor1 END IF END REPORT