434 lines
14 KiB
Plaintext
434 lines
14 KiB
Plaintext
{
|
|
---------------------------------------------------------------------------
|
|
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
|