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

501 lines
18 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : EDPRRP115
OBJETIVO : Listar las Entrada de Diario Cobros Clientes Locales
Ingresos
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : Julio 28, 1993
-------------------------------------------------------------------------------
}
SCHEMA smarmotech
GLOBALS
###### Variables para busqueda de rango de fecha
DEFINE afecta CHAR(2),
HANDLER om.SaxDocumentHandler,
numero_ent CHAR(2),
nombre_cta,detalle CHAR(100),
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
tipo_Doc VARCHAR(2),
num_doc,aplica_a INT,
fecha DATE,
valor,monto_desc DEC(18,2)
END RECORD,
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,ventas 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),xtipoVentas VARCHAR(50),
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 "smarmotech" 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
BEFORE INPUT
LET ventas = 1
SELECT a.descripcion INTO xtipoventas FROM vetb00061 a
WHERE a.ventas = ventas
DISPLAY BY NAME xtipoventas
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
CALL controlNumericoED(15,fecha1) RETURNING entra
{
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 = 'SI' 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 configureoutput("SVG") RETURNING HANDLER
START REPORT entrada14 TO XML HANDLER handler
# Busca la informacion requerida
DECLARE buscar CURSOR FOR
SELECT a.tipo_Doc,a.num_doc,a.aplica_a,a.fecha_orig,a.valor,a.monto_desc
FROM cctb00001 a,vetb00060 b
WHERE a.status_t IS NULL AND (a.tipo_doc IN ("AV")) AND a.num_doc = a.aplica_a AND
a.tipo_cliente = b.tipo_cliente AND
b.ventas = ventas AND
a.fecha_orig BETWEEN fecha1 AND fecha2
UNION
SELECT a.tipo_Doc,a.num_doc,a.aplica_a,a.fecha_orig,a.valor,a.monto_desc
FROM cctb00001 a,vetb00060 b
WHERE a.status_t IS NULL AND (a.tipo_doc IN ("PG","PC")) AND a.num_doc = a.aplica_a AND
a.tipo_cliente = b.tipo_cliente AND
b.ventas = ventas AND
a.fecha_orig BETWEEN fecha1 AND fecha2
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
OPEN buscar
##### Envia la Informacion al printer de contabilidad
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
##### 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)
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
tipo_Doc VARCHAR(2),
num_doc,aplica_a INT,
fecha DATE,
valor,monto_desc DEC(18,2)
END RECORD
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE debito,credito DECIMAL(12,2),
detalle1 CHAR(100),
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 = "1100"
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, "1100",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 50, debito using "###,###,##&.&&"
IF afecta = "SI" THEN
INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"1100",
detalle1,debito,0,usuarios,GETDATE())
END IF
LET nombre_cta = NULL
SELECT descripcion INTO nombre_cta FROM cgtb00001
WHERE cuenta_no = "1120"
IF nombre_cta IS NULL THEN
LET nombre_cta = "CUENTA SIN DESCRIPCION"
END IF
PRINT COLUMN 2, "1120",
COLUMN 11, "4200",
COLUMN 18, nombre_cta CLIPPED,
COLUMN 65, debito using "###,###,##&.&&"
IF afecta = "SI" THEN
INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,departamento,detalle_1,debito,credito,us_crea,fech_crea)
VALUES(fecha2,1,entrada,"1120",4200,
detalle1,0,debito,usuarios,GETDATE())
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
FUNCTION cventas()
DEFINE kventas SMALLINT, dventas CHAR(30),
pventas ui.combobox
LET pventas = ui.combobox.forname("formonly.ventas")
DECLARE bventas CURSOR FOR
SELECT a.ventas,a.descripcion FROM vetb00061 a
CALL pventas.clear()
FOREACH bventas INTO kventas,dventas
CALL pventas.additem(kventas,dventas)
END FOREACH
CALL pventas.additem(99,"TODAS")
END FUNCTION