240 lines
7.6 KiB
Plaintext
240 lines
7.6 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : PRPRMT007
|
|
OBJETIVO : Matenimiento de Status de Orden de Produccion
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA REALIZACION : MARZO 09, 1998
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "prprgb000.4gl"
|
|
DEFINE p_nombre CHAR(40),
|
|
tipo_p CHAR(1),
|
|
pnumreq INT
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
CALL prprmt007()
|
|
END MAIN
|
|
|
|
FUNCTION prprmt007()
|
|
# WHENEVER ERROR CONTINUE
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 9,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
#CALL pantalla()
|
|
OPEN FORM ctfmmt007 FROM "prfmmt007"
|
|
DISPLAY FORM ctfmmt007
|
|
|
|
|
|
MENU "OPCIONES"
|
|
COMMAND "Adicionar"
|
|
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
|
|
LET INT_FLAG = FALSE
|
|
LET tipo_p = "A"
|
|
INITIALIZE prtb09.* TO NULL
|
|
INITIALIZE prtb07.* TO NULL
|
|
LET p_nombre = NULL
|
|
CLEAR FORM
|
|
CALL prpcad007()
|
|
COMMAND "Consulta/Modificar"
|
|
LET INT_FLAG = FALSE
|
|
LET tipo_p = "C"
|
|
INITIALIZE prtb09.* TO NULL
|
|
INITIALIZE prtb07.* TO NULL
|
|
LET p_nombre = NULL
|
|
CLEAR FORM
|
|
CALL prpcmf007()
|
|
COMMAND "Salir" "Retorna Menu Anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION prpcad007()
|
|
## Captura los datos que va a contener el registro
|
|
|
|
LET INT_FLAG = FALSE
|
|
|
|
IF tipo_p = "A" THEN
|
|
INPUT prtb08.num_oc,prtb08.fecha_oc,prtb08.fecha_entrega FROM
|
|
num_oc,fecha,fecha_fabricacion
|
|
AFTER FIELD num_oc
|
|
IF prtb08.num_oc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
|
|
SELECT UNIQUE a.tipo_cliente,a.sec_cliente,a.fecha_oc
|
|
INTO prtb07.tipo_cliente,prtb07.sec_cliente,prtb07.fecha
|
|
FROM prtb00012 a WHERE a.num_oc = prtb08.num_oc
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
|
|
SELECT UNIQUE a.nombre INTO p_nombre FROM vetb00004 a
|
|
WHERE a.tipo_cliente = prtb07.tipo_cliente AND
|
|
a.sec_cliente = prtb07.sec_cliente
|
|
|
|
DISPLAY BY NAME prtb07.tipo_cliente,prtb07.sec_cliente,p_nombre
|
|
|
|
|
|
AFTER FIELD fecha_oc
|
|
IF prtb08.fecha_oc IS NULL OR prtb08.fecha_oc < prtb07.fecha THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_oc
|
|
END IF
|
|
|
|
END INPUT
|
|
END IF
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
INPUT prtb08.cerrada,prtb08.fecha_entrega
|
|
WITHOUT DEFAULTS FROM
|
|
pendiente,fecha_fabricacion
|
|
AFTER FIELD pendiente
|
|
IF prtb08.cerrada IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD pendiente
|
|
END IF
|
|
END INPUT
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
IF tipo_p = "A" THEN
|
|
UPDATE prtb00012 SET fecha_entrega = prtb08.fecha_entrega,
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @num_oc = prtb08.num_oc
|
|
AND @tipo_cliente = prtb07.tipo_cliente
|
|
AND @sec_cliente = prtb07.sec_cliente
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END FUNCTION
|
|
|
|
FUNCTION prpcmf007()
|
|
## Aqui se prepara para la captura del criterio de seleccion
|
|
|
|
CONSTRUCT BY NAME criterio ON a.num_oc #-> vg,a.fecha
|
|
|
|
IF INT_FLAG THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET SELEC = " SELECT UNIQUE a.num_oc,CONVERT(CHAR(10),a.fecha_oc,103),CONVERT(CHAR(10),a.fecha_entrega,103),a.cerrada,a.ubicacion FROM prtb00012 a ",
|
|
" WHERE ",criterio CLIPPED #-> vg , " AND a.status_t IS NULL"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.fecha_entrega,
|
|
prtb08.cerrada,prtb08.ubicacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
CALL despl_st()
|
|
MENU "OPCIONES "
|
|
COMMAND "Siguiente" "Presenta en pantalla el sigte. registro encontrado"
|
|
FETCH NEXT datos INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.fecha_entrega,
|
|
prtb08.cerrada,prtb08.ubicacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL despl_st()
|
|
|
|
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.fecha_entrega,
|
|
prtb08.cerrada,prtb08.ubicacion
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
CALL despl_st()
|
|
|
|
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.fecha_entrega,
|
|
prtb08.cerrada,prtb08.ubicacion
|
|
CALL despl_st()
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO prtb08.num_oc,prtb08.fecha_oc,prtb08.fecha_entrega,
|
|
prtb08.cerrada,prtb08.ubicacion
|
|
CALL despl_st()
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
COMMAND "Escoger" "Modifica el registro presentado en pantalla"
|
|
LET tipo_p = "M"
|
|
CALL prpcad007()
|
|
|
|
|
|
UPDATE prtb00012 SET cerrada = prtb08.cerrada,fecha_cierre = Today,
|
|
us_mod= SUSER_SNAME(),fech_mod = GETDATE()
|
|
WHERE num_oc = prtb08.num_oc
|
|
|
|
|
|
|
|
IF prtb08.cerrada ='S' THEN
|
|
# ACTUALIZACION REQUISICION DESPACHO
|
|
|
|
DECLARE brequisi CURSOR FOR
|
|
SELECT a.num_req FROM cctb00026 a
|
|
WHERE a.num_oc = prtb08.num_oc AND status_t IS NULL
|
|
|
|
FOREACH brequisi INTO pnumreq
|
|
UPDATE cctb00025 set estado_despacho = 'DESPACHADA',
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE num_req = pnumreq
|
|
END FOREACH
|
|
|
|
END IF
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
COMMAND "Retornar" "Retorna al menu anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION despl_st()
|
|
|
|
SELECT UNIQUE a.tipo_cliente,a.sec_cliente,b.nombre ,a.cerrada,CONVERT(char(10),a.fecha_entrega,103)
|
|
INTO prtb07.tipo_cliente,prtb07.sec_cliente,p_nombre,prtb09.pendiente,prtb09.fecha_fabricacion
|
|
FROM prtb00012 a,vetb00004 b
|
|
WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND
|
|
a.num_oc = prtb08.num_oc
|
|
|
|
LET prtb08.fecha_entrega = prtb09.fecha_fabricacion
|
|
LET prtb08.cerrada = prtb09.pendiente
|
|
|
|
DISPLAY BY NAME prtb09.*,prtb07.tipo_cliente,prtb07.sec_cliente,p_nombre,prtb09.pendiente,
|
|
prtb09.fecha_fabricacion
|
|
END FUNCTION
|