Files
MBS/PROYECTOS/indir/inprrp044.4gl
T

234 lines
7.4 KiB
Plaintext

{
-------------------------------------------------------------------------------
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 "<<Buscando Informacion... Espere por Favor.>>" 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