Files
MBS/PROYECTO/PRDIR/prprmt006.4gl
T

849 lines
28 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : PRPRMT006
OBJETIVO : Matenimiento Ordenes Produccion
PROGRAMADOR : JUAN F. SOTO
FECHA REALIZACION : MARZO 09, 1998
------------------------------------------------------------------
}
GLOBALS "prprgb000.4gl"
DEFINE nombre LIKE vetb00004.nombre,
descrip_esp_c,descrip_esp LIKE iptb00002.descrip_esp,
unidad LIKE iptb00002.unidad_med,
unidad_c LIKE intb00001.unidad_med,
descrip CHAR(20),
esta,opt4 CHAR(1),
nombre_vend,nombres,apellidos CHAR(40)
DEFINE numero_oc INTEGER
DEFINE datos_mt ARRAY[200] OF RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(3)
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
CALL prprmt006()
END MAIN
FUNCTION prprmt006()
# WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
CALL pantalla()
OPEN FORM ctfmmt006 FROM "prfmmt006"
DISPLAY FORM ctfmmt006
CALL pantalla()
DISPLAY "prprmt006" AT 4,3
DISPLAY "Ordenes De Produccion" AT 6,32
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
LET int_flag = FALSE
CLEAR FORM
CALL prpcad006()
COMMAND "Consultar"
LET INT_FLAG = FALSE
CALL prpcmf006()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION prpcad006()
## Captura los datos que va a contener el registro
LET int_flag = false
SELECT MAX(a.num_oc) INTO prtb07.num_oc FROM prtb00007 a
LET prtb07.num_oc = prtb07.num_oc + 1
INPUT BY NAME prtb07.num_oc THRU prtb07.cantidad WITHOUT DEFAULTS
ON KEY(CONTROL-W)
CASE
WHEN INFIELD(cod_n)
# CALL busca_pt()
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec
ATTRIBUTE (BLUE)
EXIT CASE
WHEN INFIELD(cod_grupo)
# CALL busca_pt()
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec
ATTRIBUTE (BLUE)
EXIT CASE
WHEN INFIELD(cod_tipo)
# CALL busca_pt()
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec
ATTRIBUTE (BLUE)
EXIT CASE
WHEN INFIELD(cod_sec)
# CALL busca_pt()
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec
ATTRIBUTE (BLUE)
EXIT CASE
WHEN INFIELD(sec_vend)
CALL vendedores()
DISPLAY BY NAME prtb07.sec_vend,nombre_vend ATTRIBUTE(BLUE)
EXIT CASE
WHEN INFIELD (tipo_cliente)
CALL busca_cliente()
DISPLAY BY NAME prtb07.tipo_cliente,prtb07.sec_cliente,
nombre ATTRIBUTE(BLUE)
EXIT CASE
WHEN INFIELD (sec_cliente)
CALL busca_cliente()
DISPLAY BY NAME prtb07.tipo_cliente,prtb07.sec_cliente,
nombre ATTRIBUTE(BLUE)
EXIT CASE
END CASE
BEFORE FIELD fecha_termina
LET prtb07.fecha_termina = prtb07.fecha + 15
DISPLAY BY NAME prtb07.fecha_termina
AFTER FIELD fecha_termina
IF prtb07.fecha_termina IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_termina
END IF
IF prtb07.fecha_termina < prtb07.fecha THEN
LET numero_msg =51
CALL msg(numero_msg)
NEXT FIELD fecha_termina
END IF
AFTER FIELD orden_pedido
IF prtb07.orden_pedido IS NOT NULL AND prtb07.orden_pedido != 0 THEN
SELECT UNIQUE a.num_oc
FROM prtb00012 a
WHERE a.num_oc = prtb07.orden_pedido
IF STATUS = NOTFOUND THEN
LET numero_msg =3
CALL msg(numero_msg)
NEXT FIELD orden_pedido
END IF
END IF
AFTER FIELD sec_vend
IF prtb07.sec_vend IS NOT NULL THEN
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
FROM adtb00003 a
WHERE a.num_emp = prtb07.sec_vend
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD sec_vend
END IF
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE)
END IF
BEFORE FIELD fecha
LET prtb07.fecha = TODAY
DISPLAY BY NAME prtb07.fecha ATTRIBUTE(BLUE)
AFTER FIELD fecha
IF prtb07.fecha > TODAY THEN
LET numero_msg = 189
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
AFTER FIELD sec_cliente
SELECT a.nombre INTO nombre
FROM vetb00004 a
WHERE a.tipo_cliente = prtb07.tipo_cliente AND
a.sec_cliente = prtb07.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
DISPLAY BY NAME nombre ATTRIBUTE(BLUE)
AFTER FIELD cod_n
SELECT a.producto INTO descrip
FROM iptb00020 a
WHERE a.cod_n = prtb07.cod_n
DISPLAY BY NAME descrip ATTRIBUTE(BLUE)
AFTER FIELD cod_sec
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,unidad
FROM iptb00002 a
WHERE a.cod_n = prtb07.cod_n AND
a.cod_grupo = prtb07.cod_grupo AND
a.cod_tipo = prtb07.cod_tipo AND
a.cod_sec = prtb07.cod_sec
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE)
SELECT UNIQUE a.num_oc FROM prtb00007 a
WHERE a.num_oc = prtb07.num_oc AND
a.cod_n = prtb07.cod_n AND
a.cod_grupo = prtb07.cod_grupo AND
a.cod_tipo = prtb07.cod_tipo AND
a.cod_sec = prtb07.cod_sec
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_oc
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
SELECT a.descrip_esp INTO descrip_esp
FROM iptb00002 a
WHERE a.cod_n = prtb07.cod_n AND
a.cod_grupo = prtb07.cod_grupo AND
a.cod_tipo = prtb07.cod_tipo AND
a.cod_sec = prtb07.cod_sec
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE)
SELECT UNIQUE a.num_oc FROM prtb00007 a
WHERE a.num_oc = prtb07.num_oc AND
a.cod_n = prtb07.cod_n AND
a.cod_grupo = prtb07.cod_grupo AND
a.cod_tipo = prtb07.cod_tipo AND
a.cod_sec = prtb07.cod_sec
IF STATUS != NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD num_oc
END IF
SELECT a.nombre INTO nombre
FROM vetb00004 a
WHERE a.tipo_cliente = prtb07.tipo_cliente AND
a.sec_cliente = prtb07.sec_cliente AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
DISPLAY BY NAME descrip_esp,nombre ATTRIBUTE(BLUE)
END INPUT
{ ESTE QUERY ES PARA BUSCAR LA COMPOSICION DE LOS PRODUCTOS
DECLARE buscame CURSOR FOR
SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM prtb00008 a,prtb00007 b
WHERE b.cod_n = prtb07.cod_n AND
b.cod_grupo = prtb07.cod_grupo AND
b.cod_tipo = prtb07.cod_tipo AND
b.cod_sec = prtb07.cod_sec AND
a.num_oc = b.num_oc
LET idx = 1
FOREACH buscame INTO prtb08[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
}
INPUT ARRAY prtb08 FROM s_orden.*
ON KEY(CONTROL-W)
CALL busca_material()
BEFORE ROW
LET curr = arr_curr()
LET scr_l = scr_line()
AFTER FIELD cod_sec_c
LET descrip_esp_c = NULL
IF prtb08[curr].cod_sec_c IS NOT NULL THEN
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp_c,unidad_c
FROM intb00001 a
WHERE a.cod_n = prtb08[curr].cod_n_c AND
a.cod_grupo = prtb08[curr].cod_grupo_c AND
a.cod_tipo = prtb08[curr].cod_tipo_c AND
a.cod_sec = prtb08[curr].cod_sec_c AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n_c
END IF
END IF
LET prtb08[curr].descrip_esp_c = descrip_esp_c
LET prtb08[curr].unidad_c = unidad_c
DISPLAY prtb08[curr].descrip_esp_c TO s_orden[scr_l].descrip_esp_c
ATTRIBUTE(BLUE)
DISPLAY prtb08[curr].unidad_c TO s_orden[scr_l].unidad_c
ATTRIBUTE(BLUE)
AFTER FIELD cantidad_c
IF prtb08[curr].cod_n_c IS NOT NULL THEN
IF prtb08[curr].cantidad_c IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad_c
END IF
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
PROMPT "TODA LA INFORMACION ESTA CORRECTA? " FOR opt4
LET opt4 = upshift(opt4)
IF opt4 = "S" THEN
START REPORT ordenes TO "c:\\archivo"
INSERT INTO prtb00007 VALUES (prtb07.*)
UPDATE prtb00007 set us_crea = SUSER_SNAME(),
fech_crea = current
WHERE num_oc = prtb07.num_oc
INSERT INTO prtb00009 VALUES (prtb07.num_oc,prtb07.fecha,"S","INICIO ORDEN...",NULL,SUSER_SNAME(),CURRENT,NULL,NULL)
# SE ESTA VALIDANDO EL PRODUCTO TERMINADO EN EL CODIGO DE LA MATERIA PRIMA
# PARA CUANDO LA ORDEN SEA PARA PRODUCTOS IMPORTADOS QUE NO TIENEN COMPOSICION
IF prtb08[1].cod_n_c IS NULL THEN
LET prtb08[1].cod_n_c = prtb07.cod_n
LET prtb08[1].cod_grupo_c = prtb07.cod_grupo
LET prtb08[1].cod_tipo_c = prtb07.cod_tipo
LET prtb08[1].cod_sec_c = prtb07.cod_Sec
OUTPUT TO REPORT ordenes(prtb07.num_oc,prtb08[idx].*)
END IF
FOR idx = 1 TO arr_count()
IF prtb08[idx].cod_n_c IS NOT NULL THEN
INSERT INTO prtb00008 VALUES (prtb07.num_oc,
prtb08[idx].cod_n_c,
prtb08[idx].cod_grupo_c,
prtb08[idx].cod_tipo_c,
prtb08[idx].cod_sec_c,
prtb08[idx].cantidad_c,
SUSER_SNAME(),current,null,null)
OUTPUT TO REPORT ordenes(prtb07.num_oc,prtb08[idx].*)
END IF
END FOR
FINISH REPORT ordenes
RUN "TYPE c:\\archivo > LPT3"
LET numero_msg = 1
CALL msg(numero_msg)
END IF
CLEAR FORM
END FUNCTION
FUNCTION prpcmf006()
## Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT BY NAME criterio ON a.num_oc,a.tipo_cliente,a.sec_cliente
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT UNIQUE a.* FROM prtb00007 a ",
" WHERE ",criterio CLIPPED, " AND a.status_t IS NULL"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
FETCH FIRST datos INTO prtb07.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE)
LET numero_oc = prtb07.num_oc
CALL busca_detalle()
CALL busca_clientem()
CALL busca_vendm()
CALL busca_product()
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proprtb07.mo registro encontrado"
FETCH NEXT datos INTO prtb07.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE)
LET numero_oc = prtb07.num_oc
CALL limpia()
CALL busca_detalle()
CALL busca_clientem()
CALL busca_vendm()
CALL busca_product()
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO prtb07.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE)
LET numero_oc = prtb07.num_oc
CALL limpia()
CALL busca_detalle()
CALL busca_clientem()
CALL busca_vendm()
CALL busca_product()
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO prtb07.*
DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE)
LET numero_oc = prtb07.num_oc
CALL limpia()
CALL busca_detalle()
CALL busca_clientem()
CALL busca_vendm()
CALL busca_product()
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO prtb07.*
DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad
ATTRIBUTE(BLUE)
LET numero_oc = prtb07.num_oc
CALL limpia()
CALL busca_detalle()
CALL busca_clientem()
CALL busca_vendm()
CALL busca_product()
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND KEY ("N") "aNular"
PROMPT "Esta seguro?" FOR esta
LET esta = UPSHIFT(esta)
IF esta = "S" THEN
UPDATE prtb00007 set status_t = "E",
us_mod = SUSER_SNAME(),
fech_mod = current
WHERE num_oc = prtb07.num_oc
UPDATE prtb00009 set status_t = "E",
us_mod = SUSER_SNAME(),
fech_mod = current
WHERE num_oc = prtb07.num_oc
LET numero_msg = 39
CALL msg(numero_msg)
END IF
COMMAND "Retornar"
"Retorna al menu anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_pt()
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd003"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET int_flag = false
CONSTRUCT criterio ON a.descrip_esp FROM descrip_esp
LET selec2 =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp ",
"FROM iptb00002 a ",
"WHERE a.status_t is null AND ",criterio clipped," ORDER BY 5 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO sale9
END IF
PREPARE busca_pila FROM selec2
DECLARE buscar_pila CURSOR FOR busca_pila
LET idx= 1
FOREACH buscar_pila INTO pilas[idx].*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
LET idx= idx+ 1
END FOREACH
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GOTO sale9
END IF
CALL set_count(idx -1)
MESSAGE " <Esc> Selecciona Producto Terminado donde esta el cursor"
DISPLAY ARRAY pilas TO s_pilas.*
LET curr1 = arr_curr()
LET prtb07.cod_n = pilas[curr1].cod_n
LET prtb07.cod_grupo = pilas[curr1].cod_grupo
LET prtb07.cod_tipo = pilas[curr1].cod_tipo
LET prtb07.cod_sec = pilas[curr1].cod_sec
LET descrip_esp = pilas[curr1].descrip_esp
LABEL sale9:
CLOSE WINDOW busqueda
END FUNCTION
FUNCTION limpia()
FOR idx = 1 TO 10
LET prtb08[idx].cod_n_c = null
LET prtb08[idx].cod_grupo_c = null
LET prtb08[idx].cod_tipo_c = null
LET prtb08[idx].cod_sec_c = null
LET prtb08[idx].unidad_c = null
LET prtb08[idx].cantidad_c = null
LET prtb08[idx].descrip_esp_c = null
END FOR
FOR idx = 1 TO 5
DISPLAY prtb08[idx].cod_n_c TO s_orden[idx].cod_n_c
DISPLAY prtb08[idx].cod_grupo_c TO s_orden[idx].cod_grupo_c
DISPLAY prtb08[idx].cod_tipo_c TO s_orden[idx].cod_tipo_c
DISPLAY prtb08[idx].cod_sec_c TO s_orden[idx].cod_sec_c
DISPLAY prtb08[idx].cantidad_c TO s_orden[idx].cantidad_c
DISPLAY prtb08[idx].descrip_esp_c TO s_orden[idx].descrip_esp_c
ATTRIBUTE(BLUE)
DISPLAY prtb08[idx].unidad_c TO s_orden[idx].unidad_c
ATTRIBUTE(BLUE)
END FOR
END FUNCTION
FUNCTION busca_detalle()
DECLARE busca_d CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad FROM prtb00008 a
WHERE a.num_oc = numero_oc
LET idx = 1
FOREACH busca_d INTO prtb08[idx].*
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp_c,unidad_c
FROM intb00001 a
WHERE a.cod_n = prtb08[idx].cod_n_c AND
a.cod_grupo = prtb08[idx].cod_grupo_c AND
a.cod_tipo = prtb08[idx].cod_tipo_c AND
a.cod_sec = prtb08[idx].cod_sec_c AND
a.status_t IS NULL
IF idx > 5 THEN
EXIT FOREACH
END IF
LET prtb08[idx].descrip_esp_c = descrip_esp_c
LET prtb08[idx].unidad_c = unidad_c
DISPLAY prtb08[idx].cod_n_c TO s_orden[idx].cod_n_c
DISPLAY prtb08[idx].cod_grupo_c TO s_orden[idx].cod_grupo_c
DISPLAY prtb08[idx].cod_tipo_c TO s_orden[idx].cod_tipo_c
DISPLAY prtb08[idx].cod_sec_c TO s_orden[idx].cod_sec_c
DISPLAY prtb08[idx].cantidad_c TO s_orden[idx].cantidad_c
DISPLAY prtb08[idx].descrip_esp_c TO s_orden[idx].descrip_esp_c
ATTRIBUTE(BLUE)
DISPLAY prtb08[idx].unidad_c TO s_orden[idx].unidad_c
ATTRIBUTE(BLUE)
LET idx = idx + 1
END FOREACH
END FUNCTION
REPORT ordenes(xnumero,z)
DEFINE z RECORD
cod_n_c LIKE prtb00008.cod_n,
cod_grupo_c LIKE prtb00008.cod_grupo,
cod_tipo_c LIKE prtb00008.cod_tipo,
cod_sec_c LIKE prtb00008.cod_sec,
cantidad_c LIKE prtb00008.cantidad ,
descrip_esp_c LIKE intb00001.descrip_esp,
unidad_c LIKE intb00001.unidad_med
END RECORD,
i,xnumero INTEGER,
negrillas_on,negrillas_off,doble CHAR(2)
OUTPUT
LEFT MARGIN 0
ORDER BY xnumero
FORMAT
PAGE HEADER
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET doble = ASCII 14
LET l = (80 - LENGTH(p_compania.nombre CLIPPED))/2
PRINT COLUMN l, p_compania.nombre CLIPPED,
COLUMN 70, TODAY USING "DD/MM/YY"
LET l = (80 - LENGTH("ORDEN DE PRODUCCION"))/2
PRINT COLUMN l, "ORDEN DE PRODUCCION",
COLUMN 70, TIME
PRINT COLUMN 1, "NO. ORDEN: ",doble_on,xnumero USING "<<<<<<"
PRINT COLUMN 1, "FECHA : ",negrillas_on,prtb07.fecha
USING "DD/MM/YY",negrillas_off
PRINT COLUMN 1, "VENDEDOR : ",negrillas_on,prtb07.sec_vend USING "<<<<",
" ",nombre_vend,negrillas_off
PRINT COLUMN 1, "CLIENTE : ",negrillas_on,prtb07.tipo_cliente USING "<<",
prtb07.sec_cliente
USING "<<<<"," "," ",
nombre,negrillas_off
PRINT COLUMN 1, "PRODUCTO : ",negrillas_on,prtb07.cod_n USING "&","-",
prtb07.cod_grupo USING "&","-",
prtb07.cod_tipo USING "&&","-",
prtb07.cod_sec
USING "&&&"," ",negrillas_off,descrip_esp," ",
unidad,negrillas_off
PRINT COLUMN 1, "CANTIDAD : ",negrillas_on, prtb07.cantidad USING "<<,<<<",
negrillas_off
FOR i = 1 TO 70
PRINT "-";
END FOR
PRINT "-"
PRINT "COMPOSICION PRODUCTO..."
FOR i = 1 TO 70
PRINT "-";
END FOR
PRINT "-"
ON EVERY ROW
PRINT COLUMN 1, z.cod_n_c USING "&","-",
z.cod_grupo_c USING "&","-",
z.cod_tipo_c USING "&&","-",
z.cod_sec_c USING "&&&","-",
" ",z.descrip_esp_c," ",z.unidad_c,
" ",z.cantidad_c USING "###,###.###"
PAGE TRAILER
PRINT COLUMN 10, "-------------------",
COLUMN 35, "-------------------"
PRINT COLUMN 13, "AUTORIZADO POR",
COLUMN 39, "REVISADO POR"
END REPORT
FUNCTION busca_material()
LET int_flag = FALSE
OPEN WINDOW material1 AT 10,9 WITH FORM "infmwd004"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2)
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,
a.unidad_med
FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp,
unidad_med
LET selec = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
"a.unidad_med FROM intb00001 a ",
"WHERE a.status_t IS NULL AND ",criterio CLIPPED,
"ORDER BY 1,2,3,4"
PREPARE comando4 FROM selec
DECLARE comp4 CURSOR FOR comando4
LET idx = 1
FOREACH comp4 INTO datos_mt[idx].*
LET idx = idx + 1
END FOREACH
CALL SET_COUNT(idx - 1)
DISPLAY ARRAY datos_mt TO datos_mt1.*
LET idx = ARR_CURR()
CLOSE WINDOW material1
END FUNCTION
FUNCTION vendedores()
DEFINE descrip6 LIKE adtb00003.nom1_emp
OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET int_flag = false
CONSTRUCT criterio ON a.nom1_emp FROM descrip6
LET selec2 = "SELECT UNIQUE a.num_emp,a.nom1_emp,a.apell1_emp ",
" FROM adtb00003 a,vetb00028 b",
" WHERE a.num_emp = b.sec_vend AND ",
"a.status_t is null AND ",
criterio clipped,
"ORDER BY 1 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_e
END IF
PREPARE busca_empleados FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
END IF
END IF
DECLARE buscar_empleados CURSOR FOR busca_empleados
LET idx = 1
FOREACH buscar_empleados INTO arr_empleados[idx].*
IF status = NOTFOUND THEN
EXIT FOREACH
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
LET empleados[idx].cod_emp_sec = arr_empleados[idx].num_emp
LET empleados[idx].descrip6 =
arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
MESSAGE " <Esc> Selecciona Empleado donde esta el cursor"
DISPLAY ARRAY empleados TO s_empleados.*
LET curr1 = scr_line()
LET prtb07.sec_vend = empleados[curr1].cod_emp_sec
LET nombre_vend = empleados[curr1].descrip6
LABEL salir_consulta_e:
CLOSE WINDOW busqueda2
END FUNCTION
FUNCTION busca_cliente()
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET int_flag = false
CONSTRUCT criterio ON a.nombre FROM nombre
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ",
" FROM vetb00004 a",
" WHERE ",
"a.status_t is null AND ",
criterio clipped,
"ORDER BY 1,2 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_c
END IF
PREPARE busca_clientes FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
END IF
END IF
DECLARE buscar_clientes CURSOR FOR busca_clientes
LET idx = 1
FOREACH buscar_clientes INTO arr_clientes[idx].*
IF status = NOTFOUND THEN
EXIT FOREACH
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
MESSAGE " <Esc> Selecciona Cliente donde esta el cursor"
DISPLAY ARRAY arr_clientes TO s_clientes.*
LET curr1 = arr_curr()
LET prtb07.tipo_cliente = arr_clientes[curr1].tipo_cliente
LET prtb07.sec_cliente = arr_clientes[curr1].sec_cliente
LET nombre = arr_clientes[curr1].nombre
LABEL salir_consulta_c:
CLOSE WINDOW busqueda
END FUNCTION
FUNCTION busca_clientem()
SELECT a.nombre INTO nombre
FROM vetb00004 a
WHERE a.tipo_cliente = prtb07.tipo_cliente AND
a.sec_cliente = prtb07.sec_cliente AND
a.status_t IS NULL
DISPLAY BY NAME nombre ATTRIBUTE(BLUE)
END FUNCTION
FUNCTION busca_vendm()
IF prtb07.sec_vend IS NOT NULL THEN
SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos
FROM adtb00003 a
WHERE a.num_emp = prtb07.sec_vend
LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED
DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE)
END IF
END FUNCTION
FUNCTION busca_product()
SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,unidad
FROM iptb00002 a
WHERE a.cod_n = prtb07.cod_n AND
a.cod_grupo = prtb07.cod_grupo AND
a.cod_tipo = prtb07.cod_tipo AND
a.cod_sec = prtb07.cod_sec
DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE)
END FUNCTION