Files
MBS/PROYECTO/cgdir/TX_edprrp034_1.4gl
T

527 lines
16 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP034
OBJETIVO : Listar las Entrada de Diario Nomina Quincenal en
un rango de fecha.
Es usado por EDPRRP034
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Julio 28, 1993
-------------------------------------------------------------------------------
}
SCHEMA smarmotech
GLOBALS
DEFINE rango_in,rango_fin CHAR(4)
###### Variables para busqueda de rango de fecha
DEFINE detalle CHAR(30)
DEFINE mes SMALLINT
DEFINE ano CHAR(4)
DEFINE tasa DECIMAL(5,2)
DEFINE p_fecha,fecha1, fecha2 DATE
DEFINE afecta,nominas CHAR(1)
DEFINE entra CHAR(14)
DEFINE entra1 CHAR(5)
DEFINE tipo_papel SMALLINT
DEFINE mano_obra,sueldo_ind,monto_banco DECIMAL(12,2)
###### Variables para almacenar los datos selecionados
DEFINE busca_desc,busca_cxc,busca_monto,valor_dep,selec5,
busca_int,selec6,criterio CHAR(500)
###### Variables que la almacenan la informacion enviada al reporte
DEFINE diario1 RECORD
cuenta_no LIKE cgtb00001.cuenta_no,
departamento SMALLINT,
valor DECIMAL(10,2),
cod_mov LIKE notb00002.cod_mov
END RECORD
###### Variables que la almacenan la informacion enviada al reporte
DEFINE diario2 RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
factura INTEGER,
valor DECIMAL(12,2),
sub_total DECIMAL(10,2)
END RECORD,
usuarios,clave CHAR(80),
impresor SMALLINT,
tiempo CHAR(4),
p_companias RECORD LIKE companias.*
END GLOBALS
MAIN
DEFER INTERRUPT
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 edprrp034()
END MAIN
FUNCTION edprrp034()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp034 FROM "edfmrp034"
DISPLAY FORM edfmrp034
CALL pantalla()
DISPLAY "edprrp034" AT 4,3
DISPLAY "Entrada de Diario Nomina Administracion" AT 6,19
LET tipo_papel = 3
CALL msgrp000(tipo_papel)
# Validacion de las variables para el rango de nominas del ano actual
LET rango_in = year(today)
LET rango_in = rango_in[3,4]
LET rango_in = rango_in clipped,"00"
LET rango_fin = year(today)
LET rango_fin = rango_fin[3,4]
LET rango_fin = rango_fin clipped,"60"
###### Aceptando los valores para el rango de fecha
INPUT BY NAME entra,fecha1,fecha2,detalle,afecta
AFTER FIELD entra
SELECT unique ref FROM cgtb00004
WHERE ref = entra
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
NEXT FIELD entra
END IF
LET entra1 = entra
BEFORE FIELD fecha1
SELECT MAX(fecha) INTO p_fecha FROM cgtb00004
WHERE ref[1,5] = entra1
LET fecha1 = p_fecha + 1
DISPLAY BY NAME fecha1
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
#NEXT FIELD fecha1
END IF
IF fecha1 <= p_fecha THEN
ERROR "(179) EXISTE ENTRADA DE DIARIO CON ESA FECHA"
#NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 is null THEN
ERROR "(16) CAMPO EN BLANCO"
# NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR"
#NEXT FIELD fecha1
END IF
###### Selecionando en rango de fecha de la tabla de periodo para el fecha2
SELECT UNIQUE ref FROM cgtb00004 where ref = entra
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
# NEXT FIELD fecha2
END IF
AFTER INPUT
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
EXIT INPUT
END INPUT
CONSTRUCT BY NAME criterio ON a.num_nomi
LET busca_monto =
"SELECT SUM(a.valor) FROM notb00008 a ",
"WHERE a.tipo_emp = 'Q' AND a.status_t IS NULL AND ",
" a.cod_mov NOT IN (100,101,102) AND ",criterio clipped
DISPLAY "Buscando Datos Basicos2... Espere Por Favor" AT 19,14
PREPARE comando FROM busca_monto
DECLARE busca CURSOR FOR comando
OPEN busca
FETCH busca INTO monto_banco
##### Creando la facilidad para cancelar proceso con DELETE O SUPR
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
# Busca la informacion requerida
LET valor_dep =
"SELECT '7101',a.departamento,SUM(a.valor) ",
"FROM notb00008 a ",
"WHERE a.tipo_emp = 'Q' AND ",
" a.clase_mov NOT IN ('D','R','S') AND ",
" a.cod_mov NOT IN (40,44) AND ",
" a.valor > 0 AND ",criterio clipped,
"GROUP BY 1,2 ORDER BY 2 "
PREPARE comando1 FROM valor_dep
DECLARE buscar CURSOR FOR comando1
OPEN buscar
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
##### Envia la Informacion al printer de contabilidad
START REPORT entrada34 TO PIPE "lp -dcentral"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
##### Loop para enviar informacion al reporte
WHILE STATUS != NOTFOUND
FETCH buscar INTO diario1.*
IF status = NOTFOUND THEN
EXIT WHILE
END IF
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT entrada34(diario1.*,fecha1,fecha2,detalle,entra,
monto_banco)
END WHILE
LET valor_dep =
"SELECT '7101',a.departamento,SUM(a.valor),a.cod_mov ",
"FROM notb00008 a ",
"WHERE a.tipo_emp = 'Q' AND ",
" a.cod_mov IN (40,44) AND ",
" a.valor > 0 AND ",criterio clipped,
"GROUP BY 1,2,4 ORDER BY 1 "
PREPARE comando3 FROM valor_dep
DECLARE buscate CURSOR FOR comando3
OPEN buscate
WHILE STATUS != NOTFOUND
FETCH buscate INTO diario1.*
IF status = NOTFOUND THEN
EXIT WHILE
END IF
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = FALSE
RETURN
END IF
SELECT a.cta_aux INTO diario1.cuenta_no
FROM notb00002 a
WHERE a.cod_mov = diario1.cod_mov
OUTPUT TO REPORT entrada34(diario1.*,fecha1,fecha2,detalle,entra,
monto_banco)
END WHILE
FINISH REPORT entrada34
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
#### Funcion para dar salida ordenada a la informacion requerida de
#### una entrada de diario de nominas local
REPORT entrada34(x,fecha1,fecha2,detalle1,entrada,monto_banco)
DEFINE x RECORD
cuenta_no LIKE cgtb00001.cuenta_no,
departamento SMALLINT,
valor DECIMAL(10,2),
cod_mov LIKE notb00002.cod_mov
END RECORD
DEFINE j RECORD
cta_aux CHAR(8),
num_emp LIKE notb00008.num_emp,
descrip_cta CHAR(30),
monto DECIMAL(10,2)
END RECORD
DEFINE k RECORD
num_emp CHAR(8),
monto DECIMAL(10,2)
END RECORD
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE descrip,detalle1 CHAR(30)
DEFINE tot_val,interes,mano_obra,sueldo_ind,monto_banco DECIMAL(12,2)
DEFINE total1,total2,total3,total4,total5,total6 DECIMAL(12,2)
DEFINE total7,total8,total9 DECIMAL(12,2) #Acumula totales DEBITO Y CREDITO
DEFINE tasa1 DECIMAL(5,2) ## Almacena la tasa de la tasa de cambio
DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
DEFINE nomina CHAR(1)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE normall CHAR(3)
DEFINE comprimido CHAR(3)
DEFINE hora CHAR(5)
DEFINE dpto INTEGER
DEFINE nomina1 CHAR(24)
DEFINE entrada CHAR(14)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
# ORDER BY x.departamento,x.num_emp
FORMAT
PAGE HEADER
LET doble_on = ASCII 001
LET doble_off = ASCII 002
LET negrillas_on = ASCII 027, ASCII 098
LET negrillas_off = ASCII 027, ASCII 099
LET comp_on = ASCII 31
LET comp_off = ASCII 029
LET comprimido = ASCII 031
LET doce = ASCII 030
LET normal = ASCII 029
LET normall = ASCII 029
LET hora = time
##### Selecionado la descripcion del fecha2
PRINT COLUMN 1, comp_off,"edprrp034",
COLUMN 23, "R A Y . O . V A C D O M I N I C A N A, S. A.",
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 35, "Sistema de Contabilidad",
COLUMN 75, today using "dd/mm/yy"
PRINT COLUMN 26, "Entrada de Diario Nomina Administracion",
COLUMN 78, hora
PRINT COLUMN 34, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2
USING "dd/mm/yy"
# , negrillas_off
SKIP 1 LINE
PRINT COLUMN 01,"Entrada de Diario No.",
doble_on,entrada,doble_off
PRINT COLUMN 1,"Observaciones: _____________________________________"
PRINT COLUMN 1," _____________________________________"
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------"
#,negrillas_on
PRINT COLUMN 2, "Cuenta ",
COLUMN 11, "Dpto",
COLUMN 18, "Concepto",
COLUMN 56, "Debe",
COLUMN 71, "Haber" #,negrillas_off
PRINT COLUMN 1,
"--------------------------------------------------",
"----------------------------------------"
SKIP 1 LINE
ON EVERY ROW
IF total1 IS NULL THEN
LET total1 = 0
END IF
LET total1 = total1 + x.valor
SELECT a.descripcion INTO descrip
FROM cgtb00001 a
WHERE a.cuenta_no = x.cuenta_no
PRINT COLUMN 2, x.cuenta_no,
COLUMN 11, x.departamento USING "&&&&",
COLUMN 18, descrip CLIPPED,
COLUMN 50, x.valor using "###,###,##&.&&"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,x.cuenta_no,x.departamento,null,
null,null,null,detalle1,null,x.valor,0,null,user,current,null,null)
END IF
# LET tot_val = tot_val + x.valor
ON LAST ROW
###### Acumulando totales por columna
LET total7 = total1
##### Imprimendo monto descuento para RAY.O.VAC
LET busca_desc =
"SELECT b.cta_aux,a.num_emp,c.descripcion,sum(a.valor) ",
"FROM notb00008 a,notb00002 b,cgtb00001 c ",
"WHERE b.cta_aux = c.cuenta_no AND b.cod_mov = a.cod_mov AND ",
"b.cta_aux IN ('1128') AND ",
"b.clase_mov IN ('D','S','R') AND a.tipo_emp = 'Q' AND ",
" a.cod_mov NOT IN (100,101,102) AND ",
" b.cta_aux IS NOT NULL AND ",criterio clipped," GROUP BY 1,2,3 ",
" ORDER BY 1 "
PREPARE comando5 FROM busca_desc
DECLARE buscar5 CURSOR FOR comando5
LET total8 = 0
FOREACH buscar5 INTO j.*
LET j.monto = j.monto * -1
PRINT COLUMN 2, j.cta_aux CLIPPED,
COLUMN 10,"01","-",j.num_emp USING "&&&",
COLUMN 18, j.descrip_cta CLIPPED,
COLUMN 65, j.monto using "###,###,##&.&&"
LET total8 = total8 + j.monto
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,j.cta_aux,null,null,01,j.num_emp,
null,detalle1,null,0,j.monto,null,user,current,null,null)
END IF
END FOREACH
LET busca_desc =
"SELECT b.cta_aux,' ',c.descripcion,sum(a.valor) ",
"FROM notb00008 a,notb00002 b,cgtb00001 c ",
"WHERE b.cta_aux = c.cuenta_no AND b.cod_mov = a.cod_mov AND ",
"b.cta_aux NOT IN ('1128') AND ",
"b.clase_mov IN ('D','S','R') AND a.tipo_emp = 'Q' AND ",
" a.cod_mov NOT IN (100,101,102) AND ",
" b.cta_aux IS NOT NULL AND ",criterio clipped," GROUP BY 1,2,3 ",
" ORDER BY 1 "
PREPARE comando4 FROM busca_desc
DECLARE buscar1 CURSOR FOR comando4
FOREACH buscar1 INTO j.*
LET j.monto = j.monto * -1
IF j.cta_aux = "2125-01" THEN
LET busca_int =
"SELECT SUM(a.valor * -1) FROM notb00008 a ",
"WHERE a.cod_mov = 110 AND a.tipo_emp = 'Q' AND ",
criterio clipped
PREPARE comando20 FROM busca_int
DECLARE busca20 CURSOR FOR comando20
OPEN busca20
FETCH busca20 INTO interes
LET j.monto = j.monto + interes
END IF
PRINT COLUMN 2, j.cta_aux CLIPPED,
COLUMN 18, j.descrip_cta CLIPPED,
COLUMN 65, j.monto using "###,###,##&.&&"
LET total8 = total8 + j.monto
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,j.cta_aux,null,null,null,null,
null,detalle1,null,0,j.monto,null,user,current,null,null)
END IF
END FOREACH
LET total8 = total8 + monto_banco
PRINT COLUMN 2, "1104",
COLUMN 18, "BANCOMERCIO RD$ - NOMINA",
COLUMN 65, monto_banco using "###,###,##&.&&"
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"1104",null,null,null,null,
null,detalle1,null,0,monto_banco,null,user,current,null,null)
END IF
###### Imprime total DEBITO y total CREDITO
SKIP 2 LINE
PRINT COLUMN 1," ", #negrillas_on,
COLUMN 50,"--------------",
COLUMN 65,"--------------"
PRINT COLUMN 35,"Totales-->",
COLUMN 50,total7 USING "###,###,##&.&&",
COLUMN 65,total8 USING "###,###,##&.&&"
SKIP 2 LINE
PRINT COLUMN 1, detalle1
PRINT COLUMN 1,comp_off,negrillas_off
SKIP 4 LINE
END REPORT
{
Esta funcion se utiliza para desplegar mensajes de los reportes de
los sistemas de Ray-O-Vac Dominicana.
Realizada por Lic. Abner Montalvo y Johnny Soto Agosto 21, 1992
}
FUNCTION msgrp000(tipo_papel)
DEFINE tipo_papel SMALLINT,
longitud CHAR(11),
linea_papel CHAR(50)
CASE
WHEN tipo_papel = 1
LET longitud = " 9 1/2 x 11"
WHEN tipo_papel = 2
LET longitud = "14 7/8 x 11"
END CASE
LET linea_papel = "Coloque papel ",longitud," en la impresora."
DISPLAY linea_papel
AT 15,14
DISPLAY "Asegurese de que la impresora este encendida."
AT 16,14
DISPLAY "<Esc> Ejecuta impresion <Supr> Cancela impresion"
AT 18,14
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
LET fecha = today USING "dd/mm/yy"
LET hora = time
DISPLAY "R A Y . O . V A C D O M I N I C A N A, S. A." AT 4,17
ATTRIBUTE (REVERSE,YELLOW)
DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW)
DISPLAY "Sistema de Contabilidad General" AT 5,24
DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW)
CALL fgl_drawbox(5,79,3,1)
CALL fgl_drawbox(1,79,22,1)
RUN "type C:\\archivo > %USPRINT%" END FUNCTION