{ ------------------------------------------------------------------------------- PROGRAMA : COPRRP004 OBJETIVO : Cronologico de Ordenes PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Octubre 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "coprgb000.4gl" DEFINE estado STRING 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 coprrp004() END MAIN FUNCTION coprrp004() DEFINE ordena RECORD tipo LIKE cotb00014.tipo, num_oc LIKE cotb00014.num_oc, fech_oc LIKE cotb00014.fech_oc, nom_sp CHAR(30), c_flete LIKE cotb00014.c_flete, otros_g LIKE cotb00014.otros_g, fob DECIMAL(12,3), monto DECIMAL(12,2) END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM cofmrp004 FROM "cofmrp004" DISPLAY FORM cofmrp004 LET tipo_papel = 1 CALL msgrp000(tipo_papel) LABEL vuelve: INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi,estado AFTER FIELD fech_in IF datos_cons.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF AFTER FIELD fech_fi IF datos_cons.fech_fi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_fi END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF EXIT INPUT END INPUT CONSTRUCT criterio ON a.tipo,a.cod_sp,a.cod_sp_sec FROM tipo,cod_sp,cod_sp_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF estado = 'TO' THEN LET SELEC = "SELECT UNIQUE a.tipo,a.num_oc,a.fech_oc,b.nom_sp,a.c_flete,a.otros_g, ", " SUM(d.cantidad * d.precio) ", "FROM cotb00014 a,cotb00001 b,cotb00015 d ", "WHERE b.cod_sp = a.cod_sp AND b.cod_sp_sec = a.cod_sp_sec AND ", " a.num_oc = d.num_oc AND a.tipo = d.tipo AND ", " a.fech_oc between ? AND ? AND a.status_t is null AND ",criterio clipped, "GROUP BY a.tipo,a.num_oc,a.fech_oc,b.nom_sp,a.c_flete,a.otros_g ORDER BY a.tipo,a.num_oc" ELSE LET SELEC = "SELECT UNIQUE a.tipo,a.num_oc,a.fech_oc,b.nom_sp,a.c_flete,a.otros_g, ", " SUM(d.cantidad * d.precio) ", "FROM cotb00014 a,cotb00001 b,cotb00015 d ", "WHERE b.cod_sp = a.cod_sp AND b.cod_sp_sec = a.cod_sp_sec AND ", " a.num_oc = d.num_oc AND a.tipo = d.tipo AND ", " a.fech_oc between ? AND ? AND a.status_t is null AND ",criterio clipped, " AND a.num_oc IN (SELECT x.num_oc FROM cgtb00017 x WHERE x.status_t IS NULL) ", "GROUP BY a.tipo,a.num_oc,a.fech_oc,b.nom_sp,a.c_flete,a.otros_g ORDER BY a.tipo,a.num_oc" END IF DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) # CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, # doble_on,doble_off,comp_on,comp_off, # doce,normal,archivo,copia CALL seleccionarsalida() RETURNING salida CALL configureoutput(salida) RETURNING HANDLER START REPORT cronologico TO XML HANDLER handler PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca USING datos_cons.fech_in,datos_cons.fech_fi WHILE STATUS != NOTFOUND FETCH busca INTO ordena.* IF STATUS = NOTFOUND THEN 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 cronologico(ordena.*) END WHILE FINISH REPORT cronologico # RUN imprime END FUNCTION REPORT cronologico(x) DEFINE x RECORD tipo LIKE cotb00014.tipo, num_oc LIKE cotb00014.num_oc, fech_oc LIKE cotb00014.fech_oc, nom_sp CHAR(30), c_flete LIKE cotb00014.c_flete, otros_g LIKE cotb00014.otros_g, fob DECIMAL(12,3), monto DECIMAL(12,2) END RECORD DEFINE b_oc,bandera,bandera1 CHAR(1) DEFINE descrip CHAR(11) DEFINE total_tipo SMALLINT DEFINE monto,total_monto DECIMAL(12,3) 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) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 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 bandera1 = "N" LET hora = time LET l = (80 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 3, ASCII 27, ASCII 80,comp_off, negrillas_on PRINT COLUMN 1, "coprrp004", COLUMN l, p_companias.nombre CLIPPED, COLUMN 73, "Pag. ",pageno using "###" PRINT COLUMN 31, "Sistema de Compras", COLUMN 73, today using "dd/mm/yyyy" PRINT COLUMN 29, "Cronologico de Ordenes", COLUMN 76, hora PRINT COLUMN 29, estado SKIP 1 LINES PRINT COLUMN 2, "Desde ",datos_cons.fech_in using "dd/mm/yyyy", " Hasta ", datos_cons.fech_fi using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------" PRINT COLUMN 14, "Orden de", COLUMN 24, "Fecha" PRINT COLUMN 2, "Tipo", COLUMN 15, "Compra", COLUMN 24, "Orden", COLUMN 34, "Suplidor", COLUMN 75, "Monto" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------" SKIP 1 LINE BEFORE GROUP OF x.tipo IF x.tipo = "01" THEN PRINT COLUMN 2, negrillas_on,"MATERIA PRIMA",negrillas_off END IF IF x.tipo = "02" THEN PRINT COLUMN 2, negrillas_on,"PRODUCTO TERMINADO",negrillas_off END IF ON EVERY ROW LET monto = x.fob + x.c_flete + x.otros_g LET total_monto = monto + total_monto PRINT COLUMN 15, x.num_oc using "<<<<<<", COLUMN 24, x.fech_oc using "dd/mm/yyyy"; PRINT COLUMN 34, x.nom_sp CLIPPED, COLUMN 66, monto USING "###,###,###.##" AFTER GROUP OF x.tipo SKIP 1 LINES LET monto = x.fob + x.c_flete + x.otros_g PRINT COLUMN 50, "Total Monto = ", COLUMN 66, GROUP SUM(x.fob+x.c_flete+x.otros_g) USING "###,###,###.##" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------" SKIP 1 LINES ON LAST ROW PRINT COLUMN 2, "Total Registros Impresos = ", count(*) USING "<<<<" PRINT COLUMN 2, ASCII 27, ASCII 80 PRINT COLUMN 1, "==================================================", "=============================" END REPORT