{ ------------------------------------------------------------------ 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" " Realiza Busqueda 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" " Actualiza Registro 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 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