{ 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