GLOBALS DEFINE deptos DYNAMIC ARRAY OF RECORD id INT, codigo INT, nombre VARCHAR(100), parent INT, cmd INT END RECORD, idx INT, empleados DYNAMIC ARRAY OF RECORD num_emp INT, departamento INT, nombre VARCHAR(50), apellido VARCHAR(50), fecha DATE END RECORD, usuarios,clave VARCHAR(50), chdepartamento,chempleados CHAR(2) END GLOBALS MAIN CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "zktime" AS "zk" CONNECT TO "smarmotech" AS "SQL" USER usuarios USING clave OPEN WINDOW w1 WITH FORM "nofmmt027" INPUT BY NAME chdepartamento,chempleados AFTER INPUT IF INT_FLAG THEN CALL msg(2) LET INT_FLAG = FALSE EXIT INPUT END IF CASE WHEN chdepartamento = "SI" CALL carga_datos() EXIT CASE WHEN chempleados ="SI" CALL importa_emp() # CALL actualiza_Depto() EXIT CASE END CASE END INPUT CLOSE WINDOW w1 END MAIN FUNCTION carga_datos() DECLARE buscar CURSOR FOR SELECT 0,a.departamento,a.nom_dpto,0,0 FROM adtb00001 a WHERE status_t IS NULL ORDER BY a.departamento LET idx = 1 FOREACH buscar INTO deptos[idx].* LET deptos[idx].id = idx LET deptos[idx].cmd = 1 DISPLAY deptos[idx].* LET idx = idx + 1 END FOREACH SET CONNECTION "zk" DELETE FROM hr_department # LOAD FROM "depto.txt" INSERT INTO tmp_dep (id,code,nombre,parent,cmd) BEGIN WORK FOR idx = 1 TO deptos.getLength() IF deptos[idx].id IS NOT NULL then INSERT INTO hr_department (id,dept_code,dept_name,dept_parentcode,dept_cmp_id,schedule_id,dept_operationmode,iuser1,iuser2,iuser3) VALUES (deptos[idx].*,1,0,0,0,0) END if END FOR COMMIT WORK #INSERT INTO hr_department (id,dept_code,dept_name,dept_parentcode,dept_cmp_id) VALUES (0,3,'PRUEBA',0,0) END FUNCTION FUNCTION actualiza_depto() DEFINE z_depto INT CALL empleados.clear() DECLARE busca_emp CURSOR FOR SELECT a.num_emp,a.departamento FROM adtb00003 a WHERE a.status_t IS NULL LET idx = 1 FOREACH busca_emp INTO empleados[idx].* LET idx = idx + 1 END FOREACH SET CONNECTION "zk" BEGIN WORK FOR idx = 1 TO empleados.getLength() SELECT a.id INTO Z_depto FROM hr_department a WHERE a.dept_code = empleados[idx].departamento UPDATE hr_employee SET emp_dept = z_depto WHERE emp_cardnumber = empleados[idx].num_emp DISPLAY "EMP: ",empleados[idx].num_emp," ",z_depto END FOR COMMIT WORK END FUNCTION FUNCTION importa_emp() DEFINE m_id,z_depto INT CALL empleados.clear() DECLARE busca_emp1 CURSOR FOR SELECT a.num_emp,a.departamento,a.nom1_emp,a.apell1_emp,a.fech_efec FROM adtb00003 a WHERE a.status_t IS NULL AND a.num_emp > 6 AND a.departamento IS NOT NULL LET idx = 1 FOREACH busca_emp1 INTO empleados[idx].* LET idx = idx + 1 END FOREACH SET CONNECTION "zk" SELECT MAX(a.id) INTO m_id FROM hr_employee a BEGIN WORK FOR idx = 1 TO empleados.getLength() IF empleados[idx].num_emp IS NOT NULL THEN SELECT a.id INTO Z_depto FROM hr_department a WHERE a.dept_code = empleados[idx].departamento SELECT a.emp_cardnumber FROM hr_employee a WHERE a.emp_cardnumber = empleados[idx].num_emp IF STATUS = NOTFOUND THEN LET m_id = m_id +1 DISPLAY "FECHA ",empleados[idx].fecha INSERT INTO hr_employee (id,emp_pin,emp_firstname,emp_lastname,emp_pin2,emp_privilege, emp_hiredate,emp_active,emp_cardnumber,emp_hourlyrate1,emp_hourlyrate2, emp_hourlyrate3,emp_hourlyrate4,emp_hourlyrate5,emp_gender,emp_operationmode, isselect,iuser1,iuser2,iuser3,emp_dept,payclass_id) VALUES (m_id,m_id,empleados[idx].nombre,empleados[idx].apellido,m_id,0,empleados[idx].fecha, 1,empleados[idx].num_emp,0,0,0,0,0,0,0,0,0,0,0,z_depto,1) END IF END IF END FOR COMMIT WORK END FUNCTION