261 lines
10 KiB
Plaintext
261 lines
10 KiB
Plaintext
{
|
|
MODULO : cgprmt021
|
|
OBJETIVO : TRANSFERIR COSTOS STANDARES DE UN ANO A OTRO
|
|
FECHA DESARROLLO: 3/6/2016
|
|
DESARROLLADO POR: ING. JUAN SOTO
|
|
|
|
}
|
|
GLOBALS
|
|
DEFINE usuarios,clave VARCHAR(50),
|
|
opt1 VARCHAR(3)
|
|
END GLOBALS
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("CGPRMT021.TXT")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
|
|
CALL cgprmt021()
|
|
END MAIN
|
|
|
|
FUNCTION cgprmt021()
|
|
DEFINE pano,pano_act,progreso,idx SMALLINT,
|
|
cuenta INT,
|
|
opcion VARCHAR(3),
|
|
pcosto RECORD
|
|
ano SMALLINT,
|
|
mes_ini CHAR(2),
|
|
mes_fin CHAR(2),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
material DEC(18,5),
|
|
labor DEC(18,5),
|
|
gastos DEC(18,5),
|
|
ventas SMALLINT
|
|
|
|
END RECORD,
|
|
inventario VARCHAR(2),
|
|
selec STRING
|
|
OPEN WINDOW w1 WITH FORM "cgfmmt021"
|
|
|
|
INPUT BY NAME pano,inventario
|
|
BEFORE INPUT
|
|
LET pano = YEAR(TODAY)-1
|
|
LET cuenta = 0
|
|
LET pano_act = YEAR(TODAY)
|
|
|
|
AFTER FIELD inventario
|
|
IF inventario = "IP" THEN
|
|
SELECT DISTINCT a.ano FROM iptb00004 a WHERE a.ano = pano_act
|
|
IF STATUS <> NOTFOUND THEN
|
|
IF fgl_winquestion("INFO","COSTO EXISTE PARA ESTE ANO, DESEA ACTUALIZAR DE TODAS FORMAS?","NO","NO|YES","QUESTION",0) ="NO" THEN
|
|
EXIT PROGRAM
|
|
END IF
|
|
END IF
|
|
END IF
|
|
IF inventario = "IN" THEN
|
|
SELECT DISTINCT a.ano FROM intb00013 a WHERE a.ano = pano_act
|
|
IF STATUS <> NOTFOUND THEN
|
|
IF fgl_winquestion("INFO","COSTO EXISTE PARA ESTE ANO, DESEA ACTUALIZAR DE TODAS FORMAS?","NO","NO|YES","QUESTION",0) ="NO" THEN
|
|
EXIT PROGRAM
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
IF inventario = "IR" THEN
|
|
SELECT DISTINCT a.ano FROM irtb00013 a WHERE a.ano = pano_act
|
|
IF STATUS <> NOTFOUND THEN
|
|
IF fgl_winquestion("INFO","COSTO EXISTE PARA ESTE ANO, DESEA ACTUALIZAR DE TODAS FORMAS?","NO","NO|YES","QUESTION",0) ="NO" THEN
|
|
EXIT PROGRAM
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
IF inventario = "SM" THEN
|
|
SELECT DISTINCT a.ano FROM cttb00026 a WHERE a.ano = pano_act
|
|
IF STATUS <> NOTFOUND THEN
|
|
IF fgl_winquestion("INFO","COSTO EXISTE PARA ESTE ANO, DESEA ACTUALIZAR DE TODAS FORMAS?","NO","NO|YES","QUESTION",0) ="NO" THEN
|
|
EXIT PROGRAM
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF INT_FLAG THEN
|
|
CALL fgl_Winmessage("INFO","OPERACION ABORTADA","INFO")
|
|
LET INT_FLAG = FALSE
|
|
EXIT INPUT
|
|
END IF
|
|
LET opcion =fgl_winquestion("ACTUALIZAR","ESTA SEGURO DE REALIZAR ESTA OPERACION?","NO","NO|YES","QUESTION",0)
|
|
IF opcion ="YES" THEN
|
|
IF inventario = "IP" THEN
|
|
LET selec =
|
|
"SELECT a.ano,a.mes_ini,a.mes_fin,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.material,a.labor,a.gastos, ",
|
|
" a.ventas ",
|
|
" FROM iptb00004 a,iptb00002 b WHERE a.ano =",pano USING "&&&&",
|
|
" AND 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 a.status_t IS NULL AND b.status_t IS NULL"
|
|
|
|
SELECT COUNT(*) INTO cuenta
|
|
FROM iptb00004 a,iptb00002 b WHERE a.ano =pano
|
|
AND 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 a.status_t IS NULL AND b.status_t IS NULL
|
|
|
|
|
|
END IF
|
|
IF inventario = "IN" THEN
|
|
LET selec =
|
|
"SELECT a.ano,a.mes_ini,a.mes_fin,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.costo_st ",
|
|
" FROM intb00013 a,intb00001 b WHERE a.ano =",pano USING "&&&&",
|
|
" AND 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 a.status_t IS NULL AND b.status_t IS NULL"
|
|
|
|
|
|
SELECT COUNT(*) INTO cuenta
|
|
FROM intb00013 a,intb00001 b WHERE a.ano =pano
|
|
AND 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 a.status_t IS NULL AND b.status_t IS NULL
|
|
|
|
|
|
END IF
|
|
IF inventario = "IR" THEN
|
|
LET selec =
|
|
"SELECT a.ano,a.mes_ini,a.mes_fin,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.costo_st ",
|
|
" FROM irtb00013 a,irtb00002 b WHERE a.ano =",pano USING "&&&&",
|
|
" AND 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 a.status_t IS NULL AND b.status_t IS NULL"
|
|
|
|
SELECT COUNT(*) INTO cuenta
|
|
FROM irtb00013 a,irtb00001 b WHERE a.ano =pano
|
|
AND 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 a.status_t IS NULL AND b.status_t IS NULL
|
|
|
|
END IF
|
|
|
|
IF inventario = "SM" THEN
|
|
LET selec =
|
|
"SELECT a.ano,a.mes_ini,a.mes_fin,a.cod_prod,'0','0','0',a.costo_st ",
|
|
" FROM cttb00026 a,cttb00001 b WHERE a.ano =",pano USING "&&&&",
|
|
" AND a.cod_prod = b.cod_prod ",
|
|
" AND a.status_t IS NULL AND b.status_t IS NULL"
|
|
|
|
SELECT COUNT(*) INTO cuenta
|
|
FROM cttb00026 a,cttb00001 b WHERE a.ano =pano
|
|
AND a.cod_prod = b.cod_prod
|
|
AND a.status_t IS NULL AND b.status_t IS NULL
|
|
|
|
END IF
|
|
|
|
LET progreso = 10
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE costo_productos CURSOR FOR comando
|
|
|
|
|
|
LET idx = 1
|
|
BEGIN WORK
|
|
#IF inventario = "IP" THEN
|
|
# DELETE FROM iptb00004 WHERE ano = pano_act
|
|
#END IF
|
|
#IF inventario = "IN" THEN
|
|
# DELETE FROM intb00013 WHERE ano = pano_act
|
|
#END IF
|
|
#IF inventario = "IR" THEN
|
|
# DELETE FROM irtb00013 WHERE ano = pano_act
|
|
#END IF
|
|
|
|
#IF inventario = "SM" THEN
|
|
# DELETE FROM cttb00026 WHERE ano = pano_act
|
|
#END IF
|
|
|
|
FOREACH costo_productos INTO pcosto.*
|
|
LET pcosto.ano=pano_act
|
|
IF inventario = "IP" THEN
|
|
SELECT DISTINCT a.cod_n FROM iptb00004 a WHERE a.cod_n = pcosto.cod_n AND
|
|
a.cod_grupo = pcosto.cod_grupo AND a.cod_tipo = pcosto.cod_tipo AND a.cod_Sec =pcosto.cod_sec
|
|
AND a.ano =pano_act
|
|
IF STATUS= NOTFOUND THEN
|
|
INSERT INTO iptb00004 (ano,mes_ini,mes_fin,cod_n,cod_grupo,cod_tipo,cod_sec,material,labor,gastos,ventas,
|
|
us_crea,fech_crea)
|
|
VALUES (pcosto.*,usuarios,getdate())
|
|
|
|
LET progreso = (idx/cuenta) * 100
|
|
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
LET idx = idx + 1
|
|
END IF
|
|
END IF
|
|
IF inventario = "IN" THEN
|
|
SELECT DISTINCT a.cod_n FROM intb00013 a WHERE a.cod_n = pcosto.cod_n AND
|
|
a.cod_grupo = pcosto.cod_grupo AND a.cod_tipo = pcosto.cod_tipo AND a.cod_Sec =pcosto.cod_sec
|
|
AND a.ano =pano_act
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
INSERT INTO intb00013 (ano,mes_ini,mes_fin,cod_n,cod_grupo,cod_tipo,cod_sec,costo_st,us_crea,fech_crea)
|
|
VALUES (pcosto.ano,pcosto.mes_ini,pcosto.mes_fin,pcosto.cod_n,pcosto.cod_grupo,pcosto.cod_tipo,pcosto.cod_Sec,
|
|
pcosto.material,usuarios,getdate())
|
|
|
|
LET progreso = (idx/cuenta) * 100
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
LET idx = idx + 1
|
|
END IF
|
|
END IF
|
|
IF inventario = "IR" THEN
|
|
SELECT DISTINCT a.cod_n FROM irtb00013 a WHERE a.cod_n = pcosto.cod_n AND
|
|
a.cod_grupo = pcosto.cod_grupo AND a.cod_tipo = pcosto.cod_tipo AND a.cod_Sec =pcosto.cod_sec
|
|
AND a.ano =pano_act
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
INSERT INTO irtb00013 (ano,mes_ini,mes_fin,cod_n,cod_grupo,cod_tipo,cod_sec,costo_st,us_crea,fech_crea)
|
|
VALUES (pcosto.ano,pcosto.mes_ini,pcosto.mes_fin,pcosto.cod_n,pcosto.cod_grupo,pcosto.cod_tipo,pcosto.cod_Sec,
|
|
pcosto.material,usuarios,getdate())
|
|
|
|
LET progreso = (idx/cuenta) * 100
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
LET idx = idx + 1
|
|
END IF
|
|
END IF
|
|
|
|
IF inventario = "SM" THEN
|
|
SELECT DISTINCT a.cod_prod FROM cttb00026 a WHERE a.cod_prod = pcosto.cod_n
|
|
AND a.ano =pano_act
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
INSERT INTO cttb00026 (ano,mes_ini,mes_fin,cod_prod,costo_st,us_crea,fech_crea)
|
|
VALUES (pcosto.ano,pcosto.mes_ini,pcosto.mes_fin,pcosto.cod_n,pcosto.material,usuarios,getdate())
|
|
|
|
LET progreso = (idx/cuenta) * 100
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
LET idx = idx + 1
|
|
END IF
|
|
END IF
|
|
END FOREACH
|
|
COMMIT WORK
|
|
LET progreso =100
|
|
DISPLAY progreso TO progreso
|
|
CALL ui.Interface.refresh()
|
|
|
|
CALL fgl_winmessage("INFO","ACTUALIZACION EXITOSA","INFO")
|
|
|
|
ELSE
|
|
CALL fgl_Winmessage("ACTUALIZAR","NO SE ACTUALIZARON LOS DATOS","INFO")
|
|
END IF
|
|
EXIT INPUT
|
|
END INPUT
|
|
CLOSE WINDOW w1
|
|
END FUNCTION
|