1079 lines
37 KiB
Plaintext
1079 lines
37 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------------
|
|
PROGRAMA : cgprmt023
|
|
OBJETIVO : CREAR SOLICITUDES DE PAGOS PARA TRANSFERENCIAS BANCARIAS.
|
|
FECHA DESARROLLO: 02/04/2024
|
|
DESARROLLADO POR: LUIS MIGUEL
|
|
--------------------------------------------------------------------------------
|
|
}
|
|
IMPORT util
|
|
GLOBALS "cgprgb000.4gl"
|
|
DEFINE usuario, clave VARCHAR(50),
|
|
tt_pen,db,cr DEC(12,2),acceso,usada CHAR(2),
|
|
us_crea CHAR(50),fech_crea DATETIME YEAR TO MINUTE ,
|
|
opt1 CHAR(3),pperfil,nivel INT
|
|
DEFINE supl DYNAMIC ARRAY OF RECORD
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
nom_sp CHAR(100)
|
|
END RECORD
|
|
|
|
DEFINE solicitud RECORD
|
|
numDoc INT,
|
|
tipoSolicitud VARCHAR(50),
|
|
fecha DATE,
|
|
cod_sp SMALLINT,
|
|
cod_sp_Sec INT,
|
|
portador VARCHAR(100),
|
|
codigo CHAR(10),
|
|
cuenta_no1 VARCHAR(25),
|
|
monto DECIMAL(18, 2),
|
|
observacion STRING,
|
|
autorizacion CHAR(2)
|
|
END RECORD,
|
|
|
|
cdoc1 DYNAMIC ARRAY OF RECORD
|
|
num_doc3 INT,
|
|
fecha DATE
|
|
,cuenta_no3 CHAR(19)
|
|
,cod_sp1 int
|
|
,cod_sp_sec1 int
|
|
,suplidor CHAR(100),
|
|
tiposolicitud1 int
|
|
,monto DEC(12,2),
|
|
usada CHAR(2)
|
|
END RECORD,
|
|
scr_l,curr,numero_msg INTEGER,selec CHAR(250)
|
|
|
|
|
|
|
|
DEFINE SaldarDocs DYNAMIC ARRAY OF RECORD
|
|
tipo VARCHAR(2),
|
|
num_oc INT,
|
|
num_doc CHAR(10),
|
|
valor_pendiente DECIMAL(18, 2),
|
|
valor_pagado DECIMAL(18, 2)
|
|
END RECORD
|
|
|
|
DEFINE CuentasAfectar DYNAMIC ARRAY OF RECORD
|
|
cuenta_no VARCHAR(19),
|
|
departamento INT,
|
|
cod_aux SMALLINT,
|
|
cod_sec SMALLINT,
|
|
nom_cuenta VARCHAR(100),
|
|
debito DECIMAL(18, 2),
|
|
credito DECIMAL(18, 2)
|
|
END RECORD
|
|
|
|
DEFINE GlobalIdx INT
|
|
DEFINE idx INT
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("CGPRMT037.TXT")
|
|
CALL ARG_VAL(1) RETURNING usuario
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT TO "smarmotech" AS "MARMOTECH" USER usuario USING clave
|
|
|
|
SELECT a.cod_perfil
|
|
INTO pperfil
|
|
FROM seg0001 a
|
|
WHERE a.usuario = usuario
|
|
|
|
CALL cgprmt037()
|
|
END MAIN
|
|
|
|
FUNCTION cgprmt037()
|
|
|
|
# CALL fgl_settitle("SOLICITUD PAGO PROVEEDORES")
|
|
|
|
OPEN WINDOW w1 WITH FORM "cgfmmt037"
|
|
|
|
MENU
|
|
|
|
ON ACTION adicionar
|
|
CALL cgprad037()
|
|
CLEAR FORM
|
|
CLEAR record2.*
|
|
CALL SaldarDocs.clear()
|
|
CALL CuentasAfectar.clear()
|
|
ON ACTION consulta_modifica
|
|
CALL cgprmf037()
|
|
ON ACTION salir
|
|
EXIT MENU
|
|
END MENU
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION cgprad037()
|
|
INITIALIZE solicitud.* TO null
|
|
INITIALIZE GlobalIdx TO NULL
|
|
LET solicitud.fecha=today
|
|
SELECT TOP(1) numDoc INTO GlobalIdx FROM cgtb00037 ORDER BY numDoc DESC
|
|
|
|
IF GlobalIdx IS NULL THEN
|
|
LET GlobalIdx = 1;
|
|
ELSE
|
|
LET GlobalIdx = GlobalIdx + 1;
|
|
END IF
|
|
|
|
LET solicitud.numDoc = GlobalIdx USING "&&&&&&" --999999 DOCUMENTS
|
|
|
|
|
|
DIALOG ATTRIBUTES(unBUFFERED)
|
|
|
|
INPUT BY NAME solicitud.* ATTRIBUTES (WITHOUT DEFAULTS)
|
|
|
|
BEFORE INPUT
|
|
|
|
LET solicitud.fecha =TODAY
|
|
CALL busca_monedas()
|
|
CALL cuenta("formonly.cuenta_no1")
|
|
CALL solicitud()
|
|
NEXT FIELD tipoSolicitud
|
|
|
|
DISPLAY solicitud.cuenta_no1
|
|
|
|
ON ACTION suplidor
|
|
|
|
CALL busca_suplidor()
|
|
LET int_flag = FALSE
|
|
IF solicitud.cod_sp_sec IS NULL OR solicitud.cod_sp_sec = 0 THEN
|
|
NEXT FIELD cod_sp
|
|
ELSE
|
|
DISPLAY BY NAME solicitud.cod_sp,solicitud.cod_sp_sec,solicitud.portador
|
|
NEXT FIELD monto
|
|
END IF
|
|
AFTER FIELD tipoSolicitud
|
|
CALL CuentasAfectar.clear()
|
|
IF solicitud.tipoSolicitud IS NOT NULL THEN
|
|
DECLARE buscara CURSOR FOR
|
|
SELECT a.cuenta_no,a.descripcion
|
|
FROM cptb00009 a
|
|
WHERE a.status_t IS NULL AND a.tipo = solicitud.tipoSolicitud
|
|
|
|
LET idx = 1
|
|
|
|
FOREACH buscara INTO CuentasAfectar[idx].cuenta_no,CuentasAfectar[idx].nom_cuenta
|
|
DISPLAY CuentasAfectar[idx].cuenta_no
|
|
LET idx = idx + 1
|
|
|
|
END FOREACH
|
|
|
|
NEXT FIELD cod_sp
|
|
ELSE
|
|
NEXT FIELD tipoSolicitud
|
|
END IF
|
|
|
|
AFTER FIELD cod_sp
|
|
NEXT FIELD cod_sp_Sec
|
|
CALL solicitud()
|
|
AFTER FIELD cod_sp_Sec
|
|
IF solicitud.cod_sp_Sec IS NULL THEN
|
|
NEXT FIELD portador
|
|
ELSE
|
|
|
|
IF solicitud.cod_sp IS NOT NULL
|
|
AND solicitud.cod_sp_Sec IS NOT NULL THEN
|
|
|
|
SELECT nom_sp
|
|
INTO solicitud.portador
|
|
FROM cotb00001
|
|
WHERE cod_sp = solicitud.cod_sp
|
|
AND cod_sp_sec = solicitud.cod_sp_Sec
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
END IF
|
|
|
|
NEXT FIELD portador
|
|
END IF
|
|
|
|
AFTER FIELD portador
|
|
NEXT FIELD codigo
|
|
|
|
AFTER FIELD codigo
|
|
NEXT FIELD cuenta_no1
|
|
|
|
AFTER FIELD cuenta_no1
|
|
NEXT FIELD monto
|
|
|
|
AFTER FIELD monto
|
|
NEXT FIELD observacion
|
|
|
|
AFTER FIELD observacion
|
|
|
|
AFTER INPUT
|
|
IF solicitud.monto IS NULL OR solicitud.monto=0 THEN
|
|
CALL fgl_winmessage("ERROR","MONTO NO PUEDE ESTAR VACIO NI VALOR 0","stop")
|
|
NEXT FIELD monto
|
|
END IF
|
|
IF solicitud.cuenta_no1 IS NULL THEN
|
|
CALL fgl_winmessage("errro","EL NUMERO DE CUENTA NO PUEDE QUEDARSE EN BLANCO","STOP")
|
|
END IF
|
|
|
|
|
|
|
|
END INPUT
|
|
|
|
INPUT ARRAY SaldarDocs FROM SaldarDocs.*
|
|
|
|
BEFORE INPUT
|
|
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
{ IF solicitud.cod_sp IS NOT NULL
|
|
AND solicitud.cod_sp_Sec IS NOT NULL THEN
|
|
LABEL vuelta:
|
|
PROMPT "Afecta Cuentas Por Pagar?(S/N) " FOR CHAR opcion
|
|
LET opcion = upshift(opcion)
|
|
|
|
IF opcion != "S" AND
|
|
opcion != "N" THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
GOTO vuelta
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
IF opcion = "N" THEN
|
|
CALL SaldarDocs.clear()
|
|
|
|
END IF
|
|
IF opcion = "N" THEN
|
|
EXIT INPUT
|
|
END IF
|
|
END IF }
|
|
|
|
ON ACTION busca_aplicacion
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
###### Proceso para abrir window en caso de desconocer el numero de orden
|
|
###### perteneciente a la factura que se aplicara el pago.
|
|
CALL busca_aplicacion1(solicitud.cod_sp,solicitud.cod_sp_Sec) RETURNING SaldarDocs[curr].num_doc,SaldarDocs[curr].valor_pendiente
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
AFTER FIELD num_oc
|
|
IF SaldarDocs[curr].num_oc != 999999 THEN #IS NOT NULL THEN
|
|
IF solicitud.cod_sp IS NULL THEN
|
|
|
|
##### Chequeando que el numero de orden a digitar exista en la maestra de pago[
|
|
|
|
SELECT UNIQUE a.tipo,a.orden_no,a.cod_sp,a.cod_sp_sec
|
|
INTO p_tipo,p_orden,solicitud.cod_sp,solicitud.cod_sp_sec
|
|
FROM cptb00001 a WHERE a.tipo = SaldarDocs[curr].tipo AND
|
|
a.orden_no = SaldarDocs[curr].num_oc
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
###### Chequeando que el numero de orden exista en la maestra de orden
|
|
|
|
SELECT b.num_oc
|
|
FROM cotb00014 b WHERE b.tipo = SaldarDocs[curr].tipo AND
|
|
b.num_oc = SaldarDocs[curr].num_oc AND
|
|
b.cod_sp = solicitud.cod_sp AND
|
|
b.cod_sp_sec = solicitud.cod_sp_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
|
|
|
|
|
|
AFTER FIELD num_doc
|
|
SELECT a.aplica_a,SUM(a.valor) INTO SaldarDocs[curr].num_doc,SaldarDocs[curr].valor_pendiente FROM cptb00001 a
|
|
WHERE a.cod_sp = solicitud.cod_sp AND a.cod_sp_sec = solicitud.cod_sp_sec AND
|
|
a.status_t IS NULL AND a.aplica_a =SaldarDocs[curr].num_doc
|
|
GROUP BY aplica_a HAVING SUM(a.valor) != 0 ORDER BY 1
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 126
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
DISPLAY SaldarDocs[curr].num_doc TO SaldarDocs[scr_l].num_doc
|
|
DISPLAY SaldarDocs[curr].valor_pendiente TO SaldarDocs[scr_l].valor_pendiente
|
|
|
|
AFTER FIELD valor_pagado
|
|
IF saldardocs[curr].valor_pagado>saldardocs[curr].valor_pendiente THEN
|
|
CALL fgl_winmessage("error","Valor Pagado No Puede ser Mayor Al Valor Pendiente","stop")
|
|
NEXT FIELD valor_pagado
|
|
END IF
|
|
AFTER INPUT
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
LET tt_pen=0
|
|
FOR idx=1 TO SaldarDocs.getLength()
|
|
|
|
LET tt_pen=tt_pen+SaldarDocs[curr].valor_pagado
|
|
|
|
DISPLAY tt_pen
|
|
END FOR
|
|
|
|
IF tt_pen<solicitud.monto THEN
|
|
DISPLAY "mayor",tt_pen
|
|
CALL fgl_winmessage("error","Valor Pagado es Menor al Monto Solicitud","stop")
|
|
NEXT FIELD valor_pagado
|
|
END IF
|
|
IF tt_pen>solicitud.monto THEN
|
|
DISPLAY "menor",tt_pen
|
|
CALL fgl_winmessage("error ","Valor Pagado es Mayor al Monto Solicitud","stop")
|
|
NEXT FIELD valor_pagado
|
|
END IF
|
|
|
|
END INPUT
|
|
INPUT ARRAY CuentasAfectar FROM CuentasAfectar.*
|
|
|
|
BEFORE INPUT
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
ON ACTION bcuenta
|
|
CALL busca_cuenta() RETURNING CuentasAfectar[curr].cuenta_no,CuentasAfectar[curr].nom_cuenta
|
|
|
|
DISPLAY CuentasAfectar[curr].cuenta_no TO CuentasAfectar[scr_l].cuenta_no
|
|
DISPLAY CuentasAfectar[curr].nom_cuenta TO CuentasAfectar[scr_l].nom_cuenta
|
|
AFTER FIELD cuenta_no
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
IF CuentasAfectar[curr].cuenta_no IS NOT NULL THEN
|
|
SELECT a.descripcion,a.nivel INTO CuentasAfectar[curr].nom_cuenta,nivel FROM cgtb00001 a
|
|
WHERE a.cuenta_no=CuentasAfectar[curr].cuenta_no AND status_t IS NULL
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
IF nivel < 3 THEN
|
|
LET numero_msg = 175
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
DISPLAY CuentasAfectar[curr].nom_cuenta TO CuentasAfectar[scr_l].nom_cuenta
|
|
|
|
|
|
|
|
AFTER INPUT
|
|
|
|
|
|
END INPUT
|
|
ON ACTION guardar
|
|
|
|
|
|
LET valor=0
|
|
LET monto=0
|
|
LET remanente=0
|
|
FOR idx=1 TO CuentasAfectar.getLength()
|
|
|
|
IF CuentasAfectar[idx].debito IS NULL THEN
|
|
LET CuentasAfectar[idx].debito =0
|
|
END IF
|
|
IF CuentasAfectar[idx].credito IS NULL THEN
|
|
LET CuentasAfectar[idx].credito =0
|
|
END IF
|
|
|
|
LET valor = valor + CuentasAfectar[idx].debito
|
|
LET monto = CuentasAfectar[idx].credito + monto
|
|
|
|
END FOR
|
|
|
|
LET db=valor
|
|
LET cr=monto
|
|
LET monto = valor - monto
|
|
LET remanente=monto-solicitud.monto
|
|
DISPLAY BY NAME db,cr,remanente
|
|
DISPLAY "monto",monto
|
|
IF monto != solicitud.monto THEN
|
|
LET numero_msg = 178
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
|
|
|
|
IF solicitud.numDoc IS NULL OR solicitud.numDoc=1 THEN
|
|
DISPLAY "num",solicitud.numDoc
|
|
LET solicitud.numDoc =1
|
|
INSERT INTO cgtb00037 (numdoc,us_crea,fech_crea)
|
|
VALUES(solicitud.numDoc,usuario,getdate())
|
|
DISPLAY "num1",solicitud.numDoc
|
|
ELSE
|
|
#LET solicitud.numDoc=solicitud.numDoc+1
|
|
|
|
UPDATE cgtb00037
|
|
SET numdoc=solicitud.numDoc,
|
|
us_mod=usuario,
|
|
fech_mod=getdate()
|
|
END IF
|
|
|
|
|
|
BEGIN WORK
|
|
|
|
INSERT INTO cgtb00040
|
|
(numdoc,cuenta_no,tipo_solicitud,monto,cod_sp,cod_sp_Sec,portador,observacion,moneda,us_crea,fech_crea,autorizar,fecha,usada)
|
|
VALUES(solicitud.numDoc,solicitud.cuenta_no1,solicitud.tipoSolicitud,solicitud.monto,solicitud.cod_sp,solicitud.cod_sp_Sec,
|
|
solicitud.portador,solicitud.observacion,solicitud.codigo,usuario,getdate(),solicitud.autorizacion,solicitud.fecha,"N")
|
|
FOR idx=1 TO SaldarDocs.getLength()
|
|
|
|
IF SaldarDocs[idx].num_doc IS NOT NULL THEN
|
|
|
|
INSERT INTO cgtb00039
|
|
(numdoc,tipo,num_oc,num_doc,valor_pendiente,valor_pagado,us_crea,fech_Crea)
|
|
VALUES(Solicitud.numDoc,SaldarDocs[idx].tipo,SaldarDocs[idx].num_oc,SaldarDocs[idx].num_doc,SaldarDocs[idx].valor_pendiente,
|
|
SaldarDocs[idx].valor_pagado,usuario,getdate())
|
|
END IF
|
|
END FOR
|
|
|
|
FOR idx=1 TO CuentasAfectar.getLength()
|
|
|
|
IF CuentasAfectar[idx].cuenta_no is NOT NULL THEN
|
|
|
|
INSERT INTO cgtb00041
|
|
(numdoc,cuenta_no,departamento,id_auxiliar,cod_sec,nom_cuenta,debito,credito,us_crea,fech_crea)
|
|
VALUES(solicitud.numDoc,CuentasAfectar[idx].cuenta_no,CuentasAfectar[idx].departamento,CuentasAfectar[idx].cod_aux,CuentasAfectar[idx].cod_sec,
|
|
CuentasAfectar[idx].nom_cuenta,CuentasAfectar[idx].debito,CuentasAfectar[idx].credito,usuario,getdate())
|
|
END IF
|
|
END FOR
|
|
|
|
IF status<0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("error","NO SE PUDO INSERTAR LA DATA","STOP")
|
|
ELSE
|
|
COMMIT WORK
|
|
LET r_filename ="cgprmt037.4rp"
|
|
LET r_output = "SVG"
|
|
#LET preview = 1
|
|
|
|
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(true)
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
START REPORT solicitud1 TO XML HANDLER handler
|
|
|
|
FOR idx = 1 TO CuentasAfectar.getLength()
|
|
IF CuentasAfectar[idx].cuenta_no IS NOT NULL THEN
|
|
OUTPUT TO REPORT solicitud1(solicitud.numdoc, CuentasAfectar[idx].cuenta_no,CuentasAfectar[idx].departamento,
|
|
CuentasAfectar[idx].cod_aux,CuentasAfectar[idx].cod_sec,CuentasAfectar[idx].nom_cuenta,CuentasAfectar[idx].debito,
|
|
CuentasAfectar[idx].credito,solicitud.observacion)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT solicitud1
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
ON ACTION CANCEL
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
EXIT DIALOG
|
|
BEFORE DIALOG
|
|
CALL seg000(usuario,pperfil,'autoriza.cgprmt037') RETURNING acceso
|
|
DISPLAY "usuario ",usuario," ",pperfil
|
|
IF acceso = "SI" THEN
|
|
|
|
CALL dialog.setFieldActive("autorizacion", TRUE )
|
|
ELSE
|
|
CALL DIALOG.setFieldActive("autorizacion",false)
|
|
END IF
|
|
|
|
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
|
|
FUNCTION cuenta(cuentaForm)
|
|
|
|
DEFINE
|
|
kcuenta VARCHAR(20),
|
|
kdescripcion CHAR(80),
|
|
cuenta_no ui.ComboBox,
|
|
cuentaForm STRING
|
|
|
|
{ IF flag THEN
|
|
LET cuentaForm = "formonly.cuenta_no"
|
|
ELSE
|
|
LET cuentaForm = "cuenta_no1"
|
|
END IF}
|
|
|
|
LET cuenta_no = ui.combobox.forname(cuentaForm)
|
|
|
|
DECLARE busca_cuenta CURSOR FOR
|
|
SELECT RTRIM(a.cuenta_no),
|
|
'(' + RTRIM(a.cuenta_no) + ')'+ RTRIM(a.descripcion)
|
|
FROM cgtb00001 a
|
|
WHERE a.status_t IS NULL AND a.banco='SI'
|
|
ORDER BY a.descripcion
|
|
|
|
CALL cuenta_no.clear()
|
|
FOREACH busca_cuenta INTO kcuenta, kdescripcion
|
|
CALL cuenta_no.additem(kcuenta, kdescripcion)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_aplicacion1(pcod,pcodsec)
|
|
DEFINE pcod,pcodsec INT
|
|
|
|
OPEN WINDOW busqueda1 AT 10,10 WITH FORM "cgfmwd006"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 1, comment line last)
|
|
|
|
LET selec = "SELECT a.aplica_a,SUM(a.valor) FROM cptb00001 a ",
|
|
"WHERE a.cod_sp = ? AND a.cod_sp_sec = ? AND ",
|
|
" a.status_t IS NULL AND a.aplica_a IS NOT NULL ",
|
|
"GROUP BY aplica_a HAVING SUM(a.valor) != 0 ORDER BY 1"
|
|
|
|
PREPARE comando1 FROM selec
|
|
DECLARE aplicar CURSOR FOR comando1
|
|
OPEN aplicar USING pcod,pcodsec
|
|
|
|
LET existe = "N"
|
|
LET idx = 1
|
|
WHILE STATUS != NOTFOUND
|
|
FETCH aplicar INTO aplica_wd[idx].*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
LET aplica_wd[idx].pendiente = aplica_wd[idx].pendiente #* -1
|
|
LET existe = "S"
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
IF existe = "N" AND idx = 1 THEN
|
|
LET numero_msg = 127
|
|
CALL msg(numero_msg)
|
|
GOTO salir
|
|
END IF
|
|
|
|
CALL SET_COUNT(idx-1)
|
|
DISPLAY ARRAY aplica_wd TO consart.*
|
|
LET curr1 = arr_curr()
|
|
LET SaldarDocs[curr].num_doc = aplica_wd[curr].aplica_a
|
|
LET SaldarDocs[curr].valor_pendiente = aplica_wd[curr].pendiente
|
|
|
|
LABEL salir:
|
|
CLOSE WINDOW busqueda1
|
|
RETURN SaldarDocs[curr].num_doc,SaldarDocs[curr].valor_pendiente
|
|
END FUNCTION
|
|
|
|
FUNCTION cgprmf037()
|
|
|
|
CLEAR FORM
|
|
|
|
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM )
|
|
CONSTRUCT criterio ON a.numdoc,a.cuenta_no
|
|
FROM numdoc1,cuenta_no2
|
|
|
|
BEFORE CONSTRUCT
|
|
|
|
AFTER CONSTRUCT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
END CONSTRUCT
|
|
ON ACTION buscar
|
|
CALL cdoc1.clear()
|
|
LET curr=arr_curr()
|
|
LET SELEC = " SELECT UNIQUE a.numdoc,a.fecha,a.cuenta_no,a.cod_sp,a.cod_sp_sec,
|
|
portador,a.tipo_solicitud,a.monto,a.usada FROM cgtb00040 a WHERE a.status_t is null and ",
|
|
criterio clipped,
|
|
" ORDER BY a.numdoc asc"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR WITH HOLD FOR busca
|
|
LET idx=1
|
|
FOREACH datos INTO cdoc1[idx].num_doc3,cdoc1[idx].fecha,cdoc1[idx].cuenta_no3,cdoc1[idx].cod_sp1
|
|
,cdoc1[idx].cod_sp_sec1,cdoc1[idx].suplidor,cdoc1[idx].tiposolicitud1,cdoc1[idx].monto,cdoc1[idx].usada
|
|
LET idx=idx+1
|
|
END FOREACH
|
|
IF idx=1 THEN
|
|
CALL FGL_winmessage("error","NO HAY REGISTROS CON ESA CONDICION","STOP")
|
|
EXIT DIALOG
|
|
END IF
|
|
DISPLAY ARRAY cdoc1 TO cdoc.*
|
|
BEFORE ROW
|
|
ON ACTION Escoger
|
|
LET curr=arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
SELECT a.usada INTO usada FROM cgtb00040 a
|
|
WHERE a.numdoc=cdoc1[curr].num_doc3
|
|
IF cdoc1[curr].usada ="N" OR cdoc1[curr].usada IS NULL THEN
|
|
LET solicitud.numDoc=cdoc1[curr].num_doc3
|
|
IF cdoc1[curr].num_doc3 IS NOT NULL THEN
|
|
LET selec1 =
|
|
" SELECT a.tipo,a.num_oc,a.num_doc,a.valor_pagado ",
|
|
"FROM cgtb00039 a ",
|
|
"WHERE a.numdoc=",cdoc1[curr].num_doc3," and status_t is null "
|
|
|
|
PREPARE comand4 FROM selec1
|
|
DECLARE busca1 CURSOR FOR comand4
|
|
LET idx=1
|
|
FOREACH busca1 INTO SaldarDocs[idx].tipo,SaldarDocs[idx].num_oc,
|
|
SaldarDocs[idx].num_doc,SaldarDocs[idx].valor_pagado
|
|
|
|
DISPLAY SaldarDocs[idx].num_doc TO SaldarDocs[idx].num_doc
|
|
DISPLAY SaldarDocs[idx].num_oc TO SaldarDocs[idx].num_oc
|
|
DISPLAY SaldarDocs[idx].tipo TO SaldarDocs[idx].tipo
|
|
DISPLAY SaldarDocs[idx].valor_pagado TO SaldarDocs[idx].valor_pagado
|
|
LET idx=idx=1
|
|
END FOREACH
|
|
|
|
LET selec1 =
|
|
" SELECT a.cuenta_no,a.departamento,a.id_auxiliar,a.cod_sec,a.nom_cuenta,a.debito,a.credito ",
|
|
"FROM cgtb00041 a ",
|
|
"WHERE a.numdoc=",cdoc1[curr].num_doc3," and status_t is null "
|
|
|
|
PREPARE comand5 FROM selec1
|
|
DECLARE busca2 CURSOR FOR comand5
|
|
LET idx=1
|
|
FOREACH busca2 INTO CuentasAfectar[idx].cuenta_no,CuentasAfectar[idx].departamento,
|
|
CuentasAfectar[idx].cod_aux,CuentasAfectar[idx].cod_sec,CuentasAfectar[idx].nom_cuenta,CuentasAfectar[idx].debito,
|
|
CuentasAfectar[idx].credito
|
|
|
|
|
|
DISPLAY CuentasAfectar[idx].cod_aux TO CuentasAfectar[idx].cod_aux
|
|
DISPLAY CuentasAfectar[idx].cod_sec TO CuentasAfectar[idx].cod_sec
|
|
DISPLAY CuentasAfectar[idx].credito TO CuentasAfectar[idx].credito
|
|
DISPLAY CuentasAfectar[idx].debito TO CuentasAfectar[idx].debito
|
|
DISPLAY CuentasAfectar[idx].cuenta_no TO CuentasAfectar[idx].cuenta_no
|
|
DISPLAY CuentasAfectar[idx].departamento TO CuentasAfectar[idx].departamento
|
|
DISPLAY CuentasAfectar[idx].nom_cuenta TO CuentasAfectar[idx].nom_cuenta
|
|
LET idx=idx+1
|
|
END FOREACH
|
|
|
|
END IF
|
|
CALL actualizar()
|
|
ELSE
|
|
CALL fgl_winmessage("ERROR","Solicitud Se Le Hizo Transferencia","STOP")
|
|
|
|
END IF
|
|
|
|
|
|
ON ACTION eLiminar
|
|
LET curr=arr_curr()
|
|
|
|
LET OPT1 = FGL_WINQUESTION("WARNING","ESTA SEGURO DE ELIMINAR ESTE REGISTRO?","NO","YES|NO","QUESTION",0)
|
|
|
|
IF OPT1 = "YES" THEN
|
|
UPDATE cgtb00040 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @numdoc=cdoc1[curr].num_doc3
|
|
|
|
UPDATE cgtb00039 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @numdoc=cdoc1[curr].num_doc3
|
|
|
|
UPDATE cgtb00041 SET status_t = "E",
|
|
us_mod = SUSER_SNAME(),
|
|
fech_mod = GETDATE()
|
|
WHERE @numdoc=cdoc1[curr].num_doc3
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END DISPLAY
|
|
|
|
|
|
|
|
ON ACTION CANCEL
|
|
LET int_flag= FALSE
|
|
call cdoc1.clear()
|
|
CLEAR FORM
|
|
EXIT DIALOG
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION actualizar()
|
|
DEFINE num_doc1 INT
|
|
DEFINE cuenta_no2 CHAR(19)
|
|
DIALOG ATTRIBUTES (UNBUFFERED,FIELD ORDER FORM )
|
|
|
|
|
|
INPUT BY NAME solicitud.* ATTRIBUTES (WITHOUT DEFAULTS)
|
|
|
|
BEFORE INPUT
|
|
LET scr_l = scr_line()
|
|
LET idx = arr_curr()
|
|
|
|
|
|
CALL cuenta("formonly.cuenta_no1")
|
|
CALL solicitud()
|
|
LET selec= "SELECT a.numdoc,a.cuenta_no,a.fecha,a.tipo_solicitud,a.monto,a.cod_sp,a.cod_sp_Sec,a.portador, ",
|
|
"a.observacion,a.moneda,a.autorizar",
|
|
" FROM cgtb00040 a ",
|
|
" WHERE a.numdoc=", cdoc1[idx].num_doc3," and a.status_t is null",
|
|
" ORDER BY a.numdoc"
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE accion5 SCROLL CURSOR FOR comando
|
|
OPEN accion5
|
|
|
|
FETCH FIRST accion5 INTO solicitud.numDoc,solicitud.cuenta_no1,solicitud.fecha,solicitud.tipoSolicitud,solicitud.monto,
|
|
solicitud.cod_sp,solicitud.cod_sp_Sec,solicitud.portador,solicitud.observacion,solicitud.codigo,solicitud.autorizacion
|
|
AFTER FIELD cod_sp
|
|
NEXT FIELD cod_sp_Sec
|
|
|
|
AFTER FIELD cod_sp_Sec
|
|
IF solicitud.cod_sp_Sec IS NULL THEN
|
|
NEXT FIELD portador
|
|
ELSE
|
|
|
|
IF solicitud.cod_sp IS NOT NULL
|
|
AND solicitud.cod_sp_Sec IS NOT NULL THEN
|
|
|
|
SELECT nom_sp
|
|
INTO solicitud.portador
|
|
FROM cotb00001
|
|
WHERE cod_sp = solicitud.cod_sp
|
|
AND cod_sp_sec = solicitud.cod_sp_Sec
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
END IF
|
|
|
|
NEXT FIELD portador
|
|
END IF
|
|
END INPUT
|
|
INPUT ARRAY SaldarDocs FROM SaldarDocs.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
|
|
BEFORE INPUT
|
|
ON ACTION busca_aplicacion
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
###### Proceso para abrir window en caso de desconocer el numero de orden
|
|
###### perteneciente a la factura que se aplicara el pago.
|
|
CALL busca_aplicacion1(solicitud.cod_sp,solicitud.cod_sp_Sec) RETURNING SaldarDocs[curr].num_doc,SaldarDocs[curr].valor_pendiente
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
AFTER FIELD num_oc
|
|
IF SaldarDocs[curr].num_oc != 999999 THEN #IS NOT NULL THEN
|
|
IF solicitud.cod_sp IS NULL THEN
|
|
|
|
##### Chequeando que el numero de orden a digitar exista en la maestra de pago[
|
|
|
|
SELECT UNIQUE a.tipo,a.orden_no,a.cod_sp,a.cod_sp_sec
|
|
INTO p_tipo,p_orden,solicitud.cod_sp,solicitud.cod_sp_sec
|
|
FROM cptb00001 a WHERE a.tipo = SaldarDocs[curr].tipo AND
|
|
a.orden_no = SaldarDocs[curr].num_oc
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
###### Chequeando que el numero de orden exista en la maestra de orden
|
|
|
|
SELECT b.num_oc
|
|
FROM cotb00014 b WHERE b.tipo = SaldarDocs[curr].tipo AND
|
|
b.num_oc = SaldarDocs[curr].num_oc AND
|
|
b.cod_sp = solicitud.cod_sp AND
|
|
b.cod_sp_sec = solicitud.cod_sp_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
END IF
|
|
|
|
END IF
|
|
|
|
|
|
|
|
AFTER FIELD num_doc
|
|
SELECT a.aplica_a,SUM(a.valor) INTO SaldarDocs[curr].num_doc,SaldarDocs[curr].valor_pendiente FROM cptb00001 a
|
|
WHERE a.cod_sp = solicitud.cod_sp AND a.cod_sp_sec = solicitud.cod_sp_sec AND
|
|
a.status_t IS NULL AND a.aplica_a =SaldarDocs[curr].num_doc
|
|
GROUP BY aplica_a HAVING SUM(a.valor) != 0 ORDER BY 1
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 126
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
DISPLAY SaldarDocs[curr].num_doc TO SaldarDocs[scr_l].num_doc
|
|
DISPLAY SaldarDocs[curr].valor_pendiente TO SaldarDocs[scr_l].valor_pendiente
|
|
|
|
AFTER FIELD valor_pagado
|
|
IF saldardocs[curr].valor_pagado>saldardocs[curr].valor_pendiente THEN
|
|
CALL fgl_winmessage("error","Valor Pagado No Puede ser Mayor Al Valor Pendiente","stop")
|
|
NEXT FIELD valor_pagado
|
|
END IF
|
|
AFTER INPUT
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
LET tt_pen=0
|
|
FOR idx=1 TO SaldarDocs.getLength()
|
|
|
|
LET tt_pen=tt_pen+SaldarDocs[curr].valor_pagado
|
|
|
|
DISPLAY tt_pen
|
|
END FOR
|
|
|
|
IF tt_pen<solicitud.monto THEN
|
|
DISPLAY "mayor",tt_pen
|
|
CALL fgl_winmessage("error","Valor Pagado es Menor al Monto Solicitud","stop")
|
|
NEXT FIELD valor_pagado
|
|
END IF
|
|
IF tt_pen>solicitud.monto THEN
|
|
DISPLAY "menor",tt_pen
|
|
CALL fgl_winmessage("error ","Valor Pagado es Mayor al Monto Solicitud","stop")
|
|
NEXT FIELD valor_pagado
|
|
END IF
|
|
|
|
|
|
|
|
END INPUT
|
|
|
|
ON ACTION imprimir
|
|
LET r_filename ="cgprmt037.4rp"
|
|
LET r_output = "SVG"
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(true)
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
START REPORT solicitud1 TO XML HANDLER handler
|
|
|
|
FOR idx = 1 TO CuentasAfectar.getLength()
|
|
IF CuentasAfectar[idx].cuenta_no IS NOT NULL THEN
|
|
OUTPUT TO REPORT solicitud1(solicitud.numdoc, CuentasAfectar[idx].cuenta_no,CuentasAfectar[idx].departamento,
|
|
CuentasAfectar[idx].cod_aux,CuentasAfectar[idx].cod_sec,CuentasAfectar[idx].nom_cuenta,CuentasAfectar[idx].debito,
|
|
CuentasAfectar[idx].credito,solicitud.observacion)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT solicitud1
|
|
|
|
ON ACTION guardar
|
|
|
|
|
|
BEGIN WORK
|
|
SELECT a.us_crea,a.fech_crea INTO us_crea,fech_crea FROM cgtb00040
|
|
WHERE a.numdoc=solicitud.numDoc
|
|
UPDATE cgtb00040 SET cuenta_no=solicitud.cuenta_no1,fecha=solcitud.fecha,tipo_solcitud=solicitud.tipoSolicitud,
|
|
monto=solicitud.monto,cod_sp=solicitud.cod_sp,cod_sp_sec=solicitud.cod_sp_Sec,portador=solicitud.portador,
|
|
observacion=solicitud.observacion,moneda=solicitud.codigo,autorizar=solicitud.autorizacion,us_mod=usuario,fech_mod=getdate()
|
|
WHERE numdoc=solicitud.numDoc
|
|
|
|
FOR idx=1 TO SaldarDocs.getLength()
|
|
IF SaldarDocs[idx].num_doc IS NOT NULL THEN
|
|
DELETE FROM cgtb00039
|
|
WHERE numdoc=solicitud.numDoc
|
|
INSERT INTO cgtb00039
|
|
(tipo,num_oc,num_doc,valor_pagado,us_crea,fech_crea,us_mod,fech_mod)
|
|
VALUES (SaldarDocs[idx].tipo,SaldarDocs[idx].num_oc,SaldarDocs[idx].num_doc,SaldarDocs[idx].valor_pagado,
|
|
us_crea,fech_crea,usuario,getdate())
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
FOR idx=1 TO CuentasAfectar.getLength()
|
|
IF CuentasAfectar[idx].cuenta_no IS NOT NULL THEN
|
|
DELETE FROM cgtb00041
|
|
WHERE numdoc=solicitud.numDoc
|
|
INSERT INTO cgtb00041
|
|
(cuenta_no,departamento,id_auxiliar,cod_sec,nom_cuenta,debito,credito,us_crea,fech_crea,us_mod,fech_mod)
|
|
VALUES(CuentasAfectar[idx].cuenta_no,CuentasAfectar[idx].departamento,CuentasAfectar[idx].cod_aux,
|
|
CuentasAfectar[idx].cod_sec,CuentasAfectar[idx].nom_cuenta,CuentasAfectar[idx].debito,CuentasAfectar[idx].credito,
|
|
us_crea,fech_crea,usuario,getdate())
|
|
END IF
|
|
END FOR
|
|
IF status<0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("error","NO SE PUDO ACTUALIZAR LA DATA","STOP")
|
|
ELSE
|
|
COMMIT WORK
|
|
LET r_filename ="cgprmt037.4rp"
|
|
LET r_output = "SVG"
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(true)
|
|
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
ELSE
|
|
EXIT PROGRAM
|
|
END IF
|
|
START REPORT solicitud1 TO XML HANDLER handler
|
|
DISPLAY "report"
|
|
FOR idx = 1 TO CuentasAfectar.getLength()
|
|
IF CuentasAfectar[idx].cuenta_no IS NOT NULL THEN
|
|
OUTPUT TO REPORT solicitud1(solicitud.numdoc, CuentasAfectar[idx].cuenta_no,CuentasAfectar[idx].departamento,
|
|
CuentasAfectar[idx].cod_aux,CuentasAfectar[idx].cod_sec,CuentasAfectar[idx].nom_cuenta,CuentasAfectar[idx].debito,
|
|
CuentasAfectar[idx].credito,solicitud.observacion)
|
|
END IF
|
|
END FOR
|
|
FINISH REPORT solicitud1
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
ON ACTION CANCEL
|
|
LET int_flag = FALSE
|
|
|
|
CLEAR FORM
|
|
EXIT DIALOG
|
|
BEFORE DIALOG
|
|
CALL seg000(usuario,pperfil,'autoriza.cgprmt037') RETURNING acceso
|
|
DISPLAY "usuario ",usuario," ",pperfil
|
|
IF acceso = "SI" THEN
|
|
|
|
CALL dialog.setFieldActive("autorizacion", TRUE )
|
|
ELSE
|
|
CALL DIALOG.setFieldActive("autorizacion",false)
|
|
END IF
|
|
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
REPORT solicitud1(x)
|
|
DEFINE x RECORD
|
|
numdoc INT,
|
|
cuenta_no VARCHAR(19),
|
|
departamento INT,
|
|
cod_aux SMALLINT,
|
|
cod_sec SMALLINT,
|
|
nom_cuenta VARCHAR(100),
|
|
debito DECIMAL(18, 2),
|
|
credito DECIMAL(18, 2),
|
|
xcomentario CHAR(150)
|
|
END RECORD
|
|
DEFINE t_debito,t_credito,total_aplica DECIMAL(12,2),
|
|
total_registro SMALLINT,
|
|
fecha CHAR(40)
|
|
|
|
ORDER BY x.numdoc
|
|
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
LET total_registro = 0
|
|
LET t_debito = 0
|
|
LET t_credito = 0
|
|
LET fecha = TODAY USING "dd/mm/yyyy",":",TIME
|
|
SELECT a.nombre INTO p_compania.nombre FROM companias a
|
|
ON EVERY ROW
|
|
LET t_credito = t_credito + x.credito
|
|
LET t_debito = t_debito + x.debito
|
|
LET total_registro = total_registro + 1
|
|
|
|
PRINTX x.*,p_compania.nombre,solicitud.*,
|
|
fecha,total_registro,t_credito,t_debito
|
|
AFTER GROUP OF x.numdoc
|
|
LET total_aplica = 0
|
|
FOR idx = 1 TO SaldarDocs.getLength()
|
|
LET total_aplica = total_aplica + SaldarDocs[idx].valor_pagado
|
|
PRINTX SaldarDocs[idx].num_doc,SaldarDocs[idx].num_oc,SaldarDocs[idx].tipo,SaldarDocs[idx].valor_pagado
|
|
END FOR
|
|
|
|
PRINTX total_aplica
|
|
END REPORT
|
|
|
|
#### Busqueda de datos generales referente a un suplidor
|
|
FUNCTION busca_suplidor()
|
|
|
|
LET int_flag = FALSE
|
|
OPEN WINDOW busca_sp AT 10,3 WITH FORM "cpfmwd001"
|
|
ATTRIBUTE(BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST)
|
|
|
|
CONSTRUCT criterio ON a.nom_sp FROM nom_sp
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLOSE WINDOW busca_sp
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec = "SELECT a.cod_sp,a.cod_sp_sec,a.nom_sp FROM cotb00001 a ",
|
|
"WHERE a.status_t IS NULL AND ",criterio CLIPPED," ORDER BY 3 "
|
|
|
|
PREPARE comando3 FROM selec
|
|
DECLARE busc CURSOR FOR comando3
|
|
|
|
LET idx = 1
|
|
FOREACH busc INTO supl[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx -1)
|
|
|
|
DISPLAY ARRAY supl TO s_suplid.*
|
|
LET curr = ARR_CURR()
|
|
|
|
LET solicitud.cod_sp = supl[curr].cod_sp
|
|
LET solicitud.cod_sp_sec = supl[curr].cod_sp_sec
|
|
LET solicitud.portador = supl[curr].nom_sp
|
|
CLOSE WINDOW busca_sp
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_monedas()
|
|
DEFINE pmoneda ui.combobox,
|
|
kmoneda SMALLINT,kdescripcion CHAR(30)
|
|
|
|
DECLARE moneda CURSOR FOR
|
|
SELECT a.cod_mon,a.descrip_mon FROM cotb00031 a
|
|
WHERE a.status_t is null
|
|
ORDER BY a.descrip_mon
|
|
LET pmoneda = ui.combobox.forname("formonly.codigo")
|
|
CALL pmoneda.clear()
|
|
FOREACH moneda INTO kmoneda,kdescripcion
|
|
CALL pmoneda.additem(kmoneda,kdescripcion)
|
|
END FOREACH
|
|
|
|
END FUNCTION |