{ ------------------------------------------------------------------ PROGRAMA : CCPRRP011 OBJETIVO : Reporte de Descuento por Pronto Pago Mensual Comparativo PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Mayo 12,1993. ------------------------------------------------------------------ } GLOBALS "ccprgb000.4gl" #### Definicion de variables para busqueda de informacion #### DEFINE p_ano CHAR(4) DEFINE mes RECORD mes_in SMALLINT, mes_fi SMALLINT END RECORD FUNCTION ccprrp011() DEFINE prt_desc1 RECORD mes_fact SMALLINT, descrip LIKE mestable.descrip, fecha1 DATE, fecha2 DATE END RECORD OPTIONS FORM LINE 10 WHENEVER ERROR CONTINUE CLEAR SCREEN OPEN FORM ccfmrp011 FROM "ccfmrp011" CALL pantalla() DISPLAY "ccprrp011" at 4,4 attribute(blue) DISPLAY "Descuento por Pronto Pago Mensual Comparativo" at 6,18 DISPLAY FORM ccfmrp011 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ###### Proceso para aceptar valores del rango de fecha para busqueda ##### INPUT BY NAME mes.*,p_ano 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 mes_in IF mes.mes_in is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes_in END IF IF mes.mes_in > 12 THEN LET numero_msg = 154 CALL msg(numero_msg) NEXT FIELD mes_in END IF AFTER FIELD mes_fi IF mes.mes_fi is null THEN LET mes.mes_fi = month(today) DISPLAY BY NAME mes.mes_fi END IF IF mes.mes_fi > 12 THEN LET numero_msg = 154 CALL msg(numero_msg) NEXT FIELD mes_fi END IF IF mes.mes_fi < mes.mes_in THEN LET numero_msg = 86 CALL msg(numero_msg) NEXT FIELD mes_fi END IF END INPUT ###### Facilidad para cancelar proceso de impresion ########### IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false return END IF ####### Selecionando informacion para imprimir ####### DECLARE buscar CURSOR FOR SELECT a.mes,g.descrip,a.fecha_inicio,a.fecha_corte FROM mestable g,prdtable a WHERE a.mes = g.mes AND a.mes BETWEEN mes.mes_in AND mes.mes_fi AND a.ano = p_ano IF status < 0 THEN CALL integridad() IF bANDera = 1 THEN LET bANDera = 0 END IF END IF DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" at 19,14 attribute(reverse,bold) ####### Enviando informacion a la impresora de contabilidad ####### START REPORT prt_desc2 TO "C:\\archivo" DISPLAY " " at 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" at 19,14 ATTRIBUTE(REVERSE) FOREACH buscar INTO prt_desc1.* OUTPUT TO REPORT prt_desc2(prt_desc1.*,mes.mes_in,mes.mes_fi) END FOREACH FINISH REPORT prt_desc2 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT prt_desc2(x,mes1,mes2) ####### Definiendo las variable que se imprimiran ####### DEFINE x RECORD mes_fact SMALLINT, descrip LIKE mestable.descrip, fecha1 DATE, fecha2 DATE END RECORD, mes1,mes2 SMALLINT, fecha DATE, i,c INTEGER, valor,monto_desc,itbi,acum_itbi,acum_valor,acum_desc DECIMAL(11,2), proporc,acum_prop DECIMAL(10,3) 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,normal CHAR(2) DEFINE hora CHAR(5) DEFINE l SMALLINT DEFINE varia CHAR(10) DEFINE mes_p CHAR(15) ####### Ordenando o sorteando informacion ######## ORDER BY x.mes_fact ######## Disenando el formato de salidad del reporte ###### FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 98 LET negrillas_off = ASCII 27, ASCII 99 LET normal = ASCII 27, ASCII 80 LET comp_on = ASCII 15 LET comp_off = ASCII 30 LET doce = ASCII 27, ASCII 77 LET hora = time LET fecha = today LET hora = time LET lj = (130 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "ccprrp011", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 123, "Pag. ",pageno USING "###" PRINT COLUMN 42, " Sistema de Cuentas por Cobrar", COLUMN 123, today USING "dd/mm/yy" PRINT COLUMN 42, "Descuento por Pronto Pago Mensual Comparativo", COLUMN 126, hora skip 1 line PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, "__________________________________________________", "__________________________________________________", "______________________________" PRINT COLUMN 40, "A c t u a l", COLUMN 92, "A c u m u l a d o" PRINT COLUMN 27, "Monto a", COLUMN 82, "Monto a" PRINT COLUMN 2, "Mes", COLUMN 27, "Cobrar", COLUMN 42, "Desc.", COLUMN 54, "Prop.%", COLUMN 65, "Itbi", COLUMN 82, "Cobrar", COLUMN 98, "Desc.", COLUMN 110, "Prop.%", COLUMN 127, "Itbi" PRINT COLUMN 1, "__________________________________________________", "__________________________________________________", "______________________________" PRINT COLUMn 1, negrillas_off SKIP 1 LINE #ON EVERY ROW BEFORE GROUP OF x.mes_fact LET valor = 0 LET monto_desc = 0 AFTER GROUP OF x.mes_fact SELECT sum(a.neto),SUM(b.monto_desc) INTO valor,monto_desc FROM cctb00001 b,vetb00002 a WHERE b.tipo_doc = "PG" AND b.aplica_a = a.factura AND b.monto_desc != 0 AND b.fecha_orig BETWEEN x.fecha1 AND x.fecha2 and a.status_t is null IF acum_valor is null THEN LET acum_valor= 0 END IF IF acum_desc is null THEN LET acum_desc = 0 END IF #### Acumulando monto de la factura y monto del descuento por mes del #### periodo en el rango de fecha LET acum_valor= acum_valor+ valor LET acum_desc = acum_desc + monto_desc LET proporc = (monto_desc/valor) * 100 LET acum_itbi= acum_desc * 0.08 LET itbi = monto_desc * 0.08 LET acum_prop = (acum_desc/acum_valor) * 100 SKIP 1 LINE PRINT COLUMN 2, x.descrip clipped, COLUMN 22, valor USING "###,###,###.##", COLUMN 38, monto_desc USING "###,###,###.##", COLUMN 51, proporc USING "##&.##", COLUMN 63, itbi USING "###,###.##", COLUMN 77, acum_valor USING "###,###,###.##", COLUMN 92, acum_desc USING "###,###,###.##", COLUMN 107, acum_prop USING "##&.##", COLUMN 119, acum_itbi USING "#,###,###.##" ON LAST ROW PRINT comp_off END REPORT