{ ------------------------------------------------------------------------------- PROGRAMA : COPRRP025 OBJETIVO : Compra de Bien y/o Servicios. PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Mayo 1997 ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" DEFINE status_t2,desc_mat CHAR(20) DEFINE status_t1 CHAR(1) DEFINE datos_compra RECORD cod_n INTEGER, cod_grupo INTEGER, cod_tipo INTEGER, cod_sec INTEGER, num_oc INTEGER, 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, codigo CHAR(10) END RECORD DEFINE base1 DECIMAL(12,2) DEFINE descripcion CHAR(30) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave CALL coprrp025() END MAIN FUNCTION coprrp025() DEFINE select_ent CHAR(1000) DEFINE salir CHAR(1) DEFINE cod_n1 SMALLINT 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 LET tipo_papel = 1 CALL msgrp000(tipo_papel) 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 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 END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT BY NAME criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, c.cod_sp,c.cod_sp_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET selec1 = "SELECT COUNT(*) FROM cotb00014 c,cotb00001 b,cotb00015 a ", "WHERE (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 ( ",criterio CLIPPED," )" PREPARE comando1 FROM selec1 DECLARE ent_curs1 CURSOR FOR comando1 OPEN ent_curs1 USING fecha1,fecha2 FETCH ent_curs1 INTO regi LET p_param = "S" LET select_ent = "SELECT UNIQUE 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 (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 ( ",criterio CLIPPED, " ) ORDER BY 1,2,3,4,6,5" DISPLAY "<< Estoy Buscando Las Ordenes de Compras >>" AT 17,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM select_ent DECLARE ent_curs CURSOR FOR comando OPEN ent_curs USING fecha1,fecha2 CALL configureoutput("SVG") RETURNING handler START REPORT documento25 TO XML HANDLER handler DISPLAY " " AT 17,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 17,14 ATTRIBUTE (REVERSE) LET salir = "N" WHILE salir != "S" FETCH ent_curs INTO datos_compra.* IF STATUS = NOTFOUND THEN LET salir = "S" EXIT WHILE END IF LET cod_n1 = datos_compra.cod_n IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET datos_compra.codigo = datos_compra.cod_n USING "&","-", datos_compra.cod_grupo USING "&","-", datos_compra.cod_tipo USING "&&","-", datos_compra.cod_sec USING "&&&" IF datos_compra.cantidad IS NULL THEN LET datos_compra.cantidad = 0 END IF CALL termometro(regi,p_param) LET p_param = "N" IF datos_compra.cantidad > 0 THEN OUTPUT TO REPORT documento25(datos_compra.*,fecha1,fecha2) END IF END WHILE FINISH REPORT documento25 CLEAR SCREEN END FUNCTION REPORT documento25(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, codigo CHAR(10) END RECORD, descrip_f CHAR(65) DEFINE unidad_med CHAR(3) DEFINE fecha,fecha3 DATE DEFINE imp CHAR(1) DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off, doce,normal CHAR(2) DEFINE hora CHAR(5) DEFINE valor,valor1,cantidad1,valor_t DECIMAL(12,2), cantidad_t DECIMAL(14,2) 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 imp = "T" LET l = (133 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on,negrillas_on PRINT COLUMN 2, "coprrp025", COLUMN l, p_companias.nombre CLIPPED, COLUMN 126, "Pag. ",pageno using "###" PRINT COLUMN 47, " Sistema de Compras", COLUMN 126, today using "dd/mm/yyyy" PRINT COLUMN 46, "Compra Bien Y/O Servicio Del ", fecha USING "dd/mm/yyyy", " Al ", fecha3 USING "dd/mm/yyyy", COLUMN 129, hora PRINT negrillas_on PRINT COLUMN 1, "__________________________________________________", "__________________________________________________", "_________________________________" PRINT COLUMN 1, "Orden ", COLUMN 21, "Fecha", COLUMN 41, "Suplidor...", COLUMN 85, "Cantidad ", COLUMN 108, "Precio", COLUMN 128, "Valor" PRINT COLUMN 1, "__________________________________________________", "__________________________________________________", "_________________________________" PRINT negrillas_off BEFORE GROUP OF x.codigo LET descripcion = NULL LET unidad_med = NULL LET status_t1 = NULL IF x.tipo = "01" THEN SELECT UNIQUE b.descrip_esp,b.unidad_med,b.status_t INTO descripcion,unidad_med,status_t1 FROM intb00001 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 END IF IF x.tipo = "02" THEN SELECT UNIQUE b.descrip_esp,b.unidad_med,b.status_t INTO descripcion,unidad_med,status_t1 FROM 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 END IF IF x.tipo = "03" THEN SELECT UNIQUE b.descrip_esp,b.unidad_med,b.status_t INTO descripcion,unidad_med,status_t1 FROM irtb00001 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 END IF LET descrip_f = descripcion CLIPPED LET descrip_f= descrip_f CLIPPED PRINT COLUMN 1, negrillas_on,"Bien o Servicio : ", x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ", descrip_f," ",unidad_med CLIPPED," ", negrillas_off SKIP 1 LINE LET cantidad1 = 0 LET valor1 = 0 ON EVERY ROW LET valor = 0 LET valor = x.cantidad * x.precio IF valor IS NULL THEN LET valor = 0 END IF IF cantidad1 IS NULL THEN LET cantidad1 = 0 END IF IF valor1 IS NULL THEN LET valor1 = 0 END IF IF cantidad_t IS NULL THEN LET cantidad_t = 0 END IF IF valor_t IS NULL THEN LET valor_t = 0 END IF PRINT COLUMN 1, x.tipo USING "&&","-",x.num_oc using "&&&&&&", COLUMN 21, x.fech_oc USING "dd/mm/yyyy", COLUMN 41, x.cod_sp USING "&&","-",x.cod_sp_sec USING "&&&&", " ",x.nom_sp CLIPPED, COLUMN 81, x.cantidad using "###,###,###.##", COLUMN 101, x.precio USING "###,###,###.##", COLUMN 119, valor USING "###,###,###.##" LET valor1 = valor1 + valor LET cantidad1 = cantidad1 + x.cantidad AFTER GROUP OF x.codigo PRINT COLUMN 1,negrillas_on PRINT COLUMN 65, "Total Bien -->", COLUMN 81, cantidad1 using "###,###,###.##", COLUMN 119, valor1 USING "###,###,###.##" PRINT COLUMN 1,negrillas_off ON LAST ROW LET cantidad_t = 0 LET valor_t = 0 END REPORT