{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP072 OBJETIVO : Reversar la entrada numero 71 PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Septiembre 18, 1996. COPIA DEL PROGRAMA EDPRRP073. ------------------------------------------------------------------------------- } DATABASE rayovac GLOBALS DEFINE salir CHAR(1) DEFINE entra2,ano SMALLINT DEFINE chano_act,ano_act,c_ano CHAR(4) DEFINE fecha_2 CHAR(8) DEFINE fecha_ini_per CHAR(8), reverse_ent CHAR(14), fecha4,fecha5 DATE ###### Variables para busqueda de rango de fecha DEFINE detalle CHAR(30) DEFINE mes SMALLINT DEFINE tasa DECIMAL(5,2) DEFINE p_fecha,fecha1, fecha2 DATE DEFINE entra CHAR(14) DEFINE entra1 CHAR(5) DEFINE tipo_papel SMALLINT DEFINE afecta CHAR(1) ###### Variables para almacenar los datos selecionados END GLOBALS MAIN DEFER INTERRUPT CALL edprrp072() END MAIN FUNCTION edprrp072() DEFINE c_entra RECORD cuenta_no LIKE cgtb00004.cuenta_no, departamento LIKE cgtb00004.departamento, cod_aux LIKE cgtb00004.cod_aux, cod_sec LIKE cgtb00004.cod_sec, num_doc LIKE cgtb00004.num_doc, descripcion CHAR(25), credito LIKE cgtb00004.debito, debito LIKE cgtb00004.credito END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp072 FROM "edfmrp072" DISPLAY FORM edfmrp072 CALL pantalla() DISPLAY "edprrp072" AT 4,3 DISPLAY "Entrada de Diario Reversando ED.71" AT 6,17 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,afecta,detalle AFTER FIELD entra SELECT unique ref FROM cgtb00004 WHERE ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" NEXT FIELD entra END IF LET entra1 = entra BEFORE FIELD fecha1 SELECT MAX(fecha) INTO p_fecha FROM cgtb00004 WHERE ref[1,5] = entra1 LET fecha1 = p_fecha + 1 DISPLAY BY NAME fecha1 AFTER FIELD fecha1 IF fecha1 IS NULL THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha1 END IF IF fecha1 <= p_fecha THEN ERROR "(179) EXISTE ENTRADA DE DIARIO CON ESA FECHA" NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 is null THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR" NEXT FIELD fecha1 END IF ###### Selecionando en rango de fecha de la tabla de periodo para el fecha2 SELECT UNIQUE ref FROM cgtb00004 where ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" NEXT FIELD fecha2 END IF END INPUT ##### Creando la facilidad para cancelar proceso con DELETE O SUPR IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF # Busca la informacion requerida DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) LET entra2 = entra[11,12] LET chano_act = YEAR(TODAY) IF entra2 = "01" THEN LET chano_act = YEAR(TODAY) - 1 LET entra2 = "12" ELSE LET entra2 = entra2 - 1 END IF LET chano_act = chano_act CLIPPED LET entra[13,14] = chano_act[3,4] CLIPPED LET reverse_ent = "ED.71-001/",entra2 using "&&",entra[13,14] DECLARE actual CURSOR FOR SELECT a.cuenta_no,a.departamento,a.cod_aux,a.cod_sec,a.num_doc, b.descripcion, a.debito,a.credito,a.rowid FROM cgtb00004 a,cgtb00001 b WHERE a.ref matches reverse_ent and a.cuenta_no = b.cuenta_no ORDER BY a.rowid DESC DISPLAY " " AT 19,14 ##### Loop para enviar informacion al reporte START REPORT opera TO PIPE "lp -dcentral" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH actual INTO c_entra.* IF int_flag THEN LET int_flag = false RETURN END IF OUTPUT TO REPORT opera(c_entra.*) END FOREACH FINISH REPORT opera RUN "type C:\\archivo > %USPRINT%" END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local FUNCTION msgrp000(tipo_papel) DEFINE tipo_papel SMALLINT, longitud CHAR(11), linea_papel CHAR(50) CASE WHEN tipo_papel = 1 LET longitud = " 9 1/2 x 11" WHEN tipo_papel = 2 LET longitud = "14 7/8 x 11" END CASE LET linea_papel = "Coloque papel ",longitud," en la impresora." DISPLAY linea_papel AT 15,14 DISPLAY "Asegurese de que la impresora este encendida." AT 16,14 DISPLAY " Ejecuta impresion Cancela impresion" AT 18,14 RUN "type C:\\archivo > %USPRINT%" END FUNCTION FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) LET fecha = today USING "dd/mm/yy" LET hora = time DISPLAY "R A Y . O . V A C D O M I N I C A N A, S. A." AT 4,17 ATTRIBUTE (REVERSE,YELLOW) DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW) DISPLAY "Sistema de Contabilidad General" AT 5,24 DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW) CALL fgl_drawbox(5,79,3,1) CALL fgl_drawbox(1,79,22,1) RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT opera(x) DEFINE x RECORD cuenta_no LIKE cgtb00004.cuenta_no, departamento LIKE cgtb00004.departamento, cod_aux LIKE cgtb00004.cod_aux, cod_sec LIKE cgtb00004.cod_sec, num_doc LIKE cgtb00004.num_doc, descripcion CHAR(25), credito LIKE cgtb00004.debito, debito LIKE cgtb00004.credito END RECORD DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE t_debito,t_credito DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comp_on = ASCII 31 LET comp_off = ASCII 029 LET doce = ASCII 030 LET normal = ASCII 27, ASCII 80 LET hora = time PRINT COLUMN 1, comp_off,"edprrp072", COLUMN 23, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 75, "Pag. ",pageno using "###" PRINT COLUMN 35, "Sistema de Contabilidad", COLUMN 75, today using "dd/mm/yy" PRINT COLUMN 24, "Entrada de Diario Reversando Entrada 71 ", COLUMN 78, hora PRINT COLUMN 34, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" PRINT comp_off,doce SKIP 1 LINES PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entra,doble_off PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 17, "Catalogo", COLUMN 26, "Refe", COLUMN 41, "Concepto", COLUMN 75, "Debe", COLUMN 93, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" ON EVERY ROW IF t_debito is null THEN LET t_debito = 0 END IF IF t_credito is null THEN LET t_credito = 0 END IF IF x.debito !=0 THEN PRINT COLUMN 2, x.cuenta_no, COLUMN 11, x.departamento using "&&&&", COLUMN 17, x.cod_aux using "&&","-",x.cod_sec using "&&&&", COLUMN 26, x.num_doc, COLUMN 41, x.descripcion, COLUMN 68, x.debito using "##,###,###.##" LET t_debito = t_debito + x.debito END IF IF x.credito != 0 THEN PRINT COLUMN 2, x.cuenta_no, COLUMN 11, x.departamento using "&&&&", COLUMN 17, x.cod_aux using "&&","-",x.cod_sec using "&&&&", COLUMN 26, x.num_doc, COLUMN 41, x.descripcion, COLUMN 85, x.credito using "##,###,###.##" LET t_credito = t_credito + x.credito END IF IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES (fecha2,1,entra,x.cuenta_no, x.departamento,x.num_doc, x.cod_aux,x.cod_sec,null,detalle, null,x.debito, x.credito,null,user,current,null,null) END IF ON LAST ROW PRINT COLUMN 1,negrillas_on PRINT COLUMN 67,"--------------", COLUMN 85,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 68, t_debito using "##,###,###.##", COLUMN 85, t_credito using "##,###,###.##" SKIP 2 LINE PRINT COLUMN 1, detalle CLIPPED LET t_debito = 0 LET t_credito = 0 PAGE TRAILER SKIP 4 LINE PRINT COLUMN 4,"_______________________", COLUMN 36,"_______________________", COLUMN 75,"_______________________" PRINT COLUMN 2," PREPARADO POR ", COLUMN 36," REVISADO POR ", COLUMN 75," AUTORIZADO POR " PRINT COLUMN 1,comp_off,negrillas_off END REPORT