Instruccion de Johnny: todos los directorios de fuentes de inventario deben migrarse de la carpeta temporal PROYECTOS a la carpeta real PROYECTO, ya que PROYECTOS sera eliminada. Se elimino tambien un archivo suelto sin relacion llamado "ipdir" que existia en PROYECTO (del commit inicial) y bloqueaba el nombre de la carpeta. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
823 lines
30 KiB
Plaintext
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
|
|
|