{ PRGRAMA : NOPRRP038 OBJETIVO :GENERA FILE PARA EL BANCO } GLOBALS "noprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave # LET usuarios = 'jsoto' # LET clave = 'lmmjvsd2009' CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL noprrp038() END MAIN FUNCTION noprrp038() DEFINE dcmd CHAR(100), factor INT, pprogreso SMALLINT OPEN FORM nofmrp008 FROM "nofmrp008" DISPLAY FORM nofmrp008 INITIALIZE c_entra TO null #Captura de informacion para el reporte: banco,numero de nomina,cheque_no INPUT BY NAME c_entra.*,imp_form AFTER FIELD tipo_emp IF c_entra.tipo_emp = "Q" THEN LET c_entra.nombre_tipo = "QUINCENAL" END IF IF c_entra.tipo_emp = "S" THEN LET c_entra.nombre_tipo = "SEMANAL" END IF IF c_entra.tipo_emp = "V" THEN LET c_entra.nombre_tipo = "VENDEDORES" END IF LET fecha_inicial = "01/01/2007" # PARA CONTAR LOS EMPLEADOS QUE TIENE LA NOMINA Y SACAR LOS QUE TIENEN VALOR CERO DELETE FROM notbcuenta INSERT INTO notbcuenta SELECT a.num_emp,b.cuenta_no,SUM(a.valor) FROM notb00008 a,adtb00003 b WHERE a.num_emp = b.num_emp and a.num_nomi = c_entra.num_nomi and a.tipo_emp = c_entra.tipo_emp and a.clase_mov not in ('F') and a.cod_mov not in (100,101,102,98,50,54) GROUP BY a.num_emp,b.cuenta_no LET cuenta_emp = 0 SELECT COUNT(*) INTO cuenta_emp FROM notbcuenta WHERE valor > 0 AND cuenta_no IS NOT NULL # Monto Nomina # Del monto total de la nomina se quitaran las fichas mas abajo mencionadas porque ellos tienen # Problemas de credito en el banco. SELECT SUM(a.valor) INTO p_valor FROM notb00008 a,adtb00003 b WHERE a.num_nomi = c_entra.num_nomi AND a.tipo_emp = c_entra.tipo_emp AND a.cod_mov not in (100,101,102,98,50,54) AND a.clase_mov not in ("F") AND # a.num_emp NOT IN (560,564,609,614) a.num_emp = b.num_emp AND b.cuenta_no IS NOT NULL DISPLAY BY NAME c_entra.nombre_tipo ATTRIBUTE (BOLD) SELECT tipo_emp,CAST(fecha_del AS CHAR(10)),CAST(fecha_al AS CHAR(10)) INTO datos_peri.* FROM notb00010 WHERE num_nomi = c_entra.num_nomi and tipo_emp = c_entra.tipo_emp and status_t is null IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF DISPLAY BY NAME datos_peri.* ATTRIBUTE(BOLD) AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF EXIT INPUT END INPUT CONSTRUCT BY NAME criterio ON a.departamento,a.num_emp IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET factor = cuenta_emp / 24 LET pprogreso = 1 LET progreso = 1 DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET selec10 = "SELECT a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", "a.nom1_emp,a.apell1_emp,a.nom2_emp,a.apell2_emp, ", "b.cod_mov,c.ch_encabeza,b.clase_mov,b.cantidad,b.valor, ", "a.cuenta_no ", "FROM adtb00003 a,notb00008 b, notb00002 c ", "WHERE a.num_emp = b.num_emp and ", "b.num_nomi = ? and ", "b.tipo_emp = ? and ", "b.cod_mov = c.cod_mov and ", criterio clipped," AND b.clase_mov not in ('F') ", "ORDER BY a.departamento,a.num_emp,b.cod_mov" PREPARE comando FROM selec10 DECLARE busca CURSOR FOR comando OPEN busca USING c_entra.num_nomi,c_entra.tipo_emp LET cmd = FGL_GETENV("FGLSPOOL"),"\\MTECH.TXT" START REPORT banco to cmd WHILE STATUS != NOTFOUND FETCH busca INTO datos_cheque.* 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 datos_cheque.nombre = datos_cheque.nom1_emp clipped," ", datos_cheque.nom2_emp clipped," ", datos_cheque.apell1_emp clipped," ", datos_cheque.apell2_emp clipped LET datos_cheque.acumulado = 0 { # Busqueda de acumulados SELECT a.* FROM notb00014 a WHERE a.cod_mov = datos_cheque.cod_mov IF STATUS != NOTFOUND THEN SELECT sum(valor) INTO datos_cheque.acumulado FROM notb00008 WHERE num_emp = datos_cheque.num_emp and cod_mov = datos_cheque.cod_mov and fecha <= datos_peri.fecha_a ELSE SELECT sum(valor) INTO datos_cheque.acumulado FROM notb00008 WHERE num_emp = datos_cheque.num_emp and cod_mov = datos_cheque.cod_mov and fecha >= fecha_inicial and fecha <= datos_peri.fecha_a END IF } IF datos_cheque.cod_mov = 12 THEN SELECT valor INTO p_valor FROM notb00008 WHERE num_nomi = c_entra.num_nomi and tipo_emp = c_entra.tipo_emp and num_emp = datos_cheque.num_emp and cod_mov = 110 LET datos_cheque.valor = datos_cheque.valor + p_valor END IF SELECT sum(a.valor) INTO datos_cheque.neto FROM notb00008 a WHERE a.num_nomi = c_entra.num_nomi and a.tipo_emp = c_entra.tipo_emp and a.cod_mov not in (100,101,102,98,50,54) and a.num_emp = datos_cheque.num_emp and a.departamento = datos_cheque.departamento and clase_mov not in ('F') #------------------------------------------------------------------------- LET datos_cheque.numero = c_entra.num_nomi OUTPUT TO REPORT banco(datos_cheque.*) IF pprogreso >= factor THEN LET pprogreso = 1 LET progreso = progreso + 1 IF progreso > 95 THEN LET progreso = 95 END IF DISPLAY progreso TO progreso CALL ui.Interface.refresh() END IF LET pprogreso = pprogreso + 1 LET siguie = "N" END WHILE FINISH REPORT banco CALL ui.Interface.frontCall("standard","getenv", ["BANCO"], [dcmd] ) LET dcmd = dcmd CLIPPED,"\\MTECH.TXT" CALL fgl_putfile(cmd,dcmd) END FUNCTION REPORT banco(x) DEFINE x RECORD num_emp LIKE adtb00003.num_emp, departamento LIKE adtb00003.departamento, nivel_emp LIKE adtb00003.nivel_emp, cod_puesto LIKE adtb00003.cod_puesto, nom1_emp LIKE adtb00003.nom1_emp, apell1_emp LIKE adtb00003.nom1_emp, nom2_emp LIKE adtb00003.nom1_emp, apell2_emp LIKE adtb00003.nom1_emp, cod_mov LIKE notb00008.cod_mov, descrip_mov LIKE notb00002.segundo_enc, tipo_d CHAR(1), cantidad LIKE notb00008.cantidad, valor LIKE notb00008.valor, cuenta_no LIKE adtb00003.cuenta_no, nombre CHAR(80), numero INTEGER, fecha DATE, acumulado DECIMAL(12,2), neto DECIMAL(12,2) END RECORD DEFINE ch_valor,ch_neto CHAR(14) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 PAGE LENGTH 700 ORDER BY x.numero FORMAT BEFORE GROUP OF x.numero #LET cuenta_emp = GROUP COUNT(*) WHERE x.cuenta_no IS NOT NULL AND # x.neto <> 0 LET ch_valor = p_valor USING "&&&&&&&&&&&.##" LET ch_valor = ch_valor[1,11],ch_valor[13,14] PRINT "H",p_companias.codnomina CLIPPED,c_entra.fecha USING "mmddyy",ch_valor CLIPPED, cuenta_emp USING "&&&&&&"#, 70 SPACES AFTER GROUP OF x.num_emp IF x.cuenta_no IS NOT NULL THEN if x.neto > 0 THEN LET ch_neto = x.neto USING "&&&&&&&&&&&.##" LET ch_neto = ch_neto[1,11],ch_neto[13,14] PRINT "N",x.num_emp USING "&&&&&&&&&&",x.cuenta_no USING "&&&&&&&&&&", ch_neto CLIPPED,x.departamento USING "&&&&&&&&&&"#, 56 SPACES { PRINT "N",x.num_emp USING "&&&&&&&&&&","|",x.cuenta_no USING "&&&&&&&&&&","|", ch_neto CLIPPED,"|",x.departamento USING "&&&&&&&&&&","|", 56 SPACES } END IF END IF END REPORT