Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Dificuldade em carregar dados multi field Amigos, Estou com dificuldade em carregar campos multifields, no onEdit e não estou conseguindo identificar o problema. Alguém pode me ajudar ? Segue trecho do código abaixo. Funcionario.class.php ...
RB
Dificuldade em carregar dados multi field  
Amigos,

Estou com dificuldade em carregar campos multifields, no onEdit e não estou conseguindo identificar o problema.

Alguém pode me ajudar ?

Segue trecho do código abaixo.

Funcionario.class.php
  1. <?php
  2.  const TABLENAME 'funcionario';
  3.     const PRIMARYKEY'id';
  4.     const IDPOLICY =  'serial'// {max, serial}
  5.     
  6.     private $pessoa_enderecos;
  7.     public function __construct($id NULL$callObjectLoad TRUE)
  8.     {
  9.         parent::__construct($id$callObjectLoad);
  10.         parent::addAttribute('pessoa_id');
  11.         parent::addAttribute('data_contratacao');
  12.         parent::addAttribute('organizacao_id');
  13.         parent::addAttribute('dependente');
  14.         parent::addAttribute('matricula');
  15.         parent::addAttribute('pis');
  16.         parent::addAttribute('ativo');
  17.         parent::addAttribute('criacao');
  18.         parent::addAttribute('atualizacao');
  19.         parent::addAttribute('data_emissao_pis');
  20.         parent::addAttribute('pai');
  21.         parent::addAttribute('mae');
  22.         parent::addAttribute('grau_instrucao');
  23.         parent::addAttribute('deficiente_fisico'); 
  24.       ........................
  25.      public function get_pessoa_enderecos()
  26.     {
  27.         // loads the associated object
  28.         if (empty($this->pessoa_enderecos))
  29.             $this->pessoa_enderecos PessoaEndereco::where('pessoa_id','=',$this->pessoa_id)->where('organizacao_id','=',$this->organizacao_id)->load();
  30.     
  31.         // returns the associated object
  32.         return $this->pessoa_enderecos;
  33.     }
  34.        
  35.     }
  36. ?>


FuncionarioFormBuilder.class.php

  1. <?php
  2. class FuncionarioFormBuilder extends TPage
  3. {
  4.     private $form;
  5.     private $cep;
  6.     private $enderecoList;
  7.     private $dependenteList;
  8.     protected $contatoList;
  9.     public function __construct()
  10.     {
  11.            //dados correspondências
  12.         $dados_endereco        = new TLabel('Endereco');
  13.         $dados_endereco->class ='lbl_titulo';
  14.         $this->form->addContent( [$dados_endereco] );
  15.         $frame_endereco = new TFrame('frame_endereco');
  16.         $frame_endereco->style 'margin:-13px 0 0 -1px; boredr-top:none;width:98.5%;float:left;display:table;';
  17.         // detail fields
  18.         $this->enderecoList = new TFieldList('Lista_enderecos');
  19.         $frame_endereco->add($this->enderecoList);
  20.         $this->form->addFields( [$frame_endereco] );
  21.         $id_endereco      = new TEntry('id_endereco[]');
  22.         $id_endereco->setEditable(false);
  23.         $id_endereco->style 'display:none;';
  24.         $this->cep        = new TEntry('txt_cep[]');
  25.         $this->cep->setMask('00000-000');
  26.         $this->cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));
  27.         
  28.         //$input_cep = new TAction(array($this,'onCep'));
  29.         //$input_cep = new TAction(['Endereco','oncep'], ['param1'=>"$cep",'param2'=>'frm_funcionario']);
  30.         $this->cep->setExitAction(new TAction(array($this,'onCep')));
  31.         $logradouro       = new TEntry('logradouro[]');
  32.         $numero           = new TEntry('numero[]');
  33.         $bairro           = new TEntry('bairro[]');
  34.         $cidade           = new TEntry('cidade[]');
  35.         $uf               = new TEntry('uf[]');
  36.         $tipo_endereco_id = new TDBCombo('tipo_endereco_id[]','centinel','TipoEndereco','id','descricao');
  37.         $complemento      = new TEntry('compl[]');
  38.         $regiao_id        = new TDBCombo('regiao_id[]','centinel','Regiao','id','descricao');
  39.         $uf->setMask('AA'); // Máscara Alfanumérica Delimitada
  40.         $this->enderecoList->addField'<span class = "lbl_text" style = "display:none;">#</span>'$id_endereco);
  41.         $this->enderecoList->addField'<span class = "lbl_text">Cep</span>'$this->cep);
  42.         $this->enderecoList->addField'<span class = "lbl_text">Logradouro</span>'$logradouro);
  43.         $this->enderecoList->addField'<span class = "lbl_text">Número<span/>'$numero);
  44.         $this->enderecoList->addField'<span class = "lbl_text">Tipo Endereço</span>'$tipo_endereco_id);
  45.         $this->enderecoList->addField'<span class = "lbl_text">Bairro</span>'$bairro);
  46.         $this->enderecoList->addField'<span class = "lbl_text">Cidade</span>'$cidade);
  47.         $this->enderecoList->addField'<span class = "lbl_text">UF</span>'$uf);
  48.         $this->enderecoList->addField'<span class = "lbl_text">Complemento</span>'$complemento);
  49.         $this->enderecoList->addField'<span class = "lbl_text">Região</span>'$regiao_id);
  50.         //$this->enderecoList->enableSorting();
  51.         $this->form->addField($id_endereco);
  52.         $this->form->addField($this->cep);
  53.         $this->form->addField($logradouro);
  54.         $this->form->addField($numero);
  55.         $this->form->addField($bairro);
  56.         $this->form->addField($tipo_endereco_id);
  57.         $this->form->addField($cidade);
  58.         $this->form->addField($uf);
  59.         $this->form->addField($complemento);
  60.         $this->form->addField($regiao_id);
  61.         }
  62. public function onEdit($param)
  63.     {
  64.         try 
  65.         {
  66.             if (isset($param['key'])) 
  67.             {
  68.                 $key $param['key'];
  69.                 $organizacao_id TSession::getValue('organizacion_id'); // pega id da empresa
  70.                 //abre a transação
  71.                 TTransaction::open('teste');
  72.                 //carrega o active record Funcionario conforme id
  73.                 $funcionario Funcionario::find($key);
  74.                              ....................
  75.                              if ($funcionario->pessoa_enderecos)
  76.                 {   
  77.                     $this->enderecoList->addHeader();   
  78.                     foreach($funcionario->pessoa_enderecos  as $endereco)
  79.                     {
  80.                         print $endereco->endereco_id.'<br/>Logradouro : '.$endereco->endereco->logradouro ;
  81.                         $endereco->id_endereco     $endereco->endereco_id;
  82.                         $endereco->txt_cep        substr($endereco->endereco->cep05) . '-' substr($endereco->endereco->cep58);
  83.                         $endereco->logradouro      $endereco->endereco->logradouro;
  84.                         $endereco->bairro          $endereco->endereco->bairro;
  85.                         $endereco->cidade           $endereco->endereco->cidade;
  86.                         $endereco->uf               $endereco->endereco->uf;
  87.                         $endereco->compl        $endereco->endereco->complemento;
  88.                         
  89.                         $this->enderecoList->addDetail($endereco);
  90.                     }
  91.                     $this->enderecoList->addCloneAction();
  92.                 }
  93.                 else
  94.                 {
  95.                     $this->onClear($param);
  96.                 }
  97.                          }
  98.                               //preenche o formulario com os dados do funcionário
  99.                 $this->form->setData($funcionario);
  100.                 TTransaction::close();
  101.         } 
  102.         catch (Exception $e
  103.         {
  104.             new TMessage('error'$e->getMessage());
  105.             //desfaz operações
  106.             TTransaction::rollback();
  107.         }
  108. }

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


RB

Olá, eu de novo,

Outra coisa que estou tendo problemas, quando o método onEdit é executado os titulos dos multifields são repetidos.

Método onClear, esqueci de postar

  1. <?php
  2. public function onClear($param)
  3.     {
  4.         $this->form->clear();
  5.         //endereços
  6.         $this->enderecoList->addHeader();
  7.         $this->enderecoList->addDetail( new stdClass );
  8.         $this->enderecoList->addCloneAction();
  9.         //dependentes
  10.         $this->dependenteList->addHeader();
  11.         $this->dependenteList->addDetail( new stdClass );
  12.         $this->dependenteList->addCloneAction();
  13.         //contato
  14.         $this->contatoList->addHeader();
  15.         $this->contatoList->addDetail( new stdClass );
  16.         $this->contatoList->addCloneAction();
  17.     }
  18. ?>
NR

Difícil dizer sem ver o restante do código, mas provavelmente você está chamando a função addHeader em mais de um local. Outra possibilidade é estar adicionando o componente mais de uma vez ao form.
RB

Nataniel,

O código é o formulário acima FuncionarioFormBuilder.class.php
NR

Sim, mas acho que você não postou o código completo
RB

Nataniel,

Segue o código abaixo

  1. <?php
  2. class FuncionarioFormBuilder extends TPage
  3. {
  4.     private $form;
  5.     private $cep;
  6.     private $enderecoList;
  7.     private $dependenteList;
  8.     protected $contatoList;
  9.     public function __construct()
  10.     {
  11.         parent::__construct();
  12.         parent::include_css('app/resources/builder.css');
  13.         parent::include_css('app/resources/blue_modificado.css');
  14.         $this->form = new BootstrapFormBuilder('frm_funcionario');
  15.         $this->form->setFormTitle('Funcionário');
  16.         $this->form->class ='frm_funcionario';
  17.         $this->form->appendPage('Dados Pessoais');
  18.         /*
  19.         $dados_func        = new TLabel('Dados pessoais');
  20.         $dados_func->class ='lbl_titulo';
  21.         $this->form->addContent( [$dados_func] );
  22.         */
  23.         //labels dos campos
  24.         $lbl_id             = new TLabel('#');
  25.         //$lbl_id->style = 'display:none';
  26.         $label_nome          = new TLabel('Nome');
  27.         $lbl_data_nascto     = new TLabel('Data Nascto');
  28.         $lbl_local_nascto     = new TLabel('Naturalidade');
  29.         $lbl_uf                = new TLabel('UF');
  30.         $lbl_estado_civil   = new TLabel('Estado Cí­vil');
  31.         $lbl_genero         = new TLabel('Genero');
  32.         $lbl_etnia          = new TLabel('Etnia');
  33.         $lbl_grau_instrucao = new TLabel('Grau de Instrução');
  34.         $lbl_nome_mae         = new TLabel('Mãe');
  35.         $lbl_nome_pai         = new TLabel('Pai');
  36.         $lbl_conjuge         = new TLabel('Conjuge');
  37.         $lbl_banco            = new TLabel('Banco');
  38.         $lbl_agencia        = new TLabel('Agência');
  39.         $lbl_conta            = new TLabel('Conta');
  40.         $lbl_tipo_conta        = new TLabel('Tipo de Conta');
  41.         //Campos de entrada
  42.         $id                 = new TEntry('id');
  43.         //$id->style = 'display:none;';
  44.         $nome               = new TEntry('nome');
  45.         $local_nascto       = new TEntry('local_nascto');
  46.         $local_nascto_uf    = new TEntry('local_nascto_uf');
  47.         $data_nascto        = new TDate('data_nascimento');
  48.         $etnia_id              = new TDBCombo('etnia_id','centinel','Etnia','id','descricao');
  49.         $estado_civil_id    = new TDBCombo('estado_civil_id','centinel''Civil''id''descricao');
  50.         $genero_id          = new TDBCombo('genero_id','centinel','Genero','id','descricao');
  51.         $grau_instrucao        = new TEntry('grau_instrucao');
  52.         $conjuge            = new TEntry('nome_conjuge');
  53.         $nome_mae           = new TEntry('nome_mae');
  54.         $nome_pai           = new TEntry('nome_pai');
  55.         $banco                = new TEntry('nome_banco');
  56.         $agencia            = new TEntry('nome_agencia');
  57.         $conta                = new TEntry('numero_conta');
  58.         $tipo_conta_id      = new TDBCombo('tipo_conta_id','centinel','TipoConta','id','descricao');
  59.         //validações
  60.         $nome->addValidation('nome', new TRequiredValidator);
  61.         $data_nascto->addValidation('data_nascimento', new TRequiredValidator);
  62.         $data_nascto->setMask('dd/mm/yyyy');
  63.         //default
  64.         $id->setEditable(false);
  65.         $estado_civil_id->setDefaultOption(false);
  66.         $etnia_id->setDefaultOption(false);
  67.         $genero_id->setDefaultOption(false);
  68.         //formata caracteres em letra maiscula
  69.         $nome->forceUpperCase();
  70.         $conjuge->forceUpperCase();
  71.         $local_nascto->forceUpperCase();
  72.         $local_nascto_uf->forceUpperCase();
  73.         $nome_mae->forceUpperCase();
  74.         $nome_pai->forceUpperCase();
  75.         $grau_instrucao->forceUpperCase();
  76.         $banco->forceUpperCase();
  77.         $label_nome->class='lbl_text';
  78.         $lbl_id->class='lbl_text';
  79.         $lbl_local_nascto->class='lbl_text';
  80.         $lbl_data_nascto->class='lbl_text';
  81.         $lbl_uf->class='lbl_text';
  82.         $lbl_nome_mae->class='lbl_text';
  83.         $lbl_nome_pai->class='lbl_text';
  84.         $lbl_estado_civil->class='lbl_text';
  85.         $lbl_grau_instrucao->class='lbl_text';
  86.         $lbl_genero->class='lbl_text';
  87.         $lbl_etnia->class='lbl_text';
  88.         $lbl_conjuge->class='lbl_text';
  89.         $lbl_banco->class='lbl_text';
  90.         $lbl_agencia->class='lbl_text';
  91.         $lbl_conta->class='lbl_text';
  92.         $lbl_tipo_conta->class='lbl_text';
  93.         //tamanho dos labels
  94.         $lbl_id->setSize('6%');
  95.         $label_nome->setSize('47%');
  96.         $lbl_local_nascto->setSize('20%');
  97.         $lbl_uf->setSize('5%');
  98.         $lbl_data_nascto->setSize('13%');
  99.         $lbl_estado_civil->setSize('23.5%');
  100.         $lbl_genero->setSize('23.5%');
  101.         $lbl_etnia->setSize('15%');
  102.         $lbl_grau_instrucao->setSize('25%');
  103.         $lbl_conjuge->setSize('28%');
  104.         $lbl_nome_mae->setSize('53%');
  105.         $lbl_nome_pai->setSize('47%');
  106.         $lbl_banco->setSize('23.5%');
  107.         $lbl_agencia->setSize('23.5%');
  108.         $lbl_conta->setSize('26.5%');
  109.         $lbl_tipo_conta->setSize('26.5%');
  110.         //tamanho dos campos
  111.         $id->setSize('6%');
  112.         $nome->setSize('47%');
  113.         $local_nascto->setSize('20%');
  114.         $local_nascto_uf->setSize('5%');
  115.         $data_nascto->setSize('13%');
  116.         $etnia_id->setSize('15%');
  117.         $estado_civil_id->setSize('23.5%');
  118.         $genero_id->setSize('23.5%');
  119.         $grau_instrucao->setSize('25%');
  120.         $conjuge->setSize('28%');
  121.         $nome_mae->setSize('53%');
  122.         $nome_pai->setSize('47%');
  123.         $banco->setSize('23.5%');
  124.         $agencia->setSize('23.5%');
  125.         $conta->setSize('26.5%');
  126.         $tipo_conta_id->setSize('26.5%');
  127.         $this->form->addFields( [$lbl_id,$label_nome,$lbl_local_nascto,$lbl_uf,$lbl_data_nascto,$lbl_etnia] );
  128.         $this->form->addFields( [$id,$nome,$local_nascto,$local_nascto_uf,$data_nascto,$etnia_id] );
  129.         $this->form->addFields( [$lbl_estado_civil,$lbl_genero,$lbl_grau_instrucao,$lbl_conjuge] );
  130.         $this->form->addFields( [$estado_civil_id,$genero_id,$grau_instrucao,$conjuge] );
  131.         $this->form->addFields( [$lbl_nome_pai,$lbl_nome_mae] );
  132.         $this->form->addFields( [$nome_pai,$nome_mae] );
  133.         $this->form->addFields( [$lbl_banco,$lbl_agencia,$lbl_conta,$lbl_tipo_conta] );
  134.         $this->form->addFields( [$banco,$agencia,$conta,$tipo_conta_id] );
  135.         //dados contato
  136.         /*
  137.         $div_titulo = new TElement('div');
  138.         $div_titulo->style = 'width:100%;float:left;background:#f4f4f4;margin:-5px 0 0 -15px;padding:5px;color:#069;';
  139.         $titulo_contato = new TElement('h1');
  140.         $titulo_contato->class = 'lbl_text';
  141.         $titulo_contato = 'Contato';
  142.         $div_titulo->add($titulo_contato);
  143.         */
  144.         $dados_contato        = new TLabel('Contato');
  145.         $dados_contato->class ='lbl_titulo';
  146.         $this->form->addContent( [$dados_contato] );
  147.         $frame_contato = new TFrame('frame_contato');
  148.         $frame_contato->style 'margin:-13px 0 0 -1px; border-top:none;width:98.5%;float:left;display:table;';
  149.         // detail fields
  150.         $this->contatoList = new TFieldList('Lista_enderecos');
  151.         //$this->contatoList->enableSorting();
  152.         //$frame_contato->add($div_titulo);
  153.         $frame_contato->add($this->contatoList);
  154.         $ddi              = new TEntry('ddi[]');
  155.         $ddd              = new TEntry('ddd[]');
  156.         $telefone         = new TEntry('telefone[]');
  157.         $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]','teste','TipoTelefone','id','descricao');
  158.         $tipo_telefone_id->setDefaultOption(false);
  159.         $operadora_id = new TDBCombo('operadora_id[]','teste','Operadora','id','nome');
  160.         $operadora_id->setDefaultOption(false);
  161.         $ddi->setMask('999');
  162.         $ddd->setMask('999');
  163.         $telefone->setMask('9999-9999');
  164.         $ddi->setSize('50');
  165.         $ddd->setSize('50');
  166.         $telefone->setSize('100');
  167.         $tipo_telefone_id->setSize('100');
  168.         $operadora_id->setSize('100');
  169.         $this->contatoList->addField'<span class = "lbl_text">DDD</span>'$ddi);
  170.         $this->contatoList->addField'<span class = "lbl_text">DDI</span>'$ddd);
  171.         $this->contatoList->addField'<span class = "lbl_text">Telefone</span>'$telefone);
  172.         $this->contatoList->addField'<span class = "lbl_text">Tipo Telefone<span/>'$tipo_telefone_id);
  173.         $this->contatoList->addField'<span class = "lbl_text">Operadora<span/>'$operadora_id);
  174.         $this->form->addField($ddi);
  175.         $this->form->addField($ddd);
  176.         $this->form->addField($telefone);
  177.         $this->form->addField($tipo_telefone_id);
  178.         $this->form->addFields( [$frame_contato] );
  179.         //dados correspondências
  180.         $dados_endereco        = new TLabel('Endereco');
  181.         $dados_endereco->class ='lbl_titulo';
  182.         $this->form->addContent( [$dados_endereco] );
  183.         $frame_endereco = new TFrame('frame_endereco');
  184.         $frame_endereco->style 'margin:-13px 0 0 -1px; boredr-top:none;width:98.5%;float:left;display:table;';
  185.         // detail fields
  186.         $this->enderecoList = new TFieldList('Lista_enderecos');
  187.         $frame_endereco->add($this->enderecoList);
  188.         $this->form->addFields( [$frame_endereco] );
  189.         $id_endereco      = new TEntry('id_endereco[]');
  190.         $id_endereco->setEditable(false);
  191.         $id_endereco->style 'display:none;';
  192.         $this->cep        = new TEntry('txt_cep[]');
  193.         $this->cep->setMask('00000-000');
  194.         $this->cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));        
  195.         //$input_cep = new TAction(array($this,'onCep'));
  196.         //$input_cep = new TAction(['Endereco','oncep'], ['param1'=>"$cep",'param2'=>'frm_funcionario']);
  197.         $this->cep->setExitAction(new TAction(array($this,'onCep')));
  198.         $logradouro       = new TEntry('logradouro[]');
  199.         $numero           = new TEntry('numero[]');
  200.         $bairro           = new TEntry('bairro[]');
  201.         $cidade           = new TEntry('cidade[]');
  202.         $uf               = new TEntry('uf[]');
  203.         $tipo_endereco_id = new TDBCombo('tipo_endereco_id[]','teste','TipoEndereco','id','descricao');
  204.         $complemento      = new TEntry('compl[]');
  205.         $regiao_id        = new TDBCombo('regiao_id[]','teste','Regiao','id','descricao');
  206.         $uf->setMask('AA'); // Máscara Alfanumérica Delimitada
  207.         $this->enderecoList->addField'<span class = "lbl_text" style = "display:none;">#</span>'$id_endereco);
  208.         $this->enderecoList->addField'<span class = "lbl_text">Cep</span>'$this->cep);
  209.         $this->enderecoList->addField'<span class = "lbl_text">Logradouro</span>'$logradouro);
  210.         $this->enderecoList->addField'<span class = "lbl_text">Número<span/>'$numero);
  211.         $this->enderecoList->addField'<span class = "lbl_text">Tipo Endereço</span>'$tipo_endereco_id);
  212.         $this->enderecoList->addField'<span class = "lbl_text">Bairro</span>'$bairro);
  213.         $this->enderecoList->addField'<span class = "lbl_text">Cidade</span>'$cidade);
  214.         $this->enderecoList->addField'<span class = "lbl_text">UF</span>'$uf);
  215.         $this->enderecoList->addField'<span class = "lbl_text">Complemento</span>'$complemento);
  216.         $this->enderecoList->addField'<span class = "lbl_text">Região</span>'$regiao_id);
  217.         //$this->enderecoList->enableSorting();
  218.         $this->form->addField($id_endereco);
  219.         $this->form->addField($this->cep);
  220.         $this->form->addField($logradouro);
  221.         $this->form->addField($numero);
  222.         $this->form->addField($bairro);
  223.         $this->form->addField($tipo_endereco_id);
  224.         $this->form->addField($cidade);
  225.         $this->form->addField($uf);
  226.         $this->form->addField($complemento);
  227.         $this->form->addField($regiao_id);
  228.         $id_endereco->setSize('30');
  229.         $this->cep->setSize('70');
  230.         $logradouro->setSize('180');
  231.         $bairro->setSize('100');
  232.         $cidade->setSize('100');
  233.         $uf->setSize('30');
  234.         $numero->setSize('60');
  235.         $complemento->setSize('120');
  236.         $tipo_endereco_id->setSize('100');
  237.         $regiao_id->setSize('100');
  238.         //adiciona aba documentos
  239.         $this->form->appendPage('Documentos');
  240.         //documentos pessoais
  241.         /*
  242.         $doc_pessoais        = new TLabel('Documentos');
  243.         $doc_pessoais->class ='lbl_titulo';
  244.         */
  245.         $lbl_cpf             = new TLabel('CPF');
  246.         $lbl_rg              = new TLabel('RG');
  247.         $lbl_data_expedicao  = new TLabel('Data Expedição');
  248.         $lbl_orgao           = new TLabel('Expedição');
  249.         $lbl_titulo_eleitor  = new TLabel('Titulo Eleitor');
  250.         $lbl_zona            = new TLabel('Zona');
  251.         $lbl_secao           = new TLabel('Seção');
  252.         $lbl_ctps            = new TLabel('CTPS');
  253.         $lbl_serie           = new TLabel('Série / UF');
  254.         //$lbl_ctps_uf             = new TLabel('UF');
  255.         $lbl_pis             = new TLabel('PIS');
  256.         $lbl_data_pis        = new TLabel('Data Emissão');
  257.         $lbl_data_emissao    = new TLabel('Data Emissão');
  258.         $lbl_cert_reservista = new TLabel('Certidão Reservista');
  259.         $lbl_cert_categoria  = new TLabel('Categoria');
  260.         $lbl_habilitacao     = new TLabel('Habilitação');
  261.         $lbl_categoria       = new TLabel('Categoria');
  262.         $lbl_vencimento      = new TLabel('Vencimento');
  263.         $cpf                 = new TEntry('cpf');
  264.         $rg                  = new TEntry('rg');
  265.         $data_expedicao      = new TDate('data_expedicao');
  266.         $orgao_emissor       = new TEntry('orgao_emissor');
  267.         $ctps               = new TEntry('carteira_trabalho');
  268.         $serie              = new TEntry('numero_serie');
  269.         //$ctps_uf             = new TEntry('ctps_uf');
  270.         $data_emissao       = new TDate('data_emissao');
  271.         $pis                = new TEntry('pis');
  272.         $data_pis           = new TDate('data_pis');
  273.         $titulo_eleitor      = new TEntry('titulo_eleitor');
  274.         $zona                = new TEntry('zona');
  275.         $secao               = new TEntry('secao');
  276.         $certidao_reservista = new TEntry('certidao_reservista');
  277.         $cat_cert_reservista = new TEntry('cat_cert_reservista');
  278.         $habilitacao         = new TEntry('habilitacao');
  279.         $categoria           = new TEntry('categoria');
  280.         $vencimento          = new TDate('vencimento');        
  281.         //formata caracters em letras maisculas
  282.         $orgao_emissor->forceUpperCase();
  283.         $cat_cert_reservista->forceUpperCase();
  284.         $categoria->forceUpperCase();
  285.         //formatações
  286.         $data_expedicao->setMask('dd/mm/yyyy'); // define date mask
  287.         $vencimento->setMask('dd/mm/yyyy'); // define date mask
  288.         $titulo_eleitor->setMask('999999999999'); // Máscara Numérica Delimitada
  289.         $orgao_emissor->setMask('AAA'); // Máscara Alfanumérica Delimitada
  290.         //$ctps_uf->setMask('AA'); // Máscara Alfanumérica Delimitada
  291.         $lbl_cpf->setSize('20%');
  292.         $lbl_rg->setSize('20%');
  293.         $lbl_orgao->setSize('110');
  294.         $lbl_titulo_eleitor->setSize('20%');
  295.         $lbl_cert_reservista->setSize('20%');
  296.         $lbl_cert_categoria->setSize('19.5%');
  297.         $lbl_zona->setSize('9.5%');
  298.         $lbl_secao->setSize('9.5%');
  299.         $lbl_data_expedicao->setSize('100');
  300.         $lbl_habilitacao->setSize('20%');
  301.         $lbl_categoria->setSize('95');
  302.         $lbl_vencimento->setSize('105');
  303.         $cpf->setSize('20%');
  304.         $rg->setSize('20%');
  305.         $orgao_emissor->setSize('110');
  306.         $lbl_ctps->setSize('145');
  307.         $lbl_serie->setSize('105');
  308.         $lbl_data_emissao->setSize('110');
  309.         $lbl_pis->setSize('140');
  310.         $lbl_data_pis->setSize('110');
  311.         $lbl_data_pis->setSize('110');
  312.         $ctps->setSize('145');
  313.         $serie->setSize('105');
  314.         //$ctps_uf->setSize('35');
  315.         $data_emissao->setSize('110');
  316.         $pis->setSize('140');
  317.         $data_pis->setSize('110');
  318.         $titulo_eleitor->setSize('20%');
  319.         $zona->setSize('9.5%');
  320.         $secao->setSize('9.5%');
  321.         $certidao_reservista->setSize('20%');
  322.         $cat_cert_reservista->setSize('19.5%');
  323.         $data_expedicao->setSize('100');
  324.         $habilitacao->setSize('20%');
  325.         $categoria->setSize('95');
  326.         $vencimento->setSize('105');
  327.         $lbl_cpf->class='lbl_text';
  328.         $lbl_rg->class='lbl_text';
  329.         $lbl_data_expedicao->class='lbl_text';
  330.         $lbl_orgao->class='lbl_text';
  331.         $lbl_titulo_eleitor->class='lbl_text';
  332.         $lbl_zona->class='lbl_text';
  333.         $lbl_secao->class='lbl_text';
  334.         $lbl_cert_reservista->class='lbl_text';
  335.         $lbl_cert_categoria->class='lbl_text';
  336.         $lbl_habilitacao->class='lbl_text';
  337.         $lbl_categoria->class='lbl_text';
  338.         $lbl_vencimento->class='lbl_text';
  339.         //$this->form->addContent( [$doc_pessoais] );
  340.         $this->form->addFields( [$lbl_cpf,$lbl_rg,$lbl_orgao,$lbl_data_expedicao] );
  341.         $this->form->addFields( [$cpf,$rg,$orgao_emissor,$data_expedicao] );
  342.         $this->form->addFields( [$lbl_ctps,$lbl_serie,$lbl_data_emissao,$lbl_pis,$lbl_data_pis] );
  343.         $this->form->addFields( [$ctps,$serie,$data_emissao,$pis,$data_pis] );
  344.         $this->form->addFields( [$lbl_titulo_eleitor,$lbl_zona,$lbl_secao] );
  345.         $this->form->addFields( [$titulo_eleitor,$zona,$secao] );
  346.         $this->form->addFields( [$lbl_cert_reservista,$lbl_cert_categoria] );
  347.         $this->form->addFields( [$certidao_reservista,$cat_cert_reservista] );
  348.         $this->form->addFields( [$lbl_habilitacao,$lbl_categoria,$lbl_vencimento] );
  349.         $this->form->addFields( [$habilitacao,$categoria,$vencimento] );
  350.         //adiciona aba dependentes
  351.         $this->form->appendPage('Dependentes');
  352.         //Relação de dependentes
  353.         /*
  354.         $dados_dependente        = new TLabel('Dependentes');
  355.         $dados_dependente->class ='lbl_titulo';
  356.         $this->form->addContent( [$dados_dependente] );
  357.         */
  358.         $frame_dependentes = new TFrame('frame_dependentes');
  359.         $frame_dependentes->style 'margin-left:-1px;width:98.5%;float:left;display:table;';
  360.         //$frame_dependentes->setLegend('Dependentes');
  361.         // detail fields
  362.         $this->dependenteList = new TFieldList('Lista_dependentes');
  363.         //$this->dependenteList->enableSorting();
  364.         $nome_dependente            = new TEntry('nome_dependente[]');
  365.         $nascimento_dependente      = new TDate('nascimento_dependente[]');
  366.         $nascimento_dependente->setMask('dd/mm/yyyy'); // define date mask
  367.         $grau_parentesco_dependente = new TDBCombo('grau_parentesco_dependente[]','teste','Parentesco','id','descricao');
  368.         $this->dependenteList->addField'<span class = "lbl_text">Nome</span>'$nome_dependente);
  369.         $this->dependenteList->addField'<span class = "lbl_text">Data Nascimento</span>',$nascimento_dependente);
  370.         $this->dependenteList->addField'<span class = "lbl_text">Grau Parentesco</span>'$grau_parentesco_dependente);
  371.         $nome_dependente->forceUpperCase();
  372.         $frame_dependentes->add($this->dependenteList);
  373.         $this->form->addFields( [$frame_dependentes] );
  374.         $this->form->addField($nome_dependente);
  375.         $this->form->addField($nascimento_dependente);
  376.         $this->form->addField($grau_parentesco_dependente);
  377.         $nome_dependente->style 'width:300px';
  378.         $nascimento_dependente->style 'width:150px';
  379.         $grau_parentesco_dependente->style 'width:150px';
  380.         //adiciona aba dados profissionais
  381.         $this->form->appendPage('Dados Profissionais');
  382.         $lbl_data_adm_empresa   = new TLabel('Data Admissão');
  383.         $lbl_funcao             = new TLabel('Função');
  384.         $lbl_salario            = new TLabel('Salário');
  385.         $lbl_departamento       = new TLabel('Departamento');
  386.         $lbl_vale_transporte    = new TLabel('Vale Transporte');
  387.         $lbl_vale_refeicao      = new TLabel('Vale Refeição');
  388.         $lbl_outros_beneficios  = new TLabel('Outros Benefícios');        
  389.         
  390.         $lbl_entrada            = new TLabel('Entrada');
  391.         $lbl_intervalo          = new TLabel('Intervalo');
  392.         $lbl_saida              = new TLabel('Saída');
  393.         $lbl_descanso_semanal   = new TLabel('Descanso Semanal');
  394.         $lbl_deficiente_fisico  = new TLabel('Deficiente Fisico');
  395.         $lbl_matricula            = new TLabel('Matricula');
  396.         $data_adm             = new TDate('data_adm');
  397.         $funcao             = new TEntry('funcao');
  398.         $salario            = new TEntry('txt_salario');
  399.         $departamento_id    = new TDBCombo('departamento_id','teste','DepartamentoOrganizacao','departamento_id','{departamento->descricao}');
  400.         $matricula          = new TEntry('matricula');
  401.         $vale_transporte    = new TEntry('vale_transporte');
  402.         $vale_refeicao      = new TEntry('vale_refeicao');
  403.         $outros_beneficios  = new TEntry('outros_beneficios');
  404.         
  405.         $entrada            = new TDateTime('entrada');
  406.         $intervalo          = new TDateTime('intervalo');
  407.         $saida              = new TDateTime('saida');
  408.         $descanso_semanal   = new TEntry('descanso_semanal');
  409.         $deficiente_fisico_id  = new TCombo('deficiente_fisico_id');
  410.         $deficiente_fisico_id->addItems( [ '1' => 'Sim''2' => 'Não'] );
  411.         $lbl_serie->class='lbl_text';
  412.         $lbl_data_adm_empresa->class='lbl_text';
  413.         $lbl_funcao->class='lbl_text';
  414.         $lbl_salario->class='lbl_text';
  415.         $lbl_departamento->class='lbl_text';
  416.         $lbl_vale_transporte->class='lbl_text';
  417.         $lbl_vale_refeicao->class='lbl_text';
  418.         $lbl_outros_beneficios->class='lbl_text';
  419.         $lbl_ctps->class='lbl_text';
  420.         $lbl_serie->class='lbl_text';
  421.         //$lbl_ctps_uf
  422.         $lbl_data_emissao->class='lbl_text';
  423.         $lbl_pis->class='lbl_text';
  424.         $lbl_data_pis->class='lbl_text';
  425.         $lbl_entrada->class='lbl_text';
  426.         $lbl_intervalo->class='lbl_text';
  427.         $lbl_saida->class='lbl_text';
  428.         $lbl_descanso_semanal->class='lbl_text';
  429.         $lbl_deficiente_fisico->class='lbl_text';
  430.         $lbl_matricula->class='lbl_text';
  431.         $lbl_data_adm_empresa->setSize('110');
  432.         $lbl_funcao->setSize('180');
  433.         $lbl_salario->setSize('180');
  434.         $lbl_departamento->setSize('180');
  435.         $lbl_entrada->setSize('110');
  436.         $lbl_intervalo->setSize('110');
  437.         $lbl_saida->setSize('110');
  438.         $lbl_descanso_semanal->setSize('150');
  439.         $lbl_deficiente_fisico->setSize('110');
  440.         $lbl_matricula->setSize('110');
  441.         $data_adm->setSize('110');
  442.         $funcao->setSize('180');
  443.         $salario->setSize('180');
  444.         $departamento_id->setSize('180');
  445.         
  446.         $entrada->setSize('110');
  447.         $intervalo->setSize('110');
  448.         $saida->setSize('110');
  449.         $descanso_semanal->setSize('150');
  450.         $deficiente_fisico_id->setSize('110');
  451.         $matricula->setSize('110');
  452.         //validações
  453.         $rg->addValidation('rg', new TRequiredValidator);
  454.         $cpf->addValidation('cpf', new TRequiredValidator);
  455.         $orgao_emissor->addValidation('rg', new TRequiredValidator);
  456.         //formata mascara
  457.         $data_adm->setMask('dd/mm/yyyy'); // define date mask
  458.         $data_emissao->setMask('dd/mm/yyyy'); // define date mask
  459.         $data_pis->setMask('dd/mm/yyyy'); // define date mask
  460.         $cpf->setMask('999.999.999.99'); // Máscara Numérica Delimitada
  461.         $rg->setMask('99.999.999.99'); // Máscara Numérica Delimitada
  462.         $serie->forceUpperCase();
  463.         $entrada->setMask('hh:00');
  464.         $saida->setMask('hh:00');
  465.         $intervalo->setMask('hh:00');
  466.         $this->form->addFields( [$lbl_data_adm_empresa,$lbl_funcao,$lbl_salario,$lbl_departamento,$lbl_matricula] );
  467.         $this->form->addFields( [$data_adm,$funcao,$salario,$departamento_id,$matricula] );        
  468.         $this->form->addFields( [$lbl_entrada,$lbl_intervalo,$lbl_saida,$lbl_descanso_semanal,$lbl_deficiente_fisico] );
  469.         $this->form->addFields( [$entrada,$intervalo,$saida,$descanso_semanal,$deficiente_fisico_id] );
  470.         //$this->form->addFields( [$lbl_descanso_semanal,$lbl_deficiente_fisico] );
  471.         //$this->form->addFields( [$descanso_semanal,$deficiente_fisico] );
  472.         $this->form->addAction('Salvar',new TAction(array($this'onSave')),'fa:save blue');
  473.         $this->form->addAction('Listar',new TAction(array('FuncionarioGrid','onReload')),'fa:table blue');
  474.         // create the page container
  475.         $container = new TVBox;
  476.         $container->style 'width: 100%';
  477.         $container->add(new TXMLBreadCrumb('menu.xml''FuncionarioFormBuilder'));
  478.         $container->add($this->form);
  479.         parent::add($container);
  480.       }
  481.     
  482.     public static function onSave($param)
  483.     {
  484.         try {
  485.                 $organizacao_id TSession::getValue('organizacion_id'); // pega id da empresa
  486.                 $unidade_id     TSession::getValue('unidade_id'); // pega id da unidade
  487.                 TTransaction::open('centinel'); // open a transaction
  488.                  
  489.                 TTransaction::setLoggerFunction(function($param)
  490.                 {
  491.                       print $param.'<br/>';
  492.                 });  
  493.                 //abre a transação
  494.                 TTransaction::open('teste');
  495.                 if (isset($param['key'])) 
  496.                 {
  497.                             
  498.                 }
  499.                 else //cadastra novo funcionario
  500.                 {
  501.                     $pessoa = new Pessoa;
  502.                     $pessoa->criacao date('Y-m-d H:i:s');
  503.                     $pessoa->atualizacao date('Y-m-d H:i:s');
  504.                     //adiciona contatos da pessoa
  505.                     if(!empty($param['telefone']) AND is_array($param['telefone']) ){
  506.                      foreach( $param['telefone'] as $row => $telefone){
  507.                         if ($telefone){
  508.                             $item                   = new Contato;
  509.                             $item->pessoa_id        $pessoa->id;
  510.                             $item->ddi              $param['ddi'][$row];
  511.                             $item->ddd              $param['ddd'][$row];
  512.                             $item->telefone         str_replace('-','',$param['telefone'][$row]);
  513.                             $item->operadora_id     $param['operadora_id'][$row];
  514.                             $item->tipo_telefone_id $param['tipo_telefone_id'][$row];
  515.                             $item->organizacao_id   $organizacao_id;
  516.                             $item->criacao          date('Y-m-d H:i:s');
  517.                             $item->atualizacao      date('Y-m-d H:i:s');
  518.                             $item->ativo              1;
  519.                             $pessoa->addContato($item);
  520.                         }
  521.                      }
  522.                     }
  523.                     //adiciona endereco da pessoa
  524.                     if( !empty($param['cep']) AND is_array($param['cep']) AND is_array($param['numero']) ){
  525.                         foreach( $param['id_endereco'] as $row => $id_endereco){
  526.                             if ($id_endereco){
  527.                                 $pessoa_endereco                    = new PessoaEndereco;
  528.                                 $pessoa_endereco->pessoa_id         $pessoa->id;
  529.                                 $pessoa_endereco->endereco_id       $param['id_endereco'][$row];
  530.                                 $pessoa_endereco->tipo_endereco_id  $param['tipo_endereco_id'][$row];
  531.                                 $pessoa_endereco->numero            $param['numero'][$row];
  532.                                 $pessoa_endereco->complemento       $param['compl'][$row];
  533.                                 $pessoa_endereco->regiao_id         $param['regiao_id'][$row];
  534.                                 $pessoa_endereco->criacao           date('Y-m-d H:i:s');
  535.                                 $pessoa_endereco->atualizacao       date('Y-m-d H:i:s');
  536.                                 $pessoa_endereco->organizacao_id    $organizacao_id;
  537.                                 $pessoa_endereco->ativo             1;
  538.                                 $pessoa->addPessoaEndereco($pessoa_endereco);
  539.                             }
  540.                         }
  541.                     }
  542.                     $pessoa->store();
  543.                     //cria vinculo entre funcionaro e empresa
  544.                     $pessoa_organizacao = new PessoaOrganizacao;
  545.                     $pessoa_organizacao->pessoa_id             $pessoa->id;
  546.                     $pessoa_organizacao->organizacao_id     $organizacao_id;
  547.                     $pessoa_organizacao->ativo                  1;
  548.                     $pessoa_organizacao->criacao              date('Y-m-d H:i:s');
  549.                     $pessoa_organizacao->atualizacao         date('Y-m-d H:i:s');
  550.                     $pessoa_organizacao->tipo_pessoa_id     1;
  551.                     $pessoa_organizacao->tipo_vinculo_id     2;
  552.                     //$pessoa_organizacao->unidade_id         = $unidade_id; //pega unidade logada
  553.                     $pessoa_organizacao->store();
  554.                     $fisica = new Fisica;
  555.                     $fisica->pessoa_id               $pessoa->id;
  556.                     $fisica->nome                      $param['nome'];
  557.                     $fisica->data_nascimento         TDate::date2us($param['data_nascimento']);
  558.                     $fisica->cpf                       str_replace('-''',str_replace('.','',$param['cpf'])); 
  559.                     $fisica->rg                      str_replace('-''',str_replace('.','',$param['rg']));
  560.                     $fisica->data_expedicao          TDate::date2us($param['data_expedicao']);
  561.                     $fisica->orgao_emissor             $param['orgao_emissor'];
  562.                     $fisica->genero_id                 $param['genero_id'];
  563.                     $fisica->civil_id                  $param['estado_civil_id'];
  564.                     $fisica->etnia_id                $param['etnia_id'];
  565.                     $fisica->criacao                  date('Y-m-d H:i:s');
  566.                     $fisica->atualizacao             date('Y-m-d H:i:s');
  567.                     $fisica->certidao_reservista    $param['certidao_reservista'];
  568.                     $fisica->cat_cert_reservista    $param['cat_cert_reservista'];
  569.                     $fisica->data_emissao           TDate::date2us($param['data_emissao']);
  570.                     $fisica->naturalidade             $param['local_nascto'];
  571.                     $fisica->uf                     $param['local_nascto_uf'];
  572.                     $fisica->mae                     $param['nome_mae'];
  573.                     $fisica->pai                     $param['nome_pai'];
  574.                     $fisica->titulo_eleitor         $param['titulo_eleitor'];
  575.                     $fisica->secao                     $param['secao'];
  576.                     $fisica->zona                     $param['zona'];
  577.                     $fisica->habilitacao             $param['habilitacao'];
  578.                     $fisica->categoria_habilitacao  $param['categoria'];
  579.                     $fisica->vencimento_habilitacao $param['vencimento'];
  580.                     $fisica->store();
  581.                     //adciona funcionario
  582.                     $funcionario = new Funcionario;
  583.                     $funcionario->pessoa_id            $pessoa->id;
  584.                     $funcionario->data_contratacao        TDate::date2us($param['data_adm']);
  585.                     $funcionario->organizacao_id       $organizacao_id;
  586.                     $funcionario->dependente           0//param['dependente'];
  587.                     $funcionario->matricula            $param['matricula'];
  588.                     $funcionario->criacao                 date('Y-m-d H:i:s');
  589.                     $funcionario->atualizacao            date('Y-m-d H:i:s');
  590.                     $funcionario->deficiente_fisico    $param['deficiente_fisico_id'];
  591.                     $funcionario->pis                    $param['pis'];
  592.                     $funcionario->data_emissao_pis     $param['data_emissao_pis'];
  593.                     $funcionario->deficiencia          0;
  594.                     $funcionario->store();
  595.                 }
  596.                 $data = new stdClass;
  597.                 $data->id $funcionario->id;
  598.                 TForm::sendData('frm_funcionario'$data);// keep form data
  599.                 TTransaction::close(); // close the transaction
  600.                 new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  601.             } catch (Exception $e) {
  602.                 new TMessage('error'$e->getMessage());
  603.                 //desfaz operações
  604.                 TTransaction::rollback();
  605.             }    
  606.     }
  607.     public function onEdit($param)
  608.     {
  609.         try 
  610.         {
  611.             if (isset($param['key'])) 
  612.             {
  613.                 $key $param['key'];
  614.                 $organizacao_id TSession::getValue('organizacion_id'); // pega id da empresa
  615.                 //abre a transação
  616.                 TTransaction::open('teste');
  617.                 //carrega o active record Funcionario conforme id
  618.                 $funcionario Funcionario::find($key);
  619.                 //remove pontos e virgulas
  620.                 $rg str_replace('.',''$funcionario->fisica->rg);
  621.                   $rg substr($rg0,2).'.'.substr($rg,2,3).'.'.substr($rg5,3).'-'.substr($rg8,11);
  622.                   $cpf str_replace('.','',str_replace('-','',$funcionario->fisica->cpf));
  623.                   $cpf substr($cpf0,3).'.'.substr($cpf,3,3).'.'.substr($cpf6,3).'-'.substr($cpf9,2);
  624.                 //dados pessoais
  625.                 $funcionario->nome                 $funcionario->fisica->nome;
  626.                 $funcionario->local_nascto         $funcionario->fisica->naturalidade;
  627.                 $funcionario->local_nascto_uf    $funcionario->fisica->uf;
  628.                 $funcionario->data_nascimento     TDate::date2br($funcionario->fisica->data_nascimento);
  629.                 $funcionario->etnia_id             $funcionario->fisica->etnia_id;
  630.                 $funcionario->estado_civil_id     $funcionario->fisica->civil_id;
  631.                 $funcionario->genero_id              $funcionario->fisica->genero_id;
  632.                 $funcionario->grau_instrucao    $funcionario->grau_instrucao;
  633.                 $funcionario->nome_conjuge         $funcionario->conjuge->nome;                    
  634.                 $funcionario->nome_pai             $funcionario->fisica->pai;
  635.                 $funcionario->nome_mae             $funcionario->fisica->mae;
  636.                 
  637.                 //dados conta bancaria
  638.                 foreach ($funcionario->get_conta() as $conta
  639.                 {
  640.                     $funcionario->nome_banco         $conta->banco;
  641.                     $funcionario->nome_agencia         $conta->nome_agencia;
  642.                     $funcionario->numero_conta         $conta->numero_conta;
  643.                     $funcionario->tipo_conta_id        $conta->tipo_conta_id;
  644.                 }                                    
  645.                 //documento pessoais
  646.                 $funcionario->cpf                         $cpf;
  647.                 $funcionario->rg                         $rg;
  648.                 $funcionario->orgao_emissor             $funcionario->fisica->orgao_emissor;
  649.                 $funcionario->data_expedicao             TDate::date2br($funcionario->fisica->data_expedicao);
  650.                 $funcionario->titulo_eleitor             $funcionario->fisica->titulo_eleitor;
  651.                 $funcionario->zona                         $funcionario->fisica->zona;
  652.                 $funcionario->secao                     $funcionario->fisica->secao;
  653.                 $funcionario->certidao_reservista         $funcionario->fisica->certidao_reservista;
  654.                 $funcionario->cat_cert_reservista        $funcionario->fisica->cat_cert_reservista;
  655.                 $funcionario->habilitacao                $funcionario->fisica->habilitacao;
  656.                 $funcionario->categoria                    $funcionario->fisica->categoria_habilitacao;
  657.                 $funcionario->vencimento                $funcionario->fisica->vencimento_habilitacao;    
  658.                 
  659.                 //dados profissionais
  660.                 $funcionario->data_adm              TDate::date2br($funcionario->data_contratacao);
  661.                 $funcionario->matricula             $funcionario->matricula;
  662.                 $funcionario->deficiente_fisico_id     $funcionario->deficiente_fisico;
  663.                 //print_r($funcionario->funcionario_departamento);
  664.                 foreach ($funcionario->funcionario_departamento as $object)
  665.                 {
  666.                     $funcionario->departamento_id $object->departamento_id;
  667.                     $funcionario->funcao $object->funcao;
  668.                 }
  669.                 
  670.                 foreach ($funcionario->ctps as $value
  671.                 {
  672.                     $funcionario->carteira_trabalho $value->numero_ctps;
  673.                     $funcionario->numero_serie         $value->serie_uf;
  674.                     $funcionario->data_emissao         TDate::date2br($value->data_emissao);            
  675.                 }
  676.                 
  677.                 //print_r($funcionario->salario);
  678.                 foreach ($funcionario->salario as $value) {
  679.                     $funcionario->txt_salario 'R$ ' $value->valor;
  680.                 }                
  681.                 
  682.                 //print_r( $funcionario->salario);
  683.                 $funcionario->pis             $funcionario->pis;
  684.                 $funcionario->data_pis  TDate::date2br($funcionario->data_emissao_pis);
  685.                 $contatos $funcionario->get_contatos();
  686.                 
  687.                 if ($contatos)
  688.                 {
  689.                     //$this->contatoList->addHeader();
  690.                     foreach($contatos  as $contato )
  691.                     {
  692.                         $contato->ddi                 $contato->ddi;
  693.                         $contato->ddd                 $contato->ddd;
  694.                         $contato->telefone             substr($contato->telefone04) . '-' substr($contato->telefone48);
  695.                         $contato->tipo_telefone_id  $contato->tipo_telefone_id;
  696.                         $contato->operadora_id      $contato->operadora_id;
  697.                         
  698.                     }
  699.                     $this->contatoList->addDetail($contato);
  700.                     //$this->contatoList->addCloneAction();
  701.                 }
  702.                 else
  703.                 {
  704.                     $this->onClear($param);
  705.                 }
  706.                 
  707.                 //$enderecos = $funcionario->endereco;
  708.                 //print_r($funcionario->endereco);
  709.                 
  710.                 if ($funcionario->pessoa_enderecos)
  711.                 {   
  712.                     //$this->enderecoList->addHeader();   
  713.                     foreach($funcionario->pessoa_enderecos  as $endereco)
  714.                     {
  715.                         print $endereco->endereco_id.'<br/>Logradouro : '.$endereco->endereco->logradouro ;
  716.                         $endereco->id_endereco     $endereco->endereco_id;
  717.                         $endereco->txt_cep        substr($endereco->endereco->cep05) . '-' substr($endereco->endereco->cep58);
  718.                         $endereco->logradouro      $endereco->endereco->logradouro;
  719.                         $endereco->bairro          $endereco->endereco->bairro;
  720.                         $endereco->cidade           $endereco->endereco->cidade;
  721.                         $endereco->uf               $endereco->endereco->uf;
  722.                         $endereco->compl        $endereco->endereco->complemento;
  723.                         $this->enderecoList->addDetail($endereco);
  724.                     }
  725.                     //$this->enderecoList->addCloneAction();
  726.                 }
  727.                 else
  728.                 {
  729.                     $this->onClear($param);
  730.                 }
  731.                 $obj $funcionario->get_dependente();
  732.                 //$this->dependenteList->addHeader();
  733.                 if ($obj
  734.                 {
  735.                     foreach ($obj as $dependente
  736.                     {
  737.                         $dependente->nome_dependente $dependente->nome;
  738.                         $dependente->nascimento_dependente $dependente->data_nascimento;
  739.                         $dependente->grau_parentesco_dependente $dependente->grau_parentesco_id;
  740.                         $this->dependenteList->addDetail($dependente);
  741.                     }
  742.                      //$this->dependenteList->addCloneAction();
  743.                 }
  744.                 else
  745.                 {
  746.                     $this->onClear($param); //ao adicionar este aqui todos os outros duplicam
  747.                 }            
  748.                 //preenche o formulario com os dados do funcionário
  749.                 $this->form->setData($funcionario);
  750.                 TTransaction::close();
  751.             }
  752.             
  753.         } 
  754.         catch (Exception $e
  755.         {
  756.             new TMessage('error'$e->getMessage());
  757.             //desfaz operações
  758.             TTransaction::rollback();
  759.         }
  760.     }
  761.     public function onClear($param)
  762.     {
  763.         $this->form->clear();
  764.         //endereços
  765.         $this->enderecoList->addHeader();
  766.         //$this->enderecoList->addDetail( new stdClass );
  767.         $this->enderecoList->addCloneAction();
  768.         //dependentes
  769.         $this->dependenteList->addHeader();
  770.         $this->dependenteList->addDetail( new stdClass );
  771.         $this->dependenteList->addCloneAction();
  772.         //contato
  773.         $this->contatoList->addHeader();
  774.         //$this->contatoList->addDetail( new stdClass );
  775.         $this->contatoList->addCloneAction();
  776.     }
  777.     //method onCep()
  778.     public static function onCep($param)
  779.     {
  780.         $endereco_cep   $param['_field_id'];
  781.         $cep_endereco   $param['_field_value'];
  782.         $endereco_cep   explode('_'$endereco_cep);
  783.         $unique_id      end($endereco_cep);
  784.         $retorno        Endereco::BuscaCepWeb($cep_endereco);
  785.         if (!empty($retorno))
  786.         {
  787.             $response = new stdClass;
  788.             $response->{'id_endereco_'.$unique_id}  = $retorno['id'];
  789.             $response->{'logradouro_'.$unique_id}   = $retorno['logradouro'];
  790.             $response->{'bairro_'.$unique_id}       = $retorno['bairro'];
  791.             $response->{'cidade_'.$unique_id}       = $retorno['localidade'];
  792.             $response->{'uf_'.$unique_id}           = $retorno['uf'];
  793.             //$response->{'ibge_'}.$unique_id         = strtoupper( $retorno['ibge']);
  794.             //$response->{'gia'}.$unique_id           = strtoupper( $retorno['gia']);
  795.             TForm::sendData('frm_funcionario'$response);
  796.             TScript::create('$("input[name=numero]").focus();');
  797.         }
  798.         else
  799.         {
  800.             $endereco Endereco::BuscaCepBanco($cep_endereco);
  801.             if($endereco)
  802.             {
  803.                 $retorno = new stdClass;
  804.                 $retorno->{'id_endereco_'.$unique_id} = $endereco['id'];
  805.                 $retorno->{'cep_'.$unique_id}            = $endereco['cep'];
  806.                 $retorno->{'logradouro_'.$unique_id}  = $endereco['logradouro'];
  807.                 $retorno->{'bairro_'.$unique_id}      = $endereco['bairro'];
  808.                 $retorno->{'cidade_'.$unique_id}      = $endereco['cidade'];
  809.                 $retorno->{'uf_'.$unique_id}          = $endereco['uf'];
  810.                 //$retorno->{'ibge_'}.$unique_id         = $endereco['ibge'];
  811.                 //$retorno->{'gia'}.$unique_id           = $endereco['gia'];
  812.                 TForm::sendData('frm_funcionario'$retorno);
  813.                 TScript::create('$("input[name=numero]").focus();');
  814.             }
  815.             else
  816.             {
  817.                 new TMessage("error""CEP - Em Branco ou Inválido");
  818.             }
  819.         }
  820.     }
  821.     public function onFisica($param)
  822.     {
  823.         $this->onClear($param NULL);
  824.         
  825.         $pessoa_id $param['parameter'];
  826.         try {
  827.             TTransaction::open('teste');
  828.             $retorno Fisica::where('pessoa_id','=',$pessoa_id)->load();
  829.         if (!empty($retorno))
  830.         {
  831.             //var_dump($retorno);
  832.             
  833.             $response = new stdClass;
  834.             $response->{'nome'}     = $retorno['nome'];
  835.             $response->{'cpf'}      = $retorno['cpf'];
  836.             $response->{'rg'}       = $retorno['rg'];
  837.             $response->{'titulo_eleitor'}  = $retorno['titulo_eleitor'];
  838.             $response->{'uf_'}           = $retorno['uf'];
  839.             TForm::sendData('frm_funcionario'$response); 
  840.         }
  841.         /*
  842.         else
  843.         {
  844.             $response = new stdClass;
  845.             $response->{'nome'}     = $retorno['nome'];
  846.             $response->{'cpf'}      = $retorno['cpf'];
  847.             $response->{'rg'}       = $retorno['rg'];
  848.             $response->{'titulo_eleitor'}  = $retorno['titulo_eleitor'];
  849.             $response->{'uf_'}           = $retorno['uf'];
  850.         }
  851.         */
  852.             TTransaction::close();
  853.         } catch (Exception $e) {
  854.             new TMessage('error'$e->getMessage());
  855.         }
  856.     }
  857. }
  858. ?>

</span></span></span>
NR

Verifique sua função onEdit, ela permite que a função onClear seja executada várias vezes, o que acaba repetindo o comando addHeader.
BI

Olá Rubens!
vc conseguiu resolver o problema para carregar os dados nos campos multifields do onEdit?
tenho um TCombo que deve ser carregada pelo método onChange... deve ser o mesmo problema seu onde a função onCep não é carregada.
RB

Betuel, bom dia,

O meu problema é com a versão nova.

Eu tenho um formulário na versão antiga que esta funcionando, caso te ajude segue abaixo.

  1. <?php
  2. class EmpresaBuilder extends TPage
  3. {
  4.     private $form;
  5.     protected $table_contato;
  6.     protected $frame_contato;
  7.     protected $deta_row;
  8.     protected $deta_row_1;
  9.     protected $table_endereco;
  10.     protected $frame_endereco;
  11.     protected $cep;
  12.     public function __construct(){
  13.         parent::__construct();
  14.           parent::include_css('app/resources/builder.css');
  15.           parent::include_css('app/resources/blue_modificado.css');
  16.         //cria formulario
  17.         $this->form = new BootstrapFormBuilder('frm_empresa');
  18.         $this->form->setFormTitle('Empresa');
  19.         /*
  20.         $div_pesq = new TElement('div');
  21.         $div_pesq->id = 'div_pesq';
  22.         $div_pesq->style = 'width:100%;';
  23.         //cria formulário de pesquisa
  24.         $form_cnpj = new TForm('frm_cnpj');
  25.         $form_cnpj->style = 'width:30%;float:right;';
  26.         $pesq_cnpj = new TEntry('pesq_cnpj');
  27.         $pesq_cnpj->setMask('99.999.999/9999-99');
  28.           $pesq_cnpj->setMaxLength(18);
  29.         $pesq_cnpj->placeholder = "CNPJ";
  30.         // creates the action button
  31.         $button1 = new TButton('action1');
  32.         $button1->setAction(new TAction(array($this, 'pesqCnpj')), 'Pesquisar');
  33.         $button1->setImage('fa:check-circle-o green');
  34.         //adciona itens ao formulário de pesquisa
  35.         $form_cnpj->add($pesq_cnpj);
  36.         $form_cnpj->setFields([$pesq_cnpj,$button1]);
  37.         $div_pesq->add($form_cnpj);
  38.         $this->form->addFields([$div_pesq,$button1] );
  39.         */
  40.         $dados_cliente        = new TLabel('Identificação da Empresa');
  41.         $dados_cliente->class 'lbl_titulo';
  42.         $this->form->addContent( [$dados_cliente] );
  43.         //cria os labels do fromulário
  44.         $lbl_tipo_organizacao         = new TLabel('Tipo');
  45.         $lbl_id                         = new TLabel('#');
  46.         $lbl_nome_fantasia              = new TLabel('Nome Fantasia');
  47.         $lbl_razao_social              = new TLabel('Razão Social');
  48.         $lbl_data_nascto             = new TLabel('Data Início');
  49.         $lbl_cod_desc_ativ_principal = new TLabel('Código e Descrição da Atividade Econômica Principal');
  50.         $lbl_cod_desc_ativ_secundaria = new TLabel('Código e Descrição da Atividade Econômica Secundária');
  51.         $lbl_categoria_natureza_juridica = new TLabel('Categoria Natureza Jurídica');
  52.         $lbl_cod_natureza_juridica         = new TLabel('Código e Descrição da Natureza Jurídica');
  53.         $lbl_cod_modelo_fiscal              = new TLabel('Modelo Fiscal');
  54.         $lbl_status                         = new TLabel('Status');
  55.         //formata fontes titulos
  56.         $lbl_id->class='lbl_text';
  57.         $lbl_nome_fantasia->class='lbl_text';
  58.         $lbl_razao_social->class='lbl_text';
  59.         $lbl_data_nascto->class='lbl_text';
  60.         $lbl_tipo_organizacao->class='lbl_text';
  61.         $lbl_cod_desc_ativ_principal->class='lbl_text';
  62.         $lbl_cod_desc_ativ_secundaria->class='lbl_text';
  63.         $lbl_categoria_natureza_juridica->class='lbl_text';
  64.         $lbl_cod_natureza_juridica->class='lbl_text';
  65.         $lbl_cod_modelo_fiscal->class='lbl_text';
  66.         $lbl_status->class='lbl_text';
  67.         //cria os campos do fromulário Identificação da Empresa
  68.         $id                        = new TEntry('id');
  69.         $id->setEditable(false);
  70.         $tipo_organizacao_id    = new TCombo('tipo_organizacao_id');
  71.         $tipo_organizacao_id->setSize('9%');
  72.         $tipo_organizacao_id->addItems( [ '1' => 'Matriz''2' => 'Filial'] );
  73.         $tipo_organizacao_id->setDefaultOption(false);
  74.         $nome_fantasia             = new TEntry('nome_fantasia', new TRequiredValidator);
  75.         $razao_social             = new TEntry('razao_social', new TRequiredValidator);
  76.         $data_nascto             = new TDate('data_nascto', new TRequiredValidator);
  77.         $data_nascto->setMask('dd/mm/yyyy');
  78.         $cod_desc_ativ_principal     = new TText('cod_desc_ativ_principal', new TRequiredValidator);//atividade primária
  79.         $cod_desc_ativ_secundaria     = new TText('cod_desc_ativ_secundaria');//atividade secundária
  80.         $nome_fantasia->style     'text-transform: uppercase';
  81.         $razao_social->style     ='text-transform: uppercase';
  82.         $cod_desc_ativ_principal->style 'text-transform: uppercase';
  83.         $cod_desc_ativ_secundaria->style 'text-transform: uppercase';
  84.         $lbl_id->setSize('5%');
  85.         $id->setSize('5%');
  86.         $lbl_id->style 'display:none';
  87.         $id->style 'display:none';
  88.         $lbl_nome_fantasia->setSize('50%');
  89.         $lbl_razao_social->setSize('30%');
  90.         $lbl_cod_desc_ativ_principal->setSize('100%');
  91.         $lbl_cod_desc_ativ_secundaria->setSize('100%');
  92.         $cod_desc_ativ_principal->setSize('100%','90');
  93.         $cod_desc_ativ_secundaria->setSize('100%','90');
  94.         $lbl_cod_natureza_juridica->setSize('50%');
  95.         $nome_fantasia->setSize('50%');
  96.         $razao_social->setSize('30%');
  97.         $data_nascto->setSize('11%');
  98.         $lbl_tipo_organizacao->setSize('9%');
  99.         //adciona criterio de filtro categoria natureza juridica
  100.           $filter = new TCriteria;
  101.         $filter->add(new TFilter('id''<''4'));
  102.         //combo 1(master)
  103.         $categoria_juridica_id =  new TDBCombo('categoria_juridica_id' ,'nome_base','CategoriaJuridica','id','descricao','descricao asc',$filter);
  104.         $categoria_juridica_id->setDefaultOption(false);
  105.         $categoria_juridica_id->setChangeAction( new TAction( array($this'onChangeAction')) );
  106.         $filter1 = new TCriteria;
  107.         $filter1->add(new TFilter('id''<','0'));
  108.         //combo 2 (detail)
  109.         $natureza_juridica_id  =  new TDBCombo('natureza_juridica_id','nome_base','NaturezaJuridica','id','codigo_descricao','codigo_descricao asc',$filter1);
  110.         $natureza_juridica_id->setDefaultOption(false);
  111.         $lbl_categoria_natureza_juridica->setSize('50%');
  112.         $lbl_cod_natureza_juridica->setSize('50%');
  113.         $categoria_juridica_id->setSize('50%');
  114.         $natureza_juridica_id->setSize('50%');
  115.         //$modelo_fiscal        = new TText('modelo_fiscal');
  116.         $modelo_fiscal = new TDBCombo('modelo_fiscal_id','nome_base','ModeloFiscal','id','nome');
  117.         $modelo_fiscal->setDefaultOption(false);
  118.         //cria os labels do fromulário Documentos de Registro da Empresa
  119.         $lbl_cnpj                         = new TLabel('CNPJ');
  120.         $lbl_inscricao_estadual         = new TLabel('Inscrição Estadual');
  121.         $lbl_inscricao_junta_comercial    = new TLabel('Inscrição Junta Comercial');
  122.         $lbl_inscricao_municipal        = new TLabel('Inscrição Municipal');
  123.         $lbl_cnpj->class='lbl_text';
  124.         $lbl_inscricao_estadual->class='lbl_text';
  125.         $lbl_inscricao_junta_comercial->class='lbl_text';
  126.         $lbl_inscricao_municipal->class='lbl_text';
  127.         //cria os campos do fromulário documentos
  128.         $cnpj                                  = new TEntry('cnpj');
  129.         $cnpj->setMask('99.999.999/9999-99');
  130.           $cnpj->setMaxLength(18);
  131.           $cnpj->addValidation('cnpj',new TCNPJValidator);
  132.           $cnpj->addValidation('cnpj',new TMaxLengthValidator, array(18));
  133.           $cnpj->addValidation('cnpj',new TMinValueValidator, array(18));
  134.           $cnpj->addValidation('cnpj',new TNumericValidator);
  135.         $inscricao_estadual                  = new TEntry('inscricao_estadual');
  136.         $inscricao_estadual->setMaxLength(15);
  137.         //$inscricao_estadual->addValidation('inscricao_estadual', new TNumericValidator,new TMinValueValidator, array(15),new TMaxLengthValidator, array(15));
  138.         //$inscricao_estadual->setMask('999.999.999.999');
  139.         $inscricao_junta_comercial = new TEntry('inscricao_junta_comercial');
  140.         $inscricao_junta_comercial->setMaxLength(15);
  141.         //$inscricao_junta_comercial->addValidation('inscricao_junta_comercial', new TNumericValidator,new TMinValueValidator, array(15),new TMaxLengthValidator, array(15));
  142.         //$inscricao_junta_comercial->setMask('99.999.999/9999-99');
  143.         $inscricao_municipal              = new TEntry('inscricao_municipal');
  144.         $inscricao_municipal->setMaxLength(15);
  145.         //$inscricao_municipal->setMask('99.999.999/9999-99');
  146.         //cria container atividades
  147.         $atividades         = new TElement('div');
  148.         $atividades->style     'width:100%;float:left;border 1px solid #ccc;';
  149.         //cria container atv_box_primaria
  150.         $atv_box_primaria          = new TElement('div');
  151.         $atv_box_primaria->style 'float:left;width:49%;margin:0 1% 1% 0;';
  152.         //adiciona  campos no container atv_box_primaria
  153.         $atv_box_primaria->add($lbl_cod_desc_ativ_principal);
  154.         $atv_box_primaria->add($cod_desc_ativ_principal);
  155.         //cria container atv_box_secundaria
  156.         $atv_box_secundaria         = new TElement('div');
  157.         $atv_box_secundaria->style     'float:left;width:50%;margin:0 0 1% 0;';
  158.         //adiciona  campos no container atv_box_secundaria
  159.         $atv_box_secundaria->add($lbl_cod_desc_ativ_secundaria);
  160.         $atv_box_secundaria->add($cod_desc_ativ_secundaria);
  161.         //adiciona  atividades no container atividades
  162.         $atividades->add($atv_box_primaria);
  163.         $atividades->add($atv_box_secundaria);
  164.         //adiciona  campos atividades ao formulario
  165.         $this->form->addField($cod_desc_ativ_principal);
  166.         $this->form->addField($cod_desc_ativ_secundaria);
  167.         $this->form->addFields([$lbl_id,$lbl_nome_fantasia,$lbl_razao_social,$lbl_tipo_organizacao,$lbl_data_nascto]);
  168.         $this->form->addFields([$id,$nome_fantasia,$razao_social,$tipo_organizacao_id,$data_nascto]);
  169.         $this->form->addFields([$atividades]);
  170.         $this->form->addFields([$lbl_categoria_natureza_juridica,$lbl_cod_natureza_juridica]);
  171.         $this->form->addFields([$categoria_juridica_id,$natureza_juridica_id]);
  172.         //adiciona campos documentos empresa
  173.         $documentos_registro        = new TLabel('Documentos de Registro da Empresa');
  174.         $documentos_registro->class ='lbl_titulo';
  175.         $this->form->addContent( [$documentos_registro] );
  176.         $this->form->addFields([$lbl_cnpj,$lbl_inscricao_estadual,$lbl_inscricao_junta_comercial,$lbl_inscricao_municipal]);
  177.         $this->form->addFields([$cnpj,$inscricao_estadual,$inscricao_junta_comercial,$inscricao_municipal]);
  178.         $lbl_cnpj->setSize('25%');
  179.         $lbl_inscricao_estadual->setSize('25%');
  180.         $lbl_inscricao_junta_comercial->setSize('25%');
  181.         $lbl_inscricao_municipal->setSize('25%');
  182.         $cnpj->setSize('25%');
  183.         $inscricao_estadual->setSize('25%');
  184.         $inscricao_junta_comercial->setSize('25%');
  185.         $inscricao_municipal->setSize('25%');
  186.         //adiciona campos informações financeiras da empresa
  187.         $informacoes_financeira        = new TLabel('Informações Financeira');
  188.         $informacoes_financeira->class ='lbl_titulo';
  189.         $this->form->addContent( [$informacoes_financeira] );
  190.         $lbl_faturamento_anual     = new TLabel('Faturamento Anual');
  191.         $lbl_margen_lucro         = new TLabel('Margem de Lucro');
  192.         $faturamento_anual         = new TEntry('faturamento_anual');
  193.         $margen_lucro             = new TEntry('margen_lucro');
  194.         $this->form->addFields([$lbl_faturamento_anual,$lbl_margen_lucro]);
  195.         $this->form->addFields([$faturamento_anual,$margen_lucro]);
  196.         //formata labels informações financeiras
  197.         $lbl_faturamento_anual->class 'lbl_text';
  198.         $lbl_margen_lucro->class 'lbl_text';
  199.         $lbl_faturamento_anual->setSize('50%');
  200.         $lbl_margen_lucro->setSize('50%');
  201.         $faturamento_anual->setSize('50%');
  202.         $margen_lucro->setSize('50%');
  203.         //cria dados de contato
  204.         $contato         = new TLabel('Contato');
  205.         $contato->class 'lbl_titulo';
  206.         $lbl_ddi             = new TLabel('DDI');
  207.         $lbl_dd             = new TLabel('DDD');
  208.         $lbl_tipo_telefone     = new TLabel('Tipo Telefone');
  209.         $lbl_telefone         = new TLabel('Telefone');
  210.         $lbl_operadora         = new TLabel('Operadora');
  211.         //Cria tabela contato adiciona campos
  212.         $this->table_contato         = new TTable('table_contato');
  213.         $this->table_contato->width ='100%';
  214.         $this->table_contato->addSection('thead');
  215.         $this->table_contato->addSection('tbody');
  216.         //cria frame contato
  217.         $this->frame_contato         = new TFrame;
  218.         $this->frame_contato->style 'width:98%;border:none;float:lef;margin-left:-1px;';
  219.         $this->frame_contato->add($contato);
  220.         $this->frame_contato->add($this->table_contato);
  221.         $this->table_contato->addRowSet([$lbl_ddi,$lbl_dd,$lbl_tipo_telefone,$lbl_telefone,$lbl_operadora]);
  222.         $this->form->addContent([$this->frame_contato]);
  223.         $lbl_email = new TLabel('Email');
  224.         $email     = new TEntry('email');
  225.         $email->placeholder "exemplo@exemplo.com.br";
  226.         $email->addValidation('email', new TEmailValidator); // email field
  227.         $lbl_site = new TLabel('Site');
  228.         $site     = new TEntry('url');
  229.         $site->placeholder "exemplo.com.br";
  230.         $lbl_responsavel = new TLabel('Responsável');
  231.         $responsavel     = new TEntry('responsavel');
  232.         $responsavel->style='text-transform: uppercase';
  233.         //adiciona contato web
  234.         $this->form->addFields( [$lbl_email,$lbl_site,$lbl_responsavel] );
  235.         $this->form->addFields( [$email,$site,$responsavel] );
  236.         $email->setSize('33.3333%');
  237.         $site->setSize('33.3333%');
  238.         $responsavel->setSize('33.3333%');
  239.         //adiciona dados de correspondência
  240.         $lbl_endereco = new TLabel('Endereco');
  241.         $lbl_endereco->class='lbl_titulo';
  242.         $lbl_cep                     = new TLabel('Cep');
  243.         $lbl_id_cep                  = new TLabel('#');
  244.         $lbl_id_cep->style 'display:none;';
  245.         $lbl_logradouro              = new TLabel('Logradouro');
  246.         $lbl_numero                  = new TLabel('Número');
  247.         $lbl_bairro                  = new TLabel('Bairro');
  248.         $lbl_cidade                  = new TLabel('Cidade');
  249.         $lbl_uf                      = new TLabel('UF');
  250.         $lbl_tipo_endereco_id         = new TLabel('Tipo Endereco');
  251.         $lbl_complemento             = new TLabel('Complemento');
  252.         $lbl_regiao                     = new TLabel('Região');
  253.         $this->detail_row   0;
  254.         $this->detail_row_1 0;
  255.         $this->table_endereco = new TTable();
  256.         $this->table_endereco->width ='100%';
  257.         $this->table_endereco->addSection('thead');
  258.         $this->table_endereco->addSection('tbody');
  259.         $this->frame_endereco = new TFrame;
  260.         $this->frame_endereco->style ='width:98%;border:none;float:lef;margin-left:-1px;';
  261.         $this->frame_endereco->add($lbl_endereco);
  262.         $this->frame_endereco->add($this->table_endereco);
  263.         $this->table_endereco->addRowSet([$lbl_id_cep,$lbl_cep,$lbl_logradouro,$lbl_numero,$lbl_bairro,$lbl_cidade,$lbl_uf,$lbl_tipo_endereco_id,$lbl_complemento,$lbl_regiao]);
  264.         $this->form->addContent([$this->frame_endereco]);
  265.         $lbl_id_cep->class='lbl_text';
  266.         $lbl_cep->class='lbl_text';
  267.         $lbl_logradouro->class='lbl_text';
  268.         $lbl_numero->class='lbl_text';
  269.         $lbl_tipo_endereco_id->class='lbl_text';
  270.         $lbl_bairro->class='lbl_text';
  271.         $lbl_cidade->class='lbl_text';
  272.         $lbl_uf->class='lbl_text';
  273.         $lbl_complemento->class='lbl_text';
  274.         $lbl_regiao->class='lbl_text';
  275.         $lbl_id_cep->setSize('30');
  276.         $lbl_cep->setSize('70');
  277.         $lbl_logradouro->setSize('160');
  278.         $lbl_bairro->setSize('140');
  279.         $lbl_cidade->setSize('100');
  280.         $lbl_uf->setSize('30');
  281.         $lbl_numero->setSize('65');
  282.         $lbl_complemento->setSize('100');
  283.         $lbl_regiao->setSize('100');
  284.         $lbl_tipo_endereco_id->setSize('100');
  285.         $lbl_ddi->class='lbl_text';
  286.         $lbl_dd->class='lbl_text';
  287.         $lbl_tipo_telefone->class='lbl_text';
  288.         $lbl_telefone->class='lbl_text';
  289.         $lbl_operadora->class='lbl_text';
  290.         $lbl_email->class='lbl_text';
  291.         $lbl_site->class='lbl_text';
  292.         $lbl_responsavel->class='lbl_text';
  293.         $lbl_ddi->setSize('40');
  294.         $lbl_dd->setSize('40');
  295.         $lbl_tipo_telefone->setSize('100');
  296.         $lbl_telefone->setSize('100');
  297.         $lbl_email->setSize('33.3333%');
  298.         $lbl_site->setSize('33.3333%');
  299.         $lbl_responsavel->setSize('33.3333%');
  300.         //cria botões de ações
  301.         $this->form->addAction('Salvar',new TAction(array($this'onSave')),'fa:save blue');
  302.         $this->form->addAction('Listar',new TAction(array('EmpresaGrid','onReload')),'fa:table blue');
  303.         // wrap the page content using vertical box
  304.         $vbox = new TVBox;
  305.         $vbox->style 'width:100%,display:table;';
  306.         $vbox->add($this->form);
  307.     parent::add($this->form);
  308.     }
  309.     public function onClear($param)
  310.     {
  311.         $this->form->clear(TRUE);
  312.         //$this->table_contato->addSection('tbody');
  313.         $this->addContatoRow(new stdClass);
  314.         //criar e adicionar botão
  315.         $add = new TButton('addContact');
  316.         $add->setLabel('Adicionar');
  317.         $add->setImage('fa:plus-circle blue');
  318.         $add->addFunction('ttable_clone_previous_row(this)');
  319.         //adiciona botão a tabela
  320.         $row $this->table_contato->addSection('tfoot');
  321.         $row $this->table_contato->addRowSet([$add]);
  322.         //adciona tabela endereco
  323.         //$this->table_endereco->addSection('tbody');
  324.         $this->addEnderecoRow(new stdClass);
  325.         //criar e adicionar botão
  326.         $add_endereco = new TButton('addEnder');
  327.         $add_endereco->setLabel('Adicionar');
  328.         $add_endereco->setImage('fa:plus-circle blue');
  329.         $add_endereco->addFunction('ttable_clone_previous_row(this)');
  330.         //adiciona botão a tabela
  331.         $row_end $this->table_endereco->addSection('tfoot');
  332.         $row_end $this->table_endereco->addRowSet([$add_endereco]);
  333.       }
  334.     public static function onCep($param)
  335.     {
  336.       $endereco_cep   $param['_field_id'];
  337.       $cep_endereco   $param['_field_value'];
  338.       $endereco_cep   explode('_'$endereco_cep);
  339.       $unique_id      end($endereco_cep);
  340.       $retorno        Endereco::BuscaCepWeb($cep_endereco);
  341.       if (!empty($retorno))
  342.       {
  343.         $response = new stdClass;
  344.         $response->{'id_endereco_'.$unique_id}  = $retorno['id'];
  345.         $response->{'logradouro_'.$unique_id}   = $retorno['logradouro'];
  346.         $response->{'bairro_'.$unique_id}       = $retorno['bairro'];
  347.         $response->{'cidade_'.$unique_id}       = $retorno['localidade'];
  348.         $response->{'uf_'.$unique_id}           = $retorno['uf'];
  349.         //$response->ibge       = strtoupper( $retorno['ibge']);
  350.         //$response->gia        = strtoupper( $retorno['gia']);
  351.         TForm::sendData('frm_empresa'$response);
  352.         TScript::create('$("input[name=numero]").focus();');
  353.       }
  354.       else
  355.       {
  356.         $endereco Endereco::BuscaCepBanco($cep_endereco);
  357.         if($endereco)
  358.         {
  359.           $retorno = new stdClass;
  360.           $retorno->{'id_endereco_'.$unique_id} = $endereco['id'];
  361.           $retorno->{'logradouro_'.$unique_id}  = $endereco['logradouro'];
  362.           $retorno->{'bairro_'.$unique_id}      = $endereco['bairro'];
  363.           $retorno->{'cidade_'.$unique_id}      = $endereco['cidade'];
  364.           $retorno->{'uf_'.$unique_id}          = $endereco['uf'];
  365.           TForm::sendData('frm_empresa'$retorno);
  366.           TScript::create('$("input[name=numero]").focus();');
  367.         }
  368.         /*
  369.         else
  370.         {
  371.           new TMessage("error", "CEP - Em Branco ou Inválido");
  372.         }
  373.         */
  374.       }
  375.     }
  376.     public static function onSave($param)
  377.     {
  378.         $organizacao_id TSession::getValue('organizacion_id'); // pega id da empresa
  379.         $user_id TSession::getValue('userid'); // pega id da usuário
  380.         $data_actual date('Y-m-d H:i:s');
  381.         try
  382.         {
  383.             TTransaction::open('nome_base'); // open a transaction
  384.             TTransaction::setLoggerFunction(function($param)
  385.                 {
  386.                     print $param.'<br/>';
  387.                 });
  388.                 if( (! $param['nome_fantasia'])){
  389.                 throw new Exception('O Campo nome fantasia é obrigatório');
  390.                     }
  391.                 if( (! $param['data_nascto'])){
  392.                     throw new Exception('O Campo data inicio é obrigatório');
  393.                 }
  394.                 if( (! $param['razao_social'])){
  395.                     throw new Exception('O Campo razao social é obrigatório');
  396.                 }
  397.                 if( (! $param['categoria_juridica_id'])){
  398.                     throw new Exception('O Campo categoria juridica é obrigatório');
  399.                 }
  400.                 if( (! $param['natureza_juridica_id'])){
  401.                     throw new Exception('O Campo natureza juridica é obrigatório');
  402.                 }
  403.                 if( (! $param['cnpj'])){
  404.                     throw new Exception('O Campo cnpj é obrigatório');
  405.                 }
  406.             if (isset($param['id']) AND(!empty($param['id'])))
  407.             {
  408.                 $key $param['id'];
  409.                 $obj Organizacao::find($key);
  410.                 $obj->tipo_organizacao_id $param['tipo_organizacao_id'];
  411.                 $obj->store();
  412.                 $juridica Juridica::find($obj->juridica_id);
  413.                 $juridica->cnpj                                             str_replace('.','',str_replace('/','',str_replace('-','',$param['cnpj'])));
  414.                 $juridica->nome                                             $param['nome_fantasia'];
  415.                 $juridica->razao_social                                $param['razao_social'];
  416.                 //$juridica->modelo_fiscal_id                     = $param['modelo_fiscal_id'];
  417.                 $juridica->categoria_juridica_id             $param['categoria_juridica_id'];
  418.                 $juridica->natureza_juridica_id              $param['natureza_juridica_id'];
  419.                 $juridica->inscricao_municipal                 $param['inscricao_municipal'];
  420.                 $juridica->inscricao_estadual                 $param['inscricao_estadual'];
  421.                 $juridica->inscricao_junta_comercial     $param['inscricao_junta_comercial'];
  422.                 $juridica->criacao                                         date('Y-m-d H:i:s');
  423.                 $juridica->atualizacao                                 date('Y-m-d H:i:s');
  424.                 $juridica->atividade_primaria                    $param['cod_desc_ativ_principal'];
  425.                 $juridica->atividade_secundaria                $param['cod_desc_ativ_secundaria'];
  426.                 $juridica->faturamento_anual                     $param['faturamento_anual'];
  427.                 $juridica->margen_lucro                             $param['margen_lucro'];
  428.                 $juridica->data_inicio                                 TDate::date2us($param['data_nascto']);
  429.                 $juridica->store();
  430.                 $pessoa Pessoa::find($obj->pessoa_id);
  431.                 $pessoa->atualizacao date('Y-m-d H:i:s');
  432.                 //adiciona contatos
  433.                 if( !empty($param['telefone']) AND is_array($param['telefone']) )
  434.                 {
  435.                     foreach( $param['telefone'] as $row => $telefone)
  436.                     {
  437.                         if ($telefone)
  438.                         {
  439.                             $item                   = new Contato;
  440.                             $item->pessoa_id                $pessoa->id;
  441.                             $item->ddi              trim($param['ddi'][$row]);
  442.                             $item->ddd              trim($param['dd'][$row]);
  443.                             $item->telefone         str_replace('-','',$param['telefone'][$row]);
  444.                             $item->operadora_id     $param['operadora_id'][$row];
  445.                             $item->tipo_telefone_id $param['tipo_telefone_id'][$row];
  446.                             $item->criacao                      $data_actual;
  447.                             $item->atualizacao              $data_actual;
  448.                             $item->ativo                        1;
  449.                             $item->organizacao_id   $organizacao_id;
  450.                             $pessoa->addContato($item);
  451.                         }
  452.                     }
  453.                 }
  454.              //adiciona endereco
  455.                     if( !empty($param['cep']) AND is_array($param['cep']) AND is_array($param['numero']) )
  456.                     {
  457.                         foreach( $param['id_endereco'] as $row => $id_endereco)
  458.                         {
  459.                             if ($id_endereco)
  460.                             {
  461.                              $pessoa_endereco                    = new PessoaEndereco;
  462.                              $pessoa_endereco->pessoa_id         $pessoa->id;
  463.                              $pessoa_endereco->endereco_id       $param['id_endereco'][$row];
  464.                              $pessoa_endereco->tipo_endereco_id  $param['tipo_endereco_id'][$row];
  465.                              $pessoa_endereco->numero            $param['numero'][$row];
  466.                              $pessoa_endereco->complemento       $param['compl'][$row];
  467.                              $pessoa_endereco->criacao           $data_actual;
  468.                              $pessoa_endereco->atualizacao       $data_actual;
  469.                              $pessoa_endereco->organizacao_id    $organizacao_id;
  470.                              $pessoa_endereco->regiao_id             $param['regiao_id'][$row];
  471.                              $pessoa_endereco->ativo                      1;
  472.                              $pessoa->addPessoaEndereco($pessoa_endereco);
  473.                          }
  474.                      }
  475.                  }
  476.                 $pessoa->store();
  477.             }
  478.             else
  479.             {
  480.                 //pesquisa se cnpj existe
  481.                 $juridica Juridica::where('cnpj','=',str_replace('.','',str_replace('/','',str_replace('-','',$param['cnpj']))));
  482.                 if (!empty($juridica->id))
  483.                 {
  484.                     new TMessage('info''Juridica existe');
  485.                     print_r($param);
  486.                 }
  487.                 else
  488.                 {
  489.                     //new TMessage('info','juridica não existe');
  490.                     $pessoa = new Pessoa;
  491.                     $pessoa->criacao          date('Y-m-d H:i:s');
  492.                     $pessoa->atualizacao date('Y-m-d H:i:s');
  493.                     //adiciona contatos
  494.                     if( !empty($param['telefone']) AND is_array($param['telefone']) )
  495.                     {
  496.                         foreach( $param['telefone'] as $row => $telefone)
  497.                         {
  498.                             if ($telefone)
  499.                             {
  500.                                 $item                   = new Contato;
  501.                                 $item->pessoa_id                $pessoa->id;
  502.                                 $item->ddi              trim($param['ddi'][$row]);
  503.                                 $item->ddd              trim($param['dd'][$row]);
  504.                                 $item->telefone         str_replace('-','',$param['telefone'][$row]);
  505.                                 $item->operadora_id     $param['operadora_id'][$row];
  506.                                 $item->tipo_telefone_id $param['tipo_telefone_id'][$row];
  507.                                 $item->criacao                      $data_actual;
  508.                                 $item->atualizacao              $data_actual;
  509.                                 $item->ativo                        1;
  510.                                 $item->organizacao_id   $organizacao_id;
  511.                                 $pessoa->addContato($item);
  512.                             }
  513.                         }
  514.                     }
  515.                  //adiciona endereco
  516.                         if( !empty($param['cep']) AND is_array($param['cep']) AND is_array($param['numero']) )
  517.                         {
  518.                             foreach( $param['id_endereco'] as $row => $id_endereco)
  519.                             {
  520.                                 if ($id_endereco)
  521.                                 {
  522.                                  $pessoa_endereco                    = new PessoaEndereco;
  523.                                  $pessoa_endereco->pessoa_id         $pessoa->id;
  524.                                  $pessoa_endereco->endereco_id       $param['id_endereco'][$row];
  525.                                  $pessoa_endereco->tipo_endereco_id  $param['tipo_endereco_id'][$row];
  526.                                  $pessoa_endereco->numero            $param['numero'][$row];
  527.                                  $pessoa_endereco->complemento       $param['compl'][$row];
  528.                                  $pessoa_endereco->criacao           $data_actual;
  529.                                  $pessoa_endereco->atualizacao       $data_actual;
  530.                                  $pessoa_endereco->organizacao_id    $organizacao_id;
  531.                                  $pessoa_endereco->regiao_id             $param['regiao_id'][$row];
  532.                                  $pessoa_endereco->ativo                      1;
  533.                                  $pessoa->addPessoaEndereco($pessoa_endereco);
  534.                              }
  535.                          }
  536.                      }
  537.                     $pessoa->store();
  538.                     if (!empty($param['url']))
  539.                     {
  540.                         $site = new Site;
  541.                         $site->nome                     $param['url'];
  542.                         $site->url                         $param['url'];
  543.                         $site->pessoa_id             $pessoa->id;
  544.                         $site->organizacao_id    $organizacao_id;
  545.                         $site->ativo                    1;
  546.                         $site->criacao                 $data_actual;
  547.                         $site->atualizacao         $data_actual;
  548.                         $site->store();
  549.                     }
  550.                     if (!empty($param['email']))
  551.                     {
  552.                         $contatoweb = new ContatoWeb;
  553.                         $contatoweb->email                     $param['email'];
  554.                         $contatoweb->pessoa_id             $pessoa->id;
  555.                         $contatoweb->organizacao_id $organizacao_id;
  556.                         $contatoweb->criacao                 $data_actual;
  557.                         $contatoweb->atualizacao         $data_actual;
  558.                         $contatoweb->ativo                     1;
  559.                         $contatoweb->store();
  560.                     }
  561.                     $juridica = new Juridica;
  562.                     $juridica->pessoa_id                                     $pessoa->id;
  563.                     $juridica->cnpj                                             str_replace('.','',str_replace('/','',str_replace('-','',$param['cnpj'])));
  564.                     $juridica->nome                                             $param['nome_fantasia'];
  565.                     $juridica->razao_social                                $param['razao_social'];
  566.                     $juridica->modelo_fiscal_id                     $param['modelo_fiscal_id'];
  567.                     $juridica->categoria_juridica_id             $param['categoria_juridica_id'];
  568.                     $juridica->natureza_juridica_id              $param['natureza_juridica_id'];
  569.                     $juridica->inscricao_municipal                 $param['inscricao_municipal'];
  570.                     $juridica->inscricao_estadual                 $param['inscricao_estadual'];
  571.                     $juridica->inscricao_junta_comercial     $param['inscricao_junta_comercial'];
  572.                     $juridica->criacao                                         date('Y-m-d H:i:s');
  573.                     $juridica->atualizacao                                 date('Y-m-d H:i:s');
  574.                     $juridica->atividade_primaria                    $param['cod_desc_ativ_principal'];
  575.                     $juridica->atividade_secundaria                $param['cod_desc_ativ_secundaria'];
  576.                     $juridica->faturamento_anual                     $param['faturamento_anual'];
  577.                     $juridica->margen_lucro                             $param['margen_lucro'];
  578.                     $juridica->data_inicio                                 TDate::date2us($param['data_nascto']);
  579.                     $juridica->store();
  580.                     $organizacao = new Organizacao;
  581.                     $organizacao->pessoa_id                     $pessoa->id;
  582.                     $organizacao->juridica_id                 $juridica->id;
  583.                     $organizacao->organizacao_id             $organizacao_id;
  584.                     $organizacao->ativo                             1;
  585.                     $organizacao->tipo_organizacao_id    $param['tipo_organizacao_id'];
  586.                     //$organizacao->unidade_id                    = 1;
  587.                     $organizacao->store();
  588.                     new TMessage('info','Pessoa id :'.$organizacao->id);
  589.                     $data = new stdClass;
  590.                     $data->id $organizacao->id;
  591.                     TForm::sendData('frm_empresa'$data);// keep form data
  592.                 }
  593.             }
  594.             TTransaction::close(); // close the transaction
  595.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  596.         }
  597.         catch (Exception $e)
  598.         {
  599.             new TMessage('error'$e->getMessage());
  600.             TForm::sendData('frm_empresa'$param);// keep form data
  601.             TTransaction::rollback();
  602.         }
  603.     }
  604.     /*
  605.     public static function onSave($param)
  606.     {
  607.         $organizacao_id = TSession::getValue('organizacion_id'); // pega id da empresa
  608.         $user_id = TSession::getValue('userid'); // pega id da usuário
  609.         $data_actual = date('Y-m-d H:i:s');
  610.         $key = $param['id'];
  611.         try
  612.             {
  613.                 TTransaction::open('nome_base'); // open a transaction
  614.                 TTransaction::setLoggerFunction(function($param)
  615.                     {
  616.                         print $param.'<br/>';
  617.                     });
  618.                         if( (! $param['nome_fantasia'])){
  619.                         throw new Exception('O Campo nome fantasia é obrigatório');
  620.                             }
  621.                         if( (! $param['data_nascto'])){
  622.                             throw new Exception('O Campo data fundação é obrigatório');
  623.                         }
  624.                         if( (! $param['razao_social'])){
  625.                             throw new Exception('O Campo razao social é obrigatório');
  626.                         }
  627.                         if( (! $param['categoria_juridica_id'])){
  628.                             throw new Exception('O Campo categoria juridica é obrigatório');
  629.                         }
  630.                         if( (! $param['natureza_juridica_id'])){
  631.                             throw new Exception('O Campo natureza juridica é obrigatório');
  632.                         }
  633.                         if( (! $param['cnpj'])){
  634.                             throw new Exception('O Campo cnpj é obrigatório');
  635.                         }
  636.                 // verifica se é edição
  637.                 if(isset($key) and (!empty($key)))
  638.                 {
  639.                     $organizacao = Organizacao::find($key);
  640.                     if ($organizacao)
  641.                        {
  642.                       $organizacao->atualizacao                 = $data_actual;
  643.                       $organizacao->tipo_organizacao_id         = $param['tipo_organizacao_id'];
  644.                       $organizacao->ativo                         = 1;
  645.                       $organizacao->store();
  646.                       //atualiza pessoa_juridica
  647.                       $juridica = Juridica::find($organizacao->juridica_id);
  648.                       $juridica->cnpj    = str_replace('.','',str_replace('/','',str_replace('-','',$param['cnpj'])));
  649.                       $juridica->nome                         = $param['nome_fantasia'];
  650.                       $juridica->responsavel                 = $param['responsavel'];
  651.                       $juridica->razao_social                 = $param['razao_social'];
  652.                       $juridica->categoria_juridica_id         = $param['categoria_juridica_id'];
  653.                       $juridica->natureza_juridica_id          = $param['natureza_juridica_id'];
  654.                       $juridica->inscricao_municipal           = $param['inscricao_municipal'];
  655.                       $juridica->inscricao_estadual           = $param['inscricao_estadual'];
  656.                       $juridica->inscricao_estadual          = $param['inscricao_estadual'];
  657.                       $juridica->inscricao_junta_comercial  = $param['inscricao_junta_comercial'];
  658.                       $juridica->atualizacao                = $data_actual;
  659.                       $juridica->atividade_primaria            = $param['cod_desc_ativ_principal'];
  660.                       $juridica->atividade_secundaria        = $param['cod_desc_ativ_secundaria'];
  661.                       $juridica->faturamento_anual          = $param['faturamento_anual'];
  662.                       $juridica->margen_lucro                   = $param['margen_lucro'];
  663.                       $juridica->data_inicio                 = TDate::date2us($param['data_nascto']);
  664.                       $juridica->store();
  665.                           //atualiza pessoa
  666.                         $pessoa = Pessoa::find($organizacao->pessoa_id);
  667.                         //$pessoa->nome                         = $param['nome_fantasia'];
  668.                         //$pessoa->data_nascimento     = TDate::date2us($param['data_nascto']);
  669.                         $pessoa->atualizacao             = $data_actual;
  670.                         //adiciona contatos
  671.                         if( !empty($param['telefone']) AND is_array($param['telefone']) )
  672.                         {
  673.                             foreach( $param['telefone'] as $row => $telefone)
  674.                             {
  675.                                 if ($telefone)
  676.                                 {
  677.                                     $item                   = new Contato;
  678.                                     $item->pessoa_id        = $pessoa->id;
  679.                                     $item->ddi              = trim($param['ddi'][$row]);
  680.                                     $item->ddd              = trim($param['dd'][$row]);
  681.                                     $item->telefone         = str_replace('-','',$param['telefone'][$row]);
  682.                                     $item->operadora_id     = $param['operadora_id'][$row];
  683.                                     $item->tipo_telefone_id = $param['tipo_telefone_id'][$row];
  684.                                     $item->criacao                  = $data_actual;
  685.                                     $item->atualizacao          = $data_actual;
  686.                                     $item->ativo                    = 1;
  687.                                     $item->organizacao_id   = $organizacao_id;
  688.                                     $pessoa->addContato($item);
  689.                                 }
  690.                             }
  691.                         }
  692.                              //adiciona endereco
  693.                           if( !empty($param['cep']) AND is_array($param['cep']) AND is_array($param['numero']) )
  694.                           {
  695.                             foreach( $param['id_endereco'] as $row => $id_endereco)
  696.                             {
  697.                               if ($id_endereco)
  698.                               {
  699.                                $pessoa_endereco                    = new PessoaEndereco;
  700.                                $pessoa_endereco->pessoa_id         = $pessoa->id;
  701.                                $pessoa_endereco->endereco_id       = $param['id_endereco'][$row];
  702.                                $pessoa_endereco->tipo_endereco_id  = $param['tipo_endereco_id'][$row];
  703.                                $pessoa_endereco->numero            = $param['numero'][$row];
  704.                                $pessoa_endereco->complemento       = $param['compl'][$row];
  705.                                $pessoa_endereco->criacao           = $data_actual;
  706.                                $pessoa_endereco->atualizacao       = $data_actual;
  707.                                $pessoa_endereco->organizacao_id    = $organizacao_id;
  708.                                $pessoa_endereco->regiao_id             = $param['regiao_id'][$row];
  709.                                $pessoa->addPessoaEndereco($pessoa_endereco);
  710.                              }
  711.                            }
  712.                          }
  713.                             $pessoa->store();
  714.                             if(!empty($param['url']))
  715.                             {
  716.                                 //pesquisa site
  717.                                 $site = Site::where('pessoa_id','=',$pessoa->id)
  718.                                                         ->where('organizacao_id','=',$organizacao_id)
  719.                                                         ->where('url','=',$param['url'])
  720.                                                         ->load();
  721.                                 //atualiza site
  722.                                 if($site)
  723.                                 {
  724.                                     foreach($site as $obj)
  725.                                     {
  726.                                         $obj->nome                     = $param['url'];
  727.                                         $obj->url                         = $param['url'];
  728.                                         $obj->atualizacao         = $data_actual;
  729.                                         $obj->ativo                    = 1;
  730.                                         $obj->store();
  731.                                     }
  732.                                 }
  733.                                 else //adicona site
  734.                                 {
  735.                                     $site = new Site;
  736.                                     $site->nome                     = $param['url'];
  737.                                     $site->url                         = $param['url'];
  738.                                     $site->pessoa_id             = $pessoa->id;
  739.                                     $site->organizacao_id    = $organizacao_id;
  740.                                     $site->ativo                    = 1;
  741.                                     $site->criacao                 = $data_actual;
  742.                                     $site->atualizacao         = $data_actual;
  743.                                     $site->store();
  744.                                 }
  745.                         }//fim rotina site
  746.                             //verifica $param['email'];
  747.               if(!empty($param['email']))
  748.               {
  749.                                 $contatoweb = ContatoWeb::where('email','=',$param['email'])
  750.                                                                                 ->where('pessoa_id','=',$pessoa->id)
  751.                                                                                 ->where('organizacao_id','=',$organizacao_id)
  752.                                                                                 ->load();
  753.                                 //atualiza contatoweb
  754.                                 if($contatoweb)
  755.                                 {
  756.                                     foreach($contatoweb as $obj)
  757.                                     {
  758.                                         $obj->email             = $param['url'];
  759.                                         $obj->atualizacao = $data_actual;
  760.                                         $obj->ativo             = 1;
  761.                                         $obj->store();
  762.                                     }
  763.                                 }
  764.                                 else //adiciona contatoweb / email
  765.                                 {
  766.                                         $contatoweb = new ContatoWeb;
  767.                                         $contatoweb->email                     = $param['email'];
  768.                                         $contatoweb->pessoa_id             = $pessoa->id;
  769.                                         $contatoweb->organizacao_id = $organizacao_id;
  770.                                         $contatoweb->criacao                 = $data_actual;
  771.                                         $contatoweb->atualizacao         = $data_actual;
  772.                                         $contatoweb->ativo                     = 1;
  773.                                         $contatoweb->store();
  774.                                 }
  775.                             }//fim contatoweb
  776.            }//fim organizacao / update
  777.                         $data = new stdClass;
  778.                         $data->id = $organizacao->id;
  779.                         TForm::sendData('frm_empresa', $data);// keep form data
  780.                 }
  781.                 //cadastra nova empresa
  782.                 else
  783.                 {
  784.                         //verifica se já existe o cnpj cadastrado
  785.                         $pesq_cnpj = Juridica::where('cnpj','=',str_replace('.','',str_replace('/','',str_replace('-','',$param['cnpj']))))->load();
  786.                         //$juridica = $pesq_cnpj[0];
  787.                         if (!empty($pesq_cnpj))
  788.                         {
  789.                             $empresa = Organizacao::where('juridica_id','=',$pesq_cnpj->id)->load();
  790.                             $pessoa_organizacao = PessoaOrganizaca::where('pessoa_id','=',$empresa->pessoa_id)
  791.                                                                   ->where('organizacao_id','=',$organizacao_id)
  792.                                                                   ->load();
  793.                                 if($pessoa_organizacao){
  794.                                     foreach($pessoa_organizacao as $pessoa_organizacao)
  795.                                     {
  796.                                         print $pessoa_organizacao->id;
  797.                                     }
  798.                                 }
  799.                                 else
  800.                                 {
  801.                                     $pessoa = new Pessoa;
  802.                                     $pessoa->criacao                = $data_actual;
  803.                                     $pessoa->atualizacao            = $data_actual;
  804.                                     $pessoa->ativo                    = 1;
  805.                                     //adiciona contatos
  806.                                     if( !empty($param['telefone']) AND is_array($param['telefone']) )
  807.                                     {
  808.                                         foreach( $param['telefone'] as $row => $telefone)
  809.                                         {
  810.                                             if ($telefone)
  811.                                             {
  812.                                              $item                   = new Contato;
  813.                                              $item->pessoa_id                 = $pessoa->id;
  814.                                              $item->ddi              = trim($param['ddi'][$row]);
  815.                                              $item->ddd              = trim($param['dd'][$row]);
  816.                                              $item->telefone         = str_replace('-','',$param['telefone'][$row]);
  817.                                              $item->operadora_id     = $param['operadora_id'][$row];
  818.                                              $item->tipo_telefone_id = $param['tipo_telefone_id'][$row];
  819.                                              $item->criacao                  = $data_actual;
  820.                                              $item->atualizacao          = $data_actual;
  821.                                              $item->ativo                    = 1;
  822.                                              $item->organizacao_id   = $organizacao_id;
  823.                                              $pessoa->addContato($item);
  824.                                          }
  825.                                      }
  826.                                  }
  827.                                     //adiciona endereco
  828.                                     if( !empty($param['cep']) AND is_array($param['cep']) AND is_array($param['numero']) )
  829.                                     {
  830.                                         foreach( $param['id_endereco'] as $row => $id_endereco)
  831.                                         {
  832.                                             if ($id_endereco)
  833.                                             {
  834.                                              $pessoa_endereco                    = new PessoaEndereco;
  835.                                              $pessoa_endereco->pessoa_id         = $pessoa->id;
  836.                                              $pessoa_endereco->endereco_id       = $param['id_endereco'][$row];
  837.                                              $pessoa_endereco->tipo_endereco_id  = $param['tipo_endereco_id'][$row];
  838.                                              $pessoa_endereco->numero            = $param['numero'][$row];
  839.                                              $pessoa_endereco->complemento       = $param['compl'][$row];
  840.                                              $pessoa_endereco->criacao           = $data_actual;
  841.                                              $pessoa_endereco->atualizacao       = $data_actual;
  842.                                              $pessoa_endereco->organizacao_id    = $organizacao_id;
  843.                                              $pessoa_endereco->regiao_id             = $param['regiao_id'][$row];
  844.                                              $pessoa->addPessoaEndereco($pessoa_endereco);
  845.                                          }
  846.                                      }
  847.                                  }
  848.                                     $pessoa->store();
  849.                                     $organizacao = new Organizacao;
  850.                                     $organizacao->pessoa_id =  $pessoa->id;
  851.                                     $organizacao->store();
  852.                                     //inserir pessoa_organizacao
  853.                                     $pessoa_organizacao = new PessoaOrganizacao;
  854.                                     $pessoa_organizacao->nome                 = $param['nome_fantasia'];
  855.                                     $pessoa_organizacao->data_nascimento     = TDate::date2us($param['data_nascto']);
  856.                                     $pessoa_organizacao->tipo_pessoa_id     = 2;
  857.                                     $pessoa_organizacao->organizacao_id        = $organizacao->id;
  858.                                     $pessoa_organizacao->criacao            = $data_actual;
  859.                                     $pessoa_organizacao->atualizacao        = $data_actual;
  860.                                     $pessoa_organizacao->ativo                = 1;
  861.                                     $pessoa_organizacao->store();
  862.                                     $unidade = new SystemUnit;
  863.                                     $unidade->name              = $param['razao_social'];
  864.                                     $unidade->organizacao_id = $organizacao->id;
  865.                                     $unidade->store();
  866.                                     //inserir juridica
  867.                                     $juridica = new Juridica;
  868.                                     $juridica->pessoa_id             = $pessoa->id;
  869.                                     $juridica->cnpj                 = str_replace('.','',str_replace('/','',str_replace('-','',$param['cnpj'])));
  870.                                     $juridica->organizacao_id         = $organizacao->id;
  871.                                     $juridica->responsavel             = $param['responsavel'];
  872.                                     $juridica->razao_social         = $param['razao_social'];
  873.                                     $juridica->modelo_fiscal_id     = $param['modelo_fiscal_id'];
  874.                                     $juridica->categoria_juridica_id     = $param['categoria_juridica_id'];
  875.                                     $juridica->natureza_juridica_id     = $param['natureza_juridica_id'];
  876.                                     $juridica->inscricao_municipal         = $param['inscricao_municipal'];
  877.                                     $juridica->store();
  878.                                     $data = new stdClass;
  879.                                     $data->id = $organizacao->id;
  880.                                     TForm::sendData('frm_empresa', $data);// keep form data
  881.                                 }
  882.                         }
  883.                 }
  884.                 //$this->form->setData($data);
  885.                 TTransaction::close(); // close the transaction
  886.                 new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  887.             }
  888.             catch (Exception $e) // in case of exception
  889.                 {
  890.                     new TMessage('error', $e->getMessage());
  891.                     TForm::sendData('frm_empresa', $param);// keep form data
  892.                     TTransaction::rollback();
  893.                 }
  894.         }
  895.     */
  896.     public function onEdit($param)
  897.     {
  898.         try
  899.         {
  900.          if (isset($param['key']))
  901.             {
  902.                 // open a transaction with database 'samples'
  903.                 TTransaction::open('nome_base');
  904.                 $key $param['key'];
  905.                 $organizacao Organizacao::find($key);
  906.                 if($organizacao)
  907.                 {
  908.                     if (strlen($organizacao->juridica->cnpj) == 14):
  909.                         $cnpj =  substr($organizacao->juridica->cnpj02) . '.' substr($organizacao->juridica->cnpj23) . '.' substr($organizacao->juridica->cnpj53) . '/' substr($organizacao->juridica->cnpj84) . '-' substr($organizacao->juridica->cnpj122); endif;
  910.                 //$inscricao_estadual =  substr($organizacao->juridica->inscricao_estadual, 0, 3) . '.' . substr($organizacao->juridica->inscricao_estadual, 3, 3) . '.' . substr($organizacao->juridica->inscricao_estadual, 6, 3) . '.' . substr($organizacao->juridica->inscricao_estadual, 9, 3);//. '-' . substr($cliente->juridica->inscricao_estadual, 12, 2);
  911.                 //$inscricao_municipal =  substr($organizacao->juridica->inscricao_municipal, 0, 1) . '.' . substr($organizacao->juridica->inscricao_municipal, 3, 3) . '.' . substr($organizacao->juridica->inscricao_municipal, 6, 3) . '.' . substr($organizacao->juridica->inscricao_municipal, 7, 1);// . '-' . substr($cliente->juridica->inscricao_municipal, 12, 2);
  912.                 //$inscricao_junta_comercial =  substr($organizacao->juridica->inscricao_junta_comercial, 0, 2) . '.' . substr($organizacao->juridica->inscricao_junta_comercial, 2, 3) . '.' . substr($organizacao->juridica->inscricao_junta_comercial, 6, 3) . '.' . substr($organizacao->juridica->inscricao_junta_comercial, 9, 3); //. '-' . substr($cliente->juridica->inscricao_junta_comercial, 12, 2);
  913.                     $organizacao->nome_fantasia             $organizacao->juridica->nome;
  914.                     $organizacao->data_nascto                 TDate::date2br($organizacao->juridica->data_inicio);
  915.                     $organizacao->tipo_organizacao_id        $organizacao->tipo_organizacao_id;
  916.                     $organizacao->razao_social                 $organizacao->juridica->razao_social;
  917.                     $organizacao->cod_desc_ativ_principal      $organizacao->juridica->atividade_primaria;
  918.                     $organizacao->cod_desc_ativ_secundaria     $organizacao->juridica->atividade_secundaria;
  919.                     if (!empty($organizacao->juridica->categoria_juridica_id))
  920.                     {
  921.                        $organizacao->categoria_juridica_id->setValue($organizacao->juridica->categoria_juridica_id);
  922.                     }
  923.                     if (!empty($organizacao->juridica->categoria_juridica_id))
  924.                     {
  925.                        $organizacao->natureza_juridica_id->setValue($organizacao->juridica->natureza_juridica_id);
  926.                     }
  927.                     //$organizacao->categoria_juridica_id     = $organizacao->juridica->categoria_juridica_id;
  928.                     //$organizacao->natureza_juridica_id      = $organizacao->juridica->natureza_juridica_id;
  929.                     $organizacao->modelo_fiscal_id             $organizacao->juridica->modelo_fiscal_id;
  930.                     $organizacao->cnpj                         $cnpj;
  931.                     $organizacao->inscricao_estadual         $organizacao->juridica->inscricao_estadual;
  932.                     $organizacao->inscricao_junta_comercial $organizacao->juridica->inscricao_junta_comercial;
  933.                     $organizacao->inscricao_municipal         $organizacao->juridica->inscricao_municipal;
  934.                     $organizacao->responsavel                $organizacao->juridica->responsavel;
  935.                     $organizacao->faturamento_anual            'R$ ' .$organizacao->juridica->faturamento_anual;
  936.                     $organizacao->margen_lucro                $organizacao->juridica->margen_lucro.' % ';
  937.                     $organizacao->email                     $organizacao->contatoweb_email;
  938.                     $organizacao->url                         $organizacao->site_url;
  939.                     $this->fireEvents($organizacao);
  940.                     /*
  941.                     foreach ($organizacao->get_pessoa()->getSites()  as $site)
  942.                     {
  943.                         $organizacao->url = $site->url;
  944.                     }
  945.                     */
  946.                             //adiciona tabela contato ao formulário
  947.                             //$this->table_contato->addSection('tbody');
  948.                             $contatos $organizacao->get_pessoa()->getContato();
  949.                             if (!empty($contatos))
  950.                             {
  951.                                 foreach ($contatos as $contato)
  952.                                     {
  953.                                         $contato->telefone substr($contato->telefone04) . '-' substr($contato->telefone48);
  954.                                         $this->addContatoRow($contato);
  955.                                     }
  956.                                 //criar e adicionar botão
  957.                                 $add = new TButton('addContact');
  958.                                 $add->setLabel('Adicionar');
  959.                                 $add->setImage('fa:plus-circle blue');
  960.                                 $add->addFunction('ttable_clone_previous_row(this)');
  961.                                 //adiciona botão a tabela
  962.                                 $row $this->table_contato->addSection('tfoot');
  963.                                 $row $this->table_contato->addRowSet([$add]);
  964.                             }
  965.                             else
  966.                             {
  967.                                 $this->onClear($param);
  968.                             }
  969.                             //adiciona tabela endereco ao formulário
  970.                 //$this->table_endereco->addSection('tbody');
  971.                 $endereco =  $organizacao->get_pessoa()->getPessoaEndereco();
  972.                 if (!empty($endereco))
  973.                 {
  974.                   foreach ($endereco as $enderecos)
  975.                   {
  976.                     $this->addEnderecoRow($enderecos);
  977.                   }
  978.                   //criar e adicionar botão
  979.                   $add_endereco = new TButton('addEnder');
  980.                   $add_endereco->setLabel('Adiconar');
  981.                   $add_endereco->setImage('fa:plus-circle blue');
  982.                   $add_endereco->addFunction('ttable_clone_previous_row(this)');
  983.                   //adiciona botão a tabela
  984.                   $row_end $this->table_endereco->addSection('tfoot');
  985.                   $row_end $this->table_endereco->addRowSet([$add_endereco]);
  986.                 }
  987.                 else
  988.                 {
  989.                   $this->onClear($param);
  990.                 }
  991.                             }
  992.                             $this->form->setData($organizacao);
  993.                             // close the transaction
  994.                             TTransaction::close();
  995.                     }
  996.                 }catch (Exception $e// in case of exception
  997.                 {
  998.           new TMessage('error'$e->getMessage());
  999.           TForm::sendData('frm_empresa'$param);// keep form data
  1000.           TTransaction::rollback();
  1001.                 }
  1002.     }
  1003.         /*
  1004.      * method addContatoRow($contato)
  1005.      * adicona vetor de contatos no formulário
  1006.      */
  1007.     public function addContatoRow($contato){
  1008.       $uniqid mt_rand(10000009999999);
  1009.       $ddi = new TEntry('ddi[]');
  1010.       $ddi->setValue('55');
  1011.       $ddi->addValidation('ddi', new TNumericValidator,new TMaxValueValidator,array(2));
  1012.       if (!empty($contato->ddi))
  1013.       {
  1014.         $ddi->setValue($contato->ddi);
  1015.       }
  1016.       $dd = new TEntry('dd[]');
  1017.       $dd->setValue('011');
  1018.       $dd->addValidation('ddd',new TNumericValidator, new TMaxValueValidator,array(3));
  1019.       if (!empty($contato->dd))
  1020.       {
  1021.         $dd->setValue($contato->dd);
  1022.       }
  1023.       $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]','nome_base','TipoTelefone','id','descricao');
  1024.       $tipo_telefone_id->setDefaultOption(false);
  1025.       if (!empty($contato->tipo_telefone_id))
  1026.       {
  1027.         $tipo_telefone_id->setValue($contato->tipo_telefone_id);
  1028.       }
  1029.       $telefone = new TEntry('telefone[]');
  1030.       $telefone->addValidation('telefone', new TNumericValidator);
  1031.       $telefone->setMask('9999-9999');
  1032.       if (!empty($contato->telefone))
  1033.       {
  1034.         $telefone->setMask('9999-9999');
  1035.         $telefone->setValue($contato->telefone);
  1036.         $telefone->addValidation('telefone', new TNumericValidator);
  1037.       }
  1038.       $operadora_id = new TDBCombo('operadora_id[]','nome_base','Operadora','id','nome');
  1039.       $operadora_id->setDefaultOption(false);
  1040.       if (!empty($contato->operadora_id))
  1041.       {
  1042.         $operadora_id->setValue($contato->operadora_id);
  1043.       }
  1044.         //set ids
  1045.       $ddi->setId('ddi_'.$uniqid);
  1046.       $dd->setId('dd_'.$uniqid);
  1047.       $telefone->setId('telefone_'.$uniqid);
  1048.       $tipo_telefone_id->setId('tipo_telefone_id_'.$uniqid);
  1049.       $operadora_id->setId('operadora_id_'.$uniqid);
  1050.         // create delete button
  1051.       $del = new TImage('fa:trash-o blue');
  1052.       $del->onclick 'ttable_remove_row(this)';
  1053.       $row $this->table_contato->addRowSet([$ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id,$del]);
  1054.       $this->detail_row ++;
  1055.       $ddi->setSize('40');
  1056.       $dd->setSize('40');
  1057.       $tipo_telefone_id->setSize('100');
  1058.       $telefone->setSize('100');
  1059.       $operadora_id ->setSize('100');
  1060.     }
  1061.     /*
  1062.      * method addEnderecoRow($endereco)
  1063.      * adicona vetor de endereco no formulário
  1064.      */
  1065.     public function addEnderecoRow($endereco)
  1066.     {
  1067.       $uniqid mt_rand(10000009999999);
  1068.         /*
  1069.          $btn_cep = new TButton('btn_cep');
  1070.          $btn_cep->setSize(42);
  1071.          $btn_cep->setAction(new TAction(array($this,'onCep')),'');
  1072.          $btn_cep->setImage('fa:search blue');
  1073.          $this->form->addField($btn_cep);
  1074.          */
  1075.          $this->cep = new TEntry('cep[]');
  1076.          $this->cep->setMask('00000-000');
  1077.          $this->cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));
  1078.          $this->form->addField($this->cep);
  1079.          $input_cep = new TAction(array($this,'onCep'));
  1080.          $this->cep->setExitAction($input_cep);
  1081.          if (!empty($endereco->endereco->cep))
  1082.          {
  1083.            $this->cep->setValue($endereco->endereco->cep);
  1084.          }
  1085.          $id_endereco = new TEntry('id_endereco[]');
  1086.          $id_endereco->setEditable(false);
  1087.          $id_endereco->style 'display:none;';
  1088.          if (!empty($endereco->endereco->id))
  1089.          {
  1090.           $id_endereco->setValue($endereco->endereco->id);
  1091.         }
  1092.         $logradouro  = new TEntry('logradouro[]');
  1093.         if (!empty($endereco->endereco->logradouro))
  1094.         {
  1095.           $logradouro->setValue($endereco->endereco->logradouro);
  1096.         }
  1097.         $bairro  = new TEntry('bairro[]');
  1098.         if (!empty($endereco->endereco->bairro))
  1099.         {
  1100.           $bairro->setValue($endereco->endereco->bairro);
  1101.         }
  1102.         $cidade  = new TEntry('cidade[]');
  1103.         if (!empty($endereco->endereco->cidade))
  1104.         {
  1105.           $cidade->setValue($endereco->endereco->cidade);
  1106.         }
  1107.         $uf = new TEntry('uf[]');
  1108.         if (!empty($endereco->endereco->uf))
  1109.         {
  1110.           $uf->setValue($endereco->endereco->uf);
  1111.         }
  1112.         $numero = new TEntry('numero[]');
  1113.         if (!empty($endereco->numero))
  1114.         {
  1115.           $numero->setValue($endereco->numero);
  1116.         }
  1117.         $tipo_endereco_id   = new TDBCombo('tipo_endereco_id[]','nome_base','TipoEndereco','id','descricao');
  1118.         $tipo_endereco_id->setDefaultOption(false);
  1119.         if (!empty($endereco->tipo_endereco_id))
  1120.         {
  1121.           $tipo_endereco_id->setValue($endereco->tipo_endereco_id);
  1122.         }
  1123.         $complemento  = new TEntry('compl[]');
  1124.         if (!empty($endereco->complemento))
  1125.         {
  1126.           $complemento->setValue($endereco->complemento);
  1127.         }
  1128.         $regiao_id   = new TDBCombo('regiao_id[]','nome_base','Regiao','id','descricao');
  1129.         $regiao_id->setDefaultOption(false);
  1130.         if (!empty($endereco->regiao_id))
  1131.         {
  1132.           $regiao_id->setValue($endereco->regiao_id);
  1133.         }
  1134.         // set row counter
  1135.         $this->cep->{'data-row_1'}        = $this->detail_row_1;
  1136.         $id_endereco->{'data-row_1'}      = $this->detail_row_1;
  1137.         $logradouro->{'data-row_1'}       = $this->detail_row_1;
  1138.         $numero->{'data-row_1'}           = $this->detail_row_1;
  1139.         $bairro->{'data-row_1'}           = $this->detail_row_1;
  1140.         $cidade->{'data-row_1'}           = $this->detail_row_1;
  1141.         $uf->{'data-row_1'}               = $this->detail_row_1;
  1142.         $tipo_endereco_id->{'data-row_1'} = $this->detail_row_1;
  1143.         $complemento->{'data-row_1'}      = $this->detail_row_1;
  1144.         $regiao_id->{'data-row_1'}        = $this->detail_row_1;
  1145.         //set ids
  1146.         //$btn_cep       ->setId('btn_cep)'.$uniqid);
  1147.         //$id_end          ->setId('id_endereco_'.$uniqid);
  1148.         $this->cep       ->setId('cep_'.$uniqid);
  1149.         $id_endereco     ->setId('id_endereco_'.$uniqid);
  1150.         $logradouro      ->setId('logradouro_'.$uniqid);
  1151.         $bairro          ->setId('bairro_'.$uniqid);
  1152.         $cidade          ->setId('cidade_'.$uniqid);
  1153.         $uf              ->setId('uf_'.$uniqid);
  1154.         $numero          ->setId('numero_'.$uniqid);
  1155.         $tipo_endereco_id->setId('tipo_endereco_id_'.$uniqid);
  1156.         $complemento     ->setId('compl_'.$uniqid);
  1157.         $regiao_id       ->setId('regiao_id'.$uniqid);
  1158.         // create delete button
  1159.         $del_endereco = new TImage('fa:trash-o blue');
  1160.         $del_endereco->onclick 'ttable_remove_row(this)';
  1161.         $row_end $this->table_endereco->addRowSet([$id_endereco,$this->cep,$logradouro,$numero,$bairro,$cidade,$uf,$tipo_endereco_id,$complemento,$regiao_id,$del_endereco]);
  1162.         $row_end->{'data-row'} = $this->detail_row_1;
  1163.         $id_endereco->setSize('30');
  1164.         $this->cep->setSize('70');
  1165.         $logradouro->setSize('160');
  1166.         $bairro->setSize('140');
  1167.         $cidade->setSize('100');
  1168.         $uf->setSize('30');
  1169.         $numero->setSize('65');
  1170.         $complemento->setSize('100');
  1171.         $regiao_id->setSize('90');
  1172.         $tipo_endereco_id->setSize('100');
  1173.         $this->detail_row_1 ++;
  1174.         }
  1175.         public static function pesqCnpj($cnpj)
  1176.         {
  1177.             $juridica Juridica::where('cnpj','=',str_replace('.','',str_replace('/','',str_replace('-','',$param['cnpj']))));
  1178.             new TMessage('info''Em desenvolvimento');
  1179.         }
  1180.     /**
  1181.      * Action to be executed when the user changes the gender or status
  1182.      * @param $param Action parameters
  1183.      */
  1184.     static function onChangeAction($param)
  1185.     {
  1186.         try
  1187.            {
  1188.               if ($param['categoria_juridica_id'])//se existe parâmetro da primeira combo(nome da primeira combo)
  1189.              {
  1190.                $criteria TCriteria::create( ['categoria_juridica_id' => $param['categoria_juridica_id'] ] );
  1191.                 //$criteria = new TCriteria;
  1192.                 //$criteria->add(new TFilter('categoria_juridica_id', '=', $param['categoria_juridica_id']));
  1193.                 //categoria_juridica_id = parametro chave estrangeira da tabela master
  1194.                    // formname,field(nome do campo),database , nome da model,key,value,ordercolumn = NULL,criteria, startEmpty = FALSE
  1195.                 TDBCombo::reloadFromModel('frm_empresa','natureza_juridica_id','nome_base','NaturezaJuridica','id','{codigo_descricao}''codigo_descricao',$criteria,TRUE);
  1196.             }
  1197.             else
  1198.             {
  1199.               TCombo::clearField('frm_empresa''natureza_juridica_id'); //reload do formulario frm_empresa na segunda combo "natureza_juridica_id"
  1200.             }
  1201.         }
  1202.         catch (Exception $e)
  1203.         {
  1204.             new TMessage('error'$e->getMessage());
  1205.         }
  1206.     }
  1207.     public function fireEvents$object )
  1208.     {
  1209.         $obj = new stdClass;
  1210.         
  1211.         if(get_class($object) == 'stdClass')
  1212.         {
  1213.             if(isset($object->categoria_juridica_id))
  1214.             {
  1215.                 $obj->categoria_juridica_id $object->categoria_juridica_id;
  1216.             }
  1217.             if(isset($object->natureza_juridica_id))
  1218.             {
  1219.                 $obj->natureza_juridica_id $object->natureza_juridica_id;
  1220.             }
  1221.         }
  1222.         else
  1223.         {
  1224.             if(isset($object->categoria_juridica_id))
  1225.             {
  1226.                 $obj->categoria_juridica_id $object->categoria_juridica_id;
  1227.             }
  1228.             if(isset($object->natureza_juridica_id))
  1229.             {
  1230.                 $obj->natureza_juridica_id $object->natureza_juridica_id;
  1231.             }
  1232.         }
  1233.         TForm::sendData('frm_empresa'$obj);
  1234.     } 
  1235. }
  1236. ?>

  1. <?php
  2. /**
  3.  * endereco Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class Endereco extends TRecord
  7. {
  8.     const TABLENAME 'endereco';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'serial'// {max, serial}
  11.     use SystemChangeLogTrait;  
  12.     
  13.     
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct($id NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct($id$callObjectLoad);
  20.         parent::addAttribute('cep');
  21.         parent::addAttribute('logradouro');
  22.         parent::addAttribute('bairro');
  23.         parent::addAttribute('cidade');
  24.         parent::addAttribute('uf');
  25.         parent::addAttribute('codigo_ibge');
  26.         parent::addAttribute('gia');
  27.         parent::addAttribute('pais');
  28.         parent::addAttribute('criacao');
  29.         parent::addAttribute('atualizacao');
  30.     }
  31.     
  32.     /**
  33.      * Method getpessoa_enderecos
  34.      */
  35.     public function get_pessoa_endereco()
  36.     {
  37.         $criteria = new TCriteria;
  38.         $criteria->add(new TFilter('endereco_id''='$this->id));
  39.         return PessoaEndereco::getObjects$criteria );
  40.     }
  41.     
  42.   public static function BuscaCepWeb($Cep)
  43.   {
  44.     $Cep preg_replace("/D/",""$Cep);
  45.     if ($Cep != "")
  46.       {
  47.         $resultado simplexml_load_string( @file_get_contents("http://viacep.com.br/ws/".$Cep."/xml/"));
  48.         $erro = (string) $resultado->erro;
  49.         if (!$erro)
  50.         {
  51.           $id_cep Endereco::BuscaEnderecoId($Cep);
  52.           
  53.           if(!empty($id_cep))
  54.           {
  55.             $objects['id']          =  $id_cep// retorno vindo do banco
  56.             $objects['cep']         = (string) $resultado->cep;
  57.             $objects['logradouro']  = (string) $resultado->logradouro;
  58.             $objects['complemento'] = (string) $resultado->complemento;
  59.             $objects['bairro']      = (string) $resultado->bairro;
  60.             $objects['localidade']  = (string) $resultado->localidade;
  61.             $objects['uf']          = (string) $resultado->uf;
  62.             $objects['unidade']     = (string) $resultado->unidade;
  63.             $objects['ibge']        = (string) $resultado->ibge;
  64.             $objects['gia']         = (string) $resultado->gia;
  65.             return $objects;
  66.           } 
  67.           else
  68.           {
  69.             $obj Endereco::addEndereco($resultado);
  70.             if(!empty($obj))
  71.             {
  72.                 return $obj;
  73.             } 
  74.           }
  75.         } else return FALSE;
  76.       } else return FALSE;
  77.     }
  78.  /*
  79.   *Método responsável por retornar o endereco completo
  80.   *cadastrado na base de dados
  81.   *@param cep
  82.  */
  83.   public static function BuscaCepBanco($cep)
  84.   {
  85.     if(!empty($cep))
  86.     {
  87.       try
  88.       {
  89.        TTransaction::open('nome_base');
  90.       //cria um repositório para carregar 'Endereco'
  91.        $repository = new TRepository('Endereco');
  92.        $limit 1;
  93.        $criteria = new TCriteria;
  94.        $criteria->add( new TFilter'cep''='trim(str_replace("-","",$cep) )));
  95.        $criteria->setProperty('limit',$limit);
  96.        //$objects = $repository->load($criteria);
  97.        $objects Endereco::getObjects($criteria);
  98.        if(!empty($objects))
  99.        {
  100.          foreach ($objects as $endereco)
  101.           {
  102.            $enderecos['id']          = (int) $endereco->id;
  103.            $enderecos['cep']         = (string) $endereco->cep;
  104.            $enderecos['logradouro']  = (string) $endereco->logradouro;
  105.            $enderecos['bairro']      = (string) $endereco->bairro;
  106.            $enderecos['cidade']      = (string) $endereco->cidade;
  107.            //$enderecos['ibge']        = (string) $endereco->codigo_ibge;
  108.            //$enderecos['gia']         = (string) $endereco->gia;
  109.            $enderecos['uf']          = (string) $endereco->uf;
  110.            return $enderecos;
  111.           }
  112.         }
  113.         TTransaction::close();
  114.       }
  115.       catch (Exception $e)
  116.       {
  117.         new TMessage('error'$e->getMessage());
  118.       }
  119.     }else return FALSE;
  120.   }
  121.   /*
  122.   *Método responsável por retornar o id endereco
  123.   *cadastrado na base de dados
  124.   *@param cep
  125.  */
  126.   public static function BuscaEnderecoId($cep)
  127.   {
  128.     try
  129.     {
  130.        TTransaction::open('nome_base');
  131.          //cria um repositório para carregar 'Endereco'
  132.          $endereco  = new TRepository('Endereco');
  133.          $limit 1;
  134.          //cria um critério para seleção de dados
  135.          $criteria = new TCriteria;
  136.          $criteria->add(new TFilter('cep''=',str_replace("-",""$cep)));
  137.          $criteria->setProperty('limit',$limit);
  138.          $objects $endereco->load($criteria);
  139.          
  140.          if($objects)
  141.          {
  142.              foreach($objects as $object)
  143.              {
  144.                 $id_cep =  $object->id ;
  145.              }
  146.              return $id_cep ;
  147.          }
  148.         TTransaction::close(); // fecha a transação.
  149.     }
  150.     catch (Exception $e)
  151.     {
  152.         new TMessage('error'$e->getMessage());
  153.     }
  154.   }
  155.   /*
  156.   *Método responsável por adicionar endereco completo
  157.   *Na base de dados
  158.   *@param cep
  159.  */
  160.   public static function addEndereco($endereco)
  161.   {
  162.     try 
  163.     {
  164.             $data_atual date('Y-m-d H:i:s');
  165.             
  166.       TTransaction::open('nome_base');
  167.       $add_endereco = new Endereco;
  168.       $add_endereco->cep          = (string)str_replace('-','',$endereco->cep);
  169.       $add_endereco->logradouro   = (string)$endereco->logradouro;
  170.       $add_endereco->bairro       = (string)$endereco->bairro;
  171.       $add_endereco->cidade       = (string)$endereco->localidade;
  172.       $add_endereco->uf           = (string)$endereco->uf;
  173.       $add_endereco->codigo_ibge  = (string)$endereco->ibge;
  174.       $add_endereco->gia          = (string)$endereco->gia;
  175.       $add_endereco->criacao      $data_atual;
  176.       $add_endereco->atualizacao  $data_atual;
  177.       $add_endereco->store();
  178.       
  179.       //print_r($add_endereco).'<br>';
  180.       TTransaction::close();         
  181.     }
  182.      catch (Exception $e) {
  183.       new TMessage('error'$e->getMessage());
  184.     }
  185.     return;
  186.   }
  187.   public function BuscaCepRepublicaVirtual($cep)
  188.   {  
  189.       $resultado = @file_get_contents('http://republicavirtual.com.br/web_cep.php?cep='.urlencode($cep).'&formato=query_string');  
  190.       if(!$resultado)
  191.       {  
  192.         $resultado "&resultado=0&resultado_txt=erro+ao+buscar+cep";  
  193.       }  
  194.       parse_str($resultado$retorno);   
  195.       return $retorno;  
  196.   }  
  197. }