Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Comportamento do framework em alguns detalhes... Pessoal...boa noite... Pesquisa muito no forum, e tenho me virado bem com os meus objetivos de converter um ERP gigantesco de VB/MSACCESS/SQLSERVER para Adianti/Framework/postgres, um form master e 14 subforms de detalhes, estou usando o TFieldlist adaptado nos detalhes, até então não tenho postado pedido de ajuda, mas chega um momento que fica difícil seguir sozinho, por tanto segue os pe...
AT
Comportamento do framework em alguns detalhes...  
Pessoal...boa noite...

Pesquisa muito no forum, e tenho me virado bem com os meus objetivos de converter um ERP gigantesco de VB/MSACCESS/SQLSERVER para Adianti/Framework/postgres, um form master e 14 subforms de detalhes, estou usando o TFieldlist adaptado nos detalhes, até então não tenho postado pedido de ajuda, mas chega um momento que fica difícil seguir sozinho, por tanto segue os pepinos, se puderem me ajudar fico muito grato...

1 - Porque o master_id (find_id) é colocado na TSession no load do Master, e so aparece nos sub-forms na segunda tentativa, ou seja somente quanto pesquiso o id pela segunda vez que o subform mostra os dados? (EntidadeForm linha 255)

2 - Porque somente o frame $pessoal declarado e detalhado junto as demais abas do notebook, não é reconhecido no tabClick? (EntidadeForm linha 322 )

3 - Porque o onLoad dos detalhes após onSave e onDelete aparecem em tela cheia, fora de sua aba no notebook, talves pelo uso do TAdiantiCoreTranslator, se for o caso qual solução para este problema? EnderecoForm linhas 267 e 300)?

4 - Porque o Método setChangeAction() não encontrado no EnderecoForm linha 80?

5 - Porque o TForm::sendData apaga tudo, quando acionado para manter o registro selecionado e apagar os campos de pesquisa (EntidadeForm linha 277)?

Sendo só para o momento rsrsrs segue anexo o form master principal e o detalhe EnderecoFoirm, desde ja agradeço!!!

Augusto

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (2)


AT

  1. <?php
  2.     
  3. /**
  4. * EntidadeForm
  5. *
  6. * @version    1.0
  7. * @package    setcia
  8. * @author     Antonio Augusto Tavares
  9. * @copyright  Copyright (c) 2018 Setsoft - Consultoria e Informática Ltda
  10. */
  11. class EntidadeForm extends TPage
  12. {
  13.     private   $form
  14.     private   $entidade;    
  15.     private   $notebook;
  16.     static    $foto;
  17.     public    $imagem;
  18.     public    $table;
  19.     private   $divFoto;
  20.     public    $imgFoto;
  21.     
  22.     //use PessoaisForm;
  23.     
  24.     function __construct()
  25.     {
  26.         parent::__construct();
  27.         parent::include_js('app/lib/include/application.js');   
  28.         // cria o form
  29.  
  30.         $this->form = new BootstrapFormBuilder('form_entidade');
  31.         $this->form->style 'width: 100%';
  32.         $this->form->setFieldSizes('100%');
  33.         
  34.         // declara campos e suas caracteristicas
  35.             
  36.         $id_find   = new TEntry('id_find');
  37.         $id_find->setExitAction(new TAction(array($this'onEditeEntidade'))); 
  38.    
  39.         $nome_find = new TDBUniqueSearch('nome_find''setcis''entidade''id''nome''nome asc');
  40.         $nome_find->setMinLength(1);
  41.         $nome_find->setSize('100%');
  42.         $nome_find->setMask('{nome}');
  43.    
  44.         $programatico_find = new TDBUniqueSearch('programatico_find''setcis''entidade''id''programatico');
  45.         $programatico_find->setMinLength(1);
  46.         $programatico_find->setSize('100%');
  47.         $programatico_find->setMask('{programatico} ');
  48.             
  49.         $fornecedores 5;
  50.         $Associados 4;
  51.             
  52.         $criteria = new TCriteria();
  53.         $criteria->add(new TFilter('system_group_id','=',$Associados));
  54.         $id             = new TEntry('id');
  55.         $nome           = new TEntry('nome');
  56.         $pessoas_id     = new TDBCombo('pessoas_id''setcis''pessoas''id''descricao');
  57.         $entidades_id   = new TDBCombo('entidades_id''setcis''entidades''id''descricao''descricao asc',$criteria);
  58.         $programatico   = new TEntry('programatico');
  59.         
  60.         // validações
  61.         
  62.         $nome->addValidation('Nome', new TRequiredValidator); 
  63.         $pessoas_id->addValidation('Pessoa', new TRequiredValidator); 
  64.         $entidades_id->addValidation('Categoria', new TRequiredValidator); 
  65.         $programatico->addValidation('Código/Alternatibo', new TRequiredValidator); 
  66.             
  67.         $id->setEditable(FALSE);
  68.          
  69.         // posiciona elementos no form
  70.         $row $this->form->addFields([ $id_find ],
  71.                                       [ $nome_find ],
  72.                                       [ $programatico_find ],
  73.                                       [ TButton::create('clear', array($this'onClear'), 'Novo''fa:eraser green')]);
  74.         $row->layout = ['col-sm-1''col-sm-8''col-sm-2''col-sm-1'];       
  75.             
  76.         $row $this->form->addFields([ new TLabel('Codigo') ],
  77.                                       [ new TLabel('Nome') ],
  78.                                       [ new TLabel('Pessoa') ],
  79.                                       [ new TLabel('Categoria') ],
  80.                                       [ new TLabel('Código/Alternativo') ],
  81.                                       [TButton::create('delete', array($this'onDelete'), 'Excluir''fa:eraser red')]);
  82.         $row->layout = ['col-sm-1''col-sm-4''col-sm-2''col-sm-2''col-sm-2''col-sm-1' ];     
  83.                         
  84.         $row $this->form->addFields([ $id ],
  85.                                       [ $nome ],
  86.                                       [ $pessoas_id ],
  87.                                       [ $entidades_id ],
  88.                                       [ $programatico ],
  89.                                       [ TButton::create('save',  array($this'onSave'), 'Salvar''fa:save blue')]);
  90.         $row->layout = ['col-sm-1''col-sm-4''col-sm-2''col-sm-2''col-sm-2''col-sm-1' ];
  91.         
  92.         // defina ações de pesquisa
  93.             
  94.         $nome_change = new TAction(array($this'onEditeEntidade'));
  95.         $nome_find->setChangeAction($nome_change);
  96.             
  97.         $programatico_change = new TAction(array($this'onEditeEntidade'));
  98.         $programatico_find->setChangeAction($programatico_change);
  99.             
  100.         $entidades_id_change = new TAction(array($this'onSetMask'));
  101.         $entidades_id->setChangeAction($entidades_id_change);
  102.   
  103.        // prepara notebook de detalhes
  104.             
  105.         $foto        = new THBox();            
  106.         
  107.         $pessoal = new TFrame;
  108.         $pessoal->class 'tframe tframe-custom';
  109.         $pessoal->style 'background:whiteSmoke';
  110.  
  111.         $endereco = new TFrame;
  112.         $endereco->class 'tframe tframe-custom';
  113.         $endereco->style 'background:whiteSmoke';
  114.         
  115.         $inscricao = new TFrame;
  116.         $inscricao->class 'tframe tframe-custom';
  117.         $inscricao->style 'background:whiteSmoke';
  118.         
  119.         $eletronico  = new THBox();
  120.         $contrato    = new THBox();
  121.         $carteira    = new THBox();
  122.         $vinculado   = new THBox();
  123.         $conta       = new THBox();
  124.         $boleto      = new THBox();
  125.         $mandato     = new THBox();
  126.         $atendimento = new THBox();
  127.         $ocorrencias = new THBox();
  128.         //TScript::create(' $( "#campo" ).focus(); '); 
  129.         //TScript::create("$('li[role=presentation]').eq(1).hide();"); 
  130.         //TScript::create("$('li[role=Pessoais]').eq(1).hide();");    
  131.         //$this->form->setCurrentPage(0); // lembrando que os índices iniciam-se por 0.  
  132.         //$this->notebook->setCurrentPage(3);         
  133.         //$this->notebook->setTabsVisibility(False);
  134.         // cria notebook detalhes 
  135.         $notebook = new BootstrapNotebookWrapper( new TNotebook() );
  136.         $notebook->setTabAction( new TAction(array($this'onTabClick')));
  137.         $notebook->appendPage('Imagem',      $foto); 
  138.         $notebook->appendPage('Pessoais',    $pessoal);
  139.         $notebook->appendPage('Endereços',   $endereco);  
  140.         $notebook->appendPage('Inscrições',  $inscricao);
  141.         $notebook->appendPage('Eletrônicos'$eletronico);  
  142.         $notebook->appendPage('Contratos',   $contrato); 
  143.         $notebook->appendPage('Carteira',    $carteira);  
  144.         $notebook->appendPage('Vínculos',    $vinculado);  
  145.         $notebook->appendPage('Contas',      $conta);    
  146.         $notebook->appendPage('Boleto',      $boleto);      
  147.         $notebook->appendPage('Mandatos',    $mandato);
  148.         $notebook->appendPage('Atendimento'$atendimento);
  149.         $notebook->appendPage('Ocorrências'$ocorrencias);      
  150.         $notebook->style 'background:white';        
  151.        
  152.         // pagina imagem
  153.         
  154.         //$imagem = new TImage('app/fotos/0000000.jpg');
  155.         //$foto->put($imagem, 1,1);
  156.         //$imagem->setSize(450);
  157.         //$foto->add($imagem);
  158. /*        
  159.         $divFoto = new TElement('div'); 
  160.         $divFoto->id = 'divFoto'; 
  161.         $divFoto->style = "width:100px;height:100px"; 
  162.         $imgFoto = new TElement('img'); 
  163.         $imgFoto->style = "width:100px;height:100px"; 
  164.         $imgFoto->src = "app/fotos/0000000.jpg"; 
  165.         $divFoto->add($imgFoto); 
  166.         $foto->add($divFoto);
  167. */        
  168.         // prepara sub-forms/detalhes          
  169.         
  170.         $form_pessoais = new PessoaisForm;
  171.         $pessoal->add($form_pessoais);
  172.      
  173.         $form_Endereco = new EnderecoForm;
  174.         $endereco->add($form_Endereco);
  175.         
  176.         $form_Inscricao = new InscricaoForm;
  177.         $inscricao->add($form_Inscricao);        
  178.         
  179.         // monta pagina
  180.         
  181.         $vbox = new TVBox;
  182.         $vbox->style 'width: 100%';
  183.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  184.         $vbox->add($this->form);
  185.         $vbox->add($notebook);
  186.         parent::add($vbox);
  187.                     
  188.     }
  189.         
  190.     // define mascara programatico
  191.         
  192.     public static function onSetMask$param )
  193.     {
  194.         try
  195.         {
  196.             TTransaction::open('setcis');
  197.             $categoria = new entidades($param['key']);
  198.             $objeto = new stdClass;
  199.             TForm::getData('form_entidade'$objeto);
  200.             $objeto->entidades_id->setMask($categoria->mascara);
  201.             TForm::setData('form_entidade'$objeto);
  202.             TTransaction::close();
  203.         }
  204.         catch (Exception $e)
  205.         {
  206.             new TMessage('error'$e->getMessage());
  207.         }
  208.     }
  209.     
  210.     // Inicio de edição
  211.     
  212.     public function show()
  213.     {
  214.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onClear') )
  215.         {
  216.            $this->onClear(0);
  217.         }
  218.         parent::show();
  219.     }    
  220.     // limpa o form
  221.     public function onClear($param)
  222.     {
  223.         $objeto = new stdClass;       
  224.         $objeto->id '';
  225.         $objeto->nome '';
  226.         $objeto->pessoas_id '';
  227.         $objeto->entidades_id '';
  228.         $objeto->programatico '';
  229.         
  230.         $this->form->setData($objeto); 
  231.     }
  232.     // apresenta dados no form
  233.         
  234.     public static function onEditeEntidade$param )
  235.     {
  236.         try
  237.         {
  238.             if (isset($param['key']))
  239.             {
  240.                 TTransaction::open('setcis'); 
  241.                 
  242.                 $id_ent = (int) $param['key']; 
  243.                 
  244.                 TSession::setValue('id_entidade'$id_ent);
  245.                 
  246.                 var_dump($id_ent);
  247.                 
  248.                 //$object = TSession::getValue('id_entidade');
  249.  
  250.                 $objetoEntidade = new entidade($id_ent);
  251.                 
  252.                 $objetoForm = new stdClass;
  253.                 $objetoForm->id_find '';
  254.                 $objetoForm->Nome_find ''
  255.                 $objetoForm->progratico_find '';    
  256.                 
  257.                 if ($objetoEntidade)
  258.                 {
  259.                    $objetoForm->id $objetoEntidade->id;
  260.                    $objetoForm->nome $objetoEntidade->nome;
  261.                    $objetoForm->pessoas_id $objetoEntidade->pessoas_id;
  262.                    $objetoForm->entidades_id $objetoEntidade->entidades_id;
  263.                    $objetoForm->programatico $objetoEntidade->programatico;
  264.                 }  
  265.                 TForm::sendData('form_entidade'$objetoForm);
  266.                 
  267.                 TTransaction::close(); 
  268.             }
  269.         }
  270.         catch (Exception $e
  271.         {
  272.             new TMessage('error'$e->getMessage()); 
  273.             TTransaction::rollback(); 
  274.         }
  275.     }        
  276.     
  277.     // mostra imagem
  278.     public static function onShowImage($param)
  279.     {
  280.         //$imagem = new TImage($param);
  281.         //AdiantiCoreApplication::loadPage(__CLASS__, 'foto', $imagem);
  282.         //$foto->add($imagem);
  283.         
  284.         //$this->imgFoto->src = "app/images/{$empresa}/{$nomeImg}.png";
  285.         //$imgFoto->src = 'app/fotos/' . substr('000000' . $param, -7) . '.jpg';
  286.         
  287.         //var_dump($param);
  288.         
  289.         //$foto->add($divFoto);
  290.     }    
  291.     
  292.     // method onTabClick
  293.         
  294.     public function onTabClick($param)
  295.     {
  296.          try
  297.         {
  298.             TTransaction::open('setcis');
  299.  
  300.             //$id_ent = $param['id'];
  301.             $page = (int) $param['current_page'];            
  302.             $id_ent TSession::getValue('id_ent');
  303.  
  304.             if ($page 2)   // load sub-form  pessoais
  305.             {
  306.                 $form_pessoais = new PessoaisForm;
  307.                 //$pessoal->add($form_pessoais);
  308.                 
  309.             }
  310.             elseif ($page 3// load sub-form  endereços
  311.             {
  312.                 $form_Endereco = new EnderecoForm;
  313.                 $endereco->add($form_Endereco);
  314.             }           
  315.             elseif ($page 4// load sub-form inscrições
  316.             {
  317.                 $form_Inscricao = new InscricaoForm;
  318.                 $inscricao->add($form_Inscricao);                        
  319.             }                       
  320.         }
  321.         catch (Exception $e)
  322.         {
  323.             new TMessage('error'$e->getMessage()); 
  324.             TTransaction::rollback(); 
  325.         }        
  326.     }    
  327.         
  328.     // confirma antes da exclusão
  329.        
  330.     public static function onDelete($param)
  331.     {
  332.         $action = new TAction([__CLASS__'Delete']);
  333.         $action->setParameters($param);
  334.         
  335.         new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
  336.     }        
  337.     // method delete
  338.  
  339.     public function Delete($param)
  340.     {   
  341.         try
  342.         {
  343.             TTransaction::open('setcis'); 
  344.                 
  345.             $id $param['id'];
  346.               
  347.             $entidades = new entidade($id);
  348.             $entidades->delete();
  349.             
  350.             TTransaction::close(); 
  351.                 
  352.             $pos_action = new TAction([__CLASS__'onClear']);
  353.                 
  354.             new TMessage('info'TAdiantiCoreTranslator::translate('Record deleted'), $pos_action); 
  355.         }
  356.         catch (Exception $e
  357.         {
  358.             new TMessage('error'$e->getMessage());
  359.                 
  360.             TTransaction::rollback();
  361.         }    
  362.     } 
  363.   
  364.     // method onSave
  365.     public function onSave($param)
  366.     {
  367.         try
  368.         {
  369.             TTransaction::open('setcis');
  370.                 
  371.             $this->form->validate(); 
  372.             
  373.             $data $this->form->getData(); 
  374.             if (!$param['id'])
  375.             {
  376.                 $entidades = new entidade;
  377.             }
  378.             else
  379.             {
  380.                 $entidades = new entidade($data->id);
  381.             }
  382.                 
  383.             $entidades->fromArray( (array) $data); 
  384.             $entidades->store();
  385.             
  386.             $data->id $entidades->id;
  387.             
  388.             $this->form->setData($data); 
  389.                 
  390.             new TMessage('info''Record saved');
  391.                 
  392.             TTransaction::close(); 
  393.         }
  394.         catch (Exception $e
  395.         {
  396.             new TMessage('error'$e->getMessage());
  397.             TTransaction::rollback();
  398.         }
  399.     }
  400. }         
  401.         
AT

  1. <?php
  2. /**
  3. * EnderecoForm 
  4. * @version    1.0
  5. * @package    setcia
  6. * @author     Antonio Augusto Tavares
  7. * @copyright  Copyright (c) 2018 Setsoft - Consultoria e Informática Ltda
  8. */
  9. class EnderecoForm extends TPage
  10. {
  11.     protected $form// form
  12.     protected $detail_row;
  13.     protected $fieldlist;
  14.     static    $id_ent;
  15.     
  16.     /**
  17.      * Class constructor
  18.      * Creates the page and the registration form
  19.      */
  20.     function __construct()
  21.     {
  22.         parent::__construct();
  23.         
  24.         // creates the form
  25.         
  26.         $this->form = new TForm('form_endereco');
  27.         
  28.         // cria fieldlist
  29.         
  30.         $this->fieldlist = new TFieldList;
  31.         $this->fieldlist->width '100%';
  32.         $this->form->add($this->fieldlist);
  33.         
  34.         // define campos
  35.         
  36.         $id = new THidden('list_id[]');
  37.         $enderecos_id = new TDBCombo('list_enderecos_id[]''setcis''Enderecos''id''descricao');
  38.         $cep = new TEntry('list_cep[]');
  39.         $cep->setExitAction(new TAction(array($this'onCep')));
  40.         $logradouros_id = new TDBCombo('list_logradouros_id[]''setcis''Logradouros''id''descricao''descricao asc');
  41.         $endereco = new TEntry('list_endereco[]');
  42.         $numero = new TEntry('list_numero[]');
  43.         $complemento = new TEntry('list_complemento[]');
  44.         $bairro = new TEntry('list_bairro[]');
  45.         $cidade_id = new TDBCombo('list_cidade_id[]''setcis''municipio''id''nome''nome asc');
  46.         $estado_id = new TDBCombo('list_estado_id[]''setcis''estado''id''sigla''sigla asc');
  47.         $padrao = new TEntry('list_padrao[]');
  48.         $entidade_id = new THidden('list_entidade_id[]''setcis''Entidade''id''nome');
  49.         $actEnd = new TCombo('action');
  50.         
  51.         //$cep->setExitAction(new TAction(array($this, 'onCep')));
  52.         
  53.         // validações
  54.         
  55.         $enderecos_id->addValidation('Tipo', new TRequiredValidator); 
  56.         $cep->addValidation('Cep', new TRequiredValidator);  
  57.         $logradouros_id->addValidation('Logradouro', new TRequiredValidator); 
  58.         
  59.         // Tamanhos
  60.         $enderecos_id->setSize('100%');
  61.         $cep->setSize('100%');
  62.         $logradouros_id->setSize('100%');
  63.         $endereco->setSize('100%');
  64.         $numero->setSize('100%');
  65.         $complemento->setSize('100%');
  66.         $bairro->setSize('100%');
  67.         $cidade_id->setSize('100%');
  68.         $estado_id->setSize('100%');
  69.         $actEnd->setSize('100%');   
  70.         
  71.          // define ações
  72.         
  73.         $items = ['1'=>'Salvar''2'=>'Excluir'];  
  74.         $actEnd->addItems($items);
  75.         $actEnd->setValue('1');        
  76.         
  77.         $cep_action = new TAction(array($this'onCep'));
  78.         $cep->setChangeAction($cep_action);
  79.         
  80.         $change_action = new TAction(array($this'onDefine'));
  81.         $actEnd->setChangeAction($change_action);
  82.  
  83.         // monta fieldlist    
  84.  
  85.         $this->fieldlist->addField''$id);
  86.         $this->fieldlist->addField'Tipo'$enderecos_id);
  87.         $this->fieldlist->addField'Cep'$cep);
  88.         $this->fieldlist->addField'Logradouro'$logradouros_id);
  89.         $this->fieldlist->addField'Endereco'$endereco);
  90.         $this->fieldlist->addField'Numero'$numero);
  91.         $this->fieldlist->addField'Complemento'$complemento);
  92.         $this->fieldlist->addField'Bairro'$bairro);
  93.         $this->fieldlist->addField'Cidade'$cidade_id);
  94.         $this->fieldlist->addField'Estado'$estado_id);
  95.         $this->fieldlist->addField''$entidade_id);
  96.         $this->fieldlist->addField'Salvar/Excluir'$actEnd);
  97.          
  98.         // adiciona campos no form
  99.         
  100.         $this->form->addField($id);
  101.         $this->form->addField($enderecos_id);
  102.         $this->form->addField($cep);
  103.         $this->form->addField($logradouros_id);
  104.         $this->form->addField($endereco);
  105.         $this->form->addField($numero);
  106.         $this->form->addField($complemento);
  107.         $this->form->addField($bairro);
  108.         $this->form->addField($cidade_id);
  109.         $this->form->addField($estado_id);
  110.         $this->form->addField($padrao);
  111.         $this->form->addField($entidade_id);
  112.         $this->form->addField($actEnd);
  113.         
  114.         // create the page container
  115.         
  116.         $container = new TVBox;
  117.         $container->style 'width: 100%';
  118.         $container->add($this->form);
  119.         
  120.         parent::add($container);
  121.     }
  122.     
  123.     // metodo show() - mostra os dados na pagina
  124.         
  125.     public function show()
  126.     {
  127.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onLoad') )
  128.         {
  129.             $this->onLoad(0);
  130.         }
  131.         parent::show();
  132.     }    
  133.     
  134.     // Clear form
  135.     public function onClear($param)
  136.     {
  137.         $this->fieldlist->addHeader();
  138.     }    
  139.     
  140.     // metodo carga do fieldlist
  141.     
  142.     function onLoad($param)
  143.     {
  144.         try
  145.         {
  146.             TTransaction::open('setcis');
  147.             
  148.             $id_ent TSession::getValue('id_entidade'); 
  149.             
  150.             var_dump($id_ent);
  151.             
  152.             $objEndereco EntidadeEndereco::where('entidade_id''='$id_ent)->load();
  153.             
  154.             $this->fieldlist->addHeader();
  155.             
  156.             if ($objEndereco)
  157.             {
  158.                 foreach ($objEndereco as $end)
  159.                 {
  160.                     $objForm                      = new stdClass;
  161.                     $objForm->list_id             $end->id;
  162.                     $objForm->list_enderecos_id   $end->enderecos_id;
  163.                     $objForm->list_cep            $end->cep;
  164.                     $objForm->list_logradouros_id $end->logradouros_id;
  165.                     $objForm->list_endereco       $end->endereco;     
  166.                     $objForm->list_numero         $end->numero;
  167.                     $objForm->list_complemento    $end->complemento;
  168.                     $objForm->list_bairro         $end->bairro;
  169.                     $objForm->list_cidade_id      $end->cidade_id;     
  170.                     $objForm->list_estado_id      $end->estado_id;       
  171.                   
  172.                     $row $this->fieldlist->addDetail($objForm);
  173.                     $row->del($row->get(count($row->getChildren())-1)); 
  174.                 }
  175.                 $row $this->fieldlist->addDetail( new stdClass );
  176.                 $row->del($row->get(count($row->getChildren())-1)); 
  177.             }
  178.             else
  179.             {
  180.                 $row $this->fieldlist->addDetail( new stdClass );
  181.                 $row->del($row->get(count($row->getChildren())-1)); 
  182.             }
  183.               
  184.              // * fecha transação
  185.                 
  186.              TTransaction::close();
  187.              
  188.              TScript::create(' $( "#numero" ).focus(); '); 
  189.       
  190.         }
  191.         catch (Exception $e
  192.         {
  193.             new TMessage('error'$e->getMessage());
  194.               
  195.             TTransaction::rollback();
  196.         }
  197.     }        
  198.     
  199.     public static function onDefine($param)
  200.     {
  201.         $opcao $param['key'];
  202.  
  203.         //var_dump($param);
  204.  
  205.         if($opcao == '1')
  206.         {
  207.             AdiantiCoreApplication::loadPage(__CLASS__'onSave'$param);
  208.         }
  209.         else
  210.         {        
  211.             // define the delete action
  212.             
  213.             $action = new TAction([__CLASS__'onDelete']);
  214.             $action->setParameters($param); 
  215.  
  216.             //  * shows a dialog to the user
  217.         
  218.             new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
  219.         }
  220.        
  221.     }
  222.     
  223.     // method onSave
  224.    
  225.     public static function onSave($param)
  226.     {
  227.         try
  228.         {
  229.             // captura o indice e id
  230.             
  231.             $posicao $param['_field_data'];
  232.             $input_pieces explode('='$posicao);
  233.             $indice = (int) end($input_pieces);
  234.             $id_end = (int) $param['list_id'][$indice];
  235.   
  236.             TTransaction::open('setcis');
  237.             
  238.             if($id_end 0)
  239.             {
  240.                 $objEndereco = new EntidadeEndereco($id_end);
  241.             }
  242.             else
  243.             {
  244.                 $objEndereco = new EntidadeEndereco;
  245.                 $objEndereco->entidade_id TSession::getValue('id_entidade');
  246.                 
  247.             }            
  248.             $objEndereco->enderecos_id $param['list_enderecos_id'][$indice];
  249.             $objEndereco->cep $param['list_cep'][$indice];
  250.             $objEndereco->logradouros_id $param['list_logradouros_id'][$indice];
  251.             $objEndereco->endereco $param['list_endereco'][$indice];
  252.             $objEndereco->numero $param['list_numero'][$indice];
  253.             $objEndereco->complemento $param['list_complemento'][$indice];
  254.             $objEndereco->bairro $param['list_bairro'][$indice];
  255.             $objEndereco->cidade_id $param['list_cidade_id'][$indice];
  256.             $objEndereco->estado_id $param['list_estado_id'][$indice];
  257.             $objEndereco->store();
  258.             
  259.             TTransaction::close(); // close the transaction
  260.             
  261.             $pos_action = new TAction([__CLASS__'onload']);
  262.                 
  263.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'), $pos_action); 
  264.         }
  265.         catch (Exception $e// in case of exception
  266.         {
  267.             new TMessage('error'$e->getMessage());
  268.             TTransaction::rollback();
  269.         }
  270.     }    
  271.     // method delete endereço
  272.     
  273.     public function onDelete($param)
  274.     {
  275.         try
  276.         {
  277.             // captura o indice e id
  278.             
  279.             $posicao $param['_field_data'];
  280.             $input_pieces explode('='$posicao);
  281.             $indice = (int) end($input_pieces);
  282.             $id_end = (int) $param['list_id'][$indice];        
  283.             
  284.             TTransaction::open('setcis'); 
  285.             
  286.             if($id_end 0)
  287.             {
  288.                 $tabEndereco = new EntidadeEndereco($id_end);
  289.                 $tabEndereco->delete();
  290.             }
  291.             TTransaction::close(); 
  292.                 
  293.             $pos_action = new TAction([__CLASS__'onload']);
  294.                 
  295.             new TMessage('info'TAdiantiCoreTranslator::translate('Record deleted'), $pos_action); 
  296.         }
  297.         catch (Exception $e
  298.         {
  299.             new TMessage('error'$e->getMessage());
  300.                 
  301.             TTransaction::rollback();
  302.         }        
  303.     }    
  304.     
  305.     // method busca cep
  306.     
  307.     public static function onCep($param)
  308.     {
  309.         var_dump($param);
  310.         
  311.         if(isset($param['key']))
  312.         {
  313.             $resultado = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($param['key']).'&formato=query_string');
  314.             
  315.             //var_dump($resultado);
  316.        
  317.             if($resultado)
  318.             {    
  319.                 parse_str($resultado$retorno);   
  320.                 TTransaction::open('setcis'); 
  321.         
  322.                 $obj = new StdClass
  323.                 $obj->enderecos_id $param['enderecos_id'];
  324.                 $obj->cep $param['cep'];
  325.         
  326.                 $logradouro logradouros::where('descricao''='strtoupper($retorno['tipo_logradouro']))->load();
  327.                 foreach ($logradouro as $logradouros$obj->logradouros_id $logradouros->id;
  328.                 $obj->endereco strtoupper($retorno['logradouro']);
  329.                 $obj->bairro strtoupper($retorno['bairro']);
  330.                 $municipios municipio::where('nome''='strtoupper($retorno['cidade']))->load();
  331.                 foreach ($municipios as $municipio$obj->cidade_id $municipio->id;
  332.         
  333.                 $estados estado::where('sigla''='strtoupper($retorno['uf']))->load(); 
  334.                 foreach ($estados as $estado$obj->estado_id $estado->id
  335.         
  336.                 TTransaction::close(); 
  337.         
  338.                 TForm::sendData('form_Endereco'$obj);
  339.             }
  340.             else
  341.             {
  342.                 //Exception $e;
  343.                 //new TMessage('error', $e->getMessage()); 
  344.             }  
  345.         }
  346.         else 
  347.         {
  348.             //catch (Exception $e)
  349.             //new TMessage('error', $e->getMessage()); 
  350.         }                          
  351.     }        
  352. }