Files
MBS/PROYECTO/cpdir/cpprmt004.4gl
T

726 lines
24 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CPPRMT004
OBJETIVO : Reclasificar las facturas que tiene saldo pendientes o a favor
PROGRAMADOR : Juan F. Soto
FECHA : Agosto 28, 1996
-------------------------------------------------------------------------------
}
GLOBALS
"cpprgb000.4gl"
DEFINE aplica_wd1 ARRAY[100] OF RECORD
numero CHAR(10),
pendiente DECIMAL(12,2)
END RECORD,
num_ck LIKE cptb00001.num_doc
# Variable de Captura datos generales
DEFINE c_limpia RECORD
fecha_orig LIKE cptb00001.fecha_orig,
cod_sp LIKE cptb00001.cod_sp,
cod_sp_sec LIKE cptb00001.cod_sp_sec,
num_doc LIKE cptb00001.num_doc
END RECORD,
usuario CHAR(9),
fecha_crea LIKE cptb00001.fech_crea,
t_debito,t_credito,c_valor1,cuadre,c_valor DECIMAL(12,2),
eli CHAR(1)
# Variable de Captura Debitos y Creditos de Facturas
DEFINE arr_limpia ARRAY[100] OF RECORD
p_aplica_a LIKE cptb00001.aplica_a,
debito DECIMAL(12,2),
credito DECIMAL(12,2)
END RECORD
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL cpprmt004()
END MAIN
# Funcion Para Desplegar El Menu de Opciones
FUNCTION cpprmt004()
OPTIONS
ERROR LINE 24,
FORM LINE 8
OPEN FORM cpfmmt004 FROM "cpfmmt004"
DISPLAY FORM cpfmmt004
MENU "OPCION"
COMMAND "Adicionar" "<Esc> Adiciona Registro <Delete> Cancela Operacion"
LET int_flag = false
CALL cpprad04()
COMMAND "Consulta-modifica"
"<Esc> Busca Registro <Ctrl-c> Cancela Operacion"
LET int_flag = false
CALL cpprmf04()
COMMAND "Salir" "Retorna al menu anterior"
EXIT MENU
END MENU
END FUNCTION
# Funcion Para Agregar Registros a la tabla de transacciones de cxc
FUNCTION cpprad04()
CLEAR FORM
INITIALIZE c_limpia.* TO NULL
LET c_limpia.fecha_orig = TODAY
DISPLAY BY NAME c_limpia.fecha_orig
DISPLAY "Buscando Ultimo Numero... Espere Por Favor" AT 23,1 ATTRIBUTE (BOLD)
SELECT MAX(num_doc) INTO c_limpia.num_doc
FROM cptb00001
WHERE tipo_doc = "RC"
IF c_limpia.num_doc IS NULL THEN
LET c_limpia.num_doc = 0
END IF
DISPLAY " " AT 23,1
LET c_limpia.num_doc = c_limpia.num_doc + 1 USING "<<<<<<"
INPUT BY NAME c_limpia.* WITHOUT DEFAULTS
{ ON KEY (control-w)
CASE
WHEN INFIELD(cod_sp)
CALL busca_suplidor()
IF int_flag THEN
LET int_flag = FALSE
LET factura.cod_sp = null
LET factura.cod_sp_sec = null
LET nom_sup = null
END IF
LET c_limpia.cod_sp = factura.cod_sp
LET c_limpia.cod_sp_sec = factura.cod_sp_sec
IF c_limpia.cod_sp_sec IS NULL OR c_limpia.cod_sp_sec = 0 THEN
NEXT FIELD cod_sp
ELSE
DISPLAY BY NAME c_limpia.cod_sp,c_limpia.cod_sp_sec,nom_sup
NEXT FIELD num_doc
END IF
EXIT CASE
WHEN INFIELD(cod_sp_sec)
CALL busca_suplidor()
LET int_flag = FALSE
IF c_limpia.cod_sp_sec IS NULL OR c_limpia.cod_sp_sec = 0 THEN
NEXT FIELD cod_sp
ELSE
DISPLAY BY NAME c_limpia.cod_sp,c_limpia.cod_sp_sec,nom_sup
NEXT FIELD num_doc
END IF
EXIT CASE
END CASE
NEXT FIELD num_doc
}
AFTER FIELD fecha_orig
IF c_limpia.fecha_orig IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_orig
END IF
LET p_fechas = c_limpia.fecha_orig
CALL prd(p_fechas)
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha_orig
END IF
BEFORE FIELD cod_sp_sec
DISPLAY BY NAME c_limpia.*
AFTER FIELD cod_sp_sec
IF c_limpia.cod_sp_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp_sec
END IF
SELECT nom_sp INTO nom_sup
FROM cotb00001
WHERE cod_sp = c_limpia.cod_sp AND
cod_sp_sec = c_limpia.cod_sp_sec AND
status_t is null
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
DISPLAY BY NAME nom_sup
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
SELECT UNIQUE @num_doc FROM cptb00001
WHERE @num_doc = c_limpia.num_doc AND
@tipo_doc = "RC" AND
status_t is null
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD fecha_orig
END IF
EXIT INPUT
END INPUT
FOR idx = 1 TO 7
LET arr_limpia[idx].p_aplica_a = null
LET arr_limpia[idx].debito = null
LET arr_limpia[idx].credito= null
DISPLAY arr_limpia[idx].p_aplica_a TO s_limpia[idx].p_aplica_a
DISPLAY arr_limpia[idx].debito TO s_limpia[idx].debito
DISPLAY arr_limpia[idx].credito TO s_limpia[idx].credito
END FOR
LABEL vuelve:
## AQUI SE INTRODUCEN LOS DATOS DEL ARREGLO
INPUT ARRAY arr_limpia WITHOUT DEFAULTS FROM s_limpia.*
## VENTANA PARA BUSCAR LOS DOCUMENTOS
ON KEY (CONTROL-W)
CASE
WHEN INFIELD (p_aplica_a)
CALL busca_facturas()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD p_aplica_a
END IF
IF arr_limpia[curr].debito < 0 THEN
LET arr_limpia[curr].debito = arr_limpia[curr].debito * -1
END IF
IF existe = "N" THEN
LET existe = "S"
NEXT FIELD p_aplica_a
END IF
DISPLAY arr_limpia[curr].p_aplica_a to
s_limpia[scr_l].p_aplica_a
DISPLAY arr_limpia[curr].debito to
s_limpia[scr_l].debito
NEXT FIELD debito
END CASE
BEFORE ROW
LET curr = arr_curr()
LET scr_l = scr_line()
AFTER FIELD p_aplica_a
IF arr_limpia[curr].p_aplica_a IS NOT NULL THEN
# Controla que la factura pertenezca al cliente
SELECT UNIQUE a.num_doc FROM cptb00001 a
WHERE a.num_doc = arr_limpia[curr].p_aplica_a and
a.cod_sp = c_limpia.cod_sp AND
a.cod_sp_sec = c_limpia.cod_sp_sec AND
a.status_t is null
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD p_aplica_a
END IF
SELECT SUM(a.valor) INTO valor_fac FROM cptb00001 a
WHERE a.aplica_a = arr_limpia[curr].p_aplica_a and
a.cod_sp = c_limpia.cod_sp AND
a.cod_sp_sec = c_limpia.cod_sp_sec AND
a.status_t is null
IF valor_fac > 0 THEN
LET arr_limpia[curr].debito = valor_fac
DISPLAY arr_limpia[curr].debito to s_limpia[scr_l].debito
ELSE
LET arr_limpia[curr].credito = valor_fac
DISPLAY arr_limpia[curr].credito to s_limpia[scr_l].credito
END IF
END IF
AFTER ROW
LET t_debito = 0
LET t_credito = 0
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].debito is not null THEN
LET t_debito = t_debito + arr_limpia[idx].debito
END IF
IF arr_limpia[idx].credito is not null THEN
LET t_credito= t_credito + arr_limpia[idx].credito
END IF
END FOR
DISPLAY BY NAME t_debito,t_credito ATTRIBUTE(BOLD)
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].p_aplica_a IS NOT NULL THEN
IF arr_limpia[idx].debito IS NULL AND
arr_limpia[idx].credito IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
LET arr_limpia[idx].p_aplica_a = null
DISPLAY arr_limpia[idx].p_aplica_a TO
s_limpia[scr_l].p_aplica_a
NEXT FIELD p_aplica_a
END IF
END IF
IF arr_limpia[idx].p_aplica_a IS NOT NULL THEN
IF (arr_limpia[idx].debito IS NOT NULL AND
arr_limpia[idx].credito IS NOT NULL) THEN
LET numero_msg = 360
CALL msg(numero_msg)
NEXT FIELD p_aplica_a
END IF
END IF
END FOR
# Controla que el valor aplicado a las facturas no exceda el monto del recibo
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Chequea si la transaccion esta cuadrada
LET c_valor = 0
LET c_valor1 = 0
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].debito IS NULL THEN
LET arr_limpia[idx].debito = 0
END IF
IF arr_limpia[idx].credito IS NULL THEN
LET arr_limpia[idx].credito = 0
END IF
LET c_valor = c_valor + arr_limpia[idx].debito
LET c_valor1 = c_valor1 + arr_limpia[idx].credito
IF arr_limpia[idx].debito = 0 THEN
LET arr_limpia[idx].debito = NULL
END IF
IF arr_limpia[idx].credito = 0 THEN
LET arr_limpia[idx].credito = NULL
END IF
END FOR
LET cuadre = c_valor - c_valor1
IF cuadre != 0 THEN
LET numero_msg = 174
CALL msg(numero_msg)
GOTO vuelve
END IF
#-------------------------------------------------------------------------------
LET c_valor = 0
# Actualizacion de la tabla de cuentas por cobrar
DISPLAY "Actualizando Tablas... Espere Por Favor" AT 23,1 ATTRIBUTE (BOLD)
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].debito IS NOT NULL OR
arr_limpia[idx].debito > 0 THEN
LET c_valor = arr_limpia[idx].debito * -1
END IF
IF arr_limpia[idx].credito IS NOT NULL OR
arr_limpia[idx].credito > 0 THEN
LET c_valor = arr_limpia[idx].credito
END IF
IF arr_limpia[idx].p_aplica_a IS NOT NULL THEN
INSERT INTO cptb00001(num_doc,tipo_doc,cod_sp,cod_sp_sec,
fecha_orig,aplica_a,valor,status_t,us_crea,fech_crea)
VALUES
(c_limpia.num_doc,"RC",c_limpia.cod_sp,
c_limpia.cod_sp_sec,c_limpia.fecha_orig,
arr_limpia[idx].p_aplica_a,c_valor,
null,SUSER_SNAME(),GETDATE())
END IF
END FOR
DISPLAY " "
UPDATE cctb00003 set ult_recibo = c_limpia.num_doc
WHERE tipo_doc = "RC"
DISPLAY " " AT 23,1
LET numero_msg = 1
CALL msg(numero_msg)
END FUNCTION
FUNCTION cpprmf04()
CLEAR FORM
CONSTRUCT BY NAME criterio ON cod_sp,cod_sp_sec,num_doc
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET selec = "SELECT fecha_orig,cod_sp,cod_sp_sec,num_doc,us_crea,",
"fech_crea ",
" FROM cptb00001 ",
"WHERE ",criterio clipped,
" AND tipo_doc = 'RC' ",
" AND status_t is null ",
" ORDER BY num_doc"
DISPLAY "Buscando Documento(s)... Espere Por Favor " AT 23,1 ATTRIBUTE(BOLD)
PREPARE comando FROM selec
DECLARE busca SCROLL CURSOR FOR comando
OPEN busca
DISPLAY " " AT 23,1
FETCH FIRST busca INTO c_limpia.*,usuario,fecha_crea
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL busca_cliente()
MENU "OPCION"
COMMAND "Siguiente" "Busca Siguiente Registro Cumpla Condicion"
FETCH NEXT busca INTO c_limpia.*,usuario,fecha_crea
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL busca_cliente()
COMMAND "Anterior" "Busca Registro Anterior Cumpla Condicion"
FETCH PREVIOUS busca INTO c_limpia.*,usuario,fecha_crea
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL busca_cliente()
COMMAND "Primero" "Busca Registro Anterior Cumpla Condicion"
FETCH FIRST busca INTO c_limpia.*,usuario,fecha_crea
LET numero_msg = 4
CALL msg(numero_msg)
CALL busca_cliente()
COMMAND "Ultimo" "Busca Registro Anterior Cumpla Condicion"
FETCH LAST busca INTO c_limpia.*,usuario,fecha_crea
LET numero_msg = 5
CALL msg(numero_msg)
CALL busca_cliente()
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
INPUT BY NAME c_limpia.* WITHOUT DEFAULTS
{
ON KEY (control-w)
CASE
WHEN INFIELD(cod_sp)
CALL busca_suplidor()
IF int_flag THEN
LET int_flag = FALSE
LET factura.cod_sp = null
LET factura.cod_sp_sec = null
LET nom_sup = null
END IF
LET c_limpia.cod_sp = factura.cod_sp
LET c_limpia.cod_sp_sec = factura.cod_sp_sec
IF c_limpia.cod_sp_sec IS NULL OR c_limpia.cod_sp_sec = 0 THEN
NEXT FIELD cod_sp
ELSE
DISPLAY BY NAME c_limpia.cod_sp,c_limpia.cod_sp_sec,nom_sup
NEXT FIELD num_doc
END IF
EXIT CASE
WHEN INFIELD(cod_sp_sec)
CALL busca_suplidor()
LET int_flag = FALSE
IF c_limpia.cod_sp_sec IS NULL OR c_limpia.cod_sp_sec = 0 THEN
NEXT FIELD cod_sp
ELSE
DISPLAY BY NAME c_limpia.cod_sp,c_limpia.cod_sp_sec,nom_sup
NEXT FIELD num_doc
END IF
EXIT CASE
END CASE
}
AFTER FIELD fecha_orig
IF c_limpia.fecha_orig IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_orig
END IF
LET p_fechas = c_limpia.fecha_orig
CALL prd(p_fechas)
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha_orig
END IF
BEFORE FIELD cod_sp_sec
DISPLAY BY NAME c_limpia.*
AFTER FIELD cod_sp_sec
IF c_limpia.cod_sp_sec IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_sp_sec
END IF
SELECT nom_sp INTO nom_sup
FROM cotb00001
WHERE cod_sp = c_limpia.cod_sp AND
cod_sp_sec = c_limpia.cod_sp_sec AND
status_t is null
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_sp
END IF
DISPLAY BY NAME nom_sup
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
DECLARE busca_trx CURSOR FOR
SELECT a.aplica_a,a.valor FROM cptb00001 a
WHERE a.num_doc = c_limpia.num_doc and
a.tipo_doc = "RC" and
a.cod_sp = c_limpia.cod_sp and
a.cod_sp_sec = c_limpia.cod_sp_sec
LET idx = 1
FOREACH busca_trx INTO arr_limpia[idx].*
IF arr_limpia[idx].debito < 0 THEN
LET arr_limpia[idx].credito = arr_limpia[idx].debito
LET arr_limpia[idx].debito = NULL
END IF
LET idx = idx + 1
END FOREACH
CALL set_count(idx - 1 )
LABEL vuelve:
INPUT ARRAY arr_limpia WITHOUT DEFAULTS FROM s_limpia.*
## VENTANA PARA BUSCAR LOS DOCUMENTOS
ON KEY (CONTROL-W)
CASE
WHEN INFIELD (p_aplica_a)
CALL busca_facturas()
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
NEXT FIELD p_aplica_a
END IF
IF existe = "N" THEN
LET existe = "S"
NEXT FIELD p_aplica_a
END IF
DISPLAY arr_limpia[curr].p_aplica_a to s_limpia[scr_l].p_aplica_a
DISPLAY arr_limpia[curr].debito to s_limpia[scr_l].debito
NEXT FIELD debito
END CASE
BEFORE ROW
LET curr = arr_curr()
LET scr_l = scr_line()
AFTER FIELD p_aplica_a
IF arr_limpia[curr].p_aplica_a IS NOT NULL THEN
# Controla que la factura pertenezca al cliente
SELECT UNIQUE a.num_doc FROM cptb00001 a
WHERE a.num_doc = arr_limpia[curr].p_aplica_a and
a.cod_sp = c_limpia.cod_sp AND
a.cod_sp_sec = c_limpia.cod_sp_sec AND
a.status_t is null
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD p_aplica_a
END IF
END IF
AFTER ROW
LET t_debito = 0
LET t_credito = 0
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].debito is not null THEN
LET t_debito = t_debito + arr_limpia[idx].debito
END IF
IF arr_limpia[idx].credito is not null THEN
LET t_credito= t_credito + arr_limpia[idx].credito
END IF
END FOR
DISPLAY BY NAME t_debito,t_credito ATTRIBUTE(BOLD)
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].p_aplica_a IS NOT NULL THEN
IF arr_limpia[idx].debito IS NULL AND
arr_limpia[idx].credito IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
LET arr_limpia[idx].p_aplica_a = null
DISPLAY arr_limpia[idx].p_aplica_a TO
s_limpia[scr_l].p_aplica_a
NEXT FIELD p_aplica_a
END IF
END IF
IF arr_limpia[idx].p_aplica_a IS NOT NULL THEN
IF (arr_limpia[idx].debito IS NOT NULL AND
arr_limpia[idx].credito IS NOT NULL) THEN
LET numero_msg = 360
CALL msg(numero_msg)
NEXT FIELD p_aplica_a
END IF
END IF
END FOR
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Chequea si la transaccion esta cuadrada
LET c_valor = 0
LET c_valor1 = 0
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].debito IS NULL THEN
LET arr_limpia[idx].debito = 0
END IF
IF arr_limpia[idx].credito IS NULL THEN
LET arr_limpia[idx].credito = 0
END IF
LET c_valor = c_valor + arr_limpia[idx].debito
LET c_valor1 = c_valor1 + arr_limpia[idx].credito
IF arr_limpia[idx].debito = 0 THEN
LET arr_limpia[idx].debito = NULL
END IF
IF arr_limpia[idx].credito = 0 THEN
LET arr_limpia[idx].credito = NULL
END IF
END FOR
LET cuadre = c_valor - c_valor1
IF cuadre != 0 THEN
LET numero_msg = 174
CALL msg(numero_msg)
GOTO vuelve
END IF
LET c_valor = 0
# Actualizacion de la tabla de cuentas por cobrar
DISPLAY "Actualizando Tablas... Espere Por Favor" AT 23,1
ATTRIBUTE (BOLD)
DELETE FROM cptb00001 WHERE num_doc = c_limpia.num_doc AND
tipo_doc = "RC"
FOR idx = 1 TO arr_count()
IF arr_limpia[idx].debito IS NOT NULL OR
arr_limpia[idx].debito > 0 THEN
LET c_valor = arr_limpia[idx].debito
END IF
IF arr_limpia[idx].credito IS NOT NULL OR
arr_limpia[idx].credito > 0 THEN
LET c_valor = arr_limpia[idx].credito * -1
END IF
IF arr_limpia[idx].p_aplica_a IS NOT NULL THEN
INSERT INTO cptb00001(num_doc,tipo_doc,cod_sp,
cod_sp_sec,
fecha_orig,aplica_a,valor,status_t,
us_crea,fech_crea,us_mod,fech_mod)
VALUES
(c_limpia.num_doc,"RC",c_limpia.cod_sp,
c_limpia.cod_sp_sec,c_limpia.fecha_orig,
arr_limpia[idx].p_aplica_a,c_valor,null,
usuario,fecha_crea,SUSER_SNAME(),GETDATE())
END IF
END FOR
DISPLAY " " AT 23,1
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY("L") "eLiminar"
"Elimina Logicamente Este Movimiento"
PROMPT "Esta Seguro de Eliminar Este Registro(S/N)?" FOR CHAR eli
LET eli = UPSHIFT(eli)
IF eli = "S" THEN
UPDATE cctb00001 SET status_t = "E",
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE num_doc = c_limpia.num_doc AND
tipo_doc = "RC"
END IF
COMMAND "Retornar" "Retorna Al menu Anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_cliente()
SELECT nom_sp INTO nom_sup
FROM cotb00001
WHERE cod_sp = c_limpia.cod_sp AND
cod_sp_sec = c_limpia.cod_sp_sec
DISPLAY BY NAME nom_sup,c_limpia.*
END FUNCTION
FUNCTION busca_facturas()
OPEN WINDOW busqueda1 AT 10,10 WITH FORM "cpfmwd008"
ATTRIBUTE (BORDER,FORM LINE FIRST + 1, comment line last)
DECLARE aplicar CURSOR FOR
SELECT a.aplica_a,SUM(a.valor) FROM cptb00001 a
WHERE a.cod_sp = c_limpia.cod_sp AND
a.cod_sp_sec = c_limpia.cod_sp_sec AND a.status_t is null
GROUP BY 1
HAVING SUM(a.valor) != 0
ORDER BY 1
LET existe = "N"
LET idx = 1
FOREACH aplicar INTO aplica_wd1[idx].numero,aplica_wd1[idx].pendiente
SELECT unique a.num_doc FROM cptb00001 a
WHERE a.num_doc = aplica_wd1[idx].numero
IF STATUS = NOTFOUND THEN
SELECT UNIQUE a.num_doc INTO num_ck FROM cptb00001 a
WHERE a.aplica_a = aplica_wd1[idx].numero
IF STATUS != NOTFOUND THEN
LET aplica_wd1[idx].numero = num_ck
END IF
END IF
IF aplica_wd1[idx].numero IS NOT NULL THEN
LET idx = idx + 1
END IF
END FOREACH
IF existe = "N" and idx = 1 THEN
LET numero_msg = 3
CALL msg(numero_msg)
GOTO salir
END IF
CALL set_count(idx-1)
DISPLAY ARRAY aplica_wd1 TO consart.*
LET curr1 = arr_curr()
IF int_flag THEN
GOTO salir
END IF
LET arr_limpia[curr].p_aplica_a = aplica_wd1[curr1].numero
LET arr_limpia[curr].debito = aplica_wd1[curr1].pendiente
LABEL salir:
CLOSE WINDOW busqueda1
END FUNCTION