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

314 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRRP026
OBJETIVO : Ordenes de Compras Vs Suplidor.
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : Mayo 1997
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
DEFINE desc_mat CHAR(15)
DEFINE cod_n,cod_n1 SMALLINT
DEFINE datos_com RECORD
cod_n LIKE cotb00015.cod_n,
cod_grupo LIKE cotb00015.cod_grupo,
cod_tipo LIKE cotb00015.cod_tipo,
cod_sec LIKE cotb00015.cod_sec,
num_oc LIKE cotb00014.num_oc,
tipo LIKE cotb00014.tipo,
fech_oc LIKE cotb00014.fech_oc,
cod_sp LIKE cotb00001.cod_sp,
cod_sp_sec LIKE cotb00001.cod_sp_sec,
nom_sp LIKE cotb00001.nom_sp,
precio LIKE cotb00015.precio,
cantidad LIKE cotb00015.cantidad,
descripcion CHAR(30),
descrip1 CHAR(30),
unidad_med CHAR(10),
codigo CHAR(10),
suplidor CHAR(6),
orden_no CHAR(8)
END RECORD
FUNCTION coprrp026()
DEFINE select_fech,select_movi,select_ent1,select_ent CHAR(1000)
DEFINE idx_o,idx_e,idx_p,idx_m SMALLINT
DEFINE esta,encontre,salir2,salir1,salir CHAR(1)
DEFINE recibida,pendiente DECIMAL(12,2)
DEFINE descripcion CHAR(30)
DEFINE fecha1,fecha2 DATE
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM cofmrp025 FROM "cofmrp025"
DISPLAY FORM cofmrp025
CALL pantalla()
DISPLAY "coprrp026" AT 4,3
DISPLAY "Orden de Compra Vs Suplidor" AT 6,26
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME fecha1,fecha2,cod_n
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 149
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD cod_n
IF cod_n IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END INPUT
LET cod_n1 = cod_n
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT criterio ON a.cod_grupo,a.cod_tipo,a.cod_sec,c.cod_sp,c.cod_sp_sec
FROM cod_grupo,cod_tipo,cod_sec,cod_sp,cod_sp_sec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET select_ent =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,c.num_oc,c.tipo, ",
" c.fech_oc,c.cod_sp,c.cod_sp_sec,b.nom_sp,a.precio,a.cantidad ",
"FROM cotb00014 c,cotb00001 b,cotb00015 a ",
"WHERE a.cod_n= ? AND c.fech_oc BETWEEN ? AND ? AND c.status_t is null ",
" AND a.num_oc=c.num_oc AND a.tipo=c.tipo AND c.cod_sp=b.cod_sp AND ",
" c.cod_sp_sec = b.cod_sp_sec AND b.status_t IS NULL AND ",
criterio CLIPPED
DISPLAY "<< Estoy Buscando Las Ordenes de Compras >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE comando FROM select_ent
DECLARE ent_curs CURSOR FOR comando
OPEN ent_curs USING cod_n1,fecha1,fecha2
START REPORT documento26 TO "C:\\archivo"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET salir = "N"
WHILE salir != "S"
FETCH ent_curs INTO datos_com.*
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
LET datos_com.suplidor = datos_com.cod_sp USING "&&",
datos_com.cod_sp_sec USING "&&&&"
LET datos_com.orden_no = datos_com.tipo USING "&&",
datos_com.num_oc USING "&&&&&&"
LET datos_com.codigo = datos_com.cod_n USING "&","-",
datos_com.cod_grupo USING "&","-",
datos_com.cod_tipo USING "&&","-",
datos_com.cod_sec USING "&&&"
LET datos_com.descripcion = NULL
LET datos_com.unidad_med = NULL
SELECT b.descrip_esp,b.descrip_ing,b.unidad_med
INTO datos_com.descripcion,datos_com.descrip1,datos_com.unidad_med
FROM intb00001 b
WHERE b.cod_n=datos_com.cod_n AND b.cod_grupo = datos_com.cod_grupo AND
b.cod_tipo=datos_com.cod_tipo AND b.cod_sec = datos_com.cod_sec AND
b.status_t is null
CASE
WHEN datos_com.cod_n = 1
LET desc_mat = " Productos "
EXIT CASE
WHEN datos_com.cod_n = 2
LET desc_mat = " Suministro "
EXIT CASE
END CASE
IF datos_com.cantidad IS NULL THEN
LET datos_com.cantidad = 0
END IF
IF datos_com.cantidad > 0 THEN
OUTPUT TO REPORT documento26(datos_com.*,fecha1,fecha2)
END IF
END WHILE
FINISH REPORT documento26
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT documento26(x,fecha,fecha3)
DEFINE x RECORD
cod_n LIKE cotb00015.cod_n,
cod_grupo LIKE cotb00015.cod_grupo,
cod_tipo LIKE cotb00015.cod_tipo,
cod_sec LIKE cotb00015.cod_sec,
num_oc LIKE cotb00014.num_oc,
tipo LIKE cotb00014.tipo,
fech_oc LIKE cotb00014.fech_oc,
cod_sp LIKE cotb00001.cod_sp,
cod_sp_sec LIKE cotb00001.cod_sp_sec,
nom_sp LIKE cotb00001.nom_sp,
precio LIKE cotb00015.precio,
cantidad LIKE cotb00015.cantidad,
descripcion CHAR(30),
descrip1 CHAR(30),
unidad_med CHAR(10),
codigo CHAR(10),
suplidor CHAR(6),
orden_no CHAR(8)
END RECORD,
descrip_f CHAR(65)
DEFINE fecha,fecha3 DATE
DEFINE imp CHAR(1)
DEFINE negrillas_on,negrillas_off,comp_on,comp_off CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.suplidor,x.orden_no,x.codigo
FORMAT
PAGE HEADER
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 27, ASCII 15
LET comp_off = ASCII 18
LET imp = "T"
LET hora = time
LET l = (140 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT comp_on
PRINT COLUMN 1, "coprrp026",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 133, "Pag. ",pageno using "###"
PRINT COLUMN 38, " Sistema de Compras",
COLUMN 133, today using "dd/mm/yy"
PRINT COLUMN 34, "Ordenes de Compra Vs Suplidor Del ",
fecha USING "dd/mm/yy", " Al ",
fecha3 USING "dd/mm/yy",
COLUMN 136, hora
PRINT COLUMN 53, desc_mat
SKIP 1 LINE
PRINT COLUMN 1, "__________________________________________________",
"__________________________________________________",
"________________________________________"
PRINT COLUMN 1, "Orden ",
COLUMN 21, "Fecha",
COLUMN 31, "Bien y/o Servicio",
COLUMN 105, "Cantidad ",
COLUMN 121, "Precio",
COLUMN 136, "Valor"
PRINT COLUMN 1, "__________________________________________________",
"__________________________________________________",
"________________________________________"
SKIP 1 LINE
BEFORE GROUP OF x.suplidor
PRINT COLUMN 1, "Suplidor : ",x.cod_sp USING "&&","-",
x.cod_sp_sec USING "&&&&"," ",
x.nom_sp CLIPPED
SKIP 1 LINE
BEFORE GROUP OF x.orden_no
PRINT COLUMN 1, x.tipo USING "&&","-",x.num_oc using "&&&&&&",
COLUMN 21, x.fech_oc USING "dd/mm/yy";
ON EVERY ROW
SELECT UNIQUE a.nombre_marca INTO nombre_m
FROM iptb00019 a,iptb00002 b
WHERE b.cod_n = x.cod_n AND
b.cod_grupo = x.cod_grupo AND
b.cod_tipo = x.cod_tipo AND
b.cod_sec = x.cod_sec AND
b.marca = a.marca
LET descrip_f = x.descripcion CLIPPED," ",nombre_m CLIPPED," ",
x.descrip1
LET descrip_f = descrip_f CLIPPED
PRINT COLUMN 31, x.cod_n USING "&","-", x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-", x.cod_sec USING "&&&",
" ", descrip_f[1,45],
COLUMN 89,x.unidad_med,
COLUMN 94, x.cantidad using "###,###,###.##",
COLUMN 109, x.precio USING "###,###,###.##",
COLUMN 124, x.cantidad * x.precio USING "###,###,###.##"
AFTER GROUP OF x.orden_no
SKIP 1 LINE
PRINT COLUMN 60, "Total Orden -->",
COLUMN 127, GROUP SUM(x.cantidad*x.precio) USING "###,###,###.##"
AFTER GROUP OF x.suplidor
SKIP 1 LINE
PRINT COLUMN 60, "Total Suplidor -->",
COLUMN 127, GROUP SUM(x.cantidad*x.precio) USING "###,###,###.##"
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 60, " Total Gral. -->",
COLUMN 127, SUM(x.cantidad*x.precio) USING "###,###,###.##"
PRINT COLUMN 1,comp_off
END REPORT