303 lines
9.7 KiB
Plaintext
303 lines
9.7 KiB
Plaintext
|
|
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : EDPRRP027
|
|
OBJETIVO : Listar las Entrada de Diario Mat. Prima Recibida
|
|
PROGRAMADOR : Juan F. Soto
|
|
FECHA REALIZACION : Mayo 20, 1994.
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"lqprgb000.4gl"
|
|
DEFINE fecha1, fecha2 DATE
|
|
DEFINE detalla CHAR(30)
|
|
DEFINE entra CHAR(14),
|
|
p_fecha CHAR(10)
|
|
DEFINE afecta CHAR(1)
|
|
DEFINE entra1 CHAR(5),
|
|
idz,i INT,
|
|
t_costst,t_variacion DEC(12,2)
|
|
|
|
DEFINE diario1 RECORD
|
|
cuenta_no LIKE cgtb00001.cuenta_no,
|
|
debito DECIMAL(18,2)
|
|
END RECORD
|
|
|
|
FUNCTION entrada027_e()
|
|
DEFINE longitud SMALLINT
|
|
|
|
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
|
|
r_filename2 STRING -- filename of Report Design Document including .4rp extension
|
|
--r_output STRING, -- output format option
|
|
-- preview INTEGER
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
##### Abriendo y desplegando el formulario de captura de datos
|
|
|
|
OPEN FORM entrada27 FROM "lqfmfu001"
|
|
DISPLAY FORM entrada27
|
|
DISPLAY "entrada027" AT 4,3
|
|
DISPLAY "Entrada de Diario Mat. Importada Rec." AT 6,21
|
|
|
|
###### Aceptando los valores para el rango de fecha
|
|
|
|
INPUT BY NAME entra,fecha1,fecha2,afecta,detalla
|
|
|
|
AFTER FIELD entra
|
|
LET longitud = LENGTH(entra)
|
|
IF longitud != 14 THEN
|
|
LET numero_msg = 77
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD entra
|
|
END IF
|
|
SELECT unique a.ref FROM cgtb00004 a WHERE a.ref=entra AND a.status_t IS NULL
|
|
|
|
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,5] = entra1 AND a.status_t IS NULL
|
|
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
|
|
LET existe = "S"
|
|
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
|
|
|
|
LET p_fechas = fecha2 using "ddmmyy"
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha2
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
ERROR "(2) OPERACION CANCELADA"
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
SELECT * INTO p_companias.* FROM companias a
|
|
END INPUT
|
|
##### Creando la facilidad para cancelar proceso con SUPR
|
|
|
|
LET idx = idx - 1
|
|
|
|
LET idz = 1
|
|
LET r_filename2 ="lqprrp004e.4rp"
|
|
# Busca la informacion requerida
|
|
|
|
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
|
|
ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
|
|
# CALL configureoutput("SVG") RETURNING handler
|
|
# START REPORT entrada64 TO XML HANDLER handler
|
|
|
|
|
|
|
|
IF idx = 1 THEN
|
|
IF fgl_report_loadCurrentSettings(r_filename2) THEN
|
|
CALL seleccionarsalida() RETURNING r_output
|
|
--LET preview=1
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
--CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
|
|
END IF
|
|
LET idx = 2
|
|
|
|
START REPORT entrada64_e TO XML HANDLER HANDLER
|
|
END IF
|
|
|
|
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
##### Loop para enviar informacion al reporte
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT '1151' as cuenta,SUM(c.cantidad_oc*b.costo_st)
|
|
FROM intb00013 b,cgtb00018 c,cgtb00017 d
|
|
WHERE b.status_t IS NULL and b.cod_n = b.cod_n and
|
|
b.cod_grupo = b.cod_grupo and b.cod_tipo = b.cod_tipo and
|
|
b.cod_sec = b.cod_sec and c.num_oc = d.num_oc and
|
|
d.fecha BETWEEN fecha1 AND fecha2 AND d.status_t IS NULL AND
|
|
c.status_t IS NULL
|
|
|
|
OPEN buscar
|
|
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
|
|
LET diario1.debito = t_costst
|
|
OUTPUT TO REPORT entrada64_e(diario1.*,fecha1,fecha2,detalla,entra)
|
|
END WHILE
|
|
FINISH REPORT entrada64
|
|
RUN imprime
|
|
CLEAR SCREEN
|
|
END FUNCTION
|
|
|
|
#### Funcion para dar salida ordenada a la informacion requerida de
|
|
#### una entrada de diario de nominas local
|
|
|
|
REPORT entrada64_e(x,fecha1,fecha2,detalle1,entrada)
|
|
|
|
DEFINE x RECORD
|
|
cuenta_no LIKE cgtb00001.cuenta_no,
|
|
debito DECIMAL(10,2)
|
|
END RECORD
|
|
|
|
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
|
|
DEFINE debito,credito DECIMAL(12,2)
|
|
DEFINE detalle1 CHAR(30)
|
|
DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda
|
|
|
|
DEFINE hora CHAR(5)
|
|
DEFINE cuenta CHAR(30)
|
|
DEFINE entrada, hoy CHAR(14),
|
|
nombre_cta LIKE cgtb00001.descripcion
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
|
|
LET hora = TIME
|
|
LET hoy = today using "dd/mm/yy"
|
|
|
|
IF debito is null THEN
|
|
LET debito = 0
|
|
END IF
|
|
|
|
|
|
ON EVERY ROW
|
|
SELECT a.descripcion INTO nombre_cta
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = x.cuenta_no
|
|
|
|
PRINTX x.cuenta_no, nombre_cta, x.debito,p_companias.nombre
|
|
|
|
LET debito = debito + x.debito
|
|
|
|
IF afecta = "S" THEN
|
|
INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,x.cuenta_no,null,null,null,null,
|
|
detalle1,null,null,x.debito,0,null,SUSER_SNAME(),GETDATE(),
|
|
null,null)
|
|
|
|
END IF
|
|
|
|
ON LAST ROW
|
|
SELECT a.descripcion INTO nombre_cta
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = "1152"
|
|
IF credito is null THEN
|
|
LET credito = 0
|
|
END IF
|
|
###### Acumulando totales por columna
|
|
LET cuenta = "1152 ",nombre_cta
|
|
PRINTX cuenta, t_variacion
|
|
|
|
IF t_variacion > 0 THEN
|
|
|
|
--PRINTX t_variacion
|
|
|
|
LET debito = debito + t_variacion
|
|
IF afecta = "S" THEN
|
|
INSERT INTO cgtb00004
|
|
VALUES (fecha2,1,entrada,"1152",null,null,null,null,detalle1,
|
|
null,null,t_variacion,0,null,SUSER_SNAME(),GETDATE(),null,null)
|
|
END IF
|
|
ELSE
|
|
--PRINTX t_variacion
|
|
|
|
LET t_variacion = t_variacion * -1
|
|
LET credito = credito + t_variacion
|
|
|
|
IF afecta = "S" THEN
|
|
INSERT INTO cgtb00004
|
|
VALUES (fecha2,1,entrada,"1152",null,null,null,null,detalle1,
|
|
null,null,0,t_variacion,null,SUSER_SNAME(),GETDATE(),null,null)
|
|
END IF
|
|
END IF
|
|
|
|
# Impresion detalle de la entrada con ordenes de compras
|
|
|
|
--LET entrada27[i].cuenta_no
|
|
--LET entrada27[i].cod_aux
|
|
--LET entrada27[i].cod_sec
|
|
--LET entrada27[i].num_doc
|
|
--LET entrada27[i].valor
|
|
|
|
FOR i = 1 TO idx
|
|
IF entrada27[i].cod_aux is not null THEN
|
|
|
|
IF entrada27[i].valor < 0 THEN
|
|
LET entrada27[i].valor = entrada27[i].valor * -1
|
|
END IF
|
|
|
|
{PRINTX entrada27[i].cuenta_no, entrada27[i].cod_aux,
|
|
entrada27[i].cod_sec, entrada27[i].num_doc,
|
|
entrada27[i].valor}
|
|
|
|
IF entrada27[i].valor is not null THEN
|
|
LET credito = credito + entrada27[i].valor
|
|
END IF
|
|
END IF
|
|
|
|
PRINTX entrada27[i].cuenta_no, entrada27[i].cod_aux,
|
|
entrada27[i].cod_sec, entrada27[i].num_doc,
|
|
entrada27[i].valor
|
|
|
|
IF afecta = "S" THEN
|
|
INSERT INTO cgtb00004
|
|
VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,null,
|
|
entrada27[i].num_doc,entrada27[i].cod_aux,
|
|
entrada27[i].cod_sec,detalle1,null,null,0,
|
|
entrada27[i].valor,null, SUSER_SNAME(),GETDATE(),null,null)
|
|
END IF
|
|
END FOR
|
|
|
|
###### Imprime total DEBITO y total CREDITO
|
|
|
|
--PRINT COLUMN 35,"Totales-->",
|
|
PRINTX debito, credito
|
|
|
|
LET debito = 0
|
|
LET credito = 0
|
|
|
|
PRINTX detalle1
|
|
END REPORT
|