{ ------------------------------------------------------------------------------- PROGRAMA : INPRRP044 OBJETIVO : Compras Valorizadas Al Costo Real PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Abril 23, 1997 ------------------------------------------------------------------------------- } GLOBALS "inprgb000.4gl" DEFINE p_ordenes RECORD LIKE cttb00013.*, fecha3,fecha1,fecha2 DATE, descripcion CHAR(30), unidad_m CHAR(4), p_mes1,p_ano1 SMALLINT FUNCTION inprrp044() #WHENEVER ERROR CONTINUE DEFINE codigo CHAR(7) OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM infmrp035 FROM "infmrp034" DISPLAY FORM infmrp035 CALL pantalla() DISPLAY "inprrp044" AT 4,3 DISPLAY "Compras Valorizadas Al Costo Real" AT 6,23 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ########### Captura de valores para el criterio de busqueda ############ INPUT BY NAME p_mes1,p_ano1 AFTER FIELD p_mes1 IF p_mes1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes1 END IF AFTER FIELD p_ano1 IF p_ano1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano1 END IF SELECT a.fecha_inicio INTO fecha1 FROM prdtable a WHERE a.mes = 1 AND a.ano = p_ano1 LET fecha1 = fecha1 - 1 SELECT a.fecha_corte INTO fecha2 FROM prdtable a WHERE a.mes = p_mes1 AND a.ano = p_ano1 DISPLAY BY NAME fecha1,fecha2 END INPUT ########### Facilidad para cancelar la variacioncon la tecla DELETE #### IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM cod_n,cod_grupo,cod_tipo,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF # Busqueda del inventario inicial de cada materia prima LET selec1 = " SELECT a.* FROM cttb00013 a WHERE ",criterio CLIPPED," AND ", "a.status_t IS NULL AND ", "a.fecha_lq BETWEEN ? AND ? ", " AND a.cantidad IS NOT NULL ", " ORDER BY cod_n,cod_grupo,cod_tipo,cod_sec" DISPLAY "<>" AT 17,14 ATTRIBUTE(REVERSE,BOLD) LET fecha3 = fecha1 + 1 PREPARE comando4 FROM selec1 DECLARE stand CURSOR FOR comando4 OPEN stand USING fecha3,fecha2 START REPORT reporte_44 TO "C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 17,14 ATTRIBUTE (REVERSE) # Loop inicial de busqueda de las informaciones de la materia prima FOREACH stand INTO p_ordenes.* IF int_flag THEN LET int_flag = FALSE LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF LET codigo = p_ordenes.cod_n USING "&", p_ordenes.cod_grupo USING "&", p_ordenes.cod_tipo USING "&&", p_ordenes.cod_sec USING "&&&" OUTPUT TO REPORT reporte_44(codigo) END FOREACH FINISH REPORT reporte_44 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION # Rutina de Impresion de las informaciones REPORT reporte_44(x_codigo) DEFINE x_codigo CHAR(7), valor DECIMAL(12,4), cantidad DECIMAL(12,2) # Vaiables para la impresion de caracters ASCII DEFINE doble_on,doble_off,comp_on,comp_off,doce,normal CHAR(3), negrillas_on,negrillas_off CHAR(6), hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 FORMAT PAGE HEADER # Validacion de los caracteres ascii 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 doce = ASCII 27, ASCII 80 LET hora = time # Impresion de los encabezados LET lj = (117 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on,negrillas_on PRINT COLUMN 1, "inprrp044", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 110, "Pag. ",pageno using "###" PRINT COLUMN 35, " Sistema de Inventario de Materia Prima", COLUMN 110, today using "dd/mm/yyyy" PRINT COLUMN 35, " Compras Valorizadas Al Costo Real ", COLUMN 113, hora PRINT COLUMN 1,"Periodo: DEL ",fecha1 USING "dd/mm/yyyy", " AL ",fecha2 USING "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------------" PRINT COLUMN 50, "Fecha", COLUMN 70, "Cantidad" PRINT COLUMN 1, "Material", COLUMN 50, "Liquidacion", COLUMN 70, "Liquidada", COLUMN 96, "Costo ", COLUMN 113, "Valor" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "-----------------" PRINT negrillas_off BEFORE GROUP OF x_codigo SELECT a.descrip_esp,a.unidad_med INTO descripcion,unidad_m FROM intb00001 a WHERE a.cod_n = p_ordenes.cod_n AND a.cod_grupo = p_ordenes.cod_grupo AND a.cod_tipo = p_ordenes.cod_tipo AND a.cod_sec = p_ordenes.cod_sec PRINT COLUMN 1, negrillas_on PRINT COLUMN 1, p_ordenes.cod_n USING "&","-", p_ordenes.cod_grupo USING "&","-", p_ordenes.cod_tipo USING "&&", "-",p_ordenes.cod_sec USING "&&&"," ", descripcion," ", unidad_m,negrillas_off ON EVERY ROW PRINT COLUMN 50, p_ordenes.fecha_lq USING "dd/mm/yyyy", COLUMN 64, p_ordenes.cantidad USING "###,###,###.##", COLUMN 88, p_ordenes.costo_lq USING "##,###.####", COLUMN 105, p_ordenes.cantidad * p_ordenes.costo_lq USING "##,###,###.##" # CUANDO SEA FIN DE ANO GENERA LOS VALORES PARA LAS SIGUIENTES CAPAS AFTER GROUP OF x_codigo LET valor = GROUP SUM(p_ordenes.cantidad * p_ordenes.costo_lq) LET cantidad = GROUP SUM(p_ordenes.cantidad) PRINT COLUMN 64, "--------------", COLUMN 88, "-----------", COLUMN 105, "-------------" PRINT COLUMN 64, cantidad USING "###,###,###.##", COLUMN 88, valor / cantidad USING "##,###.####", COLUMN 105, valor USING "##,###,###.##" SKIP 1 LINE END REPORT