Files
MBS/PROYECTO/codir/coprrp005.4gl
T

265 lines
8.8 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRRP005
SISTEMA : Sistema de Compras
OBJETIVO : Listar los materiales con su fecha de llegada a puerto
y entrada a planta.
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Julio 28, 1993
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
DEFINE prima DECIMAL(10,2) ### Varible que equivale a la prima de otra moneda
DEFINE mov CHAR(1)
DEFINE idx_1, idx_2, idx_3 SMALLINT ## Variables usadas para formar arreglos
DEFINE fecha1,fecha2 DATE ## Varible usada para busqueda por fecha de corte
DEFINE salir, salir1, salir3, tipo_venta CHAR(1) ## Bandera para control loop
DEFINE selec5, selec6 CHAR(1500) ## Variables para almacenar busquedas
####### Variables para desplegar resultados por pantalla ante de la impresion
DEFINE tot_gen1 RECORD
totald DECIMAL(10,2),
totalc DECIMAL(10,2),
totalg DECIMAL(10,2)
END RECORD
##### Registro que almacena la infoprmacion a imprimir ####
DEFINE movtos RECORD
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
num_oc INTEGER,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
fech_emb DATE,
cantidad_r DECIMAL(12,2)
END RECORD
FUNCTION coprrp005()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
####### Abriendo y desplegando formulario de captura de datos
OPEN FORM cofmrp005 FROM "cofmrp005"
DISPLAY FORM cofmrp005
CALL pantalla()
DISPLAY "coprrp005" AT 4,3 ATTRIBUTE(YELLOW)
DISPLAY "Fecha de Arribo de Material Al Puerto" AT 6,21
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
##### Aceptando la fecha de corte para busqueda de informacion
INPUT BY NAME fecha1,
fecha2
AFTER FIELD fecha1
IF fecha1 is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
BEFORE FIELD fecha2
LET fecha2 = today
AFTER FIELD fecha2
IF fecha2 is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 51
CALL msg( numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
###### Creando facilidad para cancelar operacion mediante la tecla DELETE
###### o SUPR
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Busca los documentos que esten en el rango de fechas especificado
LET selec5 =
"SELECT a.cod_sp,a.cod_sp_sec,a.num_oc,b.cod_n,b.cod_grupo,b.cod_tipo, ",
" b.cod_sec,b.fech_emb + c.dia_llegada,(b.cantidad - b.cantidad_r) ",
"FROM cotb00014 a,cotb00025 b,intb00002 c ",
"WHERE a.num_oc = b.num_oc AND b.cod_n = c.cod_n AND ",
" b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND ",
" b.cod_sec=c.cod_sec AND (b.fech_emb+c.dia_llegada) BETWEEN ? AND ? AND ",
" b.status_t is null AND (b.cantidad - b.cantidad_r) > 0 AND ",
" a.cod_sp != 23 ORDER BY 8"
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
PREPARE movi FROM selec5
DECLARE movtos_cli CURSOR FOR movi
OPEN movtos_cli USING fecha1,fecha2
###### Envia la informacion al printer
START REPORT compras TO "C:\\archivo"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
###### Comienza el loop para enviar informacion al reporte
LET salir = "N"
WHILE salir != "S"
FETCH movtos_cli INTO movtos.*
IF status = NOTFOUND THEN
LET salir = "S"
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
OUTPUT TO REPORT compras(movtos.*,fecha1,fecha2)
END WHILE
FINISH REPORT compras
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
####### Funcion para dar salida a la informacion
REPORT compras(x,fecha3,fecha4)
DEFINE x RECORD
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
num_oc INTEGER,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
fech_emb DATE,
cantidad_r DECIMAL(12,2)
END RECORD
DEFINE fecha3,fecha4 DATE
DEFINE descrip,p_descrip CHAR(30)
DEFINE unidad,p_zona,p_numero CHAR(10),
balance DECIMAL(12,2)
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 comp CHAR(3)
DEFINE hora CHAR(5)
DEFINE tipo CHAR(2)
DEFINE imp_cli CHAR(1)
DEFINE credito, debito, tcredito, tdebito, tbalance,
limite, b_balance, v1_30, v31_45, v46_60, vm_60,p_valor DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
###### Diseno de la salida de la informacion
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
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 doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
LET l = (127 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, comp_on,negrillas_on
PRINT COLUMN 1, "coprrp005",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 120, "Pag. ",pageno using "###"
PRINT COLUMN 54, "Sistema de Compras",
COLUMN 120, today using "dd/mm/yy"
PRINT COLUMN 44, "Fecha de Arribo de Material al Puerto",
COLUMN 123, hora
PRINT COLUMN 50, "Del ",fecha3 USING "dd/mm/yy",
" Al ",fecha4 using "dd/mm/yy"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"----------------------------"
PRINT COLUMN 1,"Suplidor ",
COLUMN 46,"Orden",
COLUMN 55,"Material",
COLUMN 107,"Arribo",
COLUMN 121,"Cantidad"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"----------------------------"
PRINT negrillas_off
ON EVERY ROW
#### Seleciona los datos generales de identificacion del suplidor
SELECT b.nom_sp INTO p_descrip
FROM cotb00001 b
WHERE x.cod_sp = b.cod_sp AND x.cod_sp_sec = b.cod_sp_sec
#### Seleciona los datos generales de identificacion del material
SELECT a.descrip_esp,a.unidad_med INTO descrip,unidad
FROM intb00001 a
WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo
AND a.cod_tipo = x.cod_tipo AND
a.cod_sec = x.cod_sec
PRINT COLUMN 1, x.cod_sp using "&&","-",x.cod_sp_sec
USING "&&&&"," ",p_descrip CLIPPED,
COLUMN 45, x.num_oc USING "######",
COLUMN 55, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
" ",descrip clipped,
COLUMN 100, unidad clipped,
COLUMN 106, x.fech_emb USING "dd/mm/yy",
COLUMN 115, x.cantidad_r USING "###,###,##&.&&"
ON LAST ROW
PRINT COLUMN 1,comp_off,negrillas_off
END REPORT