{ ------------------------------------------------------------------------------- PROGRAMA : CCPRRP043 OBJETIVO : Resumen cobros REALIZADO POR : JUAN F. SOTO FECHA : Diciembre 26, 2011. ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL ccprrp043() END MAIN FUNCTION ccprrp043() DEFINE comision_c RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, porc_cobros DECIMAL(8,4), grupo LIKE iptb00002.cod_n END RECORD, recibo_ant INTEGER DEFINE vendedor RECORD tipo_cliente SMALLINT, sec_cliente INT, 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 LIKE vetb00003.cantidad, precio LIKE vetb00003.precio, monto_desc LIKE vetb00003.bonificacion, grupo LIKE iptb00002.cod_n, porc_desc LIKE vetb00003.cantidad_2, valor_cobrado LIKE cctb00001.valor, ventas LIKE vetb00002.ventas, numero_recibo INTEGER, codigo CHAR(7), porc_ventas LIKE cctb00008.porc_ventas, bruto DECIMAL(12,2), valor_devuelto DECIMAL(12,2), neto LIKE vetb00002.neto, comision DECIMAL(12,2), monto_desc_d DECIMAL(12,2), dias SMALLINT, fcobrado DECIMAL(12,2), pfecha_factura LIKE vetb00002.fecha_factura 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, valor_factura,valor_rec,valor_real DECIMAL(12,2), satisfecho,hice_ant CHAR(1) OPEN FORM ccfmrp043 FROM "ccfmrp043" DISPLAY FORM ccfmrp043 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 rango.fecha_ini,rango.fecha_fin 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 criterio ON d.cod_emp_sec FROM cod_emp_Sec # 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 # Prepara al sistema operativo para recibir el reporte START REPORT reporte43 TO "dumb" # Buscando las informaciones del reporte select a.TipoCobro,a.ocupacion,a.primerNombre,a.PrimerApellido,SUM(a.valorrd),SUM(a.valor) from vwcobros a where a.ano = 2011 group by a.TipoCobro,a.ocupacion,a.primerNombre,a.PrimerApellido LET selec = "SELECT .tipo_cliente,a.sec_cliente,a.cod_cia,d.cod_emp_sec,a.fecha_factura,a.factura,a.cond_pago, ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ", " c.bonificacion,b.cod_n,c.cantidad_2,'0',a.ventas,d.num_doc ", "FROM vetb00002 a,vetb00003 c,iptb00002 b,cctb00001 d ", "WHERE a.cod_cia = c.cod_cia AND d.fecha_orig between ? and ? and ", " a.tipo_cliente = d.tipo_cliente AND ", " a.sec_cliente = d.sec_cliente AND ", " d.aplica_a = a.factura AND ", " a.factura=c.factura AND a.status_t is null AND a.ventas = ? AND ", " d.status_t IS NULL AND ", " d.tipo_doc IN ('PG') AND ", " c.cod_n = b.cod_n AND ", " c.cod_grupo = b.cod_grupo AND ", " c.cod_tipo = b.cod_tipo AND ", " c.cod_sec = b.cod_sec AND ", " c.cantidad > 0 AND ", criterio clipped, " ORDER BY 4,6,9,10,11" 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,ventas 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 FOR idx = 1 TO 20 LET resumen[idx].vendedor = NULL LET resumen[idx].monto_cobrado = 0 LET resumen[idx].comision = 0 END FOR LET idx = 1 LET total_cobrado = 0 LET total_gerente = 0 LET valor_rec = 0 LET recibo_ant =0 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.cod_n IS NULL OR vendedor.cod_n = 0 THEN CONTINUE WHILE END IF IF recibo_ant != vendedor.factura THEN IF vendedor.valor_cobrado < 0 THEN LET vendedor.valor_cobrado = vendedor.valor_cobrado * -1 END IF LET satisfecho = "N" LET recibo_ant = vendedor.factura LET valor_real = 0 LET valor_rec = 0 IF vendedor.ventas = "1" THEN IF vendedor.tipo_cliente <> 19 THEN SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) / 1.16 INTO vendedor.pfecha_factura,valor_rec FROM cctb00001 a WHERE a.aplica_a = vendedor.factura AND a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend and a.tipo_cliente <> 19 ELSE LET valor_rec_otros = 0 SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) INTO vendedor.pfecha_factura,valor_rec FROM cctb00001 a WHERE a.aplica_a = vendedor.factura AND a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend END IF ELSE IF vendedor.ventas = "2" THEN SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) INTO vendedor.pfecha_factura,valor_rec FROM cctb00001 a WHERE a.aplica_a = vendedor.factura AND a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend ELSE IF vendedor.ventas = "3" THEN IF vendedor.tipo_cliente <> 18 THEN SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) / 1.16 INTO vendedor.pfecha_factura,valor_rec FROM cctb00001 a WHERE a.aplica_a = vendedor.factura AND a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend ELSE LET valor_rec_otros = 0 SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) INTO vendedor.pfecha_factura,valor_rec FROM cctb00001 a WHERE a.aplica_a = vendedor.factura AND a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend END IF END IF END IF END IF LET valor_rec = valor_rec * -1 LET vendedor.valor_cobrado = valor_rec LET valor_Factura = 0 SELECT a.sub_total INTO valor_factura FROM vetb00002 a WHERE a.factura = vendedor.factura AND a.cod_cia = vendedor.cod_cia AND a.ventas = ventas 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 LET vendedor.codigo = vendedor.cod_n using "&", vendedor.cod_grupo using "&", vendedor.cod_tipo using "&&", vendedor.cod_sec using "&&&" # CALCULO VENCIMIENTO DE LA FACTURA LET vendedor.dias = vendedor.pfecha_factura - vendedor.fecha_factura # BUSCO LA COMISION POR VENTA LET vendedor.porc_ventas = 0 SELECT AVG(a.porc_ventas) INTO vendedor.porc_ventas FROM cctb00008 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) AND a.status_t IS NULL IF vendedor.porc_ventas IS NULL THEN LET vendedor.porc_ventas = 0 END IF # CALCULO COMISION ALTAGRACIA, M. ALEJANDRA, RODOLFO , DIMAS CASE WHEN vendedor.sec_vend = 5 LET vendedor.porc_ventas = (vendedor.porc_ventas /2) EXIT CASE END CASE # CALCULO BRUTO DE LA FACTURA LET vendedor.bruto = vendedor.cantidad * vendedor.precio # CALCULO COMISION IF vendedor.monto_desc IS NULL THEN LET vendedor.monto_desc = 0 END IF IF total_gerente IS NULL THEN LET total_gerente = 0 END IF IF vendedor.porc_desc > 0 THEN LET vendedor.neto = vendedor.bruto - vendedor.monto_desc # LET vendedor.neto = vendedor.neto + vendedor.neto ELSE LET vendedor.monto_desc = 0 LET vendedor.neto = vendedor.bruto END IF IF vendedor.neto > 0 THEN LET vendedor.fcobrado = vendedor.valor_cobrado / vendedor.neto END IF IF vendedor.fcobrado IS NULL THEN LET vendedor.fcobrado = 0 END IF SELECT UNIQUE a.num_emp FROM notb00017 a WHERE a.num_emp = vendedor.sec_vend IF STATUS != NOTFOUND THEN IF vendedor.dias < 91 THEN LET total_cobrado = total_cobrado + vendedor.valor_cobrado LET vendedor.comision = vendedor.neto * (vendedor.porc_ventas/100) { MODIFICADO EL 9/3/2005 SOLICITADO POR LIC. CARMEN IF vendedor.sec_vend !=44 AND vendedor.sec_vend != 145 AND vendedor.sec_vend != 5 AND vendedor.sec_vend != 38 AND vendedor.sec_vend != 338 THEN } IF vendedor.sec_vend = 49 or vendedor.sec_vend = 368 or vendedor.sec_vend = 43 or vendedor.sec_vend = 53 or vendedor.sec_vend = 54 or vendedor.sec_vend = 76 THEN LET total_gerente = total_gerente + vendedor.valor_cobrado #INSERT INTO comision values (vendedor.sec_vend,vendedor.valor_cobrado) END IF ELSE LET vendedor.fcobrado = 0 LET vendedor.comision = 0 END IF OUTPUT TO REPORT reporte43 (vendedor.*) END IF END WHILE IF ventas = 1 THEN LET selec19 = "SELECT UNIQUE d.tipo_cliente,d.sec_cliente, d.cod_cia,d.cod_emp_sec,a.fecha_oc,a.num_oc,'1', ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ", " '0',b.cod_n,'0','0','1',d.num_doc ", "FROM prtb00012 a,prtb00013 c,iptb00002 b,cctb00001 d ", "WHERE d.fecha_orig between ? and ? and ", " d.num_cheque = a.num_oc AND ", " a.num_oc=c.num_oc AND a.status_t is null AND ", " d.num_doc = d.aplica_a AND ", " a.tipo_cliente IN(15,12,19) AND ", " d.status_t IS NULL AND ", " d.tipo_doc IN ('AV') AND ", " c.cod_n = b.cod_n AND ", " c.cod_grupo = b.cod_grupo AND ", " c.cod_tipo = b.cod_tipo AND ", " c.cod_sec = b.cod_sec AND ", " c.cantidad > 0 ", " ORDER BY 4,6,9,10,11" ELSE IF ventas = 2 THEN LET selec19 = "SELECT UNIQUE d.tipo_cliente,d.sec_cliente,d.cod_cia,d.cod_emp_sec,a.fecha_oc,a.num_oc,'1', ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ", " '0',b.cod_n,'0','0','1',d.num_doc ", "FROM prtb00012 a,prtb00013 c,iptb00002 b,cctb00001 d ", "WHERE d.fecha_orig between ? and ? and ", " d.num_cheque = a.num_oc AND ", " a.num_oc=c.num_oc AND a.status_t is null AND ", " d.num_doc = d.aplica_a AND ", " a.tipo_cliente IN(17) AND ", " d.status_t IS NULL AND ", " d.tipo_doc IN ('AV') AND ", " c.cod_n = b.cod_n AND ", " c.cod_grupo = b.cod_grupo AND ", " c.cod_tipo = b.cod_tipo AND ", " c.cod_sec = b.cod_sec AND ", " c.cantidad > 0 ", " ORDER BY 4,6,9,10,11" END IF IF ventas = 3 THEN LET selec19 = "SELECT UNIQUE d.tipo_cliente,d.sec_cliente,d.cod_cia,d.cod_emp_sec,a.fecha_oc,a.num_oc,'1', ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ", " '0',b.cod_n,'0','0','1',d.num_doc ", "FROM prtb00012 a,prtb00013 c,iptb00002 b,cctb00001 d ", "WHERE d.fecha_orig between ? and ? and ", " d.num_cheque = a.num_oc AND ", " a.num_oc=c.num_oc AND a.status_t is null AND ", " d.num_doc = d.aplica_a AND ", " a.tipo_cliente in(14,16,18) AND ", " d.status_t IS NULL AND ", " d.tipo_doc IN ('AV') AND ", " c.cod_n = b.cod_n AND ", " c.cod_grupo = b.cod_grupo AND ", " c.cod_tipo = b.cod_tipo AND ", " c.cod_sec = b.cod_sec AND ", " c.cantidad > 0 ", " ORDER BY 4,6,9,10,11" END IF END IF DISPLAY "Buscando Avances... Espere Por Favor" AT 19,14 PREPARE b_vende1 FROM selec19 DECLARE c_vende1 CURSOR FOR b_vende1 OPEN c_vende1 USING fecha1,fecha2 DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose2 ... Por Favor Espere >>" AT 19,14 ATTRIBUTE (REVERSE) LET valor_rec = 0 LET recibo_ant =0 LET codigo_ant = " " LET salir = "N" # LET idx = 1 WHILE salir != "S" FETCH c_vende1 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.cod_n IS NULL OR vendedor.cod_n = 0 THEN CONTINUE WHILE 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 LET vendedor.codigo = vendedor.cod_n using "&", vendedor.cod_grupo using "&", vendedor.cod_tipo using "&&", vendedor.cod_sec using "&&&" IF recibo_ant != vendedor.factura THEN IF vendedor.valor_cobrado < 0 THEN LET vendedor.valor_cobrado = vendedor.valor_cobrado * -1 END IF LET satisfecho = "N" LET recibo_ant = vendedor.factura LET valor_real = 0 LET valor_rec = 0 IF vendedor.tipo_cliente < 18 THEN SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) / 1.16 INTO vendedor.pfecha_factura,valor_rec FROM cctb00001 a WHERE a.num_cheque = vendedor.factura AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.tipo_doc = "AV" AND a.valor > 0 AND a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend ELSE SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) INTO vendedor.pfecha_factura,valor_rec FROM cctb00001 a WHERE a.num_cheque = vendedor.factura AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND a.tipo_doc = "AV" AND a.valor > 0 AND a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend END IF LET vendedor.valor_cobrado = valor_rec LET valor_Factura = 0 SELECT SUM(a.cantidad*a.precio) INTO valor_factura FROM prtb00013 a WHERE a.num_oc = vendedor.factura 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 LET vendedor.codigo = vendedor.cod_n using "&", vendedor.cod_grupo using "&", vendedor.cod_tipo using "&&", vendedor.cod_sec using "&&&" # CALCULO VENCIMIENTO DE LA FACTURA LET vendedor.dias = vendedor.pfecha_factura - vendedor.fecha_factura # BUSCO LA COMISION POR VENTA LET vendedor.porc_ventas = 0 SELECT AVG(a.porc_ventas) INTO vendedor.porc_ventas FROM cctb00008 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) AND a.status_t IS NULL IF vendedor.porc_ventas IS NULL THEN LET vendedor.porc_ventas = 0 END IF # CALCULO COMISION ALTAGRACIA, M. ALEJANDRA, RODOLFO, DIMAS CASE WHEN vendedor.sec_vend = 5 LET vendedor.porc_ventas = (vendedor.porc_ventas /2) EXIT CASE END CASE # CALCULO BRUTO DE LA FACTURA LET vendedor.bruto = vendedor.cantidad * vendedor.precio # CALCULO COMISION IF vendedor.monto_desc IS NULL THEN LET vendedor.monto_desc = 0 END IF LET vendedor.neto = valor_factura IF vendedor.porc_desc > 0 THEN LET vendedor.neto = vendedor.bruto - vendedor.monto_desc # LET vendedor.neto = vendedor.neto + vendedor.neto ELSE LET vendedor.monto_desc = 0 LET vendedor.neto = vendedor.bruto END IF # IF vendedor.dias < 91 THEN IF vendedor.neto > 0 THEN LET vendedor.fcobrado = vendedor.valor_cobrado / vendedor.neto END IF LET vendedor.comision = vendedor.neto * (vendedor.porc_ventas/100) { IF vendedor.sec_vend != 144 AND vendedor.sec_vend != 145 AND vendedor.sec_vend != 5 AND vendedor.sec_vend != 33 AND vendedor.sec_vend != 38 AND vendedor.sec_vend != 338 THEN } IF vendedor.sec_vend = 49 or vendedor.sec_vend = 368 or vendedor.sec_vend = 43 or vendedor.sec_vend = 53 or vendedor.sec_vend = 54 or vendedor.sec_vend = 76 THEN LET total_gerente = total_gerente + vendedor.valor_cobrado # INTO comision values (vendedor.sec_vend,vendedor.valor_cobrado) END IF # ELSE # LET vendedor.fcobrado = 0 # LET vendedor.comision = 0 # END IF SELECT UNIQUE a.num_emp FROM notb00017 a WHERE a.num_emp = vendedor.sec_vend IF STATUS != NOTFOUND THEN OUTPUT TO REPORT reporte43 (vendedor.*) END IF END WHILE FINISH REPORT reporte43 IF pflag = "N" THEN RUN "type c:\\ventas > %USPRINT% " ELSE RUN "pantalla c:\\ventas" END IF #--------------------------------------------------------------------- CLEAR SCREEN END FUNCTION # Rutina de reporte REPORT reporte43(x) # Variable que toma el valor de la funcion que llamo a esta rutina DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente INT, 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 LIKE vetb00003.cantidad, precio LIKE vetb00003.precio, monto_desc LIKE vetb00003.bonificacion, grupo LIKE iptb00002.cod_n, porc_desc LIKE vetb00003.cantidad_2, valor_cobrado LIKE cctb00001.valor, ventas LIKE vetb00002.ventas, numero_recibo INTEGER, codigo CHAR(7), porc_ventas LIKE cctb00008.porc_ventas, bruto DECIMAL(12,2), valor_devuelto DECIMAL(12,2), neto LIKE vetb00002.neto, comision DECIMAL(12,2), monto_desc_d DECIMAL(12,2), dias SMALLINT, fcobrado DECIMAL(12,2), pfecha_factura LIKE vetb00002.fecha_factura END RECORD, descrip_item CHAR(30) DEFINE nombre_mes CHAR(10) DEFINE porc_ventas DECIMAL(10,4), descuento_x,cantidad_x,t_comision_v,t_cantidad_n,cantidad_n, tmonto_dev,gt_comision_v, gt_valor_n,gt_comision_ventas DECIMAL(12,2), valor_dev DECIMAL(12,2), nombre_g LIKE iptb00020.producto, total_bruto,total_neto,tvcomision,ttvcomision,total_subgerente,total_empleado, total_empleado1 DECIMAL(12,2) #------------------------------------------------------------------ # 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 dias1,dias2,j,k INTEGER DEFINE cambio CHAR(1) DEFINE vcantidad_dev,tt_comision,t_comision_ventas DECIMAL(12,2), total_aparte,total_aparte1,valor_d,t_valor_n,descuento,und_netas,gt_cantidad_n DECIMAL(12,2), tund_desc,und_desc INTEGER, p_iptb20 RECORD LIKE iptb00020.* DEFINE hora CHAR(5), comp_on,doce,comp_off,negrillas_on,negrillas_off CHAR(2), lj SMALLINT OUTPUT TOP MARGIN 0 LEFT MARGIN 5 BOTTOM MARGIN 4 #ORDER BY x.sec_vend #------------------------------------------------------------------------ FORMAT PAGE HEADER # Asignaciones de los valores ASCII para la impresion LET hora = time LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET doce = ASCII 27, ASCII 77 # Funcion que busca los meses del ano SELECT descrip INTO nombre_mes FROM mestable WHERE mes = p_mes #-------------------------------------------------------------------------- LET lj = (137 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce,comp_on PRINT COLUMN 1, "ccprrp043", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 112, "Pag. ",pageno using "###" PRINT COLUMN 36, " Sistema de Cuentas por Cobrar", COLUMN 110, today using "dd/mm/yyyy" PRINT COLUMN 36, " COMISIONES POR COBROS", COLUMN 115, hora PRINT COLUMN 40, " " IF ventas = 1 THEN PRINT COLUMN 36, "Ventas Locales RD$" END IF IF ventas = 2 THEN PRINT COLUMN 36, "Ventas INTERNACIONALES" END IF IF ventas = 3 THEN PRINT COLUMN 36, "Ventas Locales US$" END IF PRINT COLUMN 1, "DESDE: ",fecha1 using "dd/mm/yyyy", " HASTA: ",fecha2 using "dd/mm/yyyy" PRINT negrillas_on,"PRODUCTOS LOCALES",negrillas_off PRINT COLUMN 1, "---------------------------------------------------", "--------------------------------------------------", "-----------------------------------------------------------------" PRINT COLUMN 47, "NUMERO", COLUMN 55, "FECHA", COLUMN 74, "FECHA", COLUMN 66, "MONTO", COLUMN 95, "MONTO", COLUMN 120, "MONTO", COLUMN 134, "VALOR", COLUMN 147, "PORCIENTO", COLUMN 158, "COMISION A", 2 SPACES, "DIAS" PRINT COLUMN 2, "ARTICULOS", COLUMN 47, "RECIBO", COLUMN 55, "RECIBO", COLUMN 64, "FACTURA", COLUMN 74, "FACTURA", COLUMN 86, "BRUTO", COLUMN 95, "DESCUENTO", COLUMN 120, "NETO", COLUMN 134, "COBRADO", COLUMN 147, "COMISION", COLUMN 158, "COBRAR", 2 SPACES , "COBRADA" PRINT COLUMN 1, "---------------------------------------------------", "--------------------------------------------------", "-----------------------------------------------------------------" SKIP 1 LINE BEFORE GROUP OF x.cod_cia LET t_comision_ventas = 0 BEFORE GROUP OF x.sec_vend LET t_valor_n = 0 LET t_cantidad_n = 0 LET t_comision_v = 0 LET t_comision_ventas = 0 LET tund_desc = 0 LET vcantidad_dev = 0 LET tmonto_dev = 0 LET tvcomision = 0 LET rvalor_cobrado = 0 LET resumen[idx].vendedor = NULL # Impresion del nombre del vendedor SELECT nom1_emp,apell1_emp INTO nombre_vend,apellido_vend FROM adtb00003 WHERE num_emp = x.sec_vend PRINT COLUMN 2,negrillas_on,x.sec_vend," ", nombre_vend clipped," ", apellido_vend clipped,negrillas_off SKIP 1 LINE ON EVERY ROW IF t_comision_ventas IS NULL THEN LET t_comision_ventas = 0 END IF IF gt_comision_ventas IS NULL THEN LET gt_comision_ventas = 0 END IF LET t_comision_ventas = t_comision_ventas + x.comision LET gt_comision_ventas = gt_comision_ventas + x.comision SELECT a.descrip_esp INTO descrip_item FROM iptb00002 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 PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo using "&","-", x.cod_tipo using "&&","-",x.cod_sec using "&&&", " ",descrip_item, COLUMN 45, x.numero_recibo USING "<<<<<<", 2 SPACES, x.pfecha_factura USING "dd/mm/yyyy", COLUMN 64, "(",x.tipo_cliente USING "<<",") ",x.factura USING "<<<<<<", COLUMN 76, x.fecha_factura USING "dd/mm/yyyy", COLUMN 86, x.bruto USING "###,###.##", COLUMN 96, x.monto_desc USING "###,###.##", COLUMN 114, x.neto USING "##,###,###.##", COLUMN 130,x.valor_cobrado USING "##,###,###.##", COLUMN 145, x.porc_ventas USING "###.####", COLUMN 155, x.comision USING "(((,(((.##)", 2 SPACES, x.dias USING "(((&)" IF x.dias < 91 THEN LET rvalor_cobrado = rvalor_cobrado + x.valor_cobrado END IF AFTER GROUP OF x.factura SKIP 1 LINE PRINT COLUMN 2, "----------------------------------------------------------------", "----------------------------------------------------------------", "--------------------------------------------" PRINT COLUMN 30, "TOTAL FACTURA ", COLUMN 83, GROUP SUM(x.cantidad*x.precio) USING "##,###,###.##", COLUMN 91, GROUP SUM(x.monto_desc) USING "#,###,###.##", COLUMN 113, GROUP SUM(x.neto) USING "###,###,###.##", COLUMN 130, GROUP SUM(x.valor_cobrado) USING "###,###,###.##", COLUMN 155, GROUP SUM(x.comision) * x.fcobrado USING "(((,###.##)" IF GROUP SUM(x.neto) > 0 THEN LET x.fcobrado = GROUP SUM(x.valor_cobrado) / GROUP SUM(x.neto) END IF PRINT COLUMN 135, "Porciento Cobrado: ", x.fcobrado * 100 USING "###.##%" PRINT COLUMN 135, "Valor Comision : ", GROUP SUM(x.comision) * x.fcobrado USING "###,###.##" IF ttvcomision IS NULL THEN LET ttvcomision = 0 END IF LET tvcomision = (GROUP SUM(x.comision) * x.fcobrado) + tvcomision SKIP 1 LINE AFTER GROUP OF x.sec_vend PRINT negrillas_on LET valor_d = 0 LET valor_dev = 0 LET x.valor_devuelto = 0 IF valor_dev IS NULL THEN LET valor_dev = 0 LET x.valor_devuelto = 0 END IF PRINT COLUMN 84,"--------------", COLUMN 90, "-------------", COLUMN 115, "-------------", 2 SPACES, "--------------", COLUMN 152, "-------------" PRINT COLUMN 30, "TOTAL VENDEDOR ", COLUMN 83, GROUP SUM(x.cantidad*x.precio) USING "##,###,###.##", COLUMN 91, GROUP SUM(x.monto_desc) USING "#,###,###.##", COLUMN 113, GROUP SUM(x.neto) USING "###,###,###.##", COLUMN 130, GROUP SUM(x.valor_cobrado) USING "###,###,###.##", COLUMN 155, tvcomision USING "###,###.##" LET ttvcomision = ttvcomision + tvcomision { PRINT COLUMN 30, "TOTAL COBRADO ANTES DE 91 DIAS ", total_cobrado USING "###,###,###.##", COLUMN 75, "TOTAL COBRADO GERENTE ANTES 91 DIAS ", total_gerente USING "###,###,###.##" } # RESUMEN COMISIONES LET resumen[idx].vendedor = nombre_vend LET resumen[idx].monto_cobrado = rvalor_cobrado LET resumen[idx].comision = tvcomision LET idx = idx + 1 # COMISIONES PARA EL SUB-GERENTE IF x.sec_vend = 38 or x.sec_vend = 44 THEN IF total_subgerente IS NULL THEN LET total_subgerente = 0 END IF IF total_empleado IS NULL THEN LET total_empleado = 0 END IF IF total_empleado1 IS NULL THEN LET total_empleado1 = 0 END IF LET total_subgerente = total_subgerente + (tvcomision * .50) # 338 Altagracia LET total_empleado = total_empleado + (tvcomision *.20) # Codigo 33 Rodolfo LET total_empleado1 = total_empleado1 + (tvcomision *.30) # 38 Maria Alejandra END IF ON LAST ROW PRINT COLUMN 2, "Total General ", COLUMN 83, SUM(x.bruto) USING "###,###,###.##", COLUMN 113, SUM(x.neto) USING "###,###,###.##", COLUMN 130, SUM(x.valor_cobrado) USING "###,###,###.##", COLUMN 155, ttvcomision USING "###,###.##" # COMISION ADICIONAL PARA EL GERENTE LET ttvcomision = 0 # Comisiones Adicionales, esta parte esta fija hasta que se modifique el programa # Maestra de Vendedores que se encuentra en el mantenimiento de ventas IF ventas = 1 OR ventas = 3 THEN PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 10, "| RESUMEN COMISIONES |" PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 11, "COBRADOR", COLUMN 25, "MONTO COBRADO", COLUMN 45, "COMISION" PRINT COLUMN 10, "|--------------------------------------------|" FOR idx = 1 TO 20 IF resumen[idx].vendedor IS NOT NULL THEN PRINT COLUMN 10,"| ",resumen[idx].vendedor, COLUMN 25, resumen[idx].monto_cobrado USING "###,###,###.##", COLUMN 45, resumen[idx].comision USING "##,###.##", COLUMN 55,"|" END IF END FOR IF ventas = 3 THEN PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 10, "| COMISIONES ADICIONALES |" PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 11, "COBRADOR", COLUMN 25, "MONTO COBRADO", COLUMN 45, "COMISION" PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 10, "| DIMAS .81% ", COLUMN 25 , total_gerente USING "USD$##,###,###.##", COLUMN 45, total_gerente * (.81/100) USING "USD$##,###.##", COLUMN 55, "|" END IF IF ventas != 3 THEN PRINT COLUMN 10, "|--------------------------------------------|" SKIP 1 LINE PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 10, "| COMISIONES ADICIONALES |" PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 11, "COBRADOR", COLUMN 25, "MONTO COBRADO", COLUMN 45, "COMISION" PRINT COLUMN 10, "|--------------------------------------------|" LET total_aparte1 = 0 LET total_aparte = 0 SELECT SUM(a.valor*-1) INTO total_aparte FROM cctb00001 a WHERE a.tipo_doc in ("PG") and a.fecha_orig between fecha1 AND fecha2 AND a.tipo_cliente in (12,15) and a.status_t IS NULL { POR REQUERIMIENTOS DE DONA CARME ESTOY COLOCANDO ESTE QUERY EN COMENTARIO, NO SE LE PAGA COMISION A ROSA POR AVANCES SELECT SUM(a.valor) INTO total_aparte1 FROM cctb00001 a WHERE a.tipo_doc in ("AV") and a.fecha_orig between fecha1 AND fecha2 AND a.tipo_cliente in (12) and a.status_t IS NULL and a.valor > 0 } LET total_cobrado = total_aparte + total_aparte1 PRINT COLUMN 10, "| ROSA .232%", COLUMN 25, total_cobrado USING "##,###,###.##", COLUMN 45, total_cobrado * (.232/100) USING "###,###.##", COLUMN 55, "|" PRINT COLUMN 10, "| DIMAS .81% ", COLUMN 25 , total_gerente USING "##,###,###.##", COLUMN 45, total_gerente * (.81/100) USING "##,###.##", COLUMN 55, "|" PRINT COLUMN 10, "| ALTAGRACIA 50% ", COLUMN 45, total_subgerente USING "###,###.##", COLUMN 55, "|" PRINT COLUMN 10, "| KORA 30% ", COLUMN 45, total_empleado1 USING "###,###.##", COLUMN 55, "|" PRINT COLUMN 10, "| RODOLFO 20% ", COLUMN 45, total_empleado USING "###,###.##", COLUMN 55, "|" PRINT COLUMN 10, "|--------------------------------------------|" END IF ELSE PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 10, "| COMISIONES ADICIONALES |" PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 11, "COBRADOR", COLUMN 25, "MONTO COBRADO", COLUMN 45, "COMISION" PRINT COLUMN 10, "|--------------------------------------------|" PRINT COLUMN 10, "| DIMAS .81% ", COLUMN 25 , total_gerente USING "USD$##,###,###.##", COLUMN 45, total_gerente * (.81/100) USING "USD$##,###.##", COLUMN 55, "|" PRINT COLUMN 10, "| ROSA .232%", COLUMN 25, total_cobrado USING "USD$##,###,###.##", COLUMN 45, total_cobrado * (.232/100) USING "USD$###,###.##", COLUMN 55, "|" END IF END REPORT FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) LET fecha = today USING "dd/mm/yy" LET hora = time LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 DISPLAY p_companias.nombre CLIPPED AT 4,lj ATTRIBUTE (REVERSE,blue) DISPLAY fecha AT 4,70 ATTRIBUTE (blue) DISPLAY "Sistema de Cuentas por Cobrar" AT 5,25 DISPLAY hora AT 6,73 ATTRIBUTE(blue) CALL fgl_drawbox(5,79,3,1) #CALL fgl_drawbox(1,79,22,1) END FUNCTION