191 lines
5.7 KiB
Plaintext
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
|
|
|