{ ------------------------------------------------------------------------ FORMULARIO : NOPRRP008 OBJETIVO : Reporte para imprimir los Volantes PROGRAMADOR : Ing. Juan Soto. FECHA REALIZACION : Noviembre 5, 1993 MODIFICADO POR : Ing. Juan Soto FECHA : Marzo 11, 2003 DESCRIPCION : Volante de Los empleados por pagar la nomina automatica en el BANCO POPULAR, EL CODIGO DE LA EMPRESA ES EL 3563. ----------------------------------------------------------------------------- } IMPORT JAVA javax.mail.Session GLOBALS "noprgb000.4gl" DEFINE genera CHAR(2), xingresos,xdescuentos DEC(12,2), num_Doc,email_err,cuenta_envio,num_nomi_ant INT, estado_Envio VARCHAR(50), vendedorEmail,emailCC VARCHAR(60),cuerpo_correo VARCHAR(2000), subject VARCHAR(100), perfil,procedimiento VARCHAR(60),nombre_file,nombre_empleado VARCHAR(80) DEFINE xusername,xsmtphost,xsmtpport,xpassword,respuesta,mensajes STRING DEFINE meses ARRAY[12] OF CHAR(15) DEFINE criterio10 CHAR(200) MAIN DEFER INTERRUPT CALL STARTLOG("volantes.txt") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL noprrp008() END MAIN #"file:///f:/master/IMAGENES/LOGO.JPG" #"file:///C://Users//jsoto//Documents//PROYECTOS//BDL320//MARMOTECH//PROYECTO//bin//IMAGENES//LOGO_DCM.PNG" FUNCTION noprrp008() DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER -- TRUE/FALSE, to set preview option DEFINE datos_recibo 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, email CHAR(100), nombre CHAR(80), numero INTEGER, fecha DATE, acumulado DECIMAL(12,2), neto DECIMAL(12,2) END RECORD, retorne BOOLEAN OPTIONS FORM LINE 9, ERROR LINE 24, COMMENT LINE 22 # Desplegue de pantalla y de formulario para la captura de informacion #CALL pantalla() #LET formulario = formulario CLIPPED,"nofmrp008" OPEN FORM nofmrp008 FROM "nofmrp008" DISPLAY FORM nofmrp008 #DISPLAY "noprrp008" AT 4,2 ATTRIBUTE(RED) #DISPLAY "Volantes de Nomina" AT 6,31 ATTRIBUTE(BLACK) INITIALIZE c_entra TO null #Captura de informacion para el reporte: banco,numero de nomina,cheque_no INPUT BY NAME c_entra.*,genera,imp_form BEFORE INPUT NEXT FIELD num_nomi 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 # ESTE VALOR LO TENIA AL 18/09/2019 LET fecha_inicial = "01/01/2007" LET fecha_inicial = "01/01/2010" SELECT COUNT(*) INTO cuenta_emp FROM adtb00003 WHERE (status_t IS NULL OR status_t = "I") AND nomina = c_entra.tipo_emp 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 AND a.status_t IS 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 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 criterio10 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 num_Doc = 0 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,ISNULL(b.cantidad,0),b.valor, ", "a.cuenta_no,a.email ", "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 ", criterio10 clipped," AND b.clase_mov not in ('F','T') and b.status_t is null ", "ORDER BY a.departamento,a.num_emp,b.clase_mov DESC,b.cod_mov" PREPARE comando FROM selec10 DECLARE busca CURSOR FOR comando OPEN busca USING c_entra.num_nomi,c_entra.tipo_emp IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API LET r_filename = 'noprrp008.4rp' IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file LET r_output='SVG' LET preview=1 CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT cheque TO XML HANDLER handler LET i = 1 LET idx = 1 LET siguie = "S" #LET emp_ant = 0 #LET cuarta = "N" WHILE STATUS != NOTFOUND FETCH busca INTO datos_recibo.* 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 IF genera = "EM" AND datos_recibo.email IS NOT NULL THEN CONTINUE WHILE END IF LET datos_recibo.nombre = datos_recibo.nom1_emp clipped," ", datos_recibo.nom2_emp clipped," ", datos_recibo.apell1_emp clipped," ", datos_recibo.apell2_emp clipped LET datos_recibo.acumulado = 0 # Busqueda de acumulados SELECT a.* FROM notb00014 a WHERE a.cod_mov = datos_recibo.cod_mov IF STATUS != NOTFOUND THEN SELECT sum(valor) INTO datos_recibo.acumulado FROM notb00008 WHERE num_emp = datos_recibo.num_emp and cod_mov = datos_recibo.cod_mov and fecha <= datos_peri.fecha_a AND status_t IS NULL ELSE SELECT sum(valor) INTO datos_recibo.acumulado FROM notb00008 WHERE num_emp = datos_recibo.num_emp and cod_mov = datos_recibo.cod_mov and fecha >= fecha_inicial and fecha <= datos_peri.fecha_a AND status_t IS NULL END IF IF datos_recibo.cod_mov = 12 THEN LET p_valor = 0 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_recibo.num_emp and cod_mov = 110 AND status_t IS NULL LET datos_recibo.valor = datos_recibo.valor + p_valor END IF # Busque del valor neto del empleado para que el programa tenga la oportunidad # de buscar el valor en letras del cheque SELECT sum(a.valor) INTO datos_recibo.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_recibo.num_emp and a.departamento = datos_recibo.departamento and clase_mov not in ('F') AND a.status_t IS NULL #------------------------------------------------------------------------- LET datos_recibo.numero = c_entra.num_nomi OUTPUT TO REPORT cheque(datos_recibo.*) LET siguie = "N" END WHILE FINISH REPORT cheque #CALL fgl_winmessage("r",imprime,"stop") #RUN imprime END IF IF genera = "EM" THEN #SELECT DISTINCT a.num_nomi INTO num_nomi_ant FROM volantes a # IF num_nomi_ant = c_entra.num_nomi THEN # LET respuesta = fgl_winquestion("VOLANTES","DESEA LIMPIAR LA TABLA DE LOS VOLANTES","QUESTION","YES|NO","NO",0) # IF respuesta = "YES" THEN DELETE FROM volantes # END IF # ELSE # DELETE FROM volantes # END IF LET xusername ='nominas@marmotech.com.do' LET xsmtphost ='smtp.office365.com' LET xsmtpport = '587' LET xpassword = 'Nuevo2018' LET cuenta_Envio = 1 # LET procedimiento = "{ ? =call dbo.sp_enviacorreo_emp(?,?,?,?,?) }" CLIPPED LET procedimiento = "{ call dbo.sp_enviacorreo_emp(?,?,?,?,?) }" CLIPPED PREPARE smt FROM procedimiento LET num_Doc = 0 LET selec = "SELECT DISTINCT a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ", "a.nom1_emp,a.apell1_emp,a.nom2_emp,a.apell2_emp,RTRIM(a.email) ", "FROM adtb00003 a,notb00008 b ", "WHERE a.num_emp = b.num_emp and ", "b.num_nomi = ? and ", "b.tipo_emp = ? and ", "a.email IS NOT NULL AND ", "a.num_emp NOT IN (select k.num_emp FROM volantes k) AND ", criterio10 clipped," AND b.clase_mov not in ('F','T') and b.status_t is null ", "ORDER BY a.departamento DESC,a.num_emp " PREPARE comando_emp1 FROM selec DECLARE empleados CURSOR FOR comando_emp1 OPEN empleados USING c_entra.num_nomi,c_entra.tipo_emp # LET perfil ='pnominas' LET idx = 1 FOREACH empleados INTO datos_recibo.num_emp,datos_recibo.departamento,datos_recibo.nivel_emp, datos_recibo.cod_puesto,datos_recibo.nom1_emp,datos_recibo.apell1_emp, datos_recibo.nom2_emp,datos_recibo.apell2_emp,datos_recibo.email -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API # LET r_filename = 'noprrp008.4rp' # IF idx > 90 AND idx <= 180 THEN # LET perfil = 'pnominas_1' # END IF # IF idx > 180 AND idx <= 270 THEN # LET perfil = 'pnominas_2' # END IF LET xingresos = 0 LET xdescuentos=0 # LET subject = datos_recibo.nom1_emp CLIPPED," ",datos_recibo.apell1_emp CLIPPED,"(",datos_recibo.num_emp USING "<<<<",")" LET subject = "MARMOTECH, S. A. VOLANTE PAGO CORRESPONDIENTE AL PERIODO DEL ",datos_peri.fecha_d, " AL ",datos_peri.fecha_a LET datos_recibo.nombre = datos_recibo.nom1_emp clipped," ", datos_recibo.nom2_emp clipped," ", datos_recibo.apell1_emp clipped," ", datos_recibo.apell2_emp clipped LET cuerpo_correo="
", "",datos_recibo.nombre CLIPPED,"" LET cuerpo_correo =cuerpo_correo, "| CODIGO | DESCRIPCION | CANTIDAD | VALOR | ", "ACUMULADO |
|---|---|---|---|---|
| ",datos_recibo.cod_mov," | ", "",datos_Recibo.descrip_mov CLIPPED," | ", "",datos_recibo.cantidad USING "###.##"," | ", "",datos_recibo.valor USING "#,###,###.##" , " | ", "",datos_recibo.acumulado USING "##,###,###.##"," |
| INGRESOS :",xingresos USING "##,###,###.##"," | ||||
| DESCUENTOS:",xdescuentos USING "##,###,###.##"," | ||||
| NETO :",xingresos+xdescuentos USING "##,###,###.##"," |