{ --------------------------------------------------------------------------- PROGRAMA : NOPRMT026 OBJETIVO : PROCESO PARA EL PAGO DE LA TESORERIA DE LA SEGURIDAD SOCIAL PROGRAMADOR : Ing. JUAN SOTO FECHA REALIZACION : MAYO 31, 2005 --------------------------------------------------------------------------- } GLOBALS CONSTANT prog = "EXCEL" DEFINE rcol,arch_pc,prog STRING, p_res,no_registro INT,cuenta,xi,progreso,col SMALLINT, selec CHAR(1000), ciarnc CHAR(11), dir_file VARCHAR(60), fila_office varchar(1), d_tipos,mensaje,f_tipos,filepath,p_res,res,fila,val STRING DEFINE usuarios,clave CHAR(80), FILE,nombre_cia STRING END GLOBALS MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL startlog("NORP26.txt") CONNECT to "smarmotech" USER usuarios USING clave SELECT a.rnc,a.nombre INTO ciarnc,nombre_cia FROM companias a DISPLAY "NOMBRE ",nombre_cia CALL pago_tss() END MAIN FUNCTION pago_tss() DEFINE ptss RECORD ficha INTEGER, nom1 CHAR(30), apell1 CHAR(30), apell2 CHAR(30), sexo VARCHAR, tipo_documento VARCHAR(50), cedula CHAR(11), fecha_n DATE, valor_tss DEC(12,2), departamento INT, valor_isr DEC(12,2) END RECORD, fecha_inicial,fecha_final DATE, kano,kmes, cnt,numero_msg SMALLINT, cels CHAR(40), filename,sysos CHAR(200), archivo1 CHAR(125), periodo CHAR(6), valor_boni,valor_vacaciones DEC(12,2), idioma_office VARCHAR, tipo_reporte VARCHAR(10) OPTIONS FORM LINE 9, ERROR LINE 24 OPEN FORM nofmmt026 FROM "nofmmt026" DISPLAY FORM nofmmt026 INPUT BY NAME kano,kmes,idioma_office,tipo_reporte BEFORE INPUT CALL terminaDDE() ON ACTION abrir CALL ui.Interface.frontCall("standard","openfile", [dir_file,d_tipos,f_tipos,mensaje], [filepath] ) CALL ui.Interface.frontCall("standard","shellexec", [filepath], [p_res] ) AFTER FIELD kmes LET selec = "SELECT CONVERT(CHAR(10),MIN(a.fecha_del),103) ,CONVERT(CHAR(10),MAX(a.fecha_al),103) ", " FROM notb00010 a ", " WHERE a.ano ='", kano,"' AND a.mes ='", kmes, "'" PREPARE busca_fecha FROM selec EXECUTE busca_fecha INTO fecha_inicial,fecha_final AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF tipo_reporte IS NULL THEN CALL msg(16) NEXT FIELD tipo_reporte END IF END INPUT LET periodo = kmes USING "&&",kano USING "&&&&" LET FILE = filepath CALL conectarDDE() IF idioma_office = "E" THEN LET fila_office = "F" ELSE LET fila_office = "R" END IF # CALL ui.Interface.frontCall("standard","getenv", ["USTSS"], [file] ) #LET arch_pc='"',file,'"' -- le agrega las comillas por si hay blancos (solo se necesita para shellexec) # LET arch_pc=FILE CLIPPED --PARA OFFICE 2010 en adelante no es necesario colocar las comillas. # CALL ui.Interface.frontCall("standard","shellexec", [arch_pc], [p_res] ) # CALL chqDdeError(p_res,"shellexec "||arch_pc) # CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,file], [p_res] ) # CALL chqDdeError(p_res,"DDEConnect "||file) # CALL ui.Interface.refresh() # CALL fgl_winmessage("periodo",periodo,"stop") LET no_registro=1 IF tipo_reporte = "NOR" THEN LET col = 4 LET fila = 7 LET val = ciarnc CALL enviaDDE(fila,col,val) LET col = 4 LET fila = 8 LET val = periodo CALL enviaDDE(fila,col,val) LET cnt = 14 LET progreso = 5 DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET selec = " SELECT a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.tipo_documento,b.cedula,convert(char(10),b.fech_nac,103),", " SUM(a.valor),b.departamento ", " FROM adtb00003 b, notb00008 a,notb00010 c,adtb00021 d ", " WHERE b.num_emp = a.num_emp AND c.mes ='",kmes,"' AND ", " c.ano ='",kano,"' AND b.num_emp = d.num_emp and ", " a.num_nomi = c.num_nomi and ",#" b.num_emp = 3355 and ", " a.tipo_emp = c.tipo_emp and ", " a.cod_mov in (1,40,36,5,24,51,34,56) AND ", " a.num_emp = d.num_emp AND ", #" a.cod_mov in (32) AND ", " convert(char(10), a.fecha,101) between '",fecha_inicial USING "mm/dd/yyyy", "' and '",fecha_final using "mm/dd/yyyy","' and b.nomina = 'Q' ", " GROUP BY a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.cedula,b.fech_nac,b.departamento,a.num_emp,b.tipo_documento ", " ORDER BY b.departamento,a.num_emp " ELSE IF tipo_reporte = "BON1" THEN LET col = 4 LET fila = 8 LET val = ciarnc CALL enviaDDE(fila,col,val) LET col = 4 LET fila = 9 LET val = periodo CALL enviaDDE(fila,col,val) LET progreso = 5 DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET cnt = 15 LET selec = " SELECT a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.tipo_documento,b.cedula,convert(char(10),b.fech_nac,103),", " SUM(a.valor),a.departamento ", " FROM adtb00003 b, notb00008 a,notb00010 c,adtb00021 d ", " WHERE b.num_emp = a.num_emp AND b.status_t is not null and c.mes ='",kmes,"' AND ", " c.ano ='",kano,"' AND b.num_emp = d.num_emp and ", " a.num_nomi = c.num_nomi and ",#" b.num_emp = 3355 and ", " a.tipo_emp = c.tipo_emp and ", #" a.cod_mov in (1,40,36,5,24,51,34) AND ", " a.num_emp = d.num_emp AND ", " a.cod_mov in (33) AND ", " convert(char(10), a.fecha,101) between '",fecha_inicial USING "mm/dd/yyyy", "' and '",fecha_final using "mm/dd/yyyy","' and b.nomina = 'Q' ", " GROUP BY a.num_emp,b.nom1_emp,b.apell1_emp,b.apell2_emp,d.sexo,b.cedula,b.fech_nac,a.departamento,a.num_emp,b.tipo_documento ", " ORDER BY a.departamento,a.num_emp " END IF END IF PREPARE comando FROM selec DECLARE busca CURSOR FOR comando LET cuenta = 0 IF tipo_reporte = 'NOR' THEN FOREACH busca INTO ptss.* LET col = 2 LET fila = cnt LET val = "001" CALL enviaDDE(fila,col,val) LET col = 3 LET fila = cnt IF ptss.tipo_documento = 'CEDULA' THEN LET val = "C" ELSE LET val = "P" END IF CALL enviaDDE(fila,col,val) LET col = 4 LET fila = cnt LET val = ptss.cedula CALL enviaDDE(fila,col,val) LET col = 5 LET fila = cnt LET val = ptss.nom1 CALL enviaDDE(fila,col,val) LET col = 6 LET fila = cnt LET val = ptss.apell1 CALL enviaDDE(fila,col,val) LET col = 7 LET fila = cnt LET val = ptss.apell2 CALL enviaDDE(fila,col,val) LET col = 8 LET fila = cnt LET val = ptss.sexo CALL enviaDDE(fila,col,val) LET col = 9 LET fila = cnt LET val = ptss.fecha_n CALL enviaDDE(fila,col,val) LET col = 10 LET fila = cnt LET val = ptss.valor_tss CALL enviaDDE(fila,col,val) LET ptss.valor_isr = 0 SELECT ISNULL(SUM(a.valor),0) INTO ptss.valor_isr FROM notb00008 a WHERE a.num_emp = ptss.ficha AND a.fecha BETWEEN fecha_inicial AND fecha_final AND a.clase_mov IN ("E","I") and a.cod_mov not in (32,33) LET col = 12 LET fila = cnt LET val = ptss.valor_isr CALL enviaDDE(fila,col,val) # BONIFICACION LET valor_boni = 0 SELECT ISNULL(SUM(a.valor),0) INTO valor_boni FROM notb00008 a WHERE a.num_emp = ptss.ficha AND a.fecha BETWEEN fecha_inicial AND fecha_final AND a.clase_mov IN ("E","I") and a.cod_mov in (33) # VARIFICACION VACACIONES LET valor_vacaciones = 0 SELECT ISNULL(SUM(a.valor),0) INTO valor_vacaciones FROM notb00008 a WHERE a.num_emp = ptss.ficha AND a.fecha BETWEEN fecha_inicial AND fecha_final AND a.clase_mov IN ("E","I") and a.cod_mov in (36) IF valor_vacaciones =0 THEN LET col = 13 LET fila = cnt LET val = 'Normal' CALL enviaDDE(fila,col,val) ELSE LET col = 13 LET fila = cnt LET val = 'No laborĂ³ mes completo por razones varias' CALL enviaDDE(fila,col,val) END IF LET col = 14 LET fila = cnt LET val = valor_boni CALL enviaDDE(fila,col,val) LET col = 15 LET fila = cnt LET val = ciarnc CALL enviaDDE(fila,col,val) #REGALIA PASCUAL LET valor_boni = 0 SELECT SUM(a.valor) INTO valor_boni FROM notb00008 a WHERE a.num_emp = ptss.ficha AND a.fecha BETWEEN fecha_inicial AND fecha_final AND a.clase_mov IN ("E","I") and a.cod_mov in (32) LET col = 18 LET fila = cnt LET val = valor_boni CALL enviaDDE(fila,col,val) LET col = 21 LET fila = cnt LET val = ptss.valor_tss USING "###,###.##" CALL enviaDDE(fila,col,val) LET cnt = cnt + 1 IF cuenta > 3 THEN LET cuenta = 0 LET progreso =progreso + 1 DISPLAY progreso TO progreso CALL ui.Interface.refresh() END IF DISPLAY BY NAME no_registro LET cuenta = cuenta + 1 LET no_registro = no_registro+1 END FOREACH ELSE #BONI CANCELADOS IF tipo_reporte = "BON1" THEN FOREACH busca INTO ptss.* LET col = 2 LET fila = cnt LET val = "001" CALL enviaDDE(fila,col,val) LET col = 3 LET fila = cnt LET val = ptss.cedula CALL enviaDDE(fila,col,val) LET col = 4 LET fila = cnt LET val = ptss.nom1 CALL enviaDDE(fila,col,val) LET col = 5 LET fila = cnt LET val = ptss.apell1 CALL enviaDDE(fila,col,val) LET col = 6 LET fila = cnt LET val = ptss.apell2 CALL enviaDDE(fila,col,val) LET col = 7 LET fila = cnt LET val = ptss.sexo CALL enviaDDE(fila,col,val) LET col = 8 LET fila = cnt LET val = ptss.fecha_n CALL enviaDDE(fila,col,val) LET col = 9 LET fila = cnt LET val = ptss.valor_tss CALL enviaDDE(fila,col,val) LET cnt = cnt + 1 IF cuenta > 3 THEN LET cuenta = 0 LET progreso =progreso + 1 DISPLAY progreso TO progreso CALL ui.Interface.refresh() END IF DISPLAY BY NAME no_registro LET cuenta = cuenta + 1 LET no_registro = no_registro+1 END FOREACH END IF END IF CALL fgl_winmessage("INFO","REPROTE TERMINADO","INFO") END FUNCTION FUNCTION enviaDDE(xfila,xcol,xval) DEFINE xfila,xcol,xval,xcelda STRING DISPLAY "enviado ",xfila," c ",xcol," v ",xval LET xcelda = fila_office CLIPPED,xfila CLIPPED,"C",xcol CLIPPED DISPLAY "celda ",xcelda LET xval=xval CLIPPED CALL ui.Interface.frontCall("WINDDE","DDEPoke", [prog,file,xcelda,xval], [res] ); CALL checkError(res) END FUNCTION FUNCTION terminaDDE() CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [res] ); CALL checkError(res) END FUNCTION FUNCTION conectarDDE() CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,file], [res] ) CALL checkError(res) END FUNCTION FUNCTION checkError(res) DEFINE res INTEGER DEFINE mess STRING IF res THEN RETURN END IF DISPLAY "DDE Error:" CALL ui.Interface.frontCall("WINDDE","DDEError",[],[mess]); DISPLAY mess CALL ui.Interface.frontCall("WINDDE","DDEFinishAll", [], [res] ); DISPLAY "Exit with DDE Error." EXIT PROGRAM (-1) END FUNCTION