Files
MBS/PROYECTO/cgdir/cgprmt018.4gl
T

191 lines
5.7 KiB
Plaintext

{
-----------------------------------------------------------------------------
PROGRAMA : CGPRMT018
OBJETIVO : Copia costos a partir de un ano a otro
PROGRAMADOR : Ing. Juan Soto
FECHA REALIZACION: Febrero 28, 2007
------------------------------------------------------------------------------
}
GLOBALS
"cgprgb000.4gl"
DEFINE cuenta_ant CHAR(8)
#DEFINE p_nivel SMALLINT
DEFINE desc_nivel CHAR(15)
DEFINE modifica CHAR(1),
balance DECIMAL(12,2)
MAIN
DEFER INTERRUPT
CALL cgprmt018()
END MAIN
FUNCTION cgprmt018()
DEFINE mat_prima,terminados,repuestos,semi CHAR(2),
ano_orig,ano_Act SMALLINT,
intb13 RECORD LIKE intb00013.*,
iptb4 RECORD LIKE iptb00004.*,
irtb13 RECORD LIKE irtb00013.*,
cttb34 RECORD LIKE cttb00034.*,
cttb26 RECORD LIKE cttb00026.*,
fecha_i DATE
OPTIONS
FORM LINE 8,
ERROR LINE 24,
COMMENT LINE 23
CALL pantalla()
OPEN FORM cgfmmt018 FROM "cgfmmt018"
DISPLAY FORM cgfmmt018
DISPLAY "cgprmt018" AT 4,3
DISPLAY "Actualizacion Costos" AT 6,30
INPUT ano_orig,ano_act,mat_prima,terminados,repuestos,semi FROM
ano_orig,ano_act,mat_prima,terminados,repuestos,semi
BEFORE INPUT
LET ano_orig = YEAR(TODAY) - 1
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF ano_orig IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ano_orig
END IF
IF ano_act IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ano_act
END IF
#display mat_prima," ",terminados," ",repuestos," ",semi
IF mat_prima = "1" THEN
DECLARE busca_mt CURSOR FOR
SELECT a.* FROM intb00013 a
WHERE a.ano = ano_orig AND a.status_t is null
FOREACH busca_mt INTO intb13.*
LET intb13.ano = ano_act
SELECT UNIQUE a.ano FROM intb00013 a
WHERE a.ano = intb13.ano AND
a.cod_n = intb13.cod_n AND
a.cod_grupo = intb13.cod_grupo AND
a.cod_tipo = intb13.cod_tipo AND
a.cod_sec = intb13.cod_sec AND
a.status_t IS NULL
IF STATUS != NOTFOUND THEN
CONTINUE FOREACH
END IF
INSERT INTO intb00013 VALUES (intb13.*)
END FOREACH
UPDATE intb00013 SET us_mod = user,
fech_mod = current
WHERE ano = ano_act
END IF
IF terminados = "1" THEN
DECLARE busca_pt CURSOR FOR
SELECT a.* FROM iptb00004 a
WHERE a.ano = ano_orig AND a.status_t is null
FOREACH busca_pt INTO iptb4.*
LET iptb4.ano = ano_act
SELECT UNIQUE a.ano FROM iptb00004 a
WHERE a.ano = iptb4.ano AND
a.cod_n = iptb4.cod_n AND
a.cod_grupo = iptb4.cod_grupo AND
a.cod_tipo = iptb4.cod_tipo AND
a.cod_sec = iptb4.cod_sec AND
a.status_t IS NULL
IF STATUS != NOTFOUND THEN
CONTINUE FOREACH
END IF
INSERT INTO iptb00004 VALUES (iptb4.*)
END FOREACH
UPDATE iptb00004 SET us_mod = user,
fech_mod = current
WHERE ano = ano_act
END IF
IF repuestos = "1" THEN
DECLARE busca_rp CURSOR FOR
SELECT a.* FROM irtb00013 a
WHERE a.ano = ano_orig AND a.status_t is null
FOREACH busca_rp INTO irtb13.*
LET irtb13.ano = ano_act
SELECT UNIQUE a.ano FROM irtb00013 a
WHERE a.ano = irtb13.ano AND
a.cod_n = irtb13.cod_n AND
a.cod_grupo = irtb13.cod_grupo AND
a.cod_tipo = irtb13.cod_tipo AND
a.cod_sec = irtb13.cod_sec AND
a.status_t IS NULL
IF STATUS != NOTFOUND THEN
CONTINUE FOREACH
END IF
INSERT INTO irtb00013 VALUES (irtb13.*)
END FOREACH
UPDATE irtb00013 SET us_mod = user,
fech_mod = current
WHERE ano = ano_act
END IF
IF semi = "1" THEN
# BUSCA FECHA
SELECT MIN(a.fecha_inicio) INTO fecha_i FROM prdtable a
WHERE a.ano = ano_act
IF fecha_i IS NULL THEN
LET numero_msg = 395
CALL msg(numero_msg)
EXIT INPUT
END IF
DECLARE busca_semi CURSOR FOR
SELECT a.* FROM cttb00034 a
WHERE a.fecha <= fecha_i AND a.status_t IS NULL
FOREACH busca_semi INTO cttb34.*
LET cttb34.fecha = fecha_i
SELECT UNIQUE a.fecha FROM cttb00034 a
WHERE a.fecha = fecha_i AND
a.cod_prod = cttb34.cod_prod
IF STATUS != NOTFOUND THEN
CONTINUE FOREACH
END IF
INSERT INTO cttb00034 VALUES (cttb34.*)
END FOREACH
UPDATE cttb00034 SET us_mod = user,
fech_mod = current
WHERE fecha = fecha_i
# OTROS COSTOS DE LOS SEMI-ELABORADOS
DECLARE busca_semi1 CURSOR FOR
SELECT a.* FROM cttb00026 a
WHERE ano = ano_orig AND a.status_t IS NULL
FOREACH busca_semi1 INTO cttb26.*
LET cttb26.ano = ano_act
SELECT a.cod_prod FROM cttb00026 a
WHERE a.ano = cttb26.ano AND
a.cod_prod = cttb26.cod_prod AND a.status_t IS NULL
IF STATUS != NOTFOUND THEN
CONTINUE FOREACH
END IF
INSERT INTO cttb00026 VALUES (cttb26.*)
END FOREACH
UPDATE cttb00026 SET fech_mod = current,
us_mod = user
WHERE ano = ano_act
END IF
EXIT INPUT
END INPUT
END FUNCTION