Lançado Adianti Framework 8.1!
Clique aqui para saber mais
CADASTRO DE PESSOAS APLICAÇÃO MICROERP - TDBCheckGroup Olá pessoal. Estou aproveitando o código fonte do cadastro de PESSOAS da aplicação MICROERP lançado agora na versão 5.0. Neste cadastro existe um TDBCheckGroup, que possibilita ao usuário fazer uma marcação de um GRUPO para a pessoa que está sendo cadastrada, sendo que neste caso, é possível marcar mais de uma opção. Na minha aplicação, estou aproveitando esse código p...
HB
CADASTRO DE PESSOAS APLICAÇÃO MICROERP - TDBCheckGroup  
Olá pessoal.
Estou aproveitando o código fonte do cadastro de PESSOAS da aplicação MICROERP lançado agora na versão 5.0.

Neste cadastro existe um TDBCheckGroup, que possibilita ao usuário fazer uma marcação de um GRUPO para a pessoa que está sendo cadastrada, sendo que neste caso, é possível marcar mais de uma opção.
Na minha aplicação, estou aproveitando esse código para fazer uma distinção dentro deste cadastro entre o tipos de pessoas.
Como vocês podem ver na imagem do anexo, vou classificar como CLIENTE; FORNECEDOR e FUNCIONÁRIO. Só que no re-aproveitamento deste código, não quero permitir que o usuário marque mais de uma opção, porque, no meu caso, a "pessoa" não pode participar em mais de um grupo.
Assim, pensei em utilizar TDBRadioGroup. No onSave aparentemente tudo normal, só que no onEdit não carrega a opção que marquei no momento da inserção.
Alguém sabe me dizer se neste caso TDBRadioGroup é aceito? Se sim, como faço para que no onEdit carregue a opção que eu marquei?

Observação
Tenho uma disconfiança onde pode ser uma vez que o Pablo faz um comentátio a esse respeito.
acho que é nesse ponto do onEdit
$object->pessoa_grupos = PessoaGrupo::where('pessoa_id', '=', $object->id)->getIndexedArray('grupo_id', 'grupo_id');


Se for, não sei como ajustar para usar com TDBRadioGroup

  1. <?php
  2. public function onEdit$param )
  3.     {
  4.         try
  5.         {
  6.             if (isset($param['id']))
  7.             {
  8.                 $id $param['id'];  // get the parameter $id
  9.                 TTransaction::open('oficina'); // open a transaction
  10.                 $object = new Pessoa($id); // instantiates the Active Record 
  11.                 $object->pessoa_grupos PessoaGrupo::where('pessoa_id''='$object->id)->getIndexedArray('grupo_id''grupo_id');
  12.                 $this->form->setData($object); // fill the form 
  13.                 TTransaction::close(); // close the transaction 
  14.             }
  15.             else
  16.             {
  17.                 $this->form->clear();
  18.             }
  19.         }
  20.         catch (Exception $e// in case of exception
  21.         {
  22.             new TMessage('error'$e->getMessage());
  23.             TTransaction::rollback();
  24.         }
  25.     }
  26. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


NR

Um TCheckGroup recebe um array enquanto que o TRadioGroup recebe somente um elemento. A função getIndexedArray retorna um array, por isso o valor correto não está sendo selecionado:
  1. <?php
  2. $grupos PessoaGrupo::where('pessoa_id''='$object->id)->getIndexedArray('grupo_id''grupo_id');
  3. $object->pessoa_grupos $grupos[0];
  4. ?>


Mas atente também para o fato do relacionamento. Inicialmente há uma agregação entre pessoa e grupo. Se a ideia for selecionar somente um grupo por pessoa sugiro criar uma associação entre eles, não sendo necessária uma outra tabela(pessoa_grupo) nesse caso.
HB

Nataniel,

Depois da sua explicação, neste caso então vou preferir adequar o relacionamento passando a ser uma associação.

Muito obrigado.