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

356 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP072
OBJETIVO : Reversar la entrada numero 71
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Septiembre 18, 1996.
COPIA DEL PROGRAMA EDPRRP073.
-------------------------------------------------------------------------------
}
DATABASE rayovac
GLOBALS
DEFINE salir CHAR(1)
DEFINE entra2,ano SMALLINT
DEFINE chano_act,ano_act,c_ano CHAR(4)
DEFINE fecha_2 CHAR(8)
DEFINE fecha_ini_per CHAR(8),
reverse_ent CHAR(14),
fecha4,fecha5 DATE
###### Variables para busqueda de rango de fecha
DEFINE detalle CHAR(30)
DEFINE mes SMALLINT
DEFINE tasa DECIMAL(5,2)
DEFINE p_fecha,fecha1, fecha2 DATE
DEFINE entra CHAR(14)
DEFINE entra1 CHAR(5)
DEFINE tipo_papel SMALLINT
DEFINE afecta CHAR(1)
###### Variables para almacenar los datos selecionados
END GLOBALS
MAIN
DEFER INTERRUPT
CALL edprrp072()
END MAIN
FUNCTION edprrp072()
DEFINE c_entra RECORD
cuenta_no LIKE cgtb00004.cuenta_no,
departamento LIKE cgtb00004.departamento,
cod_aux LIKE cgtb00004.cod_aux,
cod_sec LIKE cgtb00004.cod_sec,
num_doc LIKE cgtb00004.num_doc,
descripcion CHAR(25),
credito LIKE cgtb00004.debito,
debito LIKE cgtb00004.credito
END RECORD
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp072 FROM "edfmrp072"
DISPLAY FORM edfmrp072
CALL pantalla()
DISPLAY "edprrp072" AT 4,3
DISPLAY "Entrada de Diario Reversando ED.71" AT 6,17
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
###### Aceptando los valores para el rango de fecha
INPUT BY NAME entra,fecha1,fecha2,afecta,detalle
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
END INPUT
##### 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
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
LET entra2 = entra[11,12]
LET chano_act = YEAR(TODAY)
IF entra2 = "01" THEN
LET chano_act = YEAR(TODAY) - 1
LET entra2 = "12"
ELSE
LET entra2 = entra2 - 1
END IF
LET chano_act = chano_act CLIPPED
LET entra[13,14] = chano_act[3,4] CLIPPED
LET reverse_ent = "ED.71-001/",entra2 using "&&",entra[13,14]
DECLARE actual CURSOR FOR
SELECT a.cuenta_no,a.departamento,a.cod_aux,a.cod_sec,a.num_doc,
b.descripcion,
a.debito,a.credito,a.rowid
FROM cgtb00004 a,cgtb00001 b
WHERE a.ref matches reverse_ent and
a.cuenta_no = b.cuenta_no
ORDER BY a.rowid DESC
DISPLAY " "
AT 19,14
##### Loop para enviar informacion al reporte
START REPORT opera TO PIPE "lp -dcentral"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
FOREACH actual INTO c_entra.*
IF int_flag THEN
LET int_flag = false
RETURN
END IF
OUTPUT TO REPORT opera(c_entra.*)
END FOREACH
FINISH REPORT opera
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
#### Funcion para dar salida ordenada a la informacion requerida de
#### una entrada de diario de nominas local
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
REPORT opera(x)
DEFINE x RECORD
cuenta_no LIKE cgtb00004.cuenta_no,
departamento LIKE cgtb00004.departamento,
cod_aux LIKE cgtb00004.cod_aux,
cod_sec LIKE cgtb00004.cod_sec,
num_doc LIKE cgtb00004.num_doc,
descripcion CHAR(25),
credito LIKE cgtb00004.debito,
debito LIKE cgtb00004.credito
END RECORD
DEFINE doble_on CHAR(3)
DEFINE doble_off CHAR(3)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(3)
DEFINE doce CHAR(3)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE t_debito,t_credito DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
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 doce = ASCII 030
LET normal = ASCII 27, ASCII 80
LET hora = time
PRINT COLUMN 1, comp_off,"edprrp072",
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 24, "Entrada de Diario Reversando Entrada 71 ",
COLUMN 78, hora
PRINT COLUMN 34, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2
USING "dd/mm/yy"
PRINT comp_off,doce
SKIP 1 LINES
PRINT COLUMN 01,"Entrada de Diario No.",
doble_on,entra,doble_off
PRINT COLUMN 1,"Observaciones: _____________________________________"
PRINT COLUMN 1," _____________________________________"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 2, "Cuenta ",
COLUMN 11, "Dpto",
COLUMN 17, "Catalogo",
COLUMN 26, "Refe",
COLUMN 41, "Concepto",
COLUMN 75, "Debe",
COLUMN 93, "Haber",negrillas_off
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------"
ON EVERY ROW
IF t_debito is null THEN
LET t_debito = 0
END IF
IF t_credito is null THEN
LET t_credito = 0
END IF
IF x.debito !=0 THEN
PRINT COLUMN 2, x.cuenta_no,
COLUMN 11, x.departamento using "&&&&",
COLUMN 17, x.cod_aux using "&&","-",x.cod_sec using "&&&&",
COLUMN 26, x.num_doc,
COLUMN 41, x.descripcion,
COLUMN 68, x.debito using "##,###,###.##"
LET t_debito = t_debito + x.debito
END IF
IF x.credito != 0 THEN
PRINT COLUMN 2, x.cuenta_no,
COLUMN 11, x.departamento using "&&&&",
COLUMN 17, x.cod_aux using "&&","-",x.cod_sec using "&&&&",
COLUMN 26, x.num_doc,
COLUMN 41, x.descripcion,
COLUMN 85, x.credito using "##,###,###.##"
LET t_credito = t_credito + x.credito
END IF
IF afecta = "S" THEN
INSERT INTO cgtb00004 VALUES (fecha2,1,entra,x.cuenta_no,
x.departamento,x.num_doc,
x.cod_aux,x.cod_sec,null,detalle,
null,x.debito,
x.credito,null,user,current,null,null)
END IF
ON LAST ROW
PRINT COLUMN 1,negrillas_on
PRINT COLUMN 67,"--------------",
COLUMN 85,"--------------"
PRINT COLUMN 35,"Totales-->",
COLUMN 68, t_debito using "##,###,###.##",
COLUMN 85, t_credito using "##,###,###.##"
SKIP 2 LINE
PRINT COLUMN 1, detalle CLIPPED
LET t_debito = 0
LET t_credito = 0
PAGE TRAILER
SKIP 4 LINE
PRINT COLUMN 4,"_______________________",
COLUMN 36,"_______________________",
COLUMN 75,"_______________________"
PRINT COLUMN 2," PREPARADO POR ",
COLUMN 36," REVISADO POR ",
COLUMN 75," AUTORIZADO POR "
PRINT COLUMN 1,comp_off,negrillas_off
END REPORT