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
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
- <?php
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['id']))
- {
- $id = $param['id']; // get the parameter $id
- TTransaction::open('oficina'); // open a transaction
- $object = new Pessoa($id); // instantiates the Active Record
- $object->pessoa_grupos = PessoaGrupo::where('pessoa_id', '=', $object->id)->getIndexedArray('grupo_id', 'grupo_id');
- $this->form->setData($object); // fill the form
- TTransaction::close(); // close the transaction
- }
- else
- {
- $this->form->clear();
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
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:
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.
Nataniel,
Depois da sua explicação, neste caso então vou preferir adequar o relacionamento passando a ser uma associação.
Muito obrigado.