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

387 lines
14 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : COPRRP019
OBJETIVO : Validacion del Documento de la Orden de Compra
PROGRAMADOR : Ing. J. F. Soto.
FECHA REALIZACION : Mayo, 1997.
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL coprrp019()
END MAIN
FUNCTION coprrp019()
DEFINE select_fech,select_movi,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 orden_compra RECORD
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,
term_sp LIKE cotb00014.term_sp,
descrip_term LIKE cotb00024.descrip_term,
via LIKE cotb00014.via,
enviada LIKE cotb00014.enviada,
fech_enviada LIKE cotb00014.fech_enviada,
pago LIKE cotb00014.pago,
fech_pago LIKE cotb00014.fech_pago,
cierre LIKE cotb00014.cierre,
cod_pt LIKE cotb00014.cod_pt,
nom_pt LIKE cotb00019.nom_pt,
c_flete LIKE cotb00014.c_flete,
otros_g LIKE cotb00014.otros_g
END RECORD
DEFINE detalle_oc RECORD
num_req LIKE cotb00025.num_req,
cod_n LIKE cotb00015.cod_n,
cod_grupo LIKE cotb00015.cod_grupo,
cod_tipo LIKE cotb00015.cod_tipo,
cod_sec LIKE cotb00015.cod_sec,
descrip LIKE intb00001.descrip_esp,
descrip1 LIKE intb00001.descrip_esp,
unidad LIKE intb00001.unidad_med,
cantidad_oc LIKE cotb00015.cantidad,
precio LIKE cotb00015.precio,
codigo CHAR(13)
END RECORD
WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM cofmrp019 FROM "cofmrp019"
DISPLAY FORM cofmrp019
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
CONSTRUCT criterio ON a.fech_oc,a.tipo,a.num_oc,a.cierre
FROM fech_oc,tipo,num_oc,cierre
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Busca Las Ordenes de Compras
DISPLAY "<< Estoy Buscando Las Ordenes de Compras >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
LET select_ent ="SELECT a.num_oc,a.tipo,a.fech_oc,a.cod_sp,a.cod_sp_sec,",
" b.nom_sp,a.term_sp,c.descrip_term,a.via,a.enviada,",
" a.fech_enviada,a.pago,a.fech_pago,a.cierre, ",
" a.cod_pt,d.nom_pt,a.c_flete,a.otros_g ",
"FROM cotb00014 a,OUTER (cotb00001 b,cotb00024 c, ",
" cotb00019 d) ",
"WHERE ",criterio clipped," AND a.cod_sp = b.cod_sp AND ",
" a.cod_sp_sec=b.cod_sp_sec AND a.term_sp=c.term_sp AND ",
" a.cod_pt = d.cod_pt and a.status_t is null "
PREPARE busca_entrega FROM select_ent
DECLARE ent_curs SCROLL CURSOR FOR busca_entrega
OPEN ent_curs
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT documento TO XML HANDLER handler
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
WHILE status != notfound
FETCH ent_curs INTO orden_compra.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
FINISH REPORT documento
RETURN
END IF
IF orden_compra.tipo = "01" THEN
LET selec1 =
"SELECT a.num_req,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.descrip_ing,c.unidad_med,a.cantidad,a.precio ",
"FROM cotb00015 a, OUTER intb00001 c ",
"WHERE a.num_oc = '",orden_compra.num_oc," '"," and a.tipo = '",
orden_compra.tipo," '"," and a.cod_n = c.cod_n and ",
" a.cod_grupo = c.cod_grupo and a.cod_tipo = c.cod_tipo and ",
" a.cod_sec = c.cod_sec "
END IF
IF orden_compra.tipo = "02" THEN
LET selec1 =
"SELECT a.num_req,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.descrip_ing,c.unidad_med,a.cantidad,a.precio ",
"FROM cotb00015 a,OUTER iptb00002 c ",
"WHERE a.num_oc = '",orden_compra.num_oc," '"," and a.tipo = '",
orden_compra.tipo," '"," and a.cod_n = c.cod_n and ",
" a.cod_grupo = c.cod_grupo and a.cod_tipo = c.cod_tipo and ",
" a.cod_sec = c.cod_sec "
END IF
IF orden_compra.tipo = "03" THEN
LET selec1 =
"SELECT a.num_req,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.descrip_ing,c.unidad_med,a.cantidad,a.precio ",
"FROM cotb00015 a,OUTER irtb00002 c ",
"WHERE a.num_oc = '",orden_compra.num_oc," '"," and a.tipo = '",
orden_compra.tipo," '"," and a.cod_n = c.cod_n and ",
" a.cod_grupo = c.cod_grupo and a.cod_tipo = c.cod_tipo and ",
" a.cod_sec = c.cod_sec "
END IF
PREPARE comando2 FROM selec1
DECLARE entregas CURSOR FOR comando2
FOREACH entregas INTO detalle_oc.*
IF status = notfound THEN
EXIT FOREACH
END IF
LET detalle_oc.codigo =
detalle_oc.cod_n using "&",detalle_oc.cod_grupo using "&",
detalle_oc.cod_tipo using "&&",detalle_oc.cod_sec using "&&&",
detalle_oc.num_req using "&&&&&&"
OUTPUT TO REPORT documento(orden_compra.*,detalle_oc.*)
END FOREACH
END WHILE
FINISH REPORT documento
END FUNCTION
REPORT documento(x,z)
DEFINE x RECORD
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,
term_sp LIKE cotb00014.term_sp,
descrip_term CHAR(20),
via LIKE cotb00014.via,
enviada LIKE cotb00014.enviada,
fech_enviada LIKE cotb00014.fech_enviada,
pago LIKE cotb00014.pago,
fech_pago LIKE cotb00014.fech_pago,
cierre LIKE cotb00014.cierre,
cod_pt LIKE cotb00014.cod_pt,
nom_pt LIKE cotb00019.nom_pt,
c_flete LIKE cotb00014.c_flete,
otros_g LIKE cotb00014.otros_g
END RECORD
DEFINE z RECORD
num_req LIKE cotb00025.num_req,
cod_n LIKE cotb00015.cod_n,
cod_grupo LIKE cotb00015.cod_grupo,
cod_tipo LIKE cotb00015.cod_tipo,
cod_sec LIKE cotb00015.cod_sec,
descrip LIKE intb00001.descrip_esp,
descrip1 LIKE intb00001.descrip_esp,
unidad LIKE intb00001.unidad_med,
cantidad_oc LIKE cotb00015.cantidad,
precio LIKE cotb00015.precio,
codigo CHAR(13)
END RECORD,
nombre_m CHAR(20),
descripcion CHAR(65)
DEFINE bandera,bandera1 CHAR(1)
DEFINE descrip CHAR(10)
DEFINE moneda CHAR(2)
DEFINE varia CHAR(12)
DEFINE cantidad DECIMAL(12,3)
DEFINE P2 DECIMAL(12,3)
DEFINE monto2,monto DECIMAL(14,3)
DEFINE b_oc,b_suplidor,imp CHAR(1)
DEFINE l SMALLINT
DEFINE doc_ant INTEGER
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE desc_v CHAR(20)
DEFINE desc_c,desc_p,desc_env CHAR(2)
DEFINE valor DECIMAL(12,2)
DEFINE p_base DECIMAL(10,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.tipo,x.num_oc,z.codigo
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 imp = "T"
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
LET l = (162 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT normal,doce,negrillas_on
PRINT COLUMN 1, "coprrp019",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 155, "Pag. ",pageno using "###"
PRINT COLUMN 72, "Sistema de Compras",
COLUMN 155, today using "dd/mm/yyyy"
PRINT COLUMN 66,"Validacion Ordenes de Compras",
COLUMN 158, hora
PRINT negrillas_on
PRINT COLUMN 1, "__________________________________________________",
"__________________________________________________",
"__________________________________________________",
"_____________"
PRINT COLUMN 2, "Orden de"
PRINT COLUMN 2, "Compra",
COLUMN 11, "Tipo",
COLUMN 18, "Fecha",
COLUMN 27, "Suplidor...",
COLUMN 73, "Terminos de Ventas",
COLUMN 96, "V I A",
COLUMN 118, "Enviada",
COLUMN 127, "Fecha",
COLUMN 137, "Pagada",
COLUMN 145, "Fecha",
COLUMN 155, "Cerrada"
PRINT COLUMN 1, "__________________________________________________",
"__________________________________________________",
"__________________________________________________",
"_____________"
PRINT negrillas_off
BEFORE GROUP OF x.num_oc
CASE
WHEN x.via = "01"
LET desc_v = "Maritima"
EXIT CASE
WHEN x.via = "02"
LET desc_v = "Aerea"
EXIT CASE
WHEN x.via = "03"
LET desc_v = "Terrestre"
EXIT CASE
END CASE
CASE
WHEN x.enviada = "S"
LET desc_env = "SI"
EXIT CASE
WHEN x.enviada = "N"
LET desc_env = "NO"
EXIT CASE
END CASE
CASE
WHEN x.pago = "S"
LET desc_p = "SI"
EXIT CASE
WHEN x.pago = "N"
LET desc_p = "NO"
EXIT CASE
END CASE
CASE
WHEN x.cierre = "S"
LET desc_c = "SI"
EXIT CASE
WHEN x.cierre = "N"
LET desc_c = "NO"
EXIT CASE
END CASE
PRINT COLUMN 2, x.num_oc using "&&&&&&",
COLUMN 12, x.tipo,
COLUMN 17, x.fech_oc using "dd/mm/yyyy",
COLUMN 27, x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&",
" ",x.nom_sp,
COLUMN 68, "(",x.term_sp using "&&",")"," ",x.descrip_term,
COLUMN 93, "(",x.via,")"," ",desc_v,
COLUMN 119, desc_env,
COLUMN 127, x.fech_enviada using "dd/mm/yyyy",
COLUMN 138, desc_p,
COLUMN 145, x.fech_pago using "dd/mm/yyyy",
COLUMN 158, desc_c
PRINT COLUMN 2,negrillas_on,
"Puerto: ",negrillas_off,
" ","(",x.cod_pt clipped,")"," ",x.nom_pt,
COLUMN 48, negrillas_on,"Flete: ",negrillas_off,
x.c_flete using "##,###,###.##",
COLUMN 80, negrillas_on,"Gastos: ",negrillas_off,
x.otros_g using "##,###,###.##"
PRINT negrillas_on
PRINT COLUMN 2, "NO. REQ.",
COLUMN 13, "BIEN / SERVICIO",
COLUMN 80, "CANTIDAD",
COLUMN 94, "PRECIO",
COLUMN 109, "VALOR",negrillas_off
BEFORE GROUP OF z.codigo
LET bandera = "S"
SKIP 1 LINE
ON EVERY ROW
LET valor = z.cantidad_oc * z.precio
LET descripcion = z.descrip CLIPPED
PRINT COLUMN 2, z.num_req using "&&&&&&",
COLUMN 10, z.cod_n USING "&","-",
COLUMN 12, z.cod_grupo USING "&","-",
COLUMN 14, z.cod_tipo USING "&&","-",
COLUMN 17, z.cod_sec USING "&&&",
COLUMN 22, descripcion[1,45],
COLUMN 69, z.unidad,
COLUMN 75, z.cantidad_oc using "##,###,###.##",
COLUMN 90, z.precio using "##,###.###",
COLUMN 101, valor using "##,###,###.##";
AFTER GROUP OF x.num_oc
PRINT COLUMN 1, "__________________________________________________",
"__________________________________________________",
"__________________________________________________",
"_____________"
END REPORT