{ ------------------------------------------------------------------------------- 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 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 coprrp019() END MAIN FUNCTION coprrp019() DEFINE select_fech,select_movi,select_ent CHAR(1000) DEFINE r_filename STRING 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 -- La API de configuracion de reportes (fgl_report_*) no esta -- disponible en este FGL; seleccionarsalida()/configureoutput() -- tampoco estan definidas en este programa. Se escribe el XML -- directo a un archivo en FGLSPOOL en lugar de usar la plantilla -- .4rp con vista previa. LET r_filename = FGL_GETENV("FGLSPOOL"), "/coprrp019_documento.xml" LET handler = om.XmlWriter.createFileWriter(r_filename) 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