Files
DECOMARMOL/PROYECTO/cgdir/edprrp115.4gl
T
2026-09-22 20:38:51 -04:00

472 lines
16 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP115
OBJETIVO : Listar las Entrada de Diario Cobros Clientes Locales
Ingresos
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Julio 28, 1993
-------------------------------------------------------------------------------
}
SCHEMA decomarmol
GLOBALS
DEFINE idx char(2)
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
pvetb51 RECORD LIKE vetb00051.*,
historico CHAR(1)
###### Variables para busqueda de rango de fecha
DEFINE afecta CHAR(1),
numero_ent CHAR(2),
nombre_cta,detalle CHAR(30),
u_mes,lj,mes,ultimo SMALLINT ,
p_ano,ano CHAR(4) ,
tasa DECIMAL(5,2) ,
p_fecha,fecha1, fecha2 DATE ,
nominas CHAR(1),
entra CHAR(14),
entra1 CHAR(5),
tipo_papel SMALLINT,
p_cctb01 RECORD LIKE cctb00001.*,
p_companias RECORD LIKE companias.*,
mano_obra,sueldo_ind,monto_banco,interes DECIMAL(12,2),
###### Variables para almacenar los datos selecionados
selec5, selec6 CHAR(1500),
usuarios,clave CHAR(80),
impresor SMALLINT,
tiempo CHAR(4)
DEFINE p_entrada RECORD
fecha DATE,
entrada_no LIKE cgtb00004.ref,
detalles LIKE cgtb00004.detalles,
detalle_1 LIKE cgtb00004.detalles
END RECORD
DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off,doce,doble_on,doble_off
CHAR(3),
cmd,imprime,copia CHAR(150),archivo CHAR(80)
###### Variables que la almacenan la informacion enviada al reporte
DEFINE diario1 RECORD
cuenta_no SMALLINT,
descripcion CHAR(30),
valor DECIMAL(10,2),
monto_desc DECIMAL(10,2)
END RECORD
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 "decomarmol" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL edprrp115()
END MAIN
FUNCTION edprrp115()
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM edfmrp115 FROM "edfmrp115"
DISPLAY FORM edfmrp115
CALL pantalla()
DISPLAY "edprrp115" AT 4,3
DISPLAY "Entrada de Diario Cobros Clientes Locales-Ingresos" AT 6,15
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
###### Aceptando los valores para el rango de fecha
INPUT BY NAME fecha1,fecha2,entra,afecta,detalle
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
LET numero_ent = 15
LET p_ano = YEAR(fecha1)
# CUANDO LOS PERIDOS SON DIFERENTES A LOS MESES CALENDARIO DEBEMOS
# UTILIZAR ESTE QUERY
#SELECT MAX(a.mes) INTO u_mes FROM prdtable a
#WHERE a.ano = p_ano and a.fecha_inicio <= p_entrada.fecha AND
# a.fecha_corte >= fecha1
LET tiempo = MONTH(fecha1) using "&&",p_ano[3,4]
SELECT MAX(a.ref[7,9]) INTO ultimo FROM cgtb00004 a
WHERE a.ref[4,5] = numero_ent and a.ref[11,14] = tiempo
IF ultimo is null THEN
LET ultimo = 0
END IF
LET ultimo = ultimo + 1
LET entra = "ED.15-",ultimo USING "&&&","/",tiempo
DISPLAY BY NAME entra
AFTER FIELD entra
SELECT UNIQUE a.ref FROM cgtb00004 a WHERE a.ref = entra
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
NEXT FIELD entra
END IF
LET entra1 = entra
BEFORE FIELD fecha1
SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a
WHERE a.ref[1,9] = entra1
LET fecha1 = p_fecha + 1
DISPLAY BY NAME fecha1
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
AFTER INPUT
IF INT_FLAG THEN
ERROR "OPERACION CANCELADA"
LET INT_FLAG = FALSE
RETURN
END IF
IF afecta = 'S' THEN
SELECT UNIQUE a.ref FROM cgtb00004 a where a.ref = entra
IF STATUS != NOTFOUND THEN
ERROR "(12) REGISTRO EXISTE"
NEXT FIELD fecha2
END IF
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
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT entrada14 TO XML HANDLER HANDLER
##### Envia la Informacion al printer de contabilidad
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
# Busca la informacion requerida
DECLARE buscar CURSOR FOR
SELECT a.* FROM cctb00001 a,vetb00060 b
WHERE a.status_t IS NULL AND (a.tipo_doc IN ("PG","AV")) AND
a.tipo_cliente = b.tipo_cliente AND
b.ventas = "1" AND
a.fecha_orig BETWEEN fecha1 AND fecha2
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
OPEN buscar
##### Loop para enviar informacion al reporte
WHILE STATUS != NOTFOUND
FETCH buscar INTO p_cctb01.*
IF status = NOTFOUND THEN
EXIT WHILE
END IF
IF p_cctb01.monto_desc is null THEN
LET p_cctb01.monto_desc = 0
END IF
IF p_cctb01.valor is null THEN
LET p_cctb01.valor = 0
END IF
IF p_cctb01.tipo_doc = "AV" AND
p_cctb01.num_doc != p_cctb01.aplica_a THEN
LET p_cctb01.valor = 0
LET p_cctb01.monto_desc = 0
END IF
IF p_cctb01.tipo_doc = "AV" THEN
LET p_cctb01.valor = p_cctb01.valor * -1
LET p_cctb01.monto_desc = p_cctb01.monto_desc * -1
END IF
#LET diario1.monto_desc = diario1.monto_desc * -1
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT entrada14(p_cctb01.*,fecha1,fecha2,detalle,entra)
LET idx = idx + 1
END WHILE
FINISH REPORT entrada14
CLEAR SCREEN
--RUN imprime
END FUNCTION
#### Funcion para dar salida ordenada a la informacion requerida de
#### una entrada de diario de nominas local
REPORT entrada14(x,fecha1,fecha2,detalle1,entrada)
DEFINE x RECORD LIKE cctb00001.*
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE debito,credito DECIMAL(12,2),
detalle1 CHAR(30),
mano_obra,sueldo_ind,monto_banco DECIMAL(12,2),
total1,total2,total3,total4,total5,total6 DECIMAL(12,2),
total7,total8 DECIMAL(12,2),## Acumula los totales DEBITO Y CREDITO
tasa1 DECIMAL(5,2), ## Almacena la tasa de la tasa de cambio
fecha1,fecha2 DATE, #### Almacena las fecha del rango de busqueda
nomina CHAR(1),
doble_on CHAR(2),
doble_off CHAR(2),
negrillas_on CHAR(6),
negrillas_off CHAR(6),
comp_on CHAR(2),
comp_off CHAR(2) ,
doce CHAR(2),
normal CHAR(2) ,
normall CHAR(3) ,
comprimido CHAR(3),
hora CHAR(5),
dpto INTEGER ,
nomina1 CHAR(24),
entrada CHAR(14)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
{ LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET normal = ASCII 27, ASCII 80}
LET hora = time
##### Selecionado la descripcion del fecha2
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, comp_off
PRINT COLUMN 1,"edprrp115",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 73, " Pag. ",pageno using "###"
PRINT COLUMN 28, "Sistema de Contabilidad",
COLUMN 73, today using "dd/mm/yy"
PRINT COLUMN 15,
"Entrada de Diario Cobros Clientes Locales-Ingresos",
COLUMN 76, hora
PRINT COLUMN 28, "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: COBROS VENTAS LOCALES"
PRINT COLUMN 1,
" _____________________________________"
PRINT COLUMN 1, "----------------------------------------",
"----------------------------------------"
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 debito is null THEN
LET debito = 0
END IF
IF credito is null THEN
LET credito = 0
END IF
IF total1 IS NULL THEN
LET total1 = 0
END IF
IF total2 IS NULL THEN
LET total2 = 0
END IF
IF total4 IS NULL THEN
LET total4 = 0
END IF
LET total1 = total1 + x.valor
LET total2 = total2 + x.monto_desc
LET debito = debito + x.valor
ON LAST ROW
LET nombre_cta = NULL
SELECT descripcion INTO nombre_cta FROM cgtb00001
WHERE cuenta_no = "1111101"
IF nombre_cta IS NULL THEN
LET nombre_cta = "CUENTA SIN DESCRIPCION"
END IF
LET debito = 0
LET debito = SUM(x.valor+x.monto_desc)
IF debito IS NULL THEN
LET debito = 0
END IF
LET debito = debito * -1
PRINT COLUMN 2, "1111101",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 50, debito using "###,###,##&.&&"
IF afecta = "S" THEN
INSERT INTO cgtb00004
(fecha, tipo, ref, cuenta_no, departamento, num_doc, cod_aux, cod_sec, detalles,
detalle_1, detalle_2, debito, credito, status_t, us_crea, fech_crea, us_mod, fech_mod)
VALUES(fecha2,1,entrada,"1111101",null,null,null,null,
null,detalle1,null,debito,0,null,usuarios,GETDATE(),
null,null)
END IF
LET nombre_cta = NULL
SELECT descripcion INTO nombre_cta FROM cgtb00001
WHERE cuenta_no = "11201"
IF nombre_cta IS NULL THEN
LET nombre_cta = "CUENTA SIN DESCRIPCION"
END IF
PRINT COLUMN 2, "11201",
COLUMN 11, "4200",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 65, debito using "###,###,##&.&&"
IF afecta = "S" THEN
INSERT INTO cgtb00004
(fecha, tipo, ref, cuenta_no, departamento, num_doc, cod_aux, cod_sec, detalles,
detalle_1, detalle_2, debito, credito, status_t, us_crea, fech_crea, us_mod, fech_mod)
VALUES(fecha2,1,entrada,"11201",4200,null,null,null,
null,detalle1,null,0,debito,null,usuarios,GETDATE(),
null,null)
END IF
###### Imprime total DEBITO y total CREDITO
SKIP 1 LINE
PRINT COLUMN 1,negrillas_on
PRINT COLUMN 50,"--------------",
COLUMN 65,"--------------"
PRINT COLUMN 35,"Totales-->",
COLUMN 50,debito USING "###,###,##&.&&",
COLUMN 65,debito USING "###,###,##&.&&",negrillas_off
SKIP 2 LINE
PRINT COLUMN 1, detalle1
SKIP 30 LINE
PRINT COLUMN 10,"--------------",
COLUMN 35,"--------------",
COLUMN 60,"--------------"
PRINT COLUMN 10,"PREPARADO POR",
COLUMN 35," REVISADO POR ",
COLUMN 60,"AUTORIZADO POR"
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
END FUNCTION
}
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
LET fecha = today USING "dd/mm/yy"
LET hora = time
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
DISPLAY p_companias.nombre CLIPPED AT 4,lj
ATTRIBUTE (REVERSE,blue)
DISPLAY fecha AT 4,70 ATTRIBUTE (blue)
DISPLAY "Sistema de Contabilidad General" AT 5,24
DISPLAY hora AT 6,73 ATTRIBUTE(blue)
CALL fgl_drawbox(5,79,3,1)
CALL fgl_drawbox(1,79,22,1)
END FUNCTION