send a fucntion where a find a number of docuemnt.
function incrementa_contador(centro,cod_cont,valor_inicio)
define
centro like ffcontad.cen_con,
cod_cont like ffcontad.cod_con,
valor_inicio like ffcontad.con_con
let p_contador.cod_con = cod_cont
if in_transacciones = 1 and not enable_trans then
begin work
let enable_trans = true
end if
set lock mode to wait
let p_contador.con_con = null
if p_contador.emp_con is null then
let p_contador.emp_con = p_empresa.cod_emp
end if
let p_contador.cen_con = centro
declare inc_count cursor for
select * from ffcontad
where
emp_con = p_contador.emp_con and
cen_con = p_contador.cen_con and
cod_con = p_contador.cod_con and
any_con = year(fecha_hoy)
for update
foreach inc_count into p_contador.*
update ffcontad
set con_con = con_con + 1
where
current of inc_count
end foreach
let p_contador.any_con = year(fecha_hoy)
if p_contador.con_con is null then
if p_contador.cod_con = "ngra" then
select max(con_con) into valor_inicio
from ffcontad
where
cod_con = "ngra" and
any_con = p_contador.any_con
if valor_inicio is null then
let valor_inicio = 10000
end if
let valor_inicio = valor_inicio + 100000
end if
let valor_inicio = valor_inicio + 1
insert into ffcontad
values
(p_contador.emp_con,
p_contador.any_con,
p_contador.cod_con,
p_contador.cen_con,
p_contador.des_con,
valor_inicio)
let p_contador.con_con = valor_inicio -
end if
return(p_contador.con_con)
end function