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

962 lines
41 KiB
Plaintext

{
----------------------------------------------------------------------------
PROGRAMA : NOPRMT003
OBJETIVO : Modificar y Eliminar registros de la
Tabla de Maestra de Empleados
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : FEBRERO 18, 1998.
----------------------------------------------------------------------------
}
IMPORT os
GLOBALS "noprgb000.4gl"
DEFINE tipo_sexo CHAR(9),
operacion CHAR(1),
descrip_st CHAR(20),
descripcion_cuenta,imagenom,filepath,filedestino CHAR(100),
sec_vend_supervisor SMALLINT,
nombre_supervisor VARCHAR(60),
actualiza_datos STRING,
imagen_emp BYTE,
valorrd,tasa DEC(12,2),
pdepartamentoid INT
DEFINE p_sexo CHAR(1)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "marmotech" AS "IFMX"
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL noprmt003()
END MAIN
FUNCTION noprmt003()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 24,
COMMENT LINE 23
OPEN FORM nofmmt003 FROM "nofmmt003"
DISPLAY FORM nofmmt003
{ cod_puesto =emplea.cod_puesto,
nivel_emp =emplea.nivel_emp,
nom1_emp =emplea.nom1_emp,
nom2_emp =emplea.nom2_emp,
apell1_emp =emplea.apell1_emp,
apell2_emp =emplea.apell2_emp,
calle =emplea.calle,
casa_num =emplea.casa_num,
barrio =emplea.barrio,
fech_efec =emplea.fech_efec,
fech_nac =emplea.fech_nac,
urbanizacion = emplea.urbanizacion,
telefono =emplea.telefono,
cedula =emplea.cedula,
serie =emplea.serie,
cod_nac =emplea.cod_nac,
estado_civil =emplea.estado_civil,
tipo_sangre =emplea.tipo_sangre,
sueldo_ac =emplea.sueldo_ac,
nomina =emplea.nomina,
paga_seg =emplea.paga_seg,
fecha_salida =emplea.fecha_salida,
cuenta_no =emplea.cuenta_no,
us_mod = usuarios,
fech_mod = getdate(),
licencia =emplea.licencia,
cod_seg1 =emplea.cod_seg1,
cod_seg3 =emplea.cod_seg3,
foto_empleado=emplea.foto_empleado,
sucid =emplea.sucid,
credito =emplea.credito ,
fecha_ultimo_aumento =emplea.fecha_ultimo_aumento,
codbancodestino =emplea.codbancodestino,
digiverbancodestino =emplea.digiverbancodestino,
tipo_sueldo =emplea.tipo_sueldo,
email =emplea.email,
instalador =emplea.instalador,
cuenta_aux =emplea.cuenta_aux,
moneda =emplea.moneda
}
LET selec = "SELECT a.userid FROM facial.dbo.userinfo a WHERE a.userid = ? "
PREPARE buscaemp_att FROM selec
LET selec = "
UPDATE adtb00003 SET
departamento = ? ",
" WHERE adtb00003.num_emp =?"
PREPARE act_emp FROM selec
MENU
ON ACTION nuevo
SET CONNECTION "MSSQL"
let int_flag = false
LET operacion = "A"
INITIALIZE emplea.* TO NULL
LOCATE emplea.foto_empleado IN MEMORY
CALL adpcmf022()
ON ACTION buscar
SET CONNECTION "MSSQL"
let int_flag = false
LET operacion = "M"
CALL adpcmf022()
ON ACTION Salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION adpcmf022()
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA CONSULTA Y
## MODIFICACION DE REGISTROS
IF operacion = "M" THEN
CONSTRUCT criterio ON a.num_emp,a.departamento,a.nom1_emp,a.apell1_emp,a.nom2_emp,a.apell2_emp,a.cedula
FROM num_emp,departamento,nom1_emp,apell1_emp,nom2_emp,apell2_emp,cedula
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC =
"SELECT a.num_emp,a.departamento,a.nivel_emp,
a.cod_puesto,a.nom1_emp,a.nom2_emp,
a.apell1_emp,a.apell2_emp,a.tipo_empleado,
convert(char(10),a.fecha_termino_c,103),a.calle,a.casa_num,a.barrio,
a.urbanizacion,a.credito,a.telefono,convert(char(10),a.fech_nac,103),a.cod_nac,
a.estado_civil,a.tipo_sangre,a.cedula,a.serie,
a.licencia,a.sueldo_ac,a.nomina, CONVERT(char(10),a.fech_efec,103),
CONVERT(CHAR(10),a.fecha_salida,103),a.paga_seg,a.cod_seg1,a.cod_seg2,",
"a.cod_seg3,a.tipocuenta,a.cuenta_no,a.status_t,a.us_crea,
a.fech_crea,a.us_mod,a.fech_mod,a.foto_empleado,a.sucid,",
"a.monto_seg_med,a.monto_seg_int,a.monto_care,",
"CONVERT(CHAR(10),a.fecha_ultimo_aumento,103),a.moneda,a.codbancodestino,",
"a.digiverbancodestino,a.tipo_sueldo,a.email,a.instalador,a.cuenta_aux FROM adtb00003 a ",
"WHERE (a.status_t is null OR a.status_t NOT IN('T','E')) AND ",
criterio clipped," ORDER BY a.num_emp "
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
LOCATE emplea.foto_empleado IN MEMORY
FETCH FIRST datos INTO emplea.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL selecta1()
MENU "OPCION"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO emplea.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
LET tipo_sexo = " "
CALL selecta1()
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO emplea.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
LET tipo_sexo = " "
CALL selecta1()
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO emplea.*
CALL selecta1()
LET tipo_sexo = " "
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO emplea.*
CALL selecta1()
LET tipo_sexo = " "
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger" "<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
CALL acepta()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
SET CONNECTION "MSSQL"
## AQUI SE ACTUALIZA EL REGISTRO
IF operacion = "M" THEN
UPDATE adtb00003 SET
adtb00003.departamento = emplea.departamento {,
cod_puesto =emplea.cod_puesto,
nivel_emp =emplea.nivel_emp,
nom1_emp =emplea.nom1_emp,
nom2_emp =emplea.nom2_emp,
apell1_emp =emplea.apell1_emp,
apell2_emp =emplea.apell2_emp,
calle =emplea.calle,
casa_num =emplea.casa_num,
barrio =emplea.barrio,
fech_efec =emplea.fech_efec,
fech_nac =emplea.fech_nac,
urbanizacion = emplea.urbanizacion,
telefono =emplea.telefono,
cedula =emplea.cedula,
serie =emplea.serie,
cod_nac =emplea.cod_nac,
estado_civil =emplea.estado_civil,
tipo_sangre =emplea.tipo_sangre,
sueldo_ac =emplea.sueldo_ac,
nomina =emplea.nomina,
paga_seg =emplea.paga_seg,
fecha_salida =emplea.fecha_salida,
cuenta_no =emplea.cuenta_no,
us_mod = usuarios,
fech_mod = getdate(),
licencia =emplea.licencia,
cod_seg1 =emplea.cod_seg1,
cod_seg3 =emplea.cod_seg3,
foto_empleado=emplea.foto_empleado,
sucid =emplea.sucid,
credito =emplea.credito ,
fecha_ultimo_aumento =emplea.fecha_ultimo_aumento,
codbancodestino =emplea.codbancodestino,
digiverbancodestino =emplea.digiverbancodestino,
tipo_sueldo =emplea.tipo_sueldo,
email =emplea.email,
instalador =emplea.instalador,
cuenta_aux =emplea.cuenta_aux,
moneda =emplea.moneda
}
WHERE adtb00003.num_emp = emplea.num_emp
UPDATE adtb00021 SET sexo = p_sexo
WHERE num_emp = emplea.num_emp
IF emplea.fecha_ultimo_aumento IS NULL THEN
LET emplea.fecha_ultimo_aumento= emplea.fech_efec
END IF
LET actualiza_Datos =
"UPDATE cooperativa.dbo.adtb00003 SET
departamento= ",emplea.departamento,",",
"cod_puesto=",emplea.cod_puesto,",",
"nivel_emp=", emplea.nivel_emp,",",
"nom1_emp='",emplea.nom1_emp CLIPPED,"',",
"nom2_emp='",emplea.nom2_emp CLIPPED,"',",
"apell1_emp='",emplea.apell1_emp CLIPPED,"',",
"apell2_emp='",emplea.apell2_emp CLIPPED,"',",
"calle='",emplea.calle CLIPPED,"',",
"casa_num='",emplea.casa_num CLIPPED,"',",
"barrio='",emplea.barrio CLIPPED,"',",
"fech_efec='",emplea.fech_efec,"',",
"fech_nac='",emplea.fech_nac,"',",
" urbanizacion='",emplea.urbanizacion CLIPPED,"',",
" telefono='",emplea.telefono CLIPPED,"',",
" cedula='",emplea.cedula,"',",
" serie='",emplea.serie,"',",
" cod_nac=",emplea.cod_nac,",",
" estado_civil='",emplea.estado_civil,"',",
" tipo_sangre='",emplea.tipo_sangre,"',",
" sueldo_ac=",emplea.sueldo_ac,",",
" nomina='",emplea.nomina,"',",
" paga_seg='",emplea.paga_seg,"',",
" fecha_salida='",emplea.fecha_salida,"',",
" cuenta_no='",emplea.cuenta_no,"',",
" us_mod='",usuarios CLIPPED,"',",
" fech_mod=getdate(),",
" licencia='",emplea.licencia,"',",
" cod_seg1='",emplea.cod_seg1,"',",
" cod_seg3='",emplea.cod_seg3,"',",
" sucid=",emplea.sucid,",",
" credito='",emplea.credito CLIPPED,"',",
" fecha_ultimo_aumento='",emplea.fecha_ultimo_aumento,"',",
" codbancodestino='",emplea.codbancodestino,"',",
" digiverbancodestino='",emplea.digiverbancodestino,"',",
" tipo_sueldo='",emplea.tipo_sueldo,"',",
" email='", emplea.email CLIPPED,"',",
" instalador='",emplea.instalador,"',",
" cuenta_aux='",emplea.cuenta_aux,"' ",
" WHERE num_emp =", emplea.num_emp
#DISPLAY "update ",actualiza_datos
PREPARE comando_up FROM actualiza_datos
EXECUTE comando_up
SET CONNECTION "IFMX"
SELECT a.num_emp FROM adtb00003 a WHERE a.num_emp = emplea.num_emp
IF STATUS <> NOTFOUND THEN
UPDATE adtb00003 SET
(departamento,cod_puesto,nivel_emp,nom1_emp,nom2_emp,
apell1_emp,apell2_emp,calle,casa_num,barrio,fech_efec,
fech_nac,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
tipo_sangre,sueldo_ac,nomina,paga_seg, fecha_salida,cuenta_no, us_mod,fech_mod,
licencia,cod_seg1,cod_seg3,moneda)=
(emplea.departamento,emplea.cod_puesto,emplea.nivel_emp,
emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.fech_efec,emplea.fech_nac,
emplea.urbanizacion,
emplea.telefono,
emplea.cedula,emplea.serie,emplea.cod_nac,
emplea.estado_civil,emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.fecha_salida,emplea.cuenta_no,usuarios,getdate(),
emplea.licencia,emplea.cod_seg1,emplea.cod_seg3,emplea.moneda)
WHERE @num_emp = emplea.num_emp
ELSE
INSERT INTO adtb00003
(num_emp,departamento,cod_puesto,nivel_emp,nom1_emp,
nom2_emp, apell1_emp,apell2_emp,calle,casa_num,barrio,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
fech_efec,fecha_salida,fech_nac,
tipo_sangre,sueldo_ac,nomina,paga_seg, cuenta_no,us_crea,
fech_crea,licencia,cod_Seg3,moneda)
VALUES
(emplea.num_emp,emplea.departamento,
emplea.cod_puesto,emplea.nivel_emp,
emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.urbanizacion,emplea.telefono,
emplea.cedula,emplea.serie,emplea.cod_nac,
emplea.estado_civil,emplea.fech_efec,emplea.fecha_salida,emplea.fech_nac,
emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.cuenta_no,usuarios,getdate(),
emplea.licencia,emplea.cod_seg3,emplea.moneda)
END IF
LET numero_msg = 13
CALL msg(numero_msg)
END IF
IF status < 0 THEN
CALL integridad()
END IF
## AQUI SE ELIMINAN LOS REGISTROS
{ COMMAND KEY ("L") "eLiminar"
PROMPT "Esta Seguro de Eliminar Este Empleado? " FOR CHAR opt5
IF opt5 = "S" THEN
update adtb00003 set status_t = "E",us_mod = USER_SNAME(),fech_mod = GETDATE()
WHERE num_emp = emplea.num_emp
END IF
LET numero_msg = 39
CALL msg(numero_msg)
}
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
ELSE
CALL acepta()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
END IF
END FUNCTION
FUNCTION selecta1()
SELECT a.sexo INTO p_sexo FROM adtb00021 a
WHERE a.num_emp = emplea.num_emp
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
WHERE departamento = emplea.departamento
SELECT @nom_puesto INTO puesto.nom_puesto FROM adtb00004
WHERE @cod_puesto = emplea.cod_puesto
IF emplea.estado_civil = "S" THEN
LET descr = "SOLTERO"
END IF
IF emplea.estado_civil = "C" THEN
LET descr = "CASADO"
END IF
IF p_sexo = "M" THEN
LET tipo_sexo = "MASCULINO"
END IF
IF p_sexo = "F" THEN
LET tipo_sexo = "FEMENINO"
END IF
IF emplea.nomina = "Q" THEN
LET descrip = "QUINCENAL"
END IF
IF emplea.nomina = "S" THEN
LET descrip = "SEMANAL"
END IF
IF emplea.status_t = "D" THEN
LET descrip_st = "DESACTIVADO"
END IF
IF emplea.status_t = "E" THEN
LET descrip_st = "ELIMINADO"
END IF
IF emplea.status_t IS NULL THEN
LET descrip_st = "ACTIVADO"
END IF
DISPLAY BY NAME descrip_st ATTRIBUTE(REVERSE,RED)
SELECT a.licencia INTO emplea.licencia
FROM adtb00003 a
WHERE a.num_emp = emplea.num_emp
SELECT nom_nac INTO nacion.nom_nac FROM adtb00007
WHERE cod_nac = emplea.cod_nac
LET plocalidad = ui.ComboBox.forName("formonly.localidad")
CALL localidades()
LET localidad = emplea.sucid
SELECT AVG(a.tasa) INTO tasa FROM cgtb00084 a WHERE a.mes = MONTH(today) AND a.ano = YEAR(today) AND
a.ventas = emplea.moneda
IF tasa IS NULL THEN
LET tasa = 1
END IF
LET valorrd = emplea.sueldo_ac * tasa
DISPLAY BY NAME emplea.num_emp,emplea.departamento,emplea.nivel_emp,
emplea.cod_puesto,emplea.nom1_emp,emplea.nom2_emp,
emplea.apell1_emp,emplea.apell2_emp,emplea.calle,
emplea.casa_num,
emplea.barrio,emplea.urbanizacion,emplea.cedula,
emplea.serie,emplea.fech_nac,emplea.cod_nac,
emplea.licencia,emplea.telefono,emplea.estado_civil,
emplea.tipo_sangre,emplea.sueldo_ac,emplea.nomina,
emplea.fech_efec,descr,descrip,nacion.nom_nac,
depto.nom_dpto,puesto.nom_puesto,p_sexo,tipo_sexo,
emplea.paga_seg,emplea.cod_seg1,emplea.cod_seg2,
emplea.cod_seg3,emplea.cuenta_no,emplea.fecha_salida,
localidad,emplea.credito,emplea.fecha_ultimo_aumento,
emplea.tipocuenta,emplea.codbancodestino,
emplea.digiverbancodestino,emplea.tipo_sueldo,emplea.email,
emplea.instalador,emplea.cuenta_aux,emplea.moneda,
tasa,valorrd
LET filepath = "E:\\MARMOTECHC\\IMAGENES\\NOMINA\\tmpfile.jpg"
CALL emplea.foto_empleado.writeFile(filepath)
DISPLAY filepath TO fotos
END FUNCTION
FUNCTION acepta()
DIALOG ATTRIBUTES(UNBUFFERED, FIELD ORDER FORM)
INPUT BY NAME emplea.num_emp,emplea.departamento,emplea.nivel_emp,
emplea.cod_puesto,emplea.nom1_emp,emplea.nom2_emp,
emplea.apell1_emp,emplea.apell2_emp,localidad,
emplea.calle,emplea.casa_num,emplea.barrio,
emplea.urbanizacion,emplea.credito,emplea.cedula,emplea.serie,
emplea.telefono,emplea.fech_nac,emplea.cod_nac,emplea.licencia,
emplea.estado_civil,emplea.tipo_sangre,emplea.sueldo_ac,
emplea.moneda,
emplea.nomina,emplea.fech_efec,emplea.fecha_salida,emplea.paga_seg,
emplea.cod_seg1,
emplea.cod_seg2,emplea.cod_seg3,emplea.tipocuenta, emplea.codbancodestino,
emplea.digiverbancodestino,
emplea.cuenta_no,p_sexo,emplea.fecha_ultimo_aumento,sec_vend_supervisor,
emplea.tipo_sueldo,emplea.email,emplea.instalador,emplea.accno, emplea.cuenta_aux
ATTRIBUTE(WITHOUT DEFAULTS)
AFTER FIELD accno
EXECUTE buscaemp_att USING emplea.accno
IF STATUS = NOTFOUND THEN
CALL fgl_Winmessage("INFO","EMPLEADO NO EXISTE EN EL SISTEMA SYSTEM ATTENDANCE","INFO")
NEXT FIELD accno
END IF
AFTER FIELD moneda
IF emplea.moneda IS NULL THEN
CALL msg(16)
NEXT FIELD moneda
END IF
SELECT AVG(a.tasa) INTO tasa FROM cgtb00084 a WHERE a.mes = MONTH(today) AND a.ano = YEAR(today) AND
a.ventas = emplea.moneda
IF tasa IS NULL THEN
LET tasa = 1
END IF
LET valorrd = emplea.sueldo_ac * tasa
DISPLAY BY NAME tasa,valorrd
AFTER FIELD cuenta_aux
IF emplea.cuenta_aux IS NULL THEN
CALL msg(16)
NEXT FIELD cuenta_aux
END IF
SELECT a.descripcion INTO descripcion_cuenta FROM cgtb00001 a
WHERE a.cuenta_no = emplea.cuenta_aux AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD cuenta_aux
END IF
DISPLAY BY NAME descripcion_cuenta
ON ACTION busca_foto
LET imagenom = "*.jpg"
CALL ui.interface.frontcall("standard","openfile",[imagenom,"jpg","png jpg bmp gif","Busca Imagen"],filepath)
IF filepath IS NOT NULL THEN
LET filedestino = FGL_GETENV("IMAGENNOMINA")
#LET filedestino = "F:\\FOURJS\\GAS22006\\pic\\NOMINA\\"
# LET filedestino = filedestino CLIPPED,"\\",emplea.num_emp USING "&&&&&",".jpg"
# CALL FGL_WINMESSAGE("W",filedestino,"stop")
# CALL fgl_getfile(filepath,filedestino)
LOCATE imagen_emp IN MEMORY
LET filedestino = "E:/MARMOTECHC/BIN240/nomina/", os.path.basename(filepath)
# CALL fgl_winmessage("info",filedestino,"info")
CALL fgl_getfile(filepath,filedestino)
CALL imagen_emp.readFile(filedestino)
LET emplea.foto_empleado = imagen_emp
# LET filedestino="F:\\MASTER\\IMAGENES\\NOMINA\\tmp.jpg"
LET filepath=filedestino
DISPLAY filepath TO fotos
END IF
## VERIFICA QUE LOS CAMPOS MODIFICABLES NO ESTEN EN BLANCO
BEFORE INPUT
IF operacion = "A" THEN
SELECT MAX(a.num_emp) INTO emplea.num_emp FROM adtb00003 a
WHERE a.num_emp < 9999
IF emplea.num_emp IS NULL THEN
LET emplea.num_emp = 0
END IF
LET emplea.num_emp = emplea.num_emp+1
DISPLAY BY NAME emplea.num_emp
END IF
CALL comisiones_adicionales.clear()
CALL comisiones.clear()
IF operacion <> "M" THEN
LET emplea.credito = "SI"
DISPLAY BY NAME emplea.credito
END IF
LET plocalidad = ui.ComboBox.forName("formonly.localidad")
CALL localidades()
IF operacion = "M" THEN
NEXT FIELD calle
END IF
AFTER FIELD sec_Vend_supervisor
IF sec_Vend_supervisor IS NOT NULL THEN
SELECT a.nom1_emp||' '||a.apell1_Emp INTO nombre_supervisor
FROM adtb0003 a
WHERE a.num_Emp = sec_vend_supervisor
IF STATUS = NOTFOUND THEN
CALL FGL_WINMESSAGE("ERROR","EMPLEADO NO EXISTE","info")
NEXT FIELD sec_Vend_supervisor
END IF
END IF
AFTER FIELD num_emp
SELECT a.nom1_emp INTO emplea.nom1_emp FROM adtb00003 a
WHERE a.num_emp = emplea.num_emp
IF STATUS != NOTFOUND THEN
IF operacion = "A" THEN
LET numero_msg = 3
CALL msg(numero_msg)
DISPLAY BY NAME emplea.nom1_emp
NEXT FIELD num_emp
END IF
END IF
AFTER FIELD localidad
LET emplea.sucid = localidad
AFTER FIELD departamento
IF emplea.departamento IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
SELECT a.nom_dpto,a.departamentoid INTO depto.nom_dpto,pdepartamentoid FROM adtb00001 a
WHERE a.departamento = emplea.departamento
DISPLAY BY NAME depto.nom_dpto
AFTER FIELD cod_puesto
IF emplea.cod_puesto IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_puesto
END IF
SELECT @nom_puesto INTO puesto.nom_puesto FROM adtb00004
WHERE @cod_puesto = emplea.cod_puesto
DISPLAY BY NAME puesto.nom_puesto
AFTER FIELD nivel_emp
IF emplea.nivel_emp IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nivel_emp
END IF
AFTER FIELD estado_civil
IF emplea.estado_civil IS NOT NULL THEN
IF emplea.estado_civil = "S" THEN
LET descr = "SOLTERO"
END IF
IF emplea.estado_civil = "C" THEN
LET descr = "CASADO"
END IF
ELSE
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD estado_civil
END IF
DISPLAY BY NAME descr
AFTER FIELD sueldo_ac
IF emplea.sueldo_ac IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sueldo_ac
END IF
AFTER FIELD fech_nac
IF emplea.fech_nac IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_nac
END IF
IF YEAR(emplea.fech_nac) >= YEAR(today) THEN
ERROR "FECHA INCORRECTA"
NEXT FIELD fech_nac
END IF
AFTER FIELD nomina
IF emplea.nomina IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD nomina
END IF
IF emplea.nomina = "Q" THEN
LET descrip = "QUINCENAL"
END IF
IF emplea.nomina = "S" THEN
LET descrip = "SEMANAL"
END IF
IF emplea.nomina = "V" THEN
LET descrip = "VENDEDOR"
END IF
DISPLAY BY NAME descrip
AFTER FIELD p_sexo
IF p_sexo IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_sexo
END IF
IF p_sexo = "M" THEN
LET tipo_sexo = "MASCULINO"
ELSE
IF p_sexo = "F" THEN
LET tipo_sexo = "FEMENINO"
END IF
END IF
DISPLAY BY NAME tipo_sexo
#### Verifica si el usuario presiono la tecla <Ctrl-C>
AFTER INPUT
DECLARE busca_comision CURSOR FOR
SELECT a.sec_vend_a,RTRIM(b.nom1_emp) || " "||RTRIM(ISNULL(b.nom2_emp,' '))||" "||
RTRIM(ISNULL(b.apell1_emp,' ')),a.porc_cobros,a.porc_cobros_a
FROM vetb00075 a,adtb00003 b
WHERE a.sec_vend_a = emplea.num_emp AND
a.sec_vend_a = b.num_emp
LET idx = 1
FOREACH busca_comision INTO comisiones[idx].*
LET idx = idx + 1
END FOREACH
DECLARE comision_adicional CURSOR FOR
SELECT a.sec_vend,RTRIM(b.nom1_emp) || " "||RTRIM(ISNULL(b.nom2_emp,' '))||" "||
RTRIM(ISNULL(b.apell1_emp,' ')),a.cod_n,c.producto,a.porc_vendedor,a.porc_supervisor
FROM vetb00076 a,adtb00003 b,iptb00020 c
WHERE a.sec_vend = emplea.num_emp AND
a.sec_vend = b.num_emp AND
a.cod_n = c.cod_n
LET idx = 1
FOREACH comision_adicional INTO comisiones_adicionales[idx].*
LET idx = idx + 1
END FOREACH
END INPUT
INPUT ARRAY comisiones FROM s_comisiones.* ATTRIBUTE(WITHOUT DEFAULTS)
AFTER FIELD sec_vend
LET idx = arr_curr()
LET scr_l = scr_line()
SELECT RTRIM(b.nom1_emp) || " "||RTRIM(ISNULL(b.nom2_emp,' '))||" "||
RTRIM(ISNULL(b.apell1_emp,' '))
FROM adtb00003 b
WHERE b.num_emp = comisiones[idx].sec_vend_a
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","EMPLEADO NO EXISTE","INFO")
NEXT FIELD num_emp
END IF
DISPLAY comisiones[idx].nombre_vend TO s_comisiones[scr_l].nombre_Vend
END INPUT
INPUT ARRAY comisiones_adicionales FROM s_adicionales.* ATTRIBUTE (WITHOUT DEFAULTS)
AFTER FIELD cod_n
IF comisiones_adicionales[arr_curr()].cod_n IS NOT NULL THEN
SELECT a.descrip_Esp INTO comisiones_adicionales[arr_curr()].descripcion
FROM iptb00020 a
WHERE a.cod_n = comisiones_adicionales[arr_curr()].cod_n AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","REGISTRO NO EXISTE","INFO")
NEXT FIELD cod_n
END IF
DISPLAY comisiones_adicionales[arr_curr()].descripcion TO s_adicionales[scr_line()].descripcion
END IF
END INPUT
ON ACTION CANCEL
LET numero_msg = 2
CALL msg(numero_msg)
CLEAR FORM
# LET INT_FLAG = FALSE
RETURN
ON ACTION guardar
## AQUI SE ACTUALIZA EL REGISTRO
IF operacion = "M" THEN
SET CONNECTION "MSSQL"
{
UPDATE adtb00003 SET
departamento = emplea.departamento ,
cod_puesto =emplea.cod_puesto,
nivel_emp =emplea.nivel_emp,
nom1_emp =emplea.nom1_emp,
nom2_emp =emplea.nom2_emp,
apell1_emp =emplea.apell1_emp,
apell2_emp =emplea.apell2_emp,
calle =emplea.calle,
casa_num =emplea.casa_num,
barrio =emplea.barrio,
fech_efec =emplea.fech_efec,
fech_nac =emplea.fech_nac,
urbanizacion = emplea.urbanizacion,
telefono =emplea.telefono,
cedula =emplea.cedula,
serie =emplea.serie,
cod_nac =emplea.cod_nac,
estado_civil =emplea.estado_civil,
tipo_sangre =emplea.tipo_sangre,
sueldo_ac =emplea.sueldo_ac,
nomina =emplea.nomina,
paga_seg =emplea.paga_seg,
fecha_salida =emplea.fecha_salida,
cuenta_no =emplea.cuenta_no,
us_mod = usuarios,
fech_mod = getdate(),
licencia =emplea.licencia,
cod_seg1 =emplea.cod_seg1,
cod_seg3 =emplea.cod_seg3,
foto_empleado=emplea.foto_empleado,
sucid =emplea.sucid,
credito =emplea.credito ,
fecha_ultimo_aumento =emplea.fecha_ultimo_aumento,
codbancodestino =emplea.codbancodestino,
digiverbancodestino =emplea.digiverbancodestino,
tipo_sueldo =emplea.tipo_sueldo,
email =emplea.email,
instalador =emplea.instalador,
cuenta_aux =emplea.cuenta_aux,
moneda =emplea.moneda
WHERE adtb00003.num_emp = emplea.num_emp
}
EXECUTE act_emp USING emplea.departamento,emplea.num_emp
UPDATE adtb00021 SET sexo = p_sexo
WHERE num_emp = emplea.num_emp
SET CONNECTION "IFMX"
SELECT a.num_emp FROM adtb00003 a WHERE a.num_emp = emplea.num_emp
IF STATUS <> NOTFOUND THEN
UPDATE adtb00003 SET
(departamento,cod_puesto,nivel_emp,nom1_emp,nom2_emp,
apell1_emp,apell2_emp,calle,casa_num,barrio,fech_efec,
fech_nac,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
tipo_sangre,sueldo_ac,nomina,paga_seg, fecha_salida,cuenta_no, us_mod,fech_mod,
licencia,cod_seg1,cod_seg3,moneda)=
(emplea.departamento,emplea.cod_puesto,emplea.nivel_emp,
emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.fech_efec,emplea.fech_nac,
emplea.urbanizacion,
emplea.telefono,
emplea.cedula,emplea.serie,emplea.cod_nac,
emplea.estado_civil,emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.fecha_salida,emplea.cuenta_no,usuarios,GETDATE(),
emplea.licencia,emplea.cod_seg1,emplea.cod_seg3,emplea.moneda)
WHERE @num_emp = emplea.num_emp
ELSE
INSERT INTO adtb00003
(num_emp,departamento,cod_puesto,nivel_emp,nom1_emp,
nom2_emp, apell1_emp,apell2_emp,calle,casa_num,barrio,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
fech_efec,fecha_salida,fech_nac,
tipo_sangre,sueldo_ac,nomina,paga_seg, cuenta_no,us_crea,
fech_crea,licencia,cod_Seg3,moneda)
VALUES
(emplea.num_emp,emplea.departamento,
emplea.cod_puesto,emplea.nivel_emp,
emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.urbanizacion,emplea.telefono,
emplea.cedula,emplea.serie,emplea.cod_nac,
emplea.estado_civil,emplea.fech_efec,emplea.fecha_salida,emplea.fech_nac,
emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.cuenta_no,usuarios,GETDATE(),
emplea.licencia,emplea.cod_seg3,emplea.moneda)
END IF
LET numero_msg = 13
CALL msg(numero_msg)
END IF
IF operacion = "A" THEN
SET CONNECTION "MSSQL"
SELECT MAX(a.num_emp) INTO emplea.num_emp FROM adtb00003 a
WHERE a.num_emp < 9999
IF emplea.num_emp IS NULL THEN
LET emplea.num_emp = 0
END IF
LET emplea.num_emp = emplea.num_emp+1
DISPLAY BY NAME emplea.num_emp
INSERT INTO adtb00003
(num_emp,departamento,cod_puesto,nivel_emp,nom1_emp,
nom2_emp, apell1_emp,apell2_emp,calle,casa_num,barrio,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
fech_efec,fecha_salida,fech_nac,
tipo_sangre,sueldo_ac,nomina,paga_seg, cuenta_no,us_crea,
fech_crea,licencia,cod_Seg3,foto_empleado,sucid,credito,fecha_ultimo_aumento,tipocuenta,
codbancodestino,digiverbancodestino,email,instalador,cuenta_aux,moneda,accno,departamentoid)
VALUES
(emplea.num_emp,emplea.departamento,
emplea.cod_puesto,emplea.nivel_emp,
emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.urbanizacion,emplea.telefono,
emplea.cedula,emplea.serie,emplea.cod_nac,
emplea.estado_civil,emplea.fech_efec,emplea.fecha_salida,emplea.fech_nac,
emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.cuenta_no,usuarios,GETDATE(),
emplea.licencia,emplea.cod_seg3,emplea.foto_empleado,emplea.sucid,emplea.credito,
emplea.fecha_ultimo_aumento,emplea.tipocuenta,emplea.codbancodestino,emplea.digiverbancodestino,
emplea.email,emplea.instalador,emplea.cuenta_aux,emplea.moneda,emplea.accno)
INSERT INTO adtb00021 VALUES (emplea.num_emp,null,null,emplea.nom1_emp,
emplea.cedula,p_sexo,emplea.fech_nac,null,
SUSER_SNAME(),GETDATE(),null,null)
LET actualiza_datos =
"INSERT INTO cooperativa.dbo.adtb00003
(num_emp,departamento,cod_puesto,nivel_emp,nom1_emp,
nom2_emp, apell1_emp,apell2_emp,calle,casa_num,barrio,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
fech_efec,fecha_salida,fech_nac,
tipo_sangre,sueldo_ac,nomina,paga_seg, cuenta_no,us_crea,
fech_crea,licencia,cod_Seg3)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,getdate(),?,?)"
PREPARE command_ins FROM actualiza_datos
EXECUTE command_ins USING
emplea.num_emp, emplea.departamento,
emplea.cod_puesto, emplea.nivel_emp,
emplea.nom1_emp, emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp, emplea.calle,emplea.casa_num,
emplea.barrio, emplea.urbanizacion,emplea.telefono,
emplea.cedula, emplea.serie,emplea.cod_nac,
emplea.estado_civil, emplea.fech_efec, emplea.fecha_salida, emplea.fech_nac,
emplea.tipo_sangre, emplea.sueldo_ac,
emplea.nomina, emplea.paga_seg, emplea.cuenta_no,
usuarios,
emplea.licencia, emplea.cod_seg3
SET CONNECTION "IFMX"
INSERT INTO adtb00003
(num_emp,departamento,cod_puesto,nivel_emp,nom1_emp,
nom2_emp, apell1_emp,apell2_emp,calle,casa_num,barrio,
urbanizacion,telefono,cedula,serie,cod_nac,estado_civil,
fech_efec,fecha_salida,fech_nac,
tipo_sangre,sueldo_ac,nomina,paga_seg, cuenta_no,us_crea,
fech_crea,licencia,cod_Seg3,moneda)
VALUES
(emplea.num_emp,emplea.departamento,
emplea.cod_puesto,emplea.nivel_emp,
emplea.nom1_emp,emplea.nom2_emp,emplea.apell1_emp,
emplea.apell2_emp,emplea.calle,emplea.casa_num,
emplea.barrio,emplea.urbanizacion,emplea.telefono,
emplea.cedula,emplea.serie,emplea.cod_nac,
emplea.estado_civil,emplea.fech_efec,emplea.fecha_salida,emplea.fech_nac,
emplea.tipo_sangre,emplea.sueldo_ac,
emplea.nomina,emplea.paga_seg,emplea.cuenta_no,usuarios,GETDATE(),
emplea.licencia,emplea.cod_seg3,emplea.moneda)
LET numero_msg = 1
CALL msg(numero_msg)
END IF
RETURN
END DIALOG
END FUNCTION