Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,464 @@
|
||||
{=================================================================
|
||||
PRGRAMA : NOPRRP038
|
||||
OBJETIVO :GENERA FILE PARA EL BANCO
|
||||
MODIFICADO POR : ING. JUAN SOTO
|
||||
FECHA MOD. :4/5/2016
|
||||
=================================================================
|
||||
}
|
||||
IMPORT util
|
||||
GLOBALS "noprgb000.4gl"
|
||||
DEFINE cmd2,dcmd2,nombreFile,d_tipos,mensaje,f_tipos,filepath,dir_file,nombreFile2 STRING,
|
||||
p_valor1 DEC(12,2),
|
||||
cuenta_empSbco INT
|
||||
MAIN
|
||||
DEFER INTERRUPT
|
||||
CALL ARG_VAL(1) RETURNING usuarios
|
||||
CALL ARG_VAL(2) RETURNING clave
|
||||
|
||||
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
|
||||
|
||||
CALL util.Math.srand() # INICIALIZA LA RUTINA PARA GENERAR NUMEROS ALEATORIOS
|
||||
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) AND b.genera_file_bco = "SI"
|
||||
GROUP BY a.num_emp,b.cuenta_no
|
||||
|
||||
LET cuenta_emp = 0
|
||||
SELECT ISNULL(COUNT(*),1) INTO cuenta_emp FROM notbcuenta
|
||||
WHERE valor > 0 AND cuenta_no IS NOT NULL
|
||||
IF cuenta_emp = 0 THEN
|
||||
LET cuenta_emp = 1
|
||||
END IF
|
||||
LET cuenta_empSbco=0
|
||||
SELECT ISNULL(COUNT(*),0) INTO cuenta_empSbco FROM notbcuenta
|
||||
WHERE valor > 0 AND cuenta_no IS NULL
|
||||
IF cuenta_empSbco = 0 THEN
|
||||
LET cuenta_empSbco = 1
|
||||
END IF
|
||||
LET cuenta_empSbco = cuenta_empSbco
|
||||
DISPLAY "cuenta sbaco ",cuenta_emp
|
||||
# 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 = b.num_emp AND b.cuenta_no IS NOT NULL
|
||||
|
||||
}
|
||||
LET p_valor = 0
|
||||
SELECT SUM(valor) INTO p_valor FROM notbcuenta
|
||||
WHERE valor >0 AND 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 OR status_t = 'P')
|
||||
|
||||
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,a.tipocuenta,a.codbancodestino,a.digiverbancodestino,a.cedula ",
|
||||
"FROM adtb00003 a,notb00008 b, notb00002 c,notbcuenta d ",
|
||||
"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') ",
|
||||
" and a.num_emp = d.num_emp and d.valor > 0 and ",
|
||||
" a.genera_file_bco ='SI' ",
|
||||
"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
|
||||
|
||||
LET cmd2 = FGL_GETENV("FGLSPOOL"),"\\MTECH2.TXT"
|
||||
START REPORT nbanco to cmd2
|
||||
DELETE FROM notb00050 WHERE fecha_generacion = c_entra.fecha
|
||||
|
||||
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_valor1 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_valor1
|
||||
END IF
|
||||
|
||||
# se coloco en comentario 26/4/2018
|
||||
{
|
||||
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.num_emp = datos_cheque.num_emp AND
|
||||
a.departamento = a.departamento AND
|
||||
a.cod_mov not in (100,101,102,98,50,54)) and
|
||||
(clase_mov not in ('F'))
|
||||
}
|
||||
|
||||
SELECT a.valor INTO datos_cheque.neto FROM notbcuenta a
|
||||
WHERE a.num_emp = datos_cheque.num_emp AND a.valor > 0
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
LET datos_cheque.numero = c_entra.num_nomi
|
||||
IF datos_cheque.neto > 0 THEN
|
||||
OUTPUT TO REPORT banco(datos_cheque.*)
|
||||
OUTPUT TO REPORT nbanco(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
|
||||
END IF
|
||||
LET pprogreso = pprogreso + 1
|
||||
LET siguie = "N"
|
||||
END WHILE
|
||||
FINISH REPORT banco
|
||||
FINISH REPORT nbanco
|
||||
LET d_tipos="TXT"
|
||||
LET f_tipos="*.txt"
|
||||
LET mensaje=%"Elige Directorio"
|
||||
|
||||
# CALL ui.Interface.frontCall("standard","getenv", ["BANCO"], [dcmd] )
|
||||
CALL ui.Interface.frontCall("standard","opendir", [dir_file,mensaje], [dcmd] )
|
||||
LET nombreFile = 'PE',p_companias.codnomina USING "&&&&&",'01',TODAY USING 'mmdd',c_entra.num_nomi USING "&&&&&&&",'E.TXT'
|
||||
LET dcmd2 = dcmd CLIPPED
|
||||
LET dcmd = dcmd CLIPPED,"\\",nombreFile CLIPPED
|
||||
# LET nombreFile2 ='PAG',p_companias.codnomina USING "&&&&&",'01',TODAY USING 'mmdd',c_entra.num_nomi USING "&&&&&",'N.TXT'
|
||||
LET nombreFile2 ='RetMarmo.txt'
|
||||
LET dcmd2 = dcmd2 CLIPPED,"\\",nombreFile2 CLIPPED
|
||||
|
||||
#CALL fgl_Winmessage("info",dcmd,"info")
|
||||
CALL fgl_putfile(cmd,dcmd)
|
||||
CALL fgl_putfile(cmd2,dcmd2)
|
||||
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 CHAR(35),
|
||||
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 CHAR(20),
|
||||
tipocuenta VARCHAR(1),
|
||||
codbancodestino VARCHAR(8),
|
||||
digiverbancodestino VARCHAR(1),
|
||||
cedula VARCHAR(11),
|
||||
nombre CHAR(80),
|
||||
numero INTEGER,
|
||||
fecha DATE,
|
||||
acumulado DECIMAL(12,2),
|
||||
neto DECIMAL(12,2)
|
||||
|
||||
END RECORD,
|
||||
hora VARCHAR(5),
|
||||
ch_hora VARCHAR(4)
|
||||
|
||||
DEFINE
|
||||
ch_valor,ch_neto CHAR(13),
|
||||
ch_valor1 CHAR(14),
|
||||
b base.StringBuffer,
|
||||
codigo_op CHAR(2)
|
||||
|
||||
OUTPUT
|
||||
TOP MARGIN 0
|
||||
LEFT MARGIN 0
|
||||
BOTTOM MARGIN 0
|
||||
PAGE LENGTH cuenta_emp
|
||||
|
||||
ORDER BY x.numero
|
||||
|
||||
FORMAT
|
||||
BEFORE GROUP OF x.numero
|
||||
|
||||
LET hora = TIME
|
||||
LET b = base.StringBuffer.create()
|
||||
CALL b.append(hora)
|
||||
CALL b.replace(":"," ",1)
|
||||
LET hora = b.toString()
|
||||
LET ch_hora = hora[1,2],hora[4,5]
|
||||
|
||||
LET ch_valor1 = p_valor USING "&&&&&&&&&&&.##"
|
||||
|
||||
LET ch_valor = ch_valor1[1,11],ch_valor1[13,14]
|
||||
|
||||
PRINT "H",p_companias.rnc[1,15],'MARMOTECH, S. A. ', c_entra.num_nomi USING "&&&&&&&",
|
||||
# PRINT "H",'01300048665 ', 'JORGE RICARDO SUBERO ISA ', c_entra.num_nomi USING "&&&&&&&",
|
||||
'01',c_entra.fecha USING "yyyymmdd",'00000000000','0000000000000',
|
||||
cuenta_emp USING "&&&&&&&&&&&",ch_valor CLIPPED,'000000000000000',
|
||||
TODAY USING 'yyyymmdd',ch_hora,'lgenao@marmotech.com.do ',
|
||||
102 SPACES
|
||||
|
||||
LET ch_valor1 = NULL
|
||||
AFTER GROUP OF x.num_emp
|
||||
|
||||
IF x.cuenta_no IS NOT NULL THEN
|
||||
# if x.neto > 0 THEN
|
||||
|
||||
LET ch_valor1 = x.neto USING "&&&&&&&&&&&.##"
|
||||
LET ch_neto = ch_valor1[1,11],ch_valor1[13,14]
|
||||
IF x.tipocuenta IS NULL THEN
|
||||
LET x.tipocuenta='2'
|
||||
END IF
|
||||
CASE
|
||||
WHEN x.tipocuenta='1'
|
||||
LET codigo_op = '22'
|
||||
EXIT CASE
|
||||
WHEN x.tipocuenta='2'
|
||||
LET codigo_op = '32'
|
||||
EXIT CASE
|
||||
END CASE
|
||||
PRINT "N",p_companias.rnc[1,15],c_entra.num_nomi USING "&&&&&&&",
|
||||
#PRINT "N",'01300048665 ',c_entra.num_nomi USING "&&&&&&&",
|
||||
x.num_emp USING "&&&&&&&",x.cuenta_no ,x.tipocuenta,'214',x.codbancodestino,x.digiverbancodestino,
|
||||
codigo_op,
|
||||
ch_neto CLIPPED,' ',' ',x.nom1_emp,12 SPACES,'DEPOSITO NOMINA MARMOTECH',15 SPACES,' ',' ',
|
||||
# ch_neto CLIPPED,' ',' ',x.nom1_emp,12 SPACES,'DEPOSITO NOMINA JORGE RICARDO SUBERO ISA',' ',' ',
|
||||
40 SPACES,12 SPACES,'00',79 SPACES
|
||||
|
||||
|
||||
# END IF
|
||||
END IF
|
||||
|
||||
END REPORT
|
||||
|
||||
|
||||
REPORT nbanco(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 CHAR(35),
|
||||
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 CHAR(20),
|
||||
tipocuenta VARCHAR(1),
|
||||
codbancodestino VARCHAR(8),
|
||||
digiverbancodestino VARCHAR(1),
|
||||
cedula VARCHAR(11),
|
||||
nombre CHAR(80),
|
||||
numero INTEGER,
|
||||
fecha DATE,
|
||||
acumulado DECIMAL(12,2),
|
||||
neto DECIMAL(12,2)
|
||||
|
||||
END RECORD,
|
||||
hora VARCHAR(5),
|
||||
ch_hora VARCHAR(4),
|
||||
envia_datos RECORD
|
||||
dtipreg VARCHAR(1),
|
||||
dpcta VARCHAR(12),
|
||||
dref VARCHAR(10),
|
||||
did CHAR(16),
|
||||
ddoc VARCHAR(15),
|
||||
dmon VARCHAR(15),
|
||||
dname CHAR(20),
|
||||
dlname CHAR(20)
|
||||
END RECORD
|
||||
|
||||
DEFINE
|
||||
ch_valor,ch_neto CHAR(16),
|
||||
ch_valor1 CHAR(16),
|
||||
b base.StringBuffer,
|
||||
ch_cedula VARCHAR(11)
|
||||
|
||||
OUTPUT
|
||||
TOP MARGIN 0
|
||||
LEFT MARGIN 0
|
||||
RIGHT MARGIN 0
|
||||
BOTTOM MARGIN 0
|
||||
PAGE LENGTH cuenta_empSbco
|
||||
|
||||
ORDER BY x.numero
|
||||
|
||||
FORMAT
|
||||
BEFORE GROUP OF x.numero
|
||||
|
||||
LET hora = TIME
|
||||
# LET b = base.StringBuffer.create()
|
||||
# CALL b.append(hora)
|
||||
# CALL b.replace(":"," ",1)
|
||||
# LET hora = b.toString()
|
||||
# LET ch_hora = hora[1,2],hora[4,5]
|
||||
|
||||
LET ch_valor1 = p_valor USING "&&&&&&&&&&&&.##"
|
||||
|
||||
LET ch_valor = ch_valor1[1,12],ch_valor1[14,15]
|
||||
|
||||
{ PRINT "H",p_companias.rnc[1,15],'MARMOTECH, S. A. ', c_entra.num_nomi USING "&&&&&&&",
|
||||
'01',c_entra.fecha USING "yyyymmdd",'00000000000','0000000000000',
|
||||
cuenta_emp USING "&&&&&&&&&&&",ch_valor CLIPPED,'000000000000000',
|
||||
TODAY USING 'yyyymmdd',ch_hora,'lgenao@marmotech.com.do ',
|
||||
102 SPACES
|
||||
}
|
||||
LET ch_valor1 = NULL
|
||||
AFTER GROUP OF x.num_emp
|
||||
|
||||
IF x.cuenta_no IS NULL THEN
|
||||
|
||||
LET envia_datos.dtipreg = 'D'
|
||||
LET envia_datos.dpcta ='000054127731'
|
||||
LET ch_cedula = x.cedula USING "&&&&&&&&&&&"
|
||||
|
||||
LET envia_datos.dref = util.Math.rand(150000) USING "&&&&&&&&&&"
|
||||
LET envia_datos.did =x.cedula
|
||||
|
||||
LET envia_datos.ddoc = x.num_emp USING "&&&&&&&&&&&&&&&"
|
||||
LET ch_neto = NULL
|
||||
|
||||
LET ch_valor1 = x.neto USING "&&&&&&&&&&&&&.&&"
|
||||
LET ch_neto = ch_valor1[1,13],ch_valor1[15,16]
|
||||
|
||||
|
||||
LET envia_datos.dmon = ch_neto
|
||||
LET envia_datos.dname = x.nom1_emp
|
||||
LET envia_datos.dlname = x.apell1_emp
|
||||
|
||||
PRINT envia_datos.*
|
||||
# ADICIONA REGISTROS A LA TABLA DE LA GENERACION
|
||||
INSERT INTO notb00050 (cedula,num_emp,fecha,codigo,fecha_generacion,num_nomi,tipo_emp)
|
||||
VALUES (envia_datos.did,envia_datos.ddoc,getdate(),envia_datos.dref,c_entra.fecha,c_entra.num_nomi,c_entra.tipo_emp)
|
||||
|
||||
UPDATE adtb00003 SET codigo_retiro_bco =envia_datos.dref,
|
||||
fecha_valido_retiro=getdate(),
|
||||
monto_retiro = x.neto
|
||||
WHERE num_emp = x.num_emp
|
||||
END IF
|
||||
|
||||
END REPORT
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user