- Mueve todo el contenido de PROYECTOS/indir y varias funciones compartidas de PROYECTOS/otrodir hacia PROYECTO, siguiendo instruccion de Johnny (PROYECTOS se va a eliminar). - inprmt002: agrega campo Desglose faltante, corrige typo "eLiminar". - inprmt005: agrega formulario y 3 campos faltantes (Consumo, Requiere Autorizacion, Requisiciones), corrige typo "eLiminar". - inprmt013: agrega formulario, titulo, corrige typo "eLiminar". - inprmt046: agrega formulario y varias funciones/dependencias faltantes (cincodmov, clasf_bloque, medidas, defecto, buscaEmp, consultaTransportista, busca_departamento); corrige nombres de campo desalineados con el codigo (depto_a, bodega) y los convierte a ComboBox donde el codigo lo requiere. - Corrige dependencia faltante de FORMULARIOS_IN a la libreria Database (bloqueaba todo el modulo de MATERIA PRIMA).
189 lines
5.3 KiB
Plaintext
189 lines
5.3 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------
|
|
PROGRAMA : INPRMT066
|
|
OBJETIVO : Programa Para Anular en Forma Logica Movimientos de
|
|
Inventario de Materia Prima.
|
|
PROGRAMADOR : Tadeo A. Ferreras F.
|
|
--------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"inprgb000.4gl"
|
|
|
|
DEFINE anular RECORD
|
|
cod_mov SMALLINT,
|
|
num_doc INTEGER,
|
|
bodega SMALLINT,
|
|
fecha CHAR(10),
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT
|
|
END RECORD
|
|
DEFINE descrip_mov CHAR(30)
|
|
DEFINE opc1 CHAR(1)
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
|
|
SELECT * INTO p_companias.* FROM companias
|
|
CALL inprmt066()
|
|
END MAIN
|
|
|
|
FUNCTION inprmt066()
|
|
DEFINE fecha CHAR(8)
|
|
DEFINE hora CHAR(5),
|
|
pnumdoc INT,
|
|
pcodmov SMALLINT,
|
|
cherror STRING
|
|
|
|
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
ERROR LINE 24,
|
|
FORM LINE 4,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23
|
|
|
|
|
|
OPEN WINDOW anular AT 8,4 WITH FORM "infmwd005" ATTRIBUTE (BORDER,FORM LINE
|
|
FIRST + 1,PROMPT LINE LAST)
|
|
|
|
INPUT BY NAME anular.bodega, anular.cod_mov,anular.num_doc
|
|
BEFORE INPUT
|
|
CALL bodegas('1')
|
|
AFTER FIELD cod_mov
|
|
IF anular.cod_mov is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT a.descrip_mov INTO descrip_mov FROM intb00005 a
|
|
WHERE a.cod_mov = anular.cod_mov AND a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip_mov
|
|
|
|
AFTER FIELD num_doc
|
|
IF anular.num_doc is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
SELECT UNIQUE a.num_doc FROM intb00006 a
|
|
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
|
|
a.bodega = anular.bodega AND
|
|
a.status_t IS NULL
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
SELECT CONVERT(CHAR(10),MAX(a.fecha),103),MAX(a.cod_sp),MAX(a.cod_sp_sec)
|
|
INTO anular.fecha,anular.cod_sp,anular.cod_sp_sec
|
|
FROM intb00006 a
|
|
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
|
|
a.bodega = anular.bodega and
|
|
a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL msg(3)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
DISPLAY BY NAME anular.fecha,anular.cod_sp,anular.cod_sp_sec
|
|
|
|
LET p_fechas = anular.fecha
|
|
LET pnumdoc = anular.num_doc
|
|
LET pcodmov = anular.cod_mov
|
|
CALL prd(p_fechas,usuarios) RETURNING bandera
|
|
IF bandera = 1 THEN
|
|
EXIT INPUT
|
|
END IF
|
|
AFTER INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
|
|
EXIT INPUT
|
|
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
ELSE
|
|
|
|
PROMPT "Quiere Proceder Anulacion de Este Dcto. (S/N)? " FOR CHAR opc1
|
|
LET opc1 = upshift(opc1)
|
|
|
|
IF opc1 = "S" THEN
|
|
SELECT a.status_mov INTO status_m FROM intb00005 a
|
|
WHERE a.cod_mov = pcodmov
|
|
|
|
DECLARE busca CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_2 FROM intb00006 a
|
|
WHERE a.num_doc=pnumdoc and a.cod_mov=pcodmov and CONVERT(CHAR(10),a.fecha,103) > "01/08/2009" AND
|
|
a.bodega = anular.bodega
|
|
|
|
LET decide = "N"
|
|
LET idx = 1
|
|
FOREACH busca INTO movi2[idx].cod_n,movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,movi2[idx].cod_sec,
|
|
movi2[idx].cantidad_2
|
|
|
|
IF status_m = "1" THEN
|
|
SELECT SUM(a.cantidad_2) INTO chequea.existe FROM intb00006 a
|
|
WHERE a.cod_n = movi2[idx].cod_n and a.cod_grupo = movi2[idx].cod_grupo and
|
|
a.cod_tipo=movi2[idx].cod_tipo and a.cod_sec = movi2[idx].cod_sec AND
|
|
a.bodega = anular.bodega and
|
|
a.status_t is null
|
|
|
|
LET chequea.existe = chequea.existe - movi2[idx].cantidad_2
|
|
|
|
IF chequea.existe < 0 THEN
|
|
LET cherror = "NO PUEDE ANULAR DOCUMENTO, LA EXISTENCIA SERA NEGATIVA EN EL CODIGO: ",
|
|
movi2[idx].cod_n USING "<<<<","-",movi2[idx].cod_grupo USING "<<<<","-",
|
|
movi2[idx].cod_tipo USING "<<<<","-",movi2[idx].cod_sec USING "<<<<"," Ext. ",chequea.existe USING "--<,--<.##"
|
|
CALL fgl_winmessage("ERROR",cherror,"INFO")
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
UPDATE intb00006 set status_t = "E",
|
|
us_mod = usuarios,
|
|
fech_mod = GETDATE()
|
|
WHERE intb00006.cod_mov = pcodmov AND
|
|
intb00006.num_doc = pnumdoc AND
|
|
intb00006.bodega = anular.bodega
|
|
|
|
UPDATE intb00018 set status_t = "E"
|
|
WHERE intb00018.cod_mov = pcodmov AND
|
|
intb00018.documento = pnumdoc AND
|
|
intb00018.bodega = anular.bodega
|
|
|
|
|
|
#AND
|
|
#CONVERT(CHAR(10),intb00006.fecha,103) > "01/08/2009"
|
|
|
|
UPDATE cotb00038 set status_t = "E",us_mod = SUSER_NAME(),fech_mod = GETDATE()
|
|
WHERE @cod_mov = anular.cod_mov AND @num_doc = anular.num_doc AND
|
|
CONVERT(CHAR(10),fecha,103) > "01/08/2009"
|
|
|
|
CALL fgl_winmessage("INFO","DOCUMENTO ANULADO","INFO")
|
|
END IF
|
|
END IF
|
|
CLOSE WINDOW anular
|
|
END FUNCTION
|