{ ============================================================================== PROGRAMA : CGPRRP023 SISTEMA : Sistema de Contabilidad General Objetivo : Validaciion de Cheque PROGRAMADOR : Tadeo A. Ferreras FECHA : Oct. 05, 1993 ============================================================================== } GLOBALS "cgprgb000.4gl" DEFINE datos_1 RECORD cuenta_no CHAR(8), descripcion CHAR(30), num_doc CHAR(14) , p_status CHAR(1), valor DECIMAL(12,2), fecha DATE, portador VARCHAR(100) END RECORD DEFINE diario RECORD cuenta_1 CHAR(8), descripcion1 CHAR(30), ref CHAR(14), fecha DATE, tipo SMALLINT, cuenta_no CHAR(8), descripcion CHAR(30), detalle1 CHAR(30), detalle2 CHAR(30), debito DECIMAL(12,2), credito DECIMAL(12,2), status_t CHAR(1), orden INTEGER, banco CHAR(8), portador VARCHAR(100) END RECORD DEFINE fecha_inicial,fecha_final DATE, t,t1 varchar(3) 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_compania.* FROM companias a CALL cgprrp023() END MAIN FUNCTION cgprrp023() LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM cgfmrp023 FROM "cgfmrp023" DISPLAY FORM cgfmrp023 DISPLAY "cgprrp023" AT 4,3 DISPLAY "Validacion de Cheques Emitidos" AT 6,25 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_inicial,fecha_final AFTER FIELD fecha_inicial IF fecha_inicial IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF AFTER FIELD fecha_final IF fecha_final IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_inicial > fecha_final THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF CONSTRUCT criterio ON a.cuenta_no,a.cheque_no,a.portador FROM cuenta_no,cheque_no,portador IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET selec = "SELECT UNIQUE a.cuenta_no,b.descripcion,a.cheque_no,a.status_t, ", " a.monto,a.fecha,a.portador ", "FROM cgtb00005 a,cgtb00001 b ", "WHERE (a.cuenta_no=b.cuenta_no) AND ( ",criterio CLIPPED," ) AND ", " (a.status_t IS NULL OR a.status_t in('N','C')) AND ", " a.fecha BETWEEN ? AND ? ORDER BY a.cuenta_no,a.cheque_no" DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) PREPARE comando FROM selec DECLARE busco CURSOR FOR comando OPEN busco USING fecha_inicial,fecha_final CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia LET t = fgl_winquestion("IMPRESION","DESEA VISUALIZAR POR PANTALLA?","NO","YES|NO","QUESTION",0) IF t = "YES" THEN CALL configureOutput('SVG') RETURNING handler START REPORT cheque_e TO XML HANDLER handler ELSE START REPORT cheque_e TO archivo END IF DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) WHILE status != NOTFOUND FETCH busco INTO datos_1.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET diario.cuenta_1 = datos_1.cuenta_no LET diario.descripcion1 = datos_1.descripcion LET diario.ref = "CK.",datos_1.num_doc USING "&&&&&&" LET diario.portador = datos_1.portador DECLARE busca1 CURSOR FOR SELECT b.fecha,b.tipo,b.cuenta_no,c.descripcion,b.detalle_1,b.detalle_2, b.debito,b.credito,b.status_t,'1',b.detalles INTO diario.fecha,diario.tipo,diario.cuenta_no,diario.descripcion, diario.detalle1,diario.detalle2,diario.debito,diario.credito, diario.status_t,diario.orden,diario.banco FROM cgtb00004 b,cgtb00001 c WHERE (b.ref = diario.ref) AND (b.cuenta_no = c.cuenta_no) AND (b.status_t IS NULL OR b.status_t = "N") AND (RTRIM(b.detalles) = diario.cuenta_1) FOREACH busca1 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF diario.status_t IS NOT NULL THEN LET diario.debito = 0 LET diario.credito = 0 END IF IF datos_1.p_status = "N" THEN LET diario.descripcion = "NULO" LET diario.detalle1 = null LET diario.detalle2 = null END IF OUTPUT TO REPORT cheque_e(diario.*,fecha_inicial,fecha_final) END FOREACH END WHILE FINISH REPORT cheque_e IF t = "NO" THEN LET t1 = fgl_winquestion("IMPRESION","DESEA IMPRIMIR EN IMPRESORA EL REPORTE?","NO","YES|NO","QUESTION",0) IF t1 = "YES" THEN RUN imprime END IF ELSE RUN imprime END IF END FUNCTION REPORT cheque_e(x,fecha1,fecha2) DEFINE x RECORD cuenta_1 CHAR(8), descripcion1 CHAR(30), ref CHAR(14), fecha DATE, tipo SMALLINT, cuenta_no CHAR(8), descripcion CHAR(30), detalle1 CHAR(30), detalle2 CHAR(30), debito DECIMAL(12,2), credito DECIMAL(12,2), status_t CHAR(1), orden INTEGER, banco CHAR(8), portador VARCHAR(100) END RECORD DEFINE fecha1,fecha2 DATE DEFINE total1,total2,total3,total4,total5,total6,total7,total8,total9, debito,credito,balance DECIMAL(12,2) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE descripcion1 CHAR(30) DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE normal CHAR(3) DEFINE hora CHAR(5) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 ORDER BY x.cuenta_1,x.ref,x.orden 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 LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS PRINT COLUMN 1, negrillas_on,comp_off PRINT COLUMN 1, "cgprrp023", COLUMN l, p_compania.nombre CLIPPED, COLUMN 72, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Contabilidad General")) / 2 PRINT COLUMN l, "Sistema de Contabilidad General", COLUMN 72, today using "dd/mm/yy" LET l = (80 - LENGTH("Validacion Cheques Emitidos")) / 2 PRINT COLUMN l, "Validacion Cheques Emitidos", COLUMN 75, hora PRINT COLUMN 1, "FECHA: Del ",fecha1 USING "dd/mm/yy"," Al ", fecha2 USING "dd/mm/yy" PRINT COLUMN 1, comp_on PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "-----------------------------" PRINT COLUMN 1, "Documento", COLUMN 11, "Cuenta_no", COLUMN 22, "Fecha", COLUMN 32, "Detalle", COLUMN 75, "Debito", COLUMN 95, "Credito", COLUMN 115,"Balance" PRINT COLUMN 1, "----------------------------------------------------", "----------------------------------------------------" , "-----------------------------",negrillas_off skip 1 line ## AQUI SE INDICA LA IMPRESION DEL DETALLE BEFORE GROUP OF x.cuenta_1 LET total3 = 0 LET total4 = 0 LET total5 = 0 PRINT COLUMN 1, negrillas_on PRINT COLUMN 2, "Cuenta No. ",x.cuenta_1 CLIPPED," ", x.descripcion1 CLIPPED PRINT COLUMN 1, negrillas_off BEFORE GROUP OF x.ref LET total1 = 0 LET total2 = 0 LET balance = 0 IF balance is null THEN LET balance = 0 END IF PRINT COLUMN 1,x.ref CLIPPED," ",x.portador CLIPPED ON EVERY ROW IF x.debito IS NULL THEN LET x.debito = 0 END IF IF x.credito IS NULL THEN LET x.credito = 0 END IF LET total1 = total1 + x.debito LET total2 = total2 + x.credito LET balance = balance + (x.debito - x.credito) PRINT COLUMN 11,x.cuenta_no CLIPPED, COLUMN 22,x.fecha USING "dd/mm/yy", COLUMN 32,x.detalle1 CLIPPED," ", COLUMN 68,x.debito USING "###,###,###.##", COLUMN 90,x.credito USING "###,###,###.##" , COLUMN 110, balance USING "(((,(((,((#.##)" IF x.detalle2 is not null THEN PRINT COLUMN 32, x.detalle2 CLIPPED END IF AFTER GROUP OF x.ref IF total6 IS NULL THEN LET total6 = 0 END IF IF total7 IS NULL THEN LET total7 = 0 END IF IF total8 is null THEN LET total8 = 0 END IF LET total5 = total5 + balance LET total8 = total8 + balance PRINT COLUMN 68,"--------------", COLUMN 90,"--------------", COLUMN 110,"--------------" PRINT COLUMN 1, "Total Cheque -->", COLUMN 68, GROUP SUM(x.debito) USING "###,###,###.##", COLUMN 90, GROUP SUM(x.credito) USING "###,###,###.##", COLUMN 110, GROUP SUM(x.debito - x.credito) USING "###,###,###.##" SKIP 1 LINE AFTER GROUP OF x.cuenta_1 PRINT COLUMN 68,"==============", COLUMN 90,"==============", COLUMN 110,"==============" PRINT COLUMN 1, "Total Banco -->", COLUMN 68, GROUP SUM(x.debito) USING "###,###,###.##", COLUMN 90, GROUP SUM(x.credito) USING "###,###,###.##", COLUMN 110, GROUP SUM(x.debito - x.credito) USING "###,###,###.##" PRINT COLUMN 68,"==============", COLUMN 90,"==============", COLUMN 110,"==============" ON LAST ROW PRINT COLUMN 68,"==============", COLUMN 90,"==============", COLUMN 110,"==============" PRINT COLUMN 1, "Total Gral -->", COLUMN 68, SUM(x.debito) USING "###,###,###.##", COLUMN 90, SUM(x.credito) USING "###,###,###.##", COLUMN 110, SUM(x.debito - x.credito) USING "###,###,###.##" PRINT COLUMN 68,"==============", COLUMN 90,"==============", COLUMN 110,"==============" PRINT COLUMN 1,comp_off LET total6 = 0 LET total7 = 0 LET total8 = 0 LET total3 = 0 LET total4 = 0 LET total5 = 0 LET total1 = 0 LET total2 = 0 LET balance= 0 END REPORT