Trabalhando com TRadioGroup Bom dia pessoal. Estou tendo um problema com um formulário em que tenho um campo TRadioGroup. Quando eu clico no botão novo para cadastrar um novo fornecedor o TRadioGroup não vem marcado como segue em anexo. E um outro porém é quando cadastro um fornecedor do tipo pessoa jurídica e depois vou editar alterando pra pessoa física, o mesmo não apaga o campo pessoa jurídica. O mesmo fica ...
RC
Trabalhando com TRadioGroup  
Bom dia pessoal. Estou tendo um problema com um formulário em que tenho um campo TRadioGroup.
Quando eu clico no botão novo para cadastrar um novo fornecedor o TRadioGroup não vem marcado como segue em anexo.

E um outro porém é quando cadastro um fornecedor do tipo pessoa jurídica e depois vou editar alterando pra pessoa física, o mesmo não apaga o campo pessoa jurídica. O mesmo fica não editável, mas não limpa o campo!

Podem me dar um help quanto a esses dois problemas?

Código da classe control FornecedorFormView:
 
  1. <?php
  2. /**
  3. * FornecedorFormView Control
  4. * @author <Ricelli Carvalho>
  5. */
  6. class FornecedorFormView extends TStandardForm {
  7. protected $form;
  8. function __construct() {
  9. parent::__construct();
  10. $this->form = new TQuickForm('form_Fornecedor');
  11. $this->form->setFormTitle('Fornecedores');
  12. $this->form->class = 'tform';
  13. parent::setDatabase('permission');
  14. parent::setActiveRecord('Fornecedor');
  15. $id = new TEntry('id');
  16. $id->setEditable(false);
  17. $tipopessoa = new Adianti\\Widget\\Form\\TRadioGroup('tipo');
  18. $tipopessoa->addItems(array('1'=>'Pessoa fisíca', '2'=>'Pessoa jurídica'));
  19. $tipopessoa->setLayout('horizontal');
  20. $tipopessoa->setValue(2);
  21. $nomerazaosocial = new Adianti\\Widget\\Form\\TEntry('nomerazaosocial');
  22. $cnpj = new Adianti\\Widget\\Form\\TEntry('cnpj');
  23. $cnpj->setMask('99.999.999/9999-99');
  24. $cpf = new Adianti\\Widget\\Form\\TEntry('cpf');
  25. $cpf->setMask('999.999.999-99');
  26. $inscricaoestadual = new Adianti\\Widget\\Form\\TEntry('inscricaoestadual');
  27. $endereco = new Adianti\\Widget\\Form\\TEntry('endereco');
  28. $cidade = new Adianti\\Widget\\Form\\TEntry('cidade');
  29. $bairro = new Adianti\\Widget\\Form\\TEntry('bairro');
  30. $uf = new TCombo('uf');
  31. $uf->addItems( array("AC"=>"AC - Acre", "AL"=>"AL - Alagoas", "AM"=>"AM - Amazonas", "AP"=>"AP - Amapá","BA"=>"BA - Bahia","CE"=>"CE - Ceará","DF"=>"DF - Distrito Federal","ES"=>"ES - Espírito Santo","GO"=>"GO - Goiás","MA"=>"MA - Maranhão","MT"=>"MT - Mato Grosso","MS"=>"MS - Mato Grosso do Sul","MG"=>"MG - Minas Gerais","PA"=>"PA - Pará","PB"=>"PB - Paraíba","PR"=>"PR - Paraná","PE"=>"PE - Pernambuco","PI"=>"PI - Piauí","RJ"=>"RJ - Rio de Janeiro","RN"=>"RN - Rio Grande do Norte","RO"=>"RO - Rondônia","RS"=>"RS - Rio Grande do Sul","RR"=>"RR - Roraima","SC"=>"SC - Santa Catarina","SE"=>"SE - Sergipe","SP"=>"SP - São Paulo","TO"=>"TO - Tocantins"));
  32. $cep = new Adianti\\Widget\\Form\\TEntry('cep');
  33. $cep->setMask('99999-999');
  34. $telefone = new Adianti\\Widget\\Form\\TEntry('telefone');
  35. $observacoes= new Adianti\\Widget\\Form\\TText('observacoes');
  36. // add the fields
  37. $this->form->addQuickField('ID', $id, 50);
  38. $this->form->addQuickField('Tipo de pessoa' . ': ', $tipopessoa, 200);
  39. $this->form->addQuickField('Nome/Razão social' . ': ', $nomerazaosocial, 400);
  40. $this->form->addQuickField('CNPJ' . ': ', $cnpj, 200);
  41. $this->form->addQuickField('CPF' . ': ', $cpf, 200);
  42. $this->form->addQuickField('Inscrição estadual' . ': ', $inscricaoestadual, 200);
  43. $this->form->addQuickField('Endereço' . ': ', $endereco, 200);
  44. $this->form->addQuickField('Cidade' . ': ', $cidade, 200);
  45. $this->form->addQuickField('Bairro' . ': ', $bairro, 200);
  46. $this->form->addQuickField('UF' . ': ', $uf, 200);
  47. $this->form->addQuickField('CEP' . ': ', $cep, 200);
  48. $this->form->addQuickField('Telefone' . ': ', $telefone, 200);
  49. $this->form->addQuickField('Observações' . ': ', $observacoes,200);
  50. $observacoes->setSize(400, 90);
  51. $tipopessoa->setChangeAction( new TAction( array($this, 'onChangeRadio')) );
  52. self::onChangeRadio( array('enable'=>2) );
  53. // validations
  54. // add form actions
  55. $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'ico_save.png');
  56. $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'ico_new.png');
  57. $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('CategoriaDataGrid', 'onReload')), 'ico_datagrid.png');
  58. $container = new TTable;
  59. $container->style = 'width: 80%';
  60. $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml', 'FornecedorFormView'));
  61. $container->addRow()->addCell($this->form);
  62. // add the form to the page
  63. parent::add($container);
  64. }
  65. /**
  66. * on ChangeRadio change
  67. * @param $param Action parameters
  68. */
  69. public static function onChangeRadio($param)
  70. {
  71. if ($param['tipo'] == 1)
  72. {
  73. TEntry::enableField('form_Fornecedor', 'cpf');
  74. TEntry::disableField('form_Fornecedor', 'cnpj');
  75. TEntry::disableField('form_Fornecedor', 'inscricaoestadual');
  76. }
  77. else
  78. {
  79. TEntry::disableField('form_Fornecedor', 'cpf');
  80. TEntry::enableField('form_Fornecedor', 'cnpj');
  81. TEntry::enableField('form_Fornecedor', 'inscricaoestadual');
  82. }
  83. }
  84. }
  85. ?>

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 (5)


FC

É preciso fazer essas alterações no onEdit no seu caso é preciso criar o onEdit dentro dessa classe pois ela está pegando o onEdit da classe TStandardForm.
RC

Ok. E como se faz para limpar somente um determinado campo input do formulário?

Tem o comando $this->form->clear(); mas o mesmo limpar todo o formulário! Preciso limpar só determinado campo.
FC

 
  1. <?php
  2. TEntry::clearField('seuform', 'seucampo');
  3. ?>

RC

Ok Felipe, fiz dessa forma ai e deu certo limpar os campos. Só não consegui colocar pra funcionar no método onEdit como vc sugeriu que eu fizesse. Quando clico pra editar um registro do tipo 2 (pessoa jurídica) funciona normalmente, mas quando é do tipo 1 (pessoa física) não traz o CPF!

Fiz assim no onEdit:
 
  1. <?php
  2. function onEdit($param) {
  3. try {
  4. if (isset($param['key'])) {
  5. $key = $param['key'];
  6. TTransaction::open('permission');
  7. $object = new Fornecedor($key);
  8. self::onChangeRadio( array('tipo'=>$object->tipo) );
  9. $this->form->setData($object);
  10. TTransaction::close();
  11. } else {
  12. $this->form->clear();
  13. }
  14. } catch (Exception $e) {
  15. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  16. TTransaction::rollback();
  17. }
  18. }
  19. ?>


E o método onChangeRadio ficou assim:
 
  1. <?php
  2. public static function onChangeRadio($param)
  3. {
  4. if ($param['tipo'] == 1)
  5. {
  6. TEntry::enableField('form_Fornecedor', 'cpf');
  7. TEntry::disableField('form_Fornecedor', 'cnpj');
  8. TEntry::disableField('form_Fornecedor', 'inscricaoestadual');
  9. TEntry::clearField('form_Fornecedor', 'cnpj');
  10. TEntry::clearField('form_Fornecedor', 'inscricaoestadual');
  11. }
  12. else
  13. {
  14. TEntry::disableField('form_Fornecedor', 'cpf');
  15. TEntry::enableField('form_Fornecedor', 'cnpj');
  16. TEntry::enableField('form_Fornecedor', 'inscricaoestadual');
  17. TEntry::clearField('form_Fornecedor', 'cpf');
  18. }
  19. }
  20. ?>


Alguma sugestão pessoal?
FC

O erro com certeza é na passagem do parâmetro nessa linha:

self::onChangeRadio( array('tipo'=>$object->tipo) );

Pode testa como está chegando o $param['tipo'] dentro da função onChangeRadio ou pode simplesmente fazer essa checagem dentro do próprio onEdit

 
  1. <?php
  2. function onEdit($param) {
  3. try {
  4. if (isset($param['key'])) {
  5. $key = $param['key'];
  6. TTransaction::open('permission');
  7. $object = new Fornecedor($key);
  8. if ($object->tipo == 1)
  9. {
  10. TEntry::enableField('form_Fornecedor', 'cpf');
  11. TEntry::disableField('form_Fornecedor', 'cnpj');
  12. TEntry::disableField('form_Fornecedor', 'inscricaoestadual');
  13. TEntry::clearField('form_Fornecedor', 'cnpj');
  14. TEntry::clearField('form_Fornecedor', 'inscricaoestadual');
  15. }
  16. else
  17. {
  18. TEntry::disableField('form_Fornecedor', 'cpf');
  19. TEntry::enableField('form_Fornecedor', 'cnpj');
  20. TEntry::enableField('form_Fornecedor', 'inscricaoestadual');
  21. TEntry::clearField('form_Fornecedor', 'cpf');
  22. }
  23. $this->form->setData($object);
  24. TTransaction::close();
  25. } else {
  26. $this->form->clear();
  27. }
  28. } catch (Exception $e) {
  29. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  30. TTransaction::rollback();
  31. }
  32. }
  33. ?>


Tenta descobrir o erro na passagem, mas se ficar muito apertado é só um if a mais... não vai influenciar :)