{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP129 OBJETIVO : Entrada de Diario Cuentas Por Pagar EUROS(COPIADO DEL edprrp129) PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Septiembre 11, 2004. ------------------------------------------------------------------------------- } DATABASE marmotech GLOBALS ###### Variables para busqueda de rango de fecha DEFINE afecta CHAR(1), nombre_cta,detalle CHAR(30), lj,mes SMALLINT , ano CHAR(4) , tasa DECIMAL(5,2) , p_fecha,fecha1, fecha2 DATE , nominas CHAR(1), entra CHAR(14), entra1 CHAR(5), tipo_papel SMALLINT, debito,credito DECIMAL(12,2), p_cctb01 RECORD LIKE cctb00001.*, p_companias RECORD LIKE companias.*, mano_obra,sueldo_ind,monto_banco,interes DECIMAL(12,2), ###### Variables para almacenar los datos selecionados selec5, selec6 CHAR(1500) ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario1 RECORD cuenta_no SMALLINT, descripcion CHAR(30), valor DECIMAL(10,2), monto_desc DECIMAL(10,2) END RECORD DEFINE prt_mvto11 RECORD factura CHAR(10), cod_sp SMALLINT, cod_sp_sec SMALLINT, fecha DATE, cuenta_no CHAR(11), departamento SMALLINT, cod_aux SMALLINT, cod_sec SMALLINT, refer CHAR(10), debito DECIMAL(12,2), credito DECIMAL(12,2), id INTEGER, nom_sp CHAR(45), valor_fac DECIMAL(12,2) END RECORD END GLOBALS MAIN DEFER INTERRUPT SELECT a.* INTO p_companias.* FROM companias a CALL edprrp129() END MAIN FUNCTION edprrp129() OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp129 FROM "edfmrp129" DISPLAY FORM edfmrp129 CALL pantalla() DISPLAY "edprrp129" AT 4,3 DISPLAY "Entrada de Diario Cuentas Por Pagar Internacional" AT 6,15 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 a.ref FROM cgtb00004 a WHERE a.ref = entra AND a.status_t IS NULL IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" NEXT FIELD entra END IF LET entra1 = entra BEFORE FIELD fecha1 SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a WHERE a.ref[1,9] = entra1 AND a.status_t IS NULL 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 a.ref FROM cgtb00004 a where a.ref = entra AND a.status_t IS NULL 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 DECLARE movto CURSOR FOR SELECT a.factura,a.cod_sp,a.cod_sp_sec,a.fecha,a.cuenta_no, a.departamento,a.cod_aux,a.cod_sec,a.num_doc,a.debito,a.credito, a.rowid," "," ",b.descripcion FROM cptb00003 a, cgtb00001 b WHERE (a.cod_sp = 24 AND a.cuenta_no = b.cuenta_no AND a.status_t IS NULL AND a.fecha BETWEEN fecha1 AND fecha2 AND b.status_t IS NULL) ORDER BY a.cod_sp,a.cod_sp_sec,a.factura,a.cuenta_no,a.rowid DISPLAY "<< Buscando Informacion .... Espere Por Favor. >>" AT 19,14 ATTRIBUTE(REVERSE,BOLD) START REPORT cuenta_ft TO "C:\\archivo" DISPLAY "<< " AT 19,14 DISPLAY "<< Impresion En Proceso .... Espere Por Favor. >>" AT 19,14 ATTRIBUTE(REVERSE,BOLD) FOREACH movto INTO prt_mvto11.*,nombre_cta # Busca El Valor De La Factura SELECT UNIQUE a.valor INTO prt_mvto11.valor_fac FROM cptb00001 a WHERE a.cod_sp = prt_mvto11.cod_sp AND a.cod_sp_sec = prt_mvto11.cod_sp_sec AND a.num_doc = prt_mvto11.factura AND a.tipo_doc = "FT" SELECT UNIQUE a.nom_sp INTO prt_mvto11.nom_sp FROM cotb00001 a WHERE a.cod_sp = prt_mvto11.cod_sp AND a.cod_sp_sec = prt_mvto11.cod_sp_sec OUTPUT TO REPORT cuenta_ft(prt_mvto11.*,nombre_cta) END FOREACH FINISH REPORT cuenta_ft START REPORT cuenta_ft1 TO "C:\\archivo" FOREACH movto INTO prt_mvto11.*,nombre_cta # Busca El Valor De La Factura SELECT UNIQUE a.valor INTO prt_mvto11.valor_fac FROM cptb00001 a WHERE a.cod_sp = prt_mvto11.cod_sp AND a.cod_sp_sec = prt_mvto11.cod_sp_sec AND a.num_doc = prt_mvto11.factura AND a.tipo_doc = "FT" SELECT UNIQUE a.nom_sp INTO prt_mvto11.nom_sp FROM cotb00001 a WHERE a.cod_sp = prt_mvto11.cod_sp AND a.cod_sp_sec = prt_mvto11.cod_sp_sec OUTPUT TO REPORT cuenta_ft1(prt_mvto11.*,nombre_cta) END FOREACH FINISH REPORT cuenta_ft1 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT cuenta_ft(x,nombre_cta1) DEFINE x RECORD factura CHAR(10), cod_sp SMALLINT, cod_sp_sec SMALLINT, fecha DATE, cuenta_no CHAR(11), departamento SMALLINT, cod_aux SMALLINT, cod_sec SMALLINT, refer CHAR(10), debito DECIMAL(12,2), credito DECIMAL(12,2), id INTEGER, nom_sp CHAR(45), valor_fac DECIMAL(12,2) END RECORD DEFINE reg_final RECORD cuenta_no CHAR(8), departamento SMALLINT, cod_aux SMALLINT, cod_sec SMALLINT, num_doc CHAR(10), debito DECIMAL(12,2), credito DECIMAL(12,2) END RECORD, nombre_cta1 CHAR(30), codigo_a CHAR(7) DEFINE nom_sup CHAR(45) DEFINE sale CHAR(1) DEFINE valor2,valor1,total_debito,total_credito,t_debito,t_credito, total_supl1,total_supl2,total1 DECIMAL(12,2) DEFINE comp_on CHAR(3), comp_off CHAR(3), doce CHAR(3), doble_on CHAR(3), doble_off CHAR(3), negrillas_on CHAR(6), negrillas_off CHAR(6), hora CHAR(5) OUTPUT LEFT MARGIN 0 TOP MARGIN 1 BOTTOM MARGIN 4 #ORDER BY x.cod_sp_sec,x.factura,x.cuenta_no,x.id FORMAT PAGE HEADER LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET doble_on = ASCII 27, ASCII 14 LET doble_off = ASCII 27, ASCII 20 LET doce = ASCII 27, ASCII 77 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET hora = time LET lj = (83 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1,comp_off,doce PRINT COLUMN 1, "cpprrp011", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 76,"Pag. ", pageno using "###" PRINT COLUMN 1, negrillas_on, COLUMN 32, "SISTEMA CUENTA POR PAGAR", COLUMN 76, today using "dd/mm/yy" PRINT COLUMN 20, "Validacion Cuentas Afectadas Por Facturacion", COLUMN 79, hora PRINT COLUMN 30,"DEL ", fecha1 USING "dd/mm/yy"," AL ", fecha2 USING "dd/mm/yy" PRINT comp_on PRINT COLUMN 1, "----------------------------------------", "----------------------------------------", "----------------------------------------", "----------------" PRINT COLUMN 1, "Suplidor", COLUMN 40, "Factura", COLUMN 52, "Fecha", COLUMN 62, "Valor Fact.", COLUMN 75, "Cuenta", COLUMN 85, "Dpto. ", COLUMN 91, "Cta. Aux.", COLUMN 99, "Refer.", COLUMN 115, "Debe", COLUMN 131, "Haber" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------", "----------------------------------------", "----------------" PRINT negrillas_off BEFORE GROUP OF x.cod_sp_sec LET total_supl1 = 0 LET total_supl2 = 0 PRINT COLUMN 1, x.cod_sp USING "&&","-", x.cod_sp_sec USING "&&&&"," ", x.nom_sp CLIPPED; BEFORE GROUP OF x.factura LET total_debito = 0 LET total_credito = 0 PRINT COLUMN 40, x.factura CLIPPED, COLUMN 52, x.fecha USING "dd/mm/yy", COLUMN 62, x.valor_fac USING "#,###,###.##"; 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 total_debito = total_debito + x.debito LET total_credito = total_credito + x.credito LET total_supl1 = total_supl1 + x.debito LET total_supl2 = total_supl2 + x.credito IF x.cod_aux IS NOT NULL THEN LET codigo_a = x.cod_aux USING "##","-",x.cod_sec USING "####" ELSE LET codigo_a = null END IF PRINT COLUMN 75, x.cuenta_no CLIPPED, COLUMN 85, x.departamento USING "####", COLUMN 91, codigo_a CLIPPED, COLUMN 99, x.refer CLIPPED, COLUMN 111, x.debito USING "###,###,###.##", COLUMN 126, x.credito USING "###,###,###.##" AFTER GROUP OF x.factura PRINT COLUMN 111, "--------------", COLUMN 126, "--------------" PRINT COLUMN 111, GROUP SUM(x.debito) USING "###,###,###.##", COLUMN 126, GROUP SUM(x.credito) USING "###,###,###.##" SKIP 1 LINE IF total1 IS NULL THEN LET total1 = 0 END IF LET total1 = total1 + x.valor_fac AFTER GROUP OF x.cod_sp_sec PRINT COLUMN 111, "--------------", COLUMN 126, "--------------" PRINT COLUMN 111, GROUP SUM(x.debito) USING "###,###,###.##", COLUMN 126, GROUP SUM(x.credito) USING "###,###,###.##" PRINT COLUMN 111, "==============", COLUMN 126, "==============" SKIP 2 LINE ON LAST ROW PRINT COLUMN 1, "-------------------------------------", "-------------------------------------", "-------------------------------------", "-----------------------" SKIP 1 LINE PRINT COLUMN 50, "Total Por Cuentas" SKIP 1 LINE DECLARE busca1 CURSOR FOR SELECT a.cuenta_no,a.departamento,a.cod_aux,a.cod_sec,a.num_doc, SUM(a.debito),SUM(a.credito) FROM cptb00003 a WHERE a.status_t IS NULL AND a.fecha BETWEEN fecha1 AND fecha2 AND a.cod_sp = 22 GROUP BY 1,2,3,4,5 ORDER BY 5 DESC,6 DESC,2 LET t_debito = 0 LET t_credito = 0 FOREACH busca1 INTO reg_final.* LET t_debito = t_debito + reg_final.debito LET t_credito = t_credito + reg_final.credito PRINT COLUMN 75, reg_final.cuenta_no CLIPPED, COLUMN 85, reg_final.departamento USING "####", COLUMN 91, reg_final.cod_aux USING "&&"," ", reg_final.cod_sec USING "&&&&", COLUMN 99, reg_final.num_doc CLIPPED, COLUMN 111, reg_final.debito USING "###,###,###.##", COLUMN 126, reg_final.credito USING "###,###,###.##" END FOREACH PRINT COLUMN 111, "--------------", COLUMN 126, "--------------" PRINT COLUMN 45, "Total General --->", COLUMN 65, total1 USING "###,###,###.##", COLUMN 111, t_debito USING "###,###,###.##", COLUMN 126, t_credito USING "###,###,###.##" LET total1 = 0 LET t_debito = 0 LET t_credito = 0 PRINT comp_off END REPORT REPORT cuenta_ft1(x,nombre_cta1) DEFINE x RECORD factura CHAR(10), cod_sp SMALLINT, cod_sp_sec SMALLINT, fecha DATE, cuenta_no CHAR(11), departamento SMALLINT, cod_aux SMALLINT, cod_sec SMALLINT, refer CHAR(10), debito DECIMAL(12,2), credito DECIMAL(12,2), id INTEGER, nom_sp CHAR(45), valor_fac DECIMAL(12,2) END RECORD DEFINE nombre_cta1 CHAR(50), codigo_a CHAR(7) DEFINE nom_sup CHAR(45) DEFINE sale CHAR(1) DEFINE valor2,valor1,total_debito,total_credito,t_debito,t_credito, total_supl1,total_supl2,total1 DECIMAL(12,2) DEFINE comp_on CHAR(3), comp_off CHAR(3), doce CHAR(3), doble_on CHAR(3), doble_off CHAR(3), negrillas_on CHAR(6), negrillas_off CHAR(6), hora CHAR(5) OUTPUT LEFT MARGIN 0 TOP MARGIN 1 BOTTOM MARGIN 4 ORDER BY x.cuenta_no,x.departamento,x.cod_aux,x.cod_sec 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 030 LET hora = time LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2 PRINT comp_off PRINT COLUMN 1, "edprrp129", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" LET lj = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2 PRINT COLUMN lj, "Sistema de Entradas Al Diario", COLUMN 75, today using "dd/mm/yy" LET lj = (80 - LENGTH("Cuentas Por Pagar Internacional")) / 2 PRINT COLUMN lj, "cuentas Por pagar Internacional", COLUMN 78, hora PRINT COLUMN 28, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" 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, "--------------------------------------------------", "----------------------------------------", negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 16, "Auxiliar", COLUMN 25, "Concepto", COLUMN 58, "Debe", COLUMN 71, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" AFTER GROUP OF x.cod_sec LET debito = 0 LET debito = GROUP SUM(x.debito) IF debito IS NULL THEN LET debito = 0 END IF LET credito = 0 LET credito = GROUP SUM(x.credito) IF credito IS NULL THEN LET credito = 0 END IF IF debito <> 0 THEN PRINT COLUMN 2, x.cuenta_no CLIPPED, COLUMN 11, x.departamento USING "####", COLUMN 16, x.cod_aux USING "##"," ",x.cod_sec USING "####", COLUMN 25, nombre_cta1[1,24], COLUMN 50, debito USING "###,###,###.##" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entra,x.cuenta_no, x.departamento,null,x.cod_aux, x.cod_sec,null,detalle,null, debito,0,null,user,current,null, null) END IF END IF IF credito <> 0 THEN PRINT COLUMN 2, x.cuenta_no CLIPPED, COLUMN 11, x.departamento USING "####", COLUMN 16, x.cod_aux USING "##"," ",x.cod_sec USING "####", COLUMN 25, nombre_cta1[1,24], COLUMN 65, credito USING "###,###,###.##" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entra,x.cuenta_no, x.departamento,null,x.cod_aux, x.cod_sec,null,detalle,null, 0,credito,null,user,current,null, null) END IF END IF ON LAST ROW PRINT negrillas_on PRINT COLUMN 50, "--------------", COLUMN 65, "--------------" PRINT COLUMN 35, "Totales", COLUMN 50, SUM(x.debito) USING "###,###,###.##", COLUMN 65, SUM(x.credito) USING "###,###,###.##" SKIP 2 LINE PRINT detalle SKIP 4 LINE PRINT COLUMN 10, "--------------", COLUMN 35, "--------------", COLUMN 60, "--------------" PRINT COLUMN 10, "PREPARADO POR ", COLUMN 35, " REVISADO POR ", COLUMN 60, "AUTORIZADO POR" PRINT negrillas_off END REPORT 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 END FUNCTION FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) SELECT * INTO p_companias.* FROM companias LET lj = (80 - LENGTH(p_companias.nombre CLIPPED)) / 2 LET fecha = today USING "dd/mm/yy" LET hora = time DISPLAY p_companias.nombre CLIPPED AT 4,lj ATTRIBUTE (REVERSE,blue) DISPLAY fecha AT 4,70 ATTRIBUTE (blue) DISPLAY "Sistema de Contabilidad General" AT 5,24 DISPLAY hora AT 6,73 ATTRIBUTE(blue) CALL fgl_drawbox(5,79,3,1) CALL fgl_drawbox(1,79,22,1) END FUNCTION