Olá Rafael.
Esse problema está acontecendo no Delphi.
O Código utiliza um objeto "Prestador" da classe USamPrestador. Segue a forma que o objeto é inicializado.
Prestador := TSamPrestador.Create(sys,nil);
Na hora que é necessário criar um registro, o procedimento utilizado é chamar o método insert desse objeto.
Prestador.insert.
Esse método Insert foi escrito da seguinte maneira (Classe UTabela).
procedure TTabela.Insert;
begin
if (not query.Active) then
Abrir(-1);
if Query.Active and (Query.State in [dsBrowse]) then
begin
Query.Insert;
Campo['HANDLE'].AsInteger := Sys.NewHandle(Tabela);
try
sys.doAssumir(integer(pointer(Query)), Self.Tabela);
except
end;
end;
end;
Na teoria esse trecho "sys.doAssumir(integer(pointer(Query)), Self.Tabela);" iria varrer todas os campos do registro recém-criado, colocando o valor padrão de todos os campos configurados no builder, porém isso não está acontecendo mais, fazendo com que o programador precise declarar o valor de cada um desses campos manualmente no código.
Exs:
Prestador.Cassipfparapj := false;
Prestador.Certificadofatelet := false;
Eu encontrei na wiki algo semelhante que explica a função doAssumir para o Delphi.
http://wiki.benner.com.br/wiki/index.php?title=Objeto_de_baixa_de_parcelas_(Corporativo)
"Quando o procedimento é executado, o TDContainerDB recebe um Insert, é executado o DoAssumir e é atribuído 0(zero) para os campos VALOR."
Apesar de estar especificando campos VALOR, esse método funcionava para demais tipos de campos, como Booleano e Radio, só que não funciona mais (pelo menos para esse caso).