Files
MBS/PROYECTO/otrodir/controlNumericoED.4gl

79 lines
2.3 KiB
Plaintext

{
FUNCTION : ControlNumericoED
DESARROLLADO POR : ING. JUAN SOTO
FECHA DESARROLLO : 6 Noviembre 2025
OBJETIVO : Retornar el numero siguiente de las entradas al diario
}
FUNCTION controlNumericoED(idEntrada, fecha, usuario)
DEFINE
idEntrada SMALLINT,
ano CHAR(4),
mes CHAR(2),
secuencia INT,
ultimo INT,
fecha DATE,
refEntrada VARCHAR(25),
tiempo CHAR(4),
snumerico STRING,
usuario STRING
IF fecha IS NULL THEN
LET fecha = TODAY
END IF
DISPLAY "IDENTRADA: ", identrada
LET idEntrada = identrada CLIPPED
DISPLAY "IDENTRADA DES ", identrada
LET ano = YEAR(fecha) USING "&&&&"
LET mes = MONTH(fecha) USING "&&"
LET tiempo = mes[1, 2], ano[3, 4]
LET snumerico =
"SELECT a.referencia FROM marmotech.dbo.cgtb00011 a WHERE a.entrada_no = ?"
PREPARE numeroED FROM snumerico
EXECUTE numeroED INTO ultimo USING idEntrada
IF STATUS = NOTFOUND THEN
IF usuario IS NOT NULL THEN
IF ultimo IS NULL THEN
LET ultimo = 0
END IF
LET snumerico =
'INSERT INTO marmotech.dbo.cgtb00011 (referencia, entrada_no,us_crea,fech_crea)
values (?,?,?,getdate())'
PREPARE insED FROM snumerico
EXECUTE insED USING ultimo, idEntrada, usuario
FREE numeroED
END IF
END IF
IF ultimo IS NULL THEN
LET ultimo = 0
END IF
LET secuencia = ultimo + 1
LET refEntrada =
"ED.", idEntrada USING "&&", "-", secuencia USING "&&&&&", "/", tiempo
DISPLAY "en control numero: " || refEntrada," usuario: "
IF usuario IS NOT NULL AND idEntrada IS NOT NULL THEN
LET snumerico =
"UPDATE marmotech.dbo.cgtb00011
SET referencia = referencia + 1,
us_mod = ?,
fech_mod = getdate()
WHERE entrada_no = ?"
PREPARE updateNumerico FROM snumerico
EXECUTE updateNumerico USING usuario, idEntrada
FREE updateNumerico
END IF
RETURN refEntrada
END FUNCTION