Files
MBS/PROYECTO/nodir/noprrp038_1.4gl
T

272 lines
7.9 KiB
Plaintext

{
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