{================================================================= PRGRAMA : NOPRRP038 OBJETIVO :GENERA FILE PARA EL BANCO MODIFICADO POR : ING. JUAN SOTO FECHA MOD. :4/5/2016 ================================================================= } GLOBALS "noprgb000.4gl" DEFINE nombreFile,d_tipos,mensaje,f_tipos,filepath,dir_file STRING, p_valor1 DEC(12,2) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave 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 = b.num_emp AND b.cuenta_no IS NOT NULL } LET p_valor = 0 SELECT SUM(valor) INTO p_valor FROM notbcuenta WHERE valor >0 AND 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 OR status_t = 'P') 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,a.tipocuenta,a.codbancodestino,a.digiverbancodestino ", "FROM adtb00003 a,notb00008 b, notb00002 c,notbcuenta d ", "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') ", " and a.num_emp = d.num_emp and d.valor > 0 ", "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_valor1 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_valor1 END IF # se coloco en comentario 26/4/2018 { 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.num_emp = datos_cheque.num_emp AND a.departamento = a.departamento AND a.cod_mov not in (100,101,102,98,50,54)) and (clase_mov not in ('F')) } SELECT a.valor INTO datos_cheque.neto FROM notbcuenta a WHERE a.num_emp = datos_cheque.num_emp AND a.valor > 0 #------------------------------------------------------------------------- LET datos_cheque.numero = c_entra.num_nomi IF datos_cheque.neto > 0 THEN 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 END IF LET pprogreso = pprogreso + 1 LET siguie = "N" END WHILE FINISH REPORT banco LET d_tipos="TXT" LET f_tipos="*.txt" LET mensaje=%"Elige Directorio" # CALL ui.Interface.frontCall("standard","getenv", ["BANCO"], [dcmd] ) CALL ui.Interface.frontCall("standard","opendir", [dir_file,mensaje], [dcmd] ) LET nombreFile = 'PE',p_companias.codnomina USING "&&&&&",'01',TODAY USING 'mmdd',c_entra.num_nomi USING "&&&&&&&",'E.TXT' LET dcmd = dcmd CLIPPED,"\\",nombreFile CLIPPED 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 CHAR(35), 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 CHAR(20), tipocuenta VARCHAR(1), codbancodestino VARCHAR(8), digiverbancodestino VARCHAR(1), nombre CHAR(80), numero INTEGER, fecha DATE, acumulado DECIMAL(12,2), neto DECIMAL(12,2) END RECORD, hora VARCHAR(5), ch_hora VARCHAR(4) DEFINE ch_valor,ch_neto CHAR(13), ch_valor1 CHAR(14), b base.StringBuffer, codigo_op CHAR(2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 PAGE LENGTH 700 ORDER BY x.numero FORMAT BEFORE GROUP OF x.numero LET hora = TIME LET b = base.StringBuffer.create() CALL b.append(hora) CALL b.replace(":"," ",1) LET hora = b.toString() LET ch_hora = hora[1,2],hora[4,5] LET ch_valor1 = p_valor USING "&&&&&&&&&&&.##" LET ch_valor = ch_valor1[1,11],ch_valor1[13,14] PRINT "H",p_companias.rnc[1,15],'MARMOTECH, S. A. ', c_entra.num_nomi USING "&&&&&&&", # PRINT "H",'01300048665 ', 'JORGE RICARDO SUBERO ISA ', c_entra.num_nomi USING "&&&&&&&", '01',c_entra.fecha USING "yyyymmdd",'00000000000','0000000000000', cuenta_emp USING "&&&&&&&&&&&",ch_valor CLIPPED,'000000000000000', TODAY USING 'yyyymmdd',ch_hora,'lgenao@marmotech.com.do ', 102 SPACES LET ch_valor1 = NULL AFTER GROUP OF x.num_emp IF x.cuenta_no IS NOT NULL THEN # if x.neto > 0 THEN LET ch_valor1 = x.neto USING "&&&&&&&&&&&.##" LET ch_neto = ch_valor1[1,11],ch_valor1[13,14] IF x.tipocuenta IS NULL THEN LET x.tipocuenta='2' END IF CASE WHEN x.tipocuenta='1' LET codigo_op = '22' EXIT CASE WHEN x.tipocuenta='2' LET codigo_op = '32' EXIT CASE END CASE PRINT "N",p_companias.rnc[1,15],c_entra.num_nomi USING "&&&&&&&", #PRINT "N",'01300048665 ',c_entra.num_nomi USING "&&&&&&&", x.num_emp USING "&&&&&&&",x.cuenta_no ,x.tipocuenta,'214',x.codbancodestino,x.digiverbancodestino, codigo_op, ch_neto CLIPPED,' ',' ',x.nom1_emp,12 SPACES,'DEPOSITO NOMINA MARMOTECH',15 SPACES,' ',' ', # ch_neto CLIPPED,' ',' ',x.nom1_emp,12 SPACES,'DEPOSITO NOMINA JORGE RICARDO SUBERO ISA',' ',' ', 40 SPACES,12 SPACES,'00',79 SPACES # END IF END IF END REPORT