RB
Informações de Contato não são carregadas pelo metodo onEdit
Olá,
Estou tentado carregar dados de contato, porém sem sucesso.
se alguém puder me ajudar agradeço.
Segue fonte abaixo:
Pessoa
Grid
formulário
Estou tentado carregar dados de contato, porém sem sucesso.
se alguém puder me ajudar agradeço.
Segue fonte abaixo:
Pessoa
- <?php
- /**
- * Pessoa Active Record
- * @author <your-name-here>
- */
- class Pessoa extends TRecord
- {
- const TABLENAME = 'pessoa';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'serial'; // {max, serial}
- private $contato;
- private $contatoweb;
- private $endereco;
- /**
- * Constructor method
- */
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('nome');
- parent::addAttribute('data_nascimento');
- parent::addAttribute('organizacao_id');
- parent::addAttribute('criacao');
- parent::addAttribute('atualizacao');
- parent::addAttribute('ativo');
- parent::addAttribute('tipo_pessoa_id');
- }
- /**
- * Method addContato
- * Add a Contato to the Pessoa
- * @param $object Instance of Contato
- */
- public function addContato(Contato $object)
- {
- $this->contato[] = $object;
- }
- /**
- * Method getcontato
- * Return the Pessoa' Contato's
- * @return Collection of Contato
- */
- public function getContato()
- {
- return $this->contato;
- }
- /**
- * Method addContatoWeb
- * Add a ContatoWeb to the Pessoa
- * @param $object Instance of ContatoWeb
- */
- public function addContatoWeb(ContatoWeb $object)
- {
- $this->contatoweb[] = $object;
- }
- /**
- * Method getContatoWebs
- * Return the Pessoa' ContatoWeb's
- * @return Collection of ContatoWeb
- */
- public function getContatoWeb()
- {
- return $this->contatoweb;
- }
- /**
- * Method addEndereco
- * Add a Endereco to the Pessoa
- * @param $object Instance of Endereco
- */
- public function addEndereco(Endereco $object)
- {
- $this->endereco[] = $object;
- }
- /**
- * Method getEnderecos
- * Return the Pessoa' Endereco's
- * @return Collection of Endereco
- */
- public function getEndereco()
- {
- return $this->endereco;
- }
- /**
- * Reset aggregates
- */
- public function clearParts()
- {
- $this->contato = array();
- $this->contatoweb = array();
- $this->endereco = array();
- }
- /**
- * Load the object and its aggregates
- * @param $id object ID
- */
- public function load($id)
- {
- $this->contato = parent::loadComposite('Contato', 'pessoa_id', $id);
- $this->contatoweb = parent::loadComposite('ContatoWeb', 'pessoa_id', $id);
- $this->endereco = parent::loadAggregate('Endereco', 'PessoaEndereco', 'pessoa_id', 'endereco_id', $id);
- // load the object itself
- return parent::load($id);
- }
- /**
- * Store the object and its aggregates
- */
- public function store()
- {
- // store the object itself
- parent::store();
- parent::saveComposite('Contato', 'pessoa_id', $this->id, $this->contato);
- parent::saveComposite('ContatoWeb', 'pessoa_id', $this->id, $this->contatoweb);
- parent::saveAggregate('PessoaEndereco', 'pessoa_id', 'endereco_id', $this->id, $this->endereco);
- }
- /**
- * Delete the object and its aggregates
- * @param $id object ID
- */
- public function delete($id = NULL)
- {
- $id = isset($id) ? $id : $this->id;
- parent::deleteComposite('Contato', 'pessoa_id', $id);
- parent::deleteComposite('ContatoWeb', 'pessoa_id', $id);
- parent::deleteComposite('PessoaEndereco', 'pessoa_id', $id);
- // delete the object itself
- parent::delete($id);
- }
- }
- ?>
Grid
- <?php
- /**
- * DatagridQuickView
- */
- class DatagridCheckView extends TPage
- {
- private $datagrid;
- private $pageNavigation;
- private $loaded;
- private $form;
- private $editar;
- private $order_nome;
- public function __construct()
- {
- parent::__construct();
- $this->form = new TQuickForm('form_cliente');
- $check_gender = new TCheckGroup('check_gender');
- $check_gender->addItems( array('F'=>'Fisico', 'J'=>'Juridico') );
- $check_gender->setLayout('horizontal');
- $this->form->addQuickField('', $check_gender);
- $this->datagrid = new TDataGrid;
- //$this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
- $this->datagrid->style="width: 100%"; // Responsive
- $id = new TDataGridColumn('id','Cód.','left');
- $nome = new TDataGridColumn('pessoa->nome','Nome','left');
- $genero = new TDataGridColumn('fisica->genero_id','Sexo','');
- $data_nascimento = new TDataGridColumn('pessoa->data_nascimento','Data Nascto','left');
- $civil = new TDataGridColumn('fisica->civil->descricao','Estado Cívil','left');
- $etnia = new TDataGridColumn('fisica->etnia->descricao','Etnia','left');
- $cpf = new TDataGridColumn('fisica->cpf','CPF','left');
- $rg = new TDataGridColumn('fisica->rg','RG','left');
- $telefone = new TDataGridColumn('contato->telefone','Telefone','left');
- $email = new TDataGridColumn('contatoweb->email','E-mail','left');
- $site = new TDataGridColumn('contatoweb->site','Site','left');
- $editar = new TDataGridColumn('editar','','left');
- $deletar = new TDataGridColumn('deletar','','left');
- $this->datagrid->addColumn($id);
- $this->datagrid->addColumn($nome);
- $this->datagrid->addColumn($genero);
- $this->datagrid->addColumn($data_nascimento);
- $this->datagrid->addColumn($civil);
- $this->datagrid->addColumn($etnia);
- $this->datagrid->addColumn($cpf);
- $this->datagrid->addColumn($rg);
- $this->datagrid->addColumn($telefone);
- //$this->datagrid->addColumn($cep);
- //$this->datagrid->addColumn($logradouro);
- //$this->datagrid->addColumn($bairro);
- //$this->datagrid->addColumn($cidade);
- //$this->datagrid->addColumn($uf);
- $this->datagrid->addColumn($email);
- $this->datagrid->addColumn($site);
- $this->datagrid->addColumn($editar);
- $this->datagrid->addColumn($deletar);
- // define the transformer method over image
- $data_nascimento->setTransformer( function($value, $object, $row) {
- $date = new DateTime($value);
- return $date->format('d/m/Y');
- });
- $genero->setTransformer( function($value, $object, $row) {
- switch ($value) {
- case '1':
- return 'Masculino';
- break;
- case '2':
- return 'Feminino';
- break;
- }
- });
- $email->setTransformer( function($value, $object, $row) {
- switch ($value) {
- case !empty($value):
- return $value;
- break;
- default:
- return '---';
- break;
- }
- });
- // creates the datagrid actions
- $order1 = new TAction(array($this, 'onReload'));
- $order2 = new TAction(array($this, 'onReload'));
- $this->order_nome = $nome;
- // define the ordering parameters
- $order1->setParameter('order', 'id');
- $order2->setParameter('order', $this->order_nome);
- // assign the ordering actions
- $id->setAction($order1);
- $nome->setAction($order2);
- $bt1a = new TButton('novo');
- $bt1b = new TButton('refresh');
- $bt1a->setAction(new TAction(array('ClienteFisicoBuilder','onClear')));
- $bt1b->setAction(new TAction(array($this, 'onReload')), 'refresh');
- $bt1a->setLabel('Novo');
- $bt1b->setLabel('atualizar');
- $bt1a->setImage('ico_edit.png');
- $bt1b->setImage('bs:edit green');
- $hbox1 = new THBox;
- $hbox1->addRowSet( $bt1a, $bt1b );
- $frame1 = new TFrame;
- $frame1->style='border:none;';
- //$frame1->setLegend('Bootstrap Glyphicons');
- $frame1->add($hbox1);
- //$this->form->addField($btn_novo);
- // creates the datagrid model
- $this->datagrid->createModel();
- // creates the page navigation
- $this->pageNavigation = new TPageNavigation;
- $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
- $this->pageNavigation->setWidth($this->datagrid->getWidth());
- // wrap the page content using vertical box
- $vbox = new TVBox;
- $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $vbox->add($this->form);
- $vbox->add($this->datagrid);
- $vbox->add($frame1);
- $this->form->setFields(array($bt1a,$bt1b));
- $vbox->add($this->pageNavigation);
- parent::add($vbox);
- }
- /**
- * Load the data into the datagrid
- */
- public function onReload($param = NULL)
- {
- $this->datagrid->clear();
- try{
- //abre a transação com a base
- TTransaction::open('centinel');
- //cria um repositório para carregar 'Cliente '
- $cliente = new TRepository('Cliente');
- $limit = 10;
- //cria um critério para filtrar os dados conforme usuário logado
- $criteria = new TCriteria;
- // default order
- if (empty($param['order']))
- {
- $param['order'] = 'id';
- $param['direction'] = 'desc';
- }
- $get_session = TSession::getValue('organizacion_id');//pega id da empresa na seção do usuário
- $criteria->setProperties($param); // order, offset
- $criteria->add(new TFilter('organizacao_id', '=', $get_session));
- $criteria->add(new TFilter('ativo', '=', 1));
- $criteria->add(new TFilter('tipo_pessoa_id','=',1));
- $criteria->setProperty('limit',$limit);
- $objects = $cliente->load($criteria);
- if($objects)
- {
- foreach($objects as $object)
- {
- //cria os botões de ação e adiciona a datagrid
- $edit = new TImage('fa:edit blue');
- $action = new TAction(array('ClienteFisicoBuilder', 'onEdit'));
- $action->setParameter('key',$object->id);
- $object->editar = $edit;
- $a = new TActionLink($edit, $action);
- $del = new TImage('fa:trash red');
- $action1 = new TAction(array($this, 'onDelete'));
- $action1->setParameter('key',$object->id);
- $object->deletar = $del;
- $b = new TActionLink($del, $action1);
- $object->editar = $a;
- $object->deletar = $b;
- $this->datagrid->addItem($object);
- }
- }
- // reset the criteria for record count
- $criteria->resetProperties();
- $count = $cliente->count($criteria);
- $this->pageNavigation->setCount($count); // count of records
- $this->pageNavigation->setProperties($param); // order, page
- $this->pageNavigation->setLimit($limit); // limit
- TTransaction::close();
- $this->loaded = TRUE;
- }
- catch (Exception $e)
- {
- new TMessage('error',$e->getMessage());
- TTransaction::rollback();
- }
- }
- /**
- * shows the page
- */
- public function show(){
- // check if the datagrid is already loaded
- if (!$this->loaded){
- $this->onReload( func_get_arg(0) );
- }
- parent::show();
- }
- function onDelete($param)
- {
- // define the next action
- $action3 = new TAction(array($this, 'onInative'));
- $action3->setParameters($param); // pass 'key' parameter ahead
- // shows a dialog to the user
- new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'),$action3);
- }
- function onInative($param)
- {
- try
- {
- TTransaction::open('centinel');
- TTransaction::setLoggerFunction(function($param)
- {
- print $param.'<br/>';
- });
- $organizacao_id = TSession::getValue('organizacion_id');
- $atualizacao = date('Y-m-d H:m:s');
- $key = $param['key'];
- $criteria = new TCriteria;
- $criteria->add(new TFilter('id', '=', $key));
- $criteria->add(new TFilter('organizacao_id', '=', $organizacao_id));
- $repository = new TRepository('Cliente');
- $clientes = $repository->load($criteria);
- foreach ($clientes as $cliente)
- {
- $cliente->ativo = 0;
- $cliente->atualizacao = $atualizacao;
- $cliente->store();
- }
- TTransaction::close();
- new TMessage('info',TAdiantiCoreTranslator::translate('Records deleted'), new TAction(array($this, 'onReload')));
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- }
- ?>
formulário
- <?php
- class ClienteFisicoBuilder extends TPage
- {
- protected $form;
- protected $table_contato;
- protected $frame_contato;
- protected $deta_row;
- protected $deta_row_1;
- protected $table_endereco;
- protected $frame_endereco;
- protected $cep;
- public function __construct($param){
- parent::__construct($param);
- parent::include_css('app/resources/builder.css');
- $this->form = new BootstrapFormBuilder('frm_cliente_fisico');
- $this->form->setFormTitle('Cliente');
- $this->form->class='frm_cliente_fisico';
- $dados_cliente = new TLabel('Dados Pessoais');
- $dados_cliente->class='lbl_titulo';
- $this->form->addContent( [$dados_cliente] );
- $lbl_id = new TLabel('#');
- $id = new TEntry('id');
- $id->setEditable(false);
- $label_nome = new TLabel('Nome');
- $nome = new TEntry('nome');
- $nome->addValidation('Nome', new TRequiredValidator);
- $lbl_data_nascto = new TLabel('Data Nascimento');
- $data_nascimento = new TDate('data_nascimento');
- $data_nascimento->addValidation('Data Nascimento', new TRequiredValidator);
- $data_nascimento->setMask('dd/mm/yyyy'); // define date mask
- $lbl_estado_civil = new TLabel('Estado Cívil');
- $estado_civil = new TDBCombo('estado_civil_id','centinel', 'Civil', 'id', 'descricao');
- $estado_civil->setDefaultOption(false);
- $lbl_genero = new TLabel('Genero');
- $items = array();
- $items['1'] ='Masculino';
- $items['2'] ='Feminino';
- $genero_id = new TCombo('genero_id');
- $genero_id->addItems($items);
- $genero_id->setDefaultOption(false);
- $lbl_id_cep = new TLabel('lbl_id_cep');
- $lbl_cpf = new TLabel('CPF');
- $cpf = new TEntry('cpf');
- $cpf->setMask('000.000.000.00');
- $cpf->addValidation('CPF', new TCPFValidator, new TMaxValueValidator,array(14));
- $lbl_rg = new TLabel('RG');
- $rg = new TEntry('rg');
- $rg->setMask('00.000.000.00');
- $rg->setMaxLength(12);
- /*
- $lbl_cnh = new TLabel('CNH','#1F4E78');
- $cnh = new TEntry('cnh');
- $cnh->setMask('00.000.000.00');
- $cnh->setMaxLength(12);
- $lbl_cnh->style='text-align:left;float:left;';
- */
- $lbl_etnia = new TLabel('Etnia');
- $etnia_id = new TDBCombo('etnia_id','centinel','Etnia','id','descricao');
- $etnia_id->setDefaultOption(false);
- //adiciona campos ao formulário
- $this->form->addFields( [$lbl_id,$label_nome,$lbl_data_nascto,$lbl_estado_civil] );
- $this->form->addFields( [$id,$nome,$data_nascimento,$estado_civil] );
- $this->form->addFields( [$lbl_genero,$lbl_etnia,$lbl_cpf,$lbl_rg] );
- $this->form->addFields( [$genero_id,$etnia_id,$cpf,$rg] );
- //cria dados de contato
- $contato = new TLabel('Contato');
- $contato->class='lbl_titulo';
- $lbl_ddi = new TLabel('DDI');
- $lbl_dd = new TLabel('DDD');
- $lbl_tipo_telefone = new TLabel('Tipo Telefone');
- $lbl_telefone = new TLabel('Telefone');
- $lbl_operadora = new TLabel('Operadora');
- $lbl_email = new TLabel('Email');
- $email = new TEntry('email');
- //$email->addValidation('email', new TEmailValidator); // email field
- $lbl_site = new TLabel('Site');
- $site = new TEntry('site');
- //Cria tabela contato adiciona campos
- $this->table_contato = new TTable('table_contato');
- //$this->table_contato->style='font-family:Arial Narrow;';
- $this->table_contato->width='100%';
- $this->table_contato->addSection('thead');
- $this->frame_contato = new TFrame;
- $this->frame_contato->style='border:none;float:lef; margin-left:-15px;';
- //$frame_contato->setLegend('Contato');
- $this->frame_contato->add($contato);
- $this->frame_contato->add($this->table_contato);
- $this->table_contato->addRowSet([$lbl_ddi,$lbl_dd,$lbl_tipo_telefone,$lbl_telefone,$lbl_operadora]);
- $this->form->addContent([$this->frame_contato]);
- //adiciona contato web
- $this->form->addFields( [$lbl_email,$lbl_site] );
- $this->form->addFields( [$email,$site] );
- //cria dados de correspondência
- $lbl_endereco = new TLabel('Endereco');
- $lbl_endereco->class='lbl_titulo';
- $lbl_cep = new TLabel('Cep');
- $lbl_id_cep = new TLabel('#');
- $lbl_logradouro = new TLabel('Logradouro');
- $lbl_bairro = new TLabel('Bairro');
- $lbl_cidade = new TLabel('Cidade');
- $lbl_uf = new TLabel('UF');
- $lbl_tipo_endereco_id = new TLabel('Tipo Endereco');
- $lbl_numero = new TLabel('Número');
- $lbl_complemento = new TLabel('Complemento');
- $this->detail_row = 0;
- $this->detail_row_1 = 0;
- $this->table_endereco = new TTable();
- $this->table_endereco->width='100%';
- $this->table_endereco->addSection('thead');
- $this->frame_endereco = new TFrame;
- $this->frame_endereco->style='border:none;float:lef; margin-left:-15px;';
- $this->frame_endereco->add($lbl_endereco);
- $this->frame_endereco->add($this->table_endereco);
- $this->table_endereco->addRowSet([$lbl_id_cep,$lbl_cep,$lbl_logradouro,$lbl_bairro,$lbl_cidade,$lbl_uf,$lbl_tipo_endereco_id,$lbl_numero,$lbl_complemento]);
- $this->form->addContent([$this->frame_endereco]);
- $lbl_id->class='lbl_text';
- $label_nome->class='lbl_text';
- $lbl_data_nascto->class='lbl_text';
- $lbl_estado_civil->class='lbl_text';
- $lbl_genero->class='lbl_text';
- $lbl_cpf->class='lbl_text';
- $lbl_rg->class='lbl_text';
- $lbl_etnia->class='lbl_text';
- $lbl_ddi->class='lbl_text';
- $lbl_dd->class='lbl_text';
- $lbl_tipo_telefone->class='lbl_text';
- $lbl_telefone->class='lbl_text';
- $lbl_operadora->class='lbl_text';
- $lbl_email->class='lbl_text';
- $lbl_site->class='lbl_text';
- $lbl_cep->class='lbl_text';
- $lbl_id_cep->class='lbl_text';
- $lbl_logradouro->class='lbl_text';
- $lbl_bairro->class='lbl_text';
- $lbl_bairro->class='lbl_text';
- $lbl_cidade->class='lbl_text';
- $lbl_uf->class='lbl_text';
- $lbl_numero->class='lbl_text';
- $lbl_tipo_endereco_id->class='lbl_text';
- $lbl_complemento->class='lbl_text';
- $id->class='tentry';
- $lbl_id->setSize('10%');
- $label_nome->setSize('30%');
- $lbl_data_nascto->setSize('20%');
- $lbl_estado_civil->setSize('20%');
- $lbl_genero->setSize('20%');
- $lbl_cpf->setSize('20%');
- $lbl_rg->setSize('20%');
- $lbl_etnia->setSize('20%');
- $lbl_ddi->setSize('40');
- $lbl_dd->setSize('40');
- $lbl_tipo_telefone->setSize('100');
- $lbl_telefone->setSize('100');
- $lbl_email->setSize('42%');
- $lbl_site->setSize('42%');
- $lbl_id_cep->setSize('30');
- $lbl_cep->setSize('70');
- $lbl_logradouro->setSize('150');
- $lbl_bairro->setSize('150');
- $lbl_cidade->setSize('150');
- $lbl_uf->setSize('40');
- $lbl_numero->setSize('70');
- $lbl_complemento->setSize('150');
- $lbl_tipo_endereco_id->setSize('100');
- $id->setSize('10%');
- $nome->setSize('30%');
- $data_nascimento->setSize('20%');
- $estado_civil->setSize('20%');
- $genero_id->setSize('20%');
- $cpf->setSize('20%');
- $rg->setSize('20%');
- //$lbl_cnh->setSize('19%');
- //$cnh->setSize('19%');
- $etnia_id->setSize('20%');
- $email->setSize('42%');
- $site->setSize('42%');
- $table_endereco = new TTable;
- $table_endereco->style='border 1px solid #333;';
- $table_endereco->width='100%';
- $table_endereco->addSection('thead');
- $table_endereco->addSection('tbody');
- $this->form->addAction('Salvar', new TAction(array($this, 'onSave')), 'ico_save.png');
- $this->form->addAction('Listar', new TAction(array('DatagridCheckView', 'onReload')), 'fa:table blue');
- //wrap the page content using vertical box
- $vbox = new TVBox;
- $vbox->add(new TXMLBreadCrumb('menu.xml', 'DatagridCheckView'));
- $vbox->add($this->form);
- parent::add($vbox);
- }
- public static function onSave($param)
- {
- $organizacao_id = TSession::getValue('organizacion_id'); // pega id da empresa
- $atualizacao = date('Y-m-d H:m:s');
- try
- {
- TTransaction::open('centinel'); // open a transaction
- TTransaction::setLoggerFunction(function($param)
- {
- print $param.'<br/>';
- });
- $data_actual = date('Y-m-d H:i:s');
- $pessoa = new Pessoa;
- $pessoa->nome = $param['nome'];
- $pessoa->data_nascimento = TDate::date2us($param['data_nascimento']);
- $pessoa->organizacao_id = $organizacao_id;
- $pessoa->tipo_pessoa_id = 1;
- $pessoa->criacao = $data_actual;
- $pessoa->atualizacao = $data_actual;
- $pessoa->store(); // save the object
- $pessoa_organizacao = new PessoaOrganizacao;
- $pessoa_organizacao->pessoa_id = $pessoa->id;
- $pessoa_organizacao->organizacao_id = $organizacao_id;
- $pessoa_organizacao->store();
- $cliente = new Cliente;
- $cliente->pessoa_id = $pessoa->id;
- $cliente->organizacao_id = $organizacao_id;
- $cliente->ativo = 1 ;
- $cliente->criacao = $data_actual;
- $cliente->atualizacao = $data_actual;
- $cliente->tipo_pessoa_id = 1;
- $cliente->store();
- if($cliente)
- {
- $fisica = new Fisica;
- $fisica->pessoa_id = $pessoa->id;
- $fisica->cpf = str_replace(".", "", $param['cpf']);
- $fisica->rg = str_replace(".", "", $param['rg']);
- $fisica->genero_id = $param['genero_id'];
- $fisica->civil_id = $param['estado_civil_id'];
- //$fisica->organizacao_id = $organizacao_id;
- $fisica->etnia_id = $param['etnia_id'];
- $fisica->store();
- }
- if($fisica)
- {
- if(!empty($param['ddi']) And is_array($param['telefone']))
- {
- foreach($param['telefone'] as $row =>$contatos)
- {
- if (!empty($contatos))
- {
- //Adiciona contato
- $contato = new Contato;
- $contato->pessoa_id = $fisica->pessoa_id;
- $contato->ddi = $param['ddi'][$row];
- $contato->ddd = $param['dd'][$row];
- $contato->telefone = $param['telefone'][$row];
- $contato->tipo_telefone_id = $param['tipo_telefone_id'][$row];
- $contato->operadora_id = $param['operadora_id'][$row];
- $contato->store();
- }
- else{
- //Adiciona contato
- $contato = new Contato;
- $contato->pessoa_id = $fisica->pessoa_id;
- $contato->ddi = '0';
- $contato->ddd = '0';
- $contato->telefone = '0';
- $contato->store();
- }
- }
- }
- }
- //adiciona contato web
- if(!empty($param['email']) or $param['site'])
- {
- $contato_web = new ContatoWeb;
- $contato_web->pessoa_id = $pessoa->id;
- $contato_web->email = $param['email'];
- $contato_web->site = $param['site'];
- $contato_web->store();
- }
- else{
- $contato_web = new ContatoWeb;
- $contato_web->pessoa_id = $pessoa->id;
- $contato_web->email = '0';
- $contato_web->site = '0';
- $contato_web->store();
- }
- if(!empty($param['id_endereco']) And is_array($param['id_endereco']))
- {
- // show form values inside a window
- //$win = TWindow::create('Object id', 0.2, 0.3);
- foreach($param['id_endereco'] as $row =>$enderecos)
- {
- if (!empty($enderecos))
- {
- //$win->add('<pre>'.str_replace("\n", '<br/>', print_r($enderecos['id'], true) ).'</pre>' );
- $pessoa_endereco = new PessoaEndereco;
- $pessoa_endereco->pessoa_id = $pessoa->id;
- $pessoa_endereco->endereco_id = $param['id_endereco'][$row];
- $pessoa_endereco->tipo_endereco_id = $param['tipo_endereco_id'][$row];
- $pessoa_endereco->numero = $param['numero'][$row];
- $pessoa_endereco->complemento = $param['compl'][$row];
- $pessoa_endereco->criacao = $data_actual;
- $pessoa_endereco->atualizacao = $data_actual;
- $pessoa_endereco->store();
- }
- }
- //$win->show();
- }
- else{
- }
- $data = new stdClass;
- $data->id = $cliente->id;
- TForm::sendData('frm_cliente_fisico', $data);
- TTransaction::close();// close the transaction
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TForm::sendData('frm_cliente_fisico', $param);// keep form data
- TTransaction::rollback();
- }
- }
- //method onCep()
- public static function onCep($param)
- {
- $endereco_cep = $param['_field_id'];
- $cep_endereco = $param['_field_value'];
- $endereco_cep = explode('_', $endereco_cep);
- $unique_id = end($endereco_cep);
- $retorno = Endereco::BuscaCepWeb($cep_endereco);
- if (!empty($retorno))
- {
- $response = new stdClass;
- $response->{'id_endereco_'.$unique_id} = $retorno['id'];
- $response->{'logradouro_'.$unique_id} = $retorno['logradouro'];
- $response->{'bairro_'.$unique_id} = $retorno['bairro'];
- $response->{'cidade_'.$unique_id} = $retorno['localidade'];
- $response->{'uf_'.$unique_id} = $retorno['uf'];
- //$response->ibge = strtoupper( $retorno['ibge']);
- //$response->gia = strtoupper( $retorno['gia']);
- TForm::sendData('frm_cliente_fisico', $response);
- TScript::create('$("input[name=numero]").focus();');
- }
- else
- {
- $endereco = Endereco::BuscaCepBanco($cep_endereco);
- if($endereco)
- {
- $retorno = new stdClass;
- $retorno->{'id_endereco_'.$unique_id} = $endereco['id'];
- $retorno->{'logradouro_'.$unique_id} = $endereco['logradouro'];
- $retorno->{'bairro_'.$unique_id} = $endereco['bairro'];
- $retorno->{'cidade_'.$unique_id} = $endereco['cidade'];
- $retorno->{'uf_'.$unique_id} = $endereco['uf'];
- TForm::sendData('frm_cliente_fisico', $retorno);
- TScript::create('$("input[name=numero]").focus();');
- }
- else
- {
- new TMessage("error", "CEP - Em Branco ou Inválido");
- }
- }
- }
- public function addContatoRow($param)
- {
- $uniqid = mt_rand(1000000, 9999999);
- $ddi = new TEntry('ddi[]');
- $ddi->setValue('55');
- $ddi->addValidation('DDI', new TMaxValueValidator,array(2));
- $dd = new TEntry('dd[]');
- $dd->setValue('011');
- $dd->addValidation('DDD', new TMaxValueValidator,array(3));
- $tipo_telefone_id = new TDBCombo('tipo_telefone_id[]','centinel','TipoTelefone','id','descricao');
- $tipo_telefone_id->setDefaultOption(false);
- $telefone = new TEntry('telefone[]');
- $telefone->setMask('9999-9999');
- $operadora_id = new TDBCombo('operadora_id[]','centinel','Operadora','id','nome');
- $operadora_id->setDefaultOption(false);
- //set ids
- $ddi->setId('ddi_'.$uniqid);
- $dd->setId('dd_'.$uniqid);
- $telefone->setId('telefone_'.$uniqid);
- $tipo_telefone_id->setId('tipo_telefone_id_'.$uniqid);
- $operadora_id->setId('operadora_id_'.$uniqid);
- // create delete button
- $del = new TImage('fa:trash-o blue');
- $del->onclick = 'ttable_remove_row(this)';
- $row = $this->table_contato->addRowSet([$ddi,$dd,$tipo_telefone_id,$telefone,$operadora_id,$del]);
- $this->detail_row ++;
- $ddi->setSize('40');
- $dd->setSize('40');
- $tipo_telefone_id->setSize('100');
- $telefone->setSize('100');
- $operadora_id ->setSize('100');
- }
- public function addEnderecoRow($param)
- {
- $uniqid = mt_rand(1000000, 9999999);
- /*
- $btn_cep = new TButton('btn_cep');
- $btn_cep->setSize(42);
- $btn_cep->setAction(new TAction(array($this,'onCep')),'');
- $btn_cep->setImage('fa:search blue');
- $this->form->addField($btn_cep);
- */
- $this->cep = new TEntry('cep[]');
- $this->cep->setMask('00000-000');
- $this->cep->addValidation('CEP', new TRequiredValidator, new TMaxValueValidator,array(8));
- $this->form->addField($this->cep);
- $input_cep = new TAction(array($this,'onCep'));
- $this->cep->setExitAction($input_cep);
- $id_endereco = new TEntry('id_endereco[]');
- $id_endereco->setEditable(false);
- $logradouro = new TEntry('logradouro[]');
- $bairro = new TEntry('bairro[]');
- $cidade = new TEntry('cidade[]');
- $uf = new TEntry('uf[]');
- $numero = new TEntry('numero[]');
- $tipo_endereco_id = new TDBCombo('tipo_endereco_id[]','centinel','TipoEndereco','id','descricao');
- $tipo_endereco_id->setDefaultOption(false);
- $complemento = new TEntry('compl[]');
- // set row counter
- $this->cep->{'data-row_1'} = $this->detail_row_1;
- $id_endereco->{'data-row_1'} = $this->detail_row_1;
- $logradouro->{'data-row_1'} = $this->detail_row_1;
- $bairro->{'data-row_1'} = $this->detail_row_1;
- $cidade->{'data-row_1'} = $this->detail_row_1;
- $numero->{'data-row_1'} = $this->detail_row_1;
- $uf->{'data-row_1'} = $this->detail_row_1;
- $tipo_endereco_id->{'data-row_1'} = $this->detail_row_1;
- $complemento->{'data-row_1'} = $this->detail_row_1;
- //set ids
- //$btn_cep ->setId('btn_cep)'.$uniqid);
- $this->cep ->setId('cep_'.$uniqid);
- $id_endereco ->setId('id_endereco_'.$uniqid);
- $logradouro ->setId('logradouro_'.$uniqid);
- $bairro ->setId('bairro_'.$uniqid);
- $cidade ->setId('cidade_'.$uniqid);
- $uf ->setId('uf_'.$uniqid);
- $numero ->setId('numero_'.$uniqid);
- $tipo_endereco_id->setId('tipo_endereco_id_'.$uniqid);
- $complemento->setId('compl_'.$uniqid);
- // create delete button
- $del_endereco = new TImage('fa:trash-o blue');
- $del_endereco->onclick = 'ttable_remove_row(this)';
- $row_end = $this->table_endereco->addRowSet([$id_endereco,$this->cep,$logradouro,$bairro,$cidade,$uf,$tipo_endereco_id,$numero,$complemento,$del_endereco]);
- $row_end->{'data-row'} = $this->detail_row_1;
- $id_endereco->setSize('30');
- $this->cep->setSize('70');
- $logradouro->setSize('150');
- $bairro->setSize('150');
- $cidade->setSize('150');
- $uf->setSize('40');
- $numero->setSize('70');
- $complemento->setSize('150');
- $tipo_endereco_id->setSize('100');
- $this->detail_row_1 ++;
- }
- public function onClear($param)
- {
- $this->table_contato->addSection('tbody');
- $this->addContatoRow(new stdClass);
- //criar e adicionar botão
- $add = new TButton('clone');
- $add->setLabel('Adicionar');
- $add->setImage('fa:plus-circle blue');
- $add->addFunction('ttable_clone_previous_row(this)');
- //adiciona botão a tabela
- $row = $this->table_contato->addRowSet([$add]);
- //adciona tabela endereco
- $this->table_endereco->addSection('tbody');
- $this->addEnderecoRow(new stdClass);
- //criar e adicionar botão
- $add_endereco = new TButton('clone');
- $add_endereco->setLabel('Adicionar');
- $add_endereco->setImage('fa:plus-circle blue');
- $add_endereco->addFunction('ttable_clone_previous_row(this)');
- //adiciona botão a tabela
- $row_end = $this->table_endereco->addRowSet([$add_endereco]);
- }
- function onEdit($param){
- try{
- if (isset($param['key']))
- {
- // get the parameter $key
- $key = $param['key'];
- // open a transaction with database 'centinel'
- TTransaction::open('centinel');
- // instantiates object Pessoa
- $cliente = new Cliente($key);
- // fill the form with the active record data
- $data->id = $cliente->id;
- $pessoa = new Pessoa($cliente->pessoa_id);
- print_r($pessoa->getContato());
- print_r($pessoa->getEndereco());
- $fisica = Fisica::where('pessoa_id','=',$cliente->pessoa_id)->load();
- $fisica_doc = $fisica[0];
- $this->form->setData($fisica_doc);
- if ($pessoa)
- {
- $this->table_contato->addSection('tbody');
- foreach ($pessoa->getContato() as $contato)
- {
- $this->addContatoRow($contato);
- }
- // create add button
- $add = new TButton('clone');
- $add->setLabel('Adicionar');
- $add->setImage('fa:plus-circle blue');
- $add->addFunction('ttable_clone_previous_row(this)');
- // add buttons in table
- $this->table_contato->addRowSet([$add]);
- }
- else
- {
- $this->onClear($param);
- }
- $contato_web = ContatoWeb::where('pessoa_id','=',$cliente->pessoa_id)->load();
- $contatoweb = $contato_web[0];
- $this->form->setData($contatoweb);
- //filtra endereco
- $criteria_pessoa_endereco = new TCriteria;
- $criteria_pessoa_endereco->add( new TFilter( 'pessoa_id', '=', $cliente->pessoa_id));
- $pessoa_enderecos = PessoaEndereco::getObjects($criteria_pessoa_endereco);
- if ($pessoa_enderecos)
- {
- $this->table_endereco->addSection('tbody');
- foreach ($pessoa_enderecos as $pessoa_endereco)
- {
- $this->addEnderecoRow($pessoa_endereco);
- }
- // create add button
- $addEnder = new TButton('addEnd');
- $addEnder->setLabel('Adicionar');
- $addEnder->setImage('fa:plus-circle blue');
- $addEnder->addFunction('ttable_clone_previous_row(this)');
- //add buttons in table
- $this->table_endereco->addRowSet([$addEnder]);
- }
- else
- {
- $this->onClear($param);
- }
- $this->form->setData($pessoa);
- $this->form->setData($data);
- // close the transaction
- TTransaction::close();
- }
- else
- {
- $this->form->clear();
- }
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- // undo all pending operations
- TTransaction::rollback();
- }
- }
- }
- ?>
Veja o exemplo do tutor:
adianti.com.br/framework_files/tutor/index.php?class=SaleMultiValueF
Você deve verificar o objeto recebido como parâmetro nas funções addContatoRow e addEnderecoRow para preencher os campos. Ex:
Nataniel,
Mais uma vez muito obrigado, não tinha me atentado a este detalhe.