Files
MBS/PROYECTO/ctdir/ctprrp013.4gl
T

350 lines
11 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CTPRRP013
OBJETIVO : Consumo de Materiales
PROGRAMADOR : Tadeo A. Ferreras
FECHA REALIZACION : Octubre 01, 1992
-------------------------------------------------------------------------------
}
GLOBALS "ctprgb000.4gl"
FUNCTION ctprrp013()
DEFINE salir CHAR(1)
DEFINE select_ac,select_ant,select_p CHAR(1000)
DEFINE p_mes,idx_ac,ano,idx_a,idx_c SMALLINT
DEFINE ano_act,c_ano CHAR(4)
DEFINE fecha_2 CHAR(8)
DEFINE fech_in,fech_fi DATE
DEFINE fecha_ini_per CHAR(8)
DEFINE acumulado_a RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE intb00006.cantidad_2
END RECORD
DEFINE acumulado_ac RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
consumo LIKE intb00006.cantidad_2
END RECORD
DEFINE costos RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_Tipo SMALLINT,
cod_Sec SMALLINT,
costo LIKE intb00013.costo_st
END RECORD
DEFINE acumulado RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE intb00005.descrip_mov,
consumo DECIMAL(10,2),
costo LIKE intb00013.costo_st
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ctfmrp013 FROM "ctfmrp013"
DISPLAY FORM ctfmrp013
CALL pantalla()
DISPLAY "ctprrp013" AT 4,3
DISPLAY "Consumo de Materiales" AT 6,29
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
INPUT BY NAME ano_act,p_mes
AFTER FIELD p_mes
IF p_mes IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
SELECT fecha_inicial,fecha_corte INTO fech_in,fech_fi
FROM prdtable
WHERE mes = p_mes and ano = ano_act
AFTER FIELD ano_act
IF ano_act IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ano_act
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT criterio ON c.cod_n,c.cod_grupo,c.cod_tipo,c.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
LET select_ac =
"SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,SUM(c.cantidad_2) ",
"FROM intb00006 c ",
"WHERE ", criterio clipped," and c.fecha between ? and ? and ",
" c.status_t is NULL AND c.cod_mov = 36 ",
" GROUP BY 1,2,3,4 ORDER BY 1,2,3,4"
DISPLAY "<< Estoy Buscando Acumulado Del Periodo Dado >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_ant FROM select_ac
DECLARE actual SCROLL CURSOR FOR busca_ant
OPEN actual USING fech_in,fech_fi
DISPLAY " "
AT 19,14
LET select_p =
"SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,MAX(c.costo_st) ",
"FROM intb00013 c ",
"WHERE c.status_t is NULL AND c.ano = ? AND c.mes_fin[1,2] = '12' AND ",
criterio CLIPPED," GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 "
DISPLAY "<< Estoy Buscando Los Costos de Los Materiales >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_p FROM select_p
DECLARE periodo SCROLL CURSOR FOR busca_p
OPEN periodo using ano_act
DISPLAY " "
AT 19,14
LET SELEC =
"SELECT c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.descrip_esp,c.unidad_med ",
"FROM intb00001 c, intb00002 b ",
"WHERE c.cod_n = b.cod_n AND c.cod_grupo = b.cod_grupo AND ",
" c.cod_tipo = b.cod_tipo AND c.cod_sec = b.cod_sec AND ",
" c.status_t is null AND ",criterio CLIPPED," ORDER BY 1,2,3,4"
DISPLAY "<< Estoy Buscando Materiales >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca FROM selec
DECLARE accion SCROLL CURSOR FOR busca
OPEN accion
DISPLAY " "
AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
START REPORT opera TO PIPE "lp -dcentral"
#START REPORT opera TO "rpct13"
LET idx_c = 1
LET idx_a = 1
LET idx_ac = 1
WHILE status != notfound
FETCH actual INTO acumulado_ac.*
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
DISPLAY acumulado_ac.cod_n using "&" at 20,1
DISPLAY acumulado_ac.cod_grupo using "&" at 20,3
DISPLAY acumulado_ac.cod_tipo using "&&" at 20,5
DISPLAY acumulado_ac.cod_sec using "&&&" at 20,8
LET acumulado.consumo = acumulado_ac.consumo
# Buscando Los Costos de Los Materiales
LET salir = "N"
WHILE salir != "S"
FETCH ABSOLUTE idx_a periodo INTO costos.*
IF status = notfound THEN
LET idx_a = 1
LET salir = "S"
EXIT WHILE
END IF
DISPLAY "Estoy en busqueda de costos " AT 22,15
LET idx_a = idx_a + 1
IF costos.cod_n = acumulado_ac.cod_n and
costos.cod_grupo = acumulado_ac.cod_grupo and
costos.cod_tipo = acumulado_ac.cod_tipo and
costos.cod_Sec = acumulado_ac.cod_Sec THEN
DISPLAY acumulado_ac.cod_n using "&" at 21,1
DISPLAY acumulado_ac.cod_grupo using "&" at 21,3
DISPLAY acumulado_ac.cod_tipo using "&&" at 21,5
DISPLAY acumulado_ac.cod_sec using "&&&" at 21,8
LET salir = "S"
LET acumulado.costo = costos.costo
ELSE
LET acumulado.costo = 0
END IF
IF salir = "S" THEN
LET idx_a = 1
EXIT WHILE
END IF
END WHILE
# Busqueda del Material Con su descripcion y unidad de medida
LET salir = "N"
WHILE salir != "S"
FETCH ABSOLUTE idx_c accion INTO acumulado.*
IF status = notfound THEN
LET idx_c = 1
LET salir = "S"
EXIT WHILE
END IF
DISPLAY "Estoy en busqueda de descripcion" AT 22,15
LET idx_c = idx_c + 1
IF acumulado_ac.cod_n = acumulado.cod_n and
acumulado_ac.cod_grupo = acumulado.cod_grupo and
acumulado_ac.cod_tipo = acumulado.cod_tipo and
acumulado_ac.cod_Sec = acumulado.cod_Sec THEN
# acumulado_ac.cod_mov = acumulado.cod_mov THEN
DISPLAY acumulado_ac.cod_n using "&" at 22,1
DISPLAY acumulado_ac.cod_grupo using "&" at 22,3
DISPLAY acumulado_ac.cod_tipo using "&&" at 22,5
DISPLAY acumulado_ac.cod_sec using "&&&" at 22,8
LET salir = "S"
END IF
IF salir = "S" THEN
LET idx_c = 1
EXIT WHILE
END IF
END WHILE
OUTPUT TO REPORT opera(acumulado.*,fech_in,fech_fi)
END WHILE
FINISH REPORT opera
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT opera(x,fecha_in,fecha_fi)
DEFINE x RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE intb00005.descrip_mov,
consumo DECIMAL(10,2),
costo LIKE intb00013.costo_st
END RECORD
DEFINE fecha_in,fecha_fi DATE
DEFINE c_ano1 char(4)
DEFINE doble_on CHAR(3)
DEFINE doble_off CHAR(3)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(3)
DEFINE doce CHAR(3)
DEFINE normal CHAR(3)
DEFINE hora CHAR(5)
DEFINE total_p,total_m DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
LET doble_on = ASCII 001
LET doble_off = ASCII 002
LET negrillas_on = ASCII 027, ASCII 098
LET negrillas_off = ASCII 027, ASCII 099
LET comp_on = ASCII 31
LET comp_off = ASCII 029
LET doce = ASCII 030
LET normal = ASCII 029
LET hora = time
LET l = (100 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT doce
PRINT COLUMN 1, "ctprrp013",
COLUMN l, p_compania.nombre CLIPPED,
COLUMN 93, "Pag. ",
COLUMN 98, pageno using "###"
LET l = (100 - LENGTH("Sistema de Inventario de Costos"))/2
PRINT COLUMN l, "Sistema de Inventario de Costos",
COLUMN 93, today using "dd/mm/yy"
LET l = (100 - LENGTH("Consumo Materia Prima"))/2
PRINT COLUMN l, "Consumo Materia Prima",
COLUMN 96, hora
SKIP 1 LINES
PRINT COLUMN 2, "Desde ",fecha_in using "dd/mm/yy",
COLUMN 21, "Hasta ", fecha_fi using "dd/mm/yy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 66, "Costo"
PRINT COLUMN 4, "Movimiento",
COLUMN 51, "Cantidad",
COLUMN 66, "Standard",
COLUMN 86, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
ON EVERY ROW
IF x.consumo IS NOT NULL THEN
IF total_m IS NULL THEN
LET total_m = 0
END IF
LET total_p = x.costo * x.consumo
LET total_m = total_m + total_p
PRINT COLUMN 1, x.cod_n USING "&","-",
COLUMN 3, x.cod_grupo USING "&","-",
COLUMN 5, x.cod_tipo USING "&&","-",
COLUMN 8, x.cod_sec USING "&&&",
COLUMN 14, x.descrip_esp,
COLUMN 35, x.unidad_med,
COLUMN 40, x.consumo USING "##,###,###.##",
COLUMN 57, x.costo USING "#,###,###.####",
COLUMN 79, total_p USING "##,###,###.##"
END IF
ON LAST ROW
PRINT COLUMN 79, "-------------"
PRINT COLUMN 63, "Total ---->",
COLUMN 79, total_m USING "##,###,###.##"
END REPORT