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

375 lines
12 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CTPRRP019
OBJETIVO : REPORTE DE MOVIMIENTOS Materia Prima
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Junio, 6, 1994.
-------------------------------------------------------------------------------
}
GLOBALS "ctprgb000.4gl"
FUNCTION ctprrp019()
DEFINE idx_b SMALLINT
DEFINE salir CHAR(1)
DEFINE transacc RECORD
cod_n LIKE iptb00004.cod_n,
cod_grupo LIKE iptb00004.cod_grupo,
cod_tipo LIKE iptb00004.cod_tipo,
cod_sec LIKE iptb00004.cod_sec,
cantidad_2 LIKE iptb00006.cantidad_2,
cod_mov LIKE iptb00006.cod_mov,
descrip_mov LIKE iptb00005.descrip_mov,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
balance_in DECIMAL(12,2),
codigo CHAR(7)
END RECORD
DEFINE codigo_ant RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT
END RECORD
DEFINE balances RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
balance LIKE iptb00006.cantidad_2
END RECORD
DEFINE select_balan CHAR(1000)
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ctfmrp019 FROM "ctfmrp019"
DISPLAY FORM ctfmrp019
CALL pantalla()
DISPLAY "ctprrp019" AT 4,3
DISPLAY "Movimientos Productos Terminados" AT 6,27
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
IF int_flag != 0 THEN
let numero_msg = 2
CALL msg(numero_msg)
SLEEP 1
LET int_flag = 0
RETURN
END IF
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
CLEAR SCREEN
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)
SLEEP 1
LET int_flag = false
RETURN
END IF
LET select_balan =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,sum(a.cantidad_2) ",
"FROM intb00006 a ",
"WHERE a.status_t is null AND a.fecha < ? AND ",
criterio clipped," GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 "
DISPLAY "<< Estoy Buscando Balances Iniciales >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_balan FROM select_balan
DECLARE material_balan SCROLL CURSOR FOR busca_balan
OPEN material_balan USING datos_cons.fech_in
DISPLAY " "
AT 19,14
let selec = "SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, ",
"sum(a.cantidad_2),",
"a.cod_mov,c.descrip_mov,b.descrip_esp,b.unidad_med ",
"FROM intb00006 a,intb00005 c,intb00001 b ",
"WHERE a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND ",
" c.cod_mov = a.cod_mov AND a.status_t is null AND ",
" a.fecha between ? AND ? AND ",criterio clipped,
"GROUP BY 1,2,3,4,6,7,8,9 ORDER BY 1,2,3,4"
DISPLAY "<< Estoy Buscando los Movimientos >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING datos_cons.fech_in,datos_cons.fech_fi
DISPLAY " "
AT 19,14
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
IF int_flag != 0 THEN
let numero_msg = 2
CALL msg(numero_msg)
SLEEP 1
LET int_flag = 0
RETURN
END IF
START REPORT reporte4 TO PIPE "lp -dcentral" #"C:\\archivo"
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
LET idx_b = 1
WHILE STATUS != NOTFOUND
FETCH accion INTO transacc.*
IF codigo_ant.cod_n != transacc.cod_n OR
codigo_ant.cod_grupo != transacc.cod_grupo OR
codigo_ant.cod_tipo != transacc.cod_tipo OR
codigo_ant.cod_Sec != transacc.cod_sec THEN
LET cambio = "S"
END IF
IF status = notfound THEN
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT WHILE
END IF
IF cambio = "S" THEN
LET salir = "N"
WHILE salir != "S"
FETCH ABSOLUTE idx_b material_balan INTO balances.*
IF status = notfound THEN
LET idx_b = 1
LET salir = "S"
EXIT WHILE
END IF
LET idx_b = idx_b + 1
LET transacc.balance_in = 0
IF balances.cod_n = transacc.cod_n AND
balances.cod_grupo = transacc.cod_grupo AND
balances.cod_tipo = transacc.cod_tipo AND
balances.cod_sec = transacc.cod_sec THEN
LET codigo_ant.cod_n = transacc.cod_n
LET codigo_ant.cod_grupo = transacc.cod_grupo
LET codigo_ant.cod_tipo = transacc.cod_tipo
LET codigo_ant.cod_Sec = transacc.cod_sec
LET transacc.balance_in = balances.balance
LET salir = "S"
LET cambio = "N"
END IF
IF salir = "S" THEN
LET idx_b = 1
LET salir = "S"
EXIT WHILE
END IF
END WHILE
END IF
LET transacc.codigo = transacc.cod_n using "&",
transacc.cod_grupo using "&",
transacc.cod_tipo using "&&",
transacc.cod_sec using "&&&"
OUTPUT TO REPORT reporte4(transacc.*)
END WHILE
FINISH REPORT reporte4
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte4(x)
DEFINE x RECORD
cod_n LIKE iptb00004.cod_n,
cod_grupo LIKE iptb00004.cod_grupo,
cod_tipo LIKE iptb00004.cod_tipo,
cod_sec LIKE iptb00004.cod_sec,
cantidad_2 LIKE iptb00006.cantidad_2,
cod_mov LIKE iptb00006.cod_mov,
descrip_mov LIKE iptb00005.descrip_mov,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
balance_in DECIMAL(12,2),
codigo CHAR(7)
END RECORD,
cantidad DECIMAL(12,2)
DEFINE t_valor,valor,costo DECIMAL(12,4)
DEFINE nombre CHAR(8),
und CHAR(3) ,
doble_on CHAR(3),
doble_off CHAR(3),
negrillas_on CHAR(6),
negrillas_off CHAR(6),
comprimido_on CHAR(2),
comprimido_off,doce CHAR(3),
primera, busca,imprime CHAR(1),
hora CHAR(5),
balan_ini,canti,balance_rp DECIMAL(12,2),
entrada,salida DECIMAL(12,2)
OUTPUT
LEFT MARGIN 0
ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.codigo,x.cod_mov
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 comprimido_on = ASCII 31
LET comprimido_off = ASCII 029
LET doce = ASCII 030
LET hora = time
LET l = (126 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT comprimido_on
PRINT COLUMN 1, "ctprrp019",
COLUMN l, p_compania.nombre CLIPPED,
COLUMN 121, "Pag. ",
COLUMN 128, pageno using "<&&"
LET l = (126 - LENGTH("Sistema de Costos"))/2
PRINT COLUMN 1,
COLUMN l, "Sistema de Costos",
COLUMN 123, today using "dd/mm/yy"
LET l = (126 - LENGTH("Movimientos Materia Prima"))/2
PRINT COLUMN l, "Movimientos Materia Prima",
COLUMN 126, hora
SKIP 2 LINES
PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yy",
COLUMN 18, "Hasta ",datos_cons.fech_fi using "dd/mm/yy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------------------------------"
PRINT COLUMN 116, "Costo",
COLUMN 139, "Costo"
PRINT COLUMN 1, "Mat. Prima",
COLUMN 21, "Descripcion",
COLUMN 58, "Entradas",
COLUMN 76, "Salidas",
COLUMN 103, "Balance",
COLUMN 116, "Standard",
COLUMN 139, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------------------------------"
BEFORE GROUP OF x.cod_grupo
LET primera = "S"
BEFORE GROUP OF x.cod_tipo
LET primera = "S"
BEFORE GROUP OF x.cod_sec
LET primera = "S"
BEFORE GROUP OF x.codigo
LET t_valor = 0
LET valor = 0
SELECT a.costo_st INTO costo
FROM intb00013 a
WHERE a.cod_n = x.cod_n and a.cod_grupo = x.cod_grupo and
a.cod_tipo = x.cod_tipo and a.cod_sec = x.cod_sec and
a.mes_fin = 12 and a.ano = year(datos_cons.fech_fi)
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 21, x.descrip_esp,
COLUMN 51, x.unidad_med;
ON EVERY ROW
IF primera = "S" THEN
SKIP 1 LINE
IF x.balance_in is null THEN
LET x.balance_in = 0
END IF
PRINT COLUMN 85, "Inicial ---> ",
x.balance_in using "---,---,---.##",
COLUMN 114, costo using "##,###.####",
COLUMN 128, x.balance_in*costo using "--,---,---.####"
LET canti = x.balance_in
LET primera = "N"
SKIP 1 LINE
END IF
LET canti = canti + x.cantidad_2
IF x.cantidad_2 > 0 THEN
LET salida = null
LET entrada = x.cantidad_2
ELSE
LET salida = x.cantidad_2
LET entrada = null
END IF
IF entrada IS NOT NULL AND entrada > 0 THEN
LET valor = entrada * costo
ELSE
LET valor = salida * costo
END IF
LET t_valor = t_valor + valor
PRINT COLUMN 1, COLUMN 17, "(",x.cod_mov using "&&",")",x.descrip_mov,
COLUMN 58, entrada USING "---,---,---.##",
COLUMN 74, salida USING "---,---,---.##",
COLUMN 99, canti using "--,---,---.##",
COLUMN 114, costo using "##,###.####",
COLUMN 128, valor using "--,---,---.####"
AFTER GROUP OF x.codigo
PRINT COLUMN 128, " "
PRINT COLUMN 85, "Final ---> ",
canti using "---,---,---.##",
COLUMN 114, costo using "##,###.####",
COLUMN 127, canti * costo using "---,---,---.----"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"------------------------------------------"
ON LAST ROW
PRINT comprimido_off
END REPORT