Files
MBS/PROYECTOS/ipdir/ipprmt054.4gl
T

823 lines
30 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : INPRMT54
OBJETIVO : Modificar, Eliminar registros de los Movimientos
de Productos
PROGRAMADOR : JUAN SOTO
FECHA REALIZACION : Febrero 1997
------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE factor_conv1 DECIMAL(12,5)
DEFINE mv_ant ARRAY[100] OF RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT
END RECORD
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 ipprmt054()
END MAIN
FUNCTION ipprmt054()
DEFINE usuario CHAR(9)
#WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 4,
ERROR LINE 23,
COMMENT LINE 21,
PROMPT LINE 22
OPEN FORM ipfmmt054 FROM "ipfmmt054"
DISPLAY FORM ipfmmt054
DISPLAY "ipprmt054" AT 3,3 ATTRIBUTE (BOLD)
DISPLAY "Actualizacion Movimientos " AT 3,27 ATTRIBUTE (BOLD)
MENU "OPCIONES"
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Delete> Cancela Operacion"
LET INT_FLAG = FALSE
CALL ippcmf54()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION ippcmf54()
DEFINE usu_crea CHAR(9)
DEFINE fecha_crea DATETIME YEAR TO MINUTE
DEFINE cuenta,cuenta1 INTEGER
DEFINE porciento,total_cantidad_ant,total_cantidad,ordenada,recibida,
cantidad1,cant_e,devuelto,r_cantidad1,devuelto1,r_cantidad,
cantidad_1_ant DECIMAL(12,2)
DEFINE codigo_ant ARRAY[100] OF CHAR(7)
DEFINE devuelta,cerrada,actualiza CHAR(1)
#WHENEVER ERROR CONTINUE
LET int_flag = false
LET existe = null
## Aqui se prepara para la captura del criterio de seleccion
CLEAR FORM
CONSTRUCT criterio ON a.cod_mov,a.num_doc,a.fecha
FROM cod_mov,num_doc,fecha
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
LET SELEC =
"SELECT UNIQUE a.cod_mov,a.num_doc,CONVERT(char(10),a.fecha,103),a.tipo,a.orden_compra, ",
" a.fact_no,a.conduce_no,a.cod_sp,a.cod_sp_sec,a.cod_sp, ",
" a.cod_transp,a.sec_transp,a.placa,a.cod_tarifa,a.bodega,c.departamento, ",
" a.detalle ",
"FROM iptb00006 a,iptb00005 b,OUTER iptb00026 c ",
"WHERE (", criterio CLIPPED," ) and a.cod_mov = b.cod_mov AND ",
" a.num_doc = c.num_doc and a.cod_mov = c.cod_mov AND ",
" CONVERT(char(10),a.fecha,103) > '01/01/2008' and a.status_t is null ORDER BY 1,2 "
DISPLAY "Buscando Documento... Espere" AT 24,1 ATTRIBUTE (BOLD)
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
LET descrip1 = null
LET descrip2 = null
FETCH FIRST datos INTO movimientos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL desplegar54()
MENU "OPCIONES "
COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO movimientos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL desplegar54()
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO movimientos.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL desplegar54()
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO movimientos.*
LET numero_msg = 5
CALL msg(numero_msg)
CALL desplegar54()
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO movimientos.*
CALL desplegar54()
COMMAND KEY ("L") "eLiminar"
UPDATE iptb00006 set status_t = "E"
WHERE num_doc = movimientos.num_doc AND
cod_mov = movimientos.cod_mov
LET numero_msg = 39
CALL msg(numero_msg)
EXIT MENU
COMMAND "Escoger" "<Esc> Actualiza Registro <Delete> Cancela Operacion"
LET cerrada = "N"
LET total_cantidad = 0
LET total_cantidad_ant = 0
# Entrada de datos Generales del documento
LET p_fechas = movimientos.fecha
IF movimientos.fecha < "31031994" THEN
LET numero_msg = 58
CALL msg(numero_msg)
RETURN
END IF
SELECT a.us_crea,MIN(a.fech_crea) INTO usu_crea,fecha_crea
FROM iptb00006 a
WHERE a.status_t IS NULL AND a.num_doc = movimientos.num_doc AND
a.cod_mov = movimientos.cod_mov GROUP BY a.us_crea
LET cod_mov_ant = movimientos.cod_mov
INPUT BY NAME movimientos.fecha THRU movimientos.detalle
WITHOUT DEFAULTS
AFTER FIELD departamento
IF movimientos.departamento IS NOT NULL THEN
SELECT a.nom_dpto INTO otros_mov.nombre_depto
FROM adtb00001 a
WHERE a.departamento = movimientos.departamento AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
DISPLAY BY NAME otros_mov.nombre_depto
END IF
AFTER FIELD bodega
IF movimientos.bodega is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD bodega
ELSE
SELECT * FROM intb00009 WHERE cod_bodega = movimientos.bodega
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD bodega
END IF
END IF
AFTER FIELD fecha
LET p_fechas = movimientos.fecha
IF movimientos.fecha < "31031994" THEN
LET numero_msg = 58
CALL msg(numero_msg)
RETURN
END IF
AFTER FIELD orden_compra
# Verifica que la orden de compra este en el archivo y
# ademas obliga a que el usuario tenga que digitar este campo
IF movimientos.orden_compra IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
ELSE
SELECT cod_sp,cod_sp_sec,cierre
INTO movimientos.cod_sp,movimientos.cod_sp_sec,cerrada
FROM cotb00014 WHERE num_oc = movimientos.orden_compra
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD orden_compra
END IF
IF cerrada = "S" THEN
LET numero_msg = 74
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
SELECT UNIQUE nom_sp INTO movimientos.nom_sp FROM cotb00001
WHERE cod_sp = movimientos.cod_sp and
cod_sp_sec = movimientos.cod_sp_sec and status_t is null
DISPLAY BY NAME movimientos.nom_sp,movimientos.cod_sp,
movimientos.cod_sp_sec
IF cerrada is null THEN
LET cerrada = "N"
END IF
END IF
AFTER FIELD cod_sp_sec
IF movimientos.cod_sp_sec is not null THEN
SELECT nombre INTO movimientos.nom_sp FROM vetb00004
WHERE tipo_cliente = movimientos.cod_sp and
sec_cliente = movimientos.cod_sp_sec
DISPLAY BY NAME movimientos.nom_sp
ELSE
LET movimientos.cod_sp = null
DISPLAY BY NAME movimientos.cod_sp
END IF
AFTER FIELD cod_transp
IF movimientos.cod_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
#NEXT FIELD cod_transp
END IF
AFTER FIELD sec_transp
IF movimientos.sec_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
# NEXT FIELD cod_transp
END IF
IF movimientos.sec_transp is NOT NULL THEN
SELECT nombre INTO descrip2 FROM vetb00015
WHERE cod_transp = movimientos.cod_transp and
sec_transp = movimientos.sec_transp and
status_t is null
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
DISPLAY BY NAME descrip2
END IF
AFTER FIELD cod_tarifa
IF movimientos.cod_tarifa is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
ELSE
SELECT descrip INTO descrip1 FROM vetb00023
WHERE cod_tarifa = movimientos.cod_tarifa and status_t is null
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
DISPLAY BY NAME descrip1
END IF
AFTER FIELD fact_no
IF movimientos.conduce_no is null and
movimientos.fact_no is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
IF movimientos.conduce_no is not null and
movimientos.fact_no is not null THEN
LET numero_msg = 29
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
{ IF movimientos.cod_mov = 12 or
movimientos.cod_mov = 13 THEN
SELECT * FROM vetb00002 WHERE factura = movimientos.fact_no
IF status = notfound THEN
LET numero_msg = 102
CALL msg(numero_msg)
NEXT FIELD fact_no
END IF
NEXT FIELD cod_tarifa
END IF}
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
EXIT INPUT
END INPUT
DISPLAY "Buscando Productos... Espere" AT 24,1 ATTRIBUTE (BOLD)
DECLARE buscate CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad_2,
b.unidad_med,b.descrip_esp
FROM iptb00006 a,iptb00002 b
WHERE a.num_doc = movimientos.num_doc and a.cod_mov = movimientos.cod_mov 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
# Se quito del query la fecha porque no buscaba los registros si se modificaba
LET idx = 1
FOREACH buscate INTO movi[idx].*
IF movi[idx].cantidad_2 < 0 THEN
LET movi[idx].cantidad_2 = movi[idx].cantidad_2 * -1
END IF
LET idx = idx + 1
END FOREACH
DISPLAY " " AT 24,1
CALL set_count(idx -1)
INPUT ARRAY movi WITHOUT DEFAULTS FROM s_movi1.*
BEFORE ROW
LET p_act = arr_curr()
LET scr_l = scr_line()
LET codigo_ant[p_act] = movi[p_act].cod_n using "&",
movi[p_act].cod_grupo using "&",
movi[p_act].cod_tipo using "&&",
movi[p_act].cod_sec using "&&&"
LET movi_ant[p_act].cant_ant = movi[p_act].cantidad_2
# Chequeo si es un reporte de entrada para mandar la secuencia del programa a
# La Cantidad Recibida
AFTER FIELD cod_n
LET scr_l = scr_line()
LET p_act = arr_curr()
LET ya = "N"
CALL repetir()
IF existe = "S" THEN
NEXT FIELD cod_grupo
LET existe = "N"
END IF
AFTER FIELD cod_grupo
IF movi[p_act].cod_grupo is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET ya = "N"
CALL repetir()
IF existe = "S" THEN
NEXT FIELD cod_tipo
LET existe = "N"
END IF
AFTER FIELD cod_tipo
IF movi[p_act].cod_tipo is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET ya = "N"
CALL repetir()
IF existe = "S" THEN
NEXT FIELD cod_sec
LET existe = "N"
END IF
AFTER FIELD cod_sec
IF movi[p_act].cod_sec is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
IF movi[p_act].cod_n is null AND movi[p_act].cod_grupo is null AND
movi[p_act].cod_tipo is null AND movi[p_act].cod_sec is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
ELSE
IF mv_ant[p_act].cod_n != movi[p_act].cod_n and
mv_ant[p_act].cod_grupo != movi[p_act].cod_grupo and
mv_ant[p_act].cod_tipo != movi[p_act].cod_tipo and
mv_ant[p_act].cod_sec != movi[p_act].cod_sec THEN
LET ya = "N"
CALL repetir()
IF existe = "S" THEN
LET existe = "N"
NEXT FIELD cod_n
END IF
SELECT a.descrip_esp,a.unidad_med
INTO articulos.descrip_esp,articulos.unidad_med
FROM iptb00002 a
WHERE a.cod_n = movi[p_act].cod_n and
a.cod_grupo = movi[p_act].cod_grupo and
a.cod_tipo = movi[p_act].cod_tipo and
a.cod_sec = movi[p_act].cod_sec and a.status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET movi[p_act].descrip_esp = articulos.descrip_esp
LET movi[p_act].unidad_med = articulos.unidad_med
DISPLAY movi[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp
ATTRIBUTE (BOLD)
DISPLAY movi[p_act].unidad_med TO s_movi1[scr_l].unidad_med
ATTRIBUTE (BOLD)
END IF
LET factor_conv1 = 0
SELECT a.factor_conv INTO factor_conv1 FROM iptb00001 a
WHERE a.cod_n = movi[p_act].cod_n AND
a.cod_grupo = movi[p_act].cod_grupo AND
a.cod_tipo = movi[p_act].cod_tipo AND
a.cod_sec = movi[p_act].cod_sec AND a.status_t is null
IF STATUS = NOTFOUND THEN
ERROR "NO EXISTE FACTOR DE CONVERSION"
NEXT FIELD cod_n
END IF
END IF
AFTER FIELD cantidad_1
IF movi[p_act].cod_n is NOT null AND
movi[p_act].cod_grupo is NOT null AND
movi[p_act].cod_tipo is NOT null AND
movi[p_act].cod_sec is NOT null THEN
IF movi[p_act].cantidad_1 IS NULL OR movi[p_act].cantidad_1 < 0 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
LET movi[p_act].cantidad_2=movi[p_act].cantidad_1*factor_conv1
DISPLAY movi[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
IF transacc.status_mov = "2" THEN
SELECT cantidad_2 INTO p_iptb02.exist_min FROM iptb00006
WHERE cod_n = movi[p_act].cod_n AND
cod_grupo = movi[p_act].cod_grupo AND
cod_tipo = movi[p_act].cod_tipo AND
cod_sec = movi[p_act].cod_sec AND
num_doc = movimientos.num_doc AND
cod_mov = movimientos.cod_mov
SELECT SUM(cantidad_2) INTO p_iptb06.cantidad_2 FROM iptb00006
WHERE cod_n = movi[p_act].cod_n AND
cod_grupo = movi[p_act].cod_grupo AND
cod_tipo = movi[p_act].cod_tipo AND
cod_sec = movi[p_act].cod_sec and status_t is null
IF p_iptb06.cantidad_2 IS NULL THEN
LET p_iptb06.cantidad_2 = 0
END IF
IF p_iptb02.exist_min IS NULL THEN
LET p_iptb02.exist_min = 0
END IF
LET p_iptb06.cantidad_2=p_iptb06.cantidad_2-p_iptb02.exist_min
IF movi_ant[p_act].cant_ant is null THEN
LET movi_ant[p_act].cant_ant = 0
END IF
LET cantidad1 = p_iptb06.cantidad_2
IF movi[p_act].cantidad_2 > cantidad1 THEN
LET numero_msg = 30
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
IF cantidad1 <= p_iptb02.exist_min THEN
LET numero_msg = 31
CALL msg(numero_msg)
END IF
END IF
END IF
AFTER INPUT
## Verifica si el usuario presiono la tecla <Delete>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
IF movi[p_act].cod_n is NOT null AND
movi[p_act].cod_grupo is NOT null AND
movi[p_act].cod_tipo is NOT null AND
movi[p_act].cod_sec is NOT null THEN
IF transacc.status_mov = "2" THEN
SELECT cantidad_2 INTO p_iptb02.exist_min FROM iptb00006
WHERE cod_n = movi[p_act].cod_n AND
cod_grupo = movi[p_act].cod_grupo AND
cod_tipo = movi[p_act].cod_tipo AND
cod_sec = movi[p_act].cod_sec AND
num_doc = movimientos.num_doc AND
cod_mov = movimientos.cod_mov
SELECT SUM(cantidad_2) INTO p_iptb06.cantidad_2 FROM iptb00006
WHERE cod_n = movi[p_act].cod_n AND
cod_grupo = movi[p_act].cod_grupo AND
cod_tipo = movi[p_act].cod_tipo AND
cod_sec = movi[p_act].cod_sec and status_t is null
IF p_iptb06.cantidad_2 IS NULL THEN
LET p_iptb06.cantidad_2 = 0
END IF
IF p_iptb02.exist_min IS NULL THEN
LET p_iptb02.exist_min = 0
END IF
LET p_iptb06.cantidad_2=p_iptb06.cantidad_2-p_iptb02.exist_min
IF movi_ant[p_act].cant_ant is null THEN
LET movi_ant[p_act].cant_ant = 0
END IF
LET cantidad1 = p_iptb06.cantidad_2
IF movi[p_act].cantidad_2 > cantidad1 THEN
LET numero_msg = 30
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
IF cantidad1 <= p_iptb02.exist_min THEN
LET numero_msg = 31
CALL msg(numero_msg)
END IF
END IF
END IF
EXIT INPUT
END INPUT
DISPLAY " " AT 24,1
DISPLAY "En Proceso... Espere Por Favor" AT 24,1 ATTRIBUTE (BLUE)
# Actualizacion de la orden de compras cuando se devuelve articulo
IF recibida is null THEN
LET recibida = 0
END IF
IF ordenada is null THEN
LET ordenada = 0
END IF
LET porciento = ordenada * 0.10
LET recibida = recibida - total_cantidad_ant + total_cantidad
LET r_cantidad = ordenada - porciento
LET r_cantidad1 = ordenada + porciento
IF recibida >= r_cantidad and recibida <= r_cantidad1 THEN
LET cerrada = "S"
END IF
DELETE FROM iptb00006 WHERE num_doc = movimientos.num_doc and
cod_mov = movimientos.cod_mov and
fecha > '01/01/2008'
# Activa la factura cuando es una devolucion para posteriormente anular lo que
# hay que anular
{IF movimientos.cod_mov = 12 or movimientos.cod_mov = 13 THEN
UPDATE vetb00002 set status_t = null
WHERE factura = movimientos.fact_no
UPDATE vetb00003 set status_t = null
WHERE factura = movimientos.fact_no
END IF}
FOR idx = 1 TO arr_count()
LET movi3[idx].codigo = movi[idx].cod_n using "&",
movi[idx].cod_grupo using "&",
movi[idx].cod_tipo using "&&",
movi[idx].cod_sec using "&&&" CLIPPED
LET actualiza = "S"
IF movi[idx].cod_n is not null or movi[idx].cod_grupo is not null or
movi[idx].cod_tipo is not null or movi[idx].cod_sec is not null THEN
IF transacc.status_mov = "2" THEN
LET movi[idx].cantidad_2 = movi[idx].cantidad_2 * -1
END IF
INSERT INTO iptb00006 (cod_cia,cod_mov,num_doc,fecha,fact_no,conduce_no,
tipo,orden_compra,cod_sp,cod_sp_sec,bodega,
detalle,cod_n,cod_grupo,cod_tipo,cod_sec,
cantidad_1,cantidad_2,us_mod,fech_mod,
cod_tarifa,cod_transp,sec_transp,placa)
VALUES (1,movimientos.cod_mov,movimientos.num_doc,movimientos.fecha,
movimientos.fact_no,movimientos.conduce_no,movimientos.tipo,
movimientos.orden_compra,movimientos.cod_sp,
movimientos.cod_sp_sec,movimientos.bodega,movimientos.detalle,
movi[idx].cod_n,movi[idx].cod_grupo,movi[idx].cod_tipo,
movi[idx].cod_sec,movi[idx].cantidad_1,movi[idx].cantidad_2,
SUSER_SNAME(),GETDATE(),movimientos.cod_tarifa,movimientos.cod_transp,
movimientos.sec_transp,movimientos.placa)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
IF movi[idx].cantidad_2 < 0 THEN
LET movi[idx].cantidad_2 = movi[idx].cantidad_2 * -1
END IF
END IF
END FOR
DISPLAY " "
UPDATE iptb00026 SET departamento = movimientos.departamento
WHERE num_Doc = movimientos.num_doc and cod_mov = movimientos.cod_mov
UPDATE iptb00006 SET (us_crea,fech_crea) = (usu_crea,fecha_crea)
WHERE @cod_mov = movimientos.cod_mov AND @num_doc = movimientos.num_doc
{IF movimientos.cod_mov = 12 or movimientos.cod_mov = 13 THEN
SELECT SUM(cantidad) INTO cuenta1 FROM vetb00003
WHERE factura = movimientos.fact_no
SELECT SUM(cantidad_2) INTO cuenta FROM vetb00003
WHERE
factura = movimientos.fact_no
IF cuenta = cuenta1 THEN
UPDATE vetb00002 set status_t = "D",
us_mod = user,
fech_mod = current
WHERE factura = movimientos.fact_no
END IF
END IF}
DISPLAY " " AT 24,1
PROMPT "Desea Imprimir este documento (S/N) ?" FOR CHAR opt4
LET opt4 = upshift(opt4)
IF opt4 = "S" THEN
#IF transacc.status_mov = "2" THEN
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT formu4 TO archivo
FOR idx = 1 to arr_count()
LET otros_mov.num_doc = movimientos.num_doc
LET otros_mov.cod_cia = null
LET otros_mov.cod_mov = movimientos.cod_mov
LET otros_mov.fact_no = movimientos.fact_no
LET otros_mov.cod_transp = movimientos.cod_transp
LET otros_mov.sec_transp = movimientos.sec_transp
LET otros_mov.placa = null
LET otros_mov.fecha = movimientos.fecha
LET otros_mov.descrip_mov = datos_gen.descrip_mov
LET otros_mov.bodega = null
LET otros_mov.detalle = movimientos.detalle
LET otros_mov.cod_sp = movimientos.cod_sp
LET otros_mov.cod_sp_sec = movimientos.cod_sp_sec
LET otros_mov.descrip4 = movimientos.nom_sp
OUTPUT TO REPORT formu4(otros_mov.*,movi[idx].*)
END FOR
FINISH REPORT formu4
RUN imprime
#ELSE
{ START REPORT rep_ent TO "%USHOME%\\archivo"
FOR idx = 1 to arr_count()
SELECT cantidad INTO p_conteo.cantidad FROM vetb00014
WHERE cod_n = movi[idx].cod_n AND
cod_grupo = movi[idx].cod_grupo AND
cod_tipo = movi[idx].cod_tipo AND
cod_sec = movi[idx].cod_sec AND
status_t is null
LET datos_gen.cod_mov = movimientos.cod_mov
LET datos_gen.num_doc = movimientos.num_doc
LET datos_gen.cod_sp = movimientos.cod_sp
LET datos_gen.cod_sp_sec = movimientos.cod_sp_sec
LET datos_gen.orden_compra = movimientos.orden_compra
LET datos_gen.conduce_no = movimientos.conduce_no
LET datos_gen.fact_no = movimientos.fact_no
LET datos_gen.fecha = movimientos.fecha
LET datos_gen.bodega = movimientos.bodega
LET datos_gen.nom_sp = movimientos.nom_sp
IF movi[idx].cantidad_1 is not null THEN
LET movi[idx].cantidad_1 = movi[idx].cantidad_1 / p_conteo.cantidad
END IF
LET p_unidad[idx] = movi[idx].cantidad_2
LET movi[idx].cantidad_2 = movi[idx].cantidad_2 / p_conteo.cantidad
OUTPUT TO REPORT rep_ent(datos_gen.*,movi[idx].*,p_unidad[idx])
END FOR
FINISH REPORT rep_ent}
LET idx = 0
#END IF
END IF
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION buscame()
IF movimientos.cod_sp is not null THEN
SELECT nom_sp INTO datos_gen.nom_sp FROM cotb00001
WHERE cod_sp = movimientos.cod_sp and
cod_sp_sec = movimientos.cod_sp_sec
END IF
END FUNCTION
FUNCTION repetir()
LET ant_art.cod_n = movi[p_act].cod_n
LET ant_art.cod_grupo = movi[p_act].cod_grupo
LET ant_art.cod_tipo = movi[p_act].cod_tipo
LET ant_art.cod_sec = movi[p_act].cod_sec
FOR idx = 1 TO arr_count()
IF idx != p_act THEN
IF movi[idx].cod_n = ant_art.cod_n AND
movi[idx].cod_grupo = ant_art.cod_grupo AND
movi[idx].cod_tipo = ant_art.cod_tipo AND
movi[idx].cod_sec = ant_art.cod_sec THEN
LET numero_msg = 21
CALL msg(numero_msg)
LET existe = "S"
LET ya = "S"
ELSE
IF ya = "N" THEN
LET existe = "N"
END IF
END IF
END IF
END FOR
END FUNCTION
FUNCTION desplegar54()
# Busca nombre del cliente
SELECT nombre INTO movimientos.nom_sp FROM vetb00004
WHERE tipo_cliente = movimientos.cod_sp and
sec_cliente = movimientos.cod_sp_sec
SELECT nombre INTO descrip2 FROM vetb00015
WHERE cod_transp = movimientos.cod_transp and
sec_transp = movimientos.sec_transp and
status_t is null
SELECT descrip INTO descrip1 FROM vetb00023
WHERE cod_tarifa = movimientos.cod_tarifa and
status_t is null
SELECT status_mov,descrip_mov
INTO transacc.status_mov,datos_gen.descrip_mov
FROM iptb00005 WHERE cod_mov = movimientos.cod_mov
SELECT nom_dpto INTO otros_mov.nombre_depto FROM adtb00001
WHERE departamento = movimientos.departamento
# Busca el nombre del suplidor
IF movimientos.cod_mov = 34 or movimientos.cod_mov = 35 THEN
CALL buscame()
END IF
DISPLAY BY NAME datos_gen.descrip_mov,datos_gen.nom_sp,otros_mov.nombre_depto
DISPLAY BY NAME movimientos.*,descrip1,descrip2
# Verifica que el documento pertenezca al usuario que lo agrego a la
# Tabla
DISPLAY " " AT 24,1
END FUNCTION