AT
TForm::sendData não envia dados do cep para tela
Pessoal...
Por favor me ajude a entender porque o TForm::sendData não envia os dados do cep para a tela!!! segue o fonte comando na linha 358.
class EnderecoForm extends TPage
{
protected $form; // form
protected $detail_row;
protected $fieldlist;
static $id_ent;
// Creates the page and the registration form
function __construct()
{
parent::__construct();
// creates the form
$this->form = new TForm('form_endereco');
// cria fieldlist
$this->fieldlist = new TFieldList;
$this->fieldlist->width = '100%';
$this->fieldlist->name = 'fdlEndereco';
$this->form->add($this->fieldlist);
//$fieldlist->setRemoveFunction('onDelete');
//TFieldList::clear('fdlEndereco');
//TFieldList::addRows('fdlEndereco', 1);
// define campos
$id = new THidden('list_id[]');
$enderecos_id = new TDBCombo('list_enderecos_id[]', 'setcis', 'Enderecos', 'id', 'descricao');
$cep = new TEntry('list_cep[]');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$logradouros_id = new TDBCombo('list_logradouros_id[]', 'setcis', 'Logradouros', 'id', 'descricao', 'descricao asc');
$endereco = new TEntry('list_endereco[]');
$numero = new TEntry('list_numero[]');
$complemento = new TEntry('list_complemento[]');
$bairro = new TEntry('list_bairro[]');
$cidade_id = new TDBCombo('list_cidade_id[]', 'setcis', 'municipio', 'id', 'nome', 'nome asc');
$estado_id = new TDBCombo('list_estado_id[]', 'setcis', 'estado', 'id', 'sigla', 'sigla asc');
$entidade_id = new THidden('list_entidade_id[]', 'setcis', 'Entidade', 'id', 'nome');
$actEnd = new TCombo('action');
// validações
$enderecos_id->addValidation('Tipo', new TRequiredValidator);
$cep->addValidation('Cep', new TRequiredValidator);
$logradouros_id->addValidation('Logradouro', new TRequiredValidator);
$endereco->addValidation('Endereço', new TRequiredValidator);
$numero->addValidation('Número', new TRequiredValidator);
$complemento->addValidation('Complemento', new TRequiredValidator);
$bairro->addValidation('Bairro', new TRequiredValidator);
$cidade_id->addValidation('Cidade', new TRequiredValidator);
$estado_id->addValidation('Estado', new TRequiredValidator);
// Tamanhos
$enderecos_id->setSize('100%');
$cep->setSize('100%');
$logradouros_id->setSize('100%');
$endereco->setSize('100%');
$numero->setSize('100%');
$complemento->setSize('100%');
$bairro->setSize('100%');
$cidade_id->setSize('100%');
$estado_id->setSize('100%');
$actEnd->setSize('100%');
// define ações
$items = ['1'=>'Salvar', '2'=>'Excluir'];
$actEnd->addItems($items);
$actEnd->setValue('1');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$change_action = new TAction(array($this, 'onDefine'));
$actEnd->setChangeAction($change_action);
// monta fieldlist
$this->fieldlist->addField( '', $id);
$this->fieldlist->addField( 'Tipo', $enderecos_id);
$this->fieldlist->addField( 'Cep', $cep);
$this->fieldlist->addField( 'Logradouro', $logradouros_id);
$this->fieldlist->addField( 'Endereço', $endereco);
$this->fieldlist->addField( 'Número', $numero);
$this->fieldlist->addField( 'Complemento', $complemento);
$this->fieldlist->addField( 'Bairro', $bairro);
$this->fieldlist->addField( 'Cidade', $cidade_id);
$this->fieldlist->addField( 'Estado', $estado_id);
$this->fieldlist->addField( '', $entidade_id);
$this->fieldlist->addField( 'Salvar/Excluir', $actEnd);
// adiciona campos no form
$this->form->addField($id);
$this->form->addField($enderecos_id);
$this->form->addField($cep);
$this->form->addField($logradouros_id);
$this->form->addField($endereco);
$this->form->addField($numero);
$this->form->addField($complemento);
$this->form->addField($bairro);
$this->form->addField($cidade_id);
$this->form->addField($estado_id);
$this->form->addField($entidade_id);
$this->form->addField($actEnd);
// create the page container
$container = new TVBox;
$container->style = 'width: 100%';
$container->add($this->form);
parent::add($container);
}
// metodo show() - mostra os dados na pagina
public function show()
{
if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onLoad') )
{
$this->onLoad(0);
}
parent::show();
}
// Clear form
public function onClear($param)
{
$this->fieldlist->addHeader();
}
// metodo carga do fieldlist
function onLoad($param)
{
try
{
TTransaction::open('setcis');
$id_ent = TSession::getValue('id_entidade');
$objEndereco = EntidadeEndereco::where('entidade_id', '=', $id_ent)->load();
$this->fieldlist->addHeader();
if ($objEndereco)
{
foreach ($objEndereco as $end)
{
$objForm = new stdClass;
$objForm->list_id = $end->id;
$objForm->list_enderecos_id = $end->enderecos_id;
$objForm->list_cep = $end->cep;
$objForm->list_logradouros_id = $end->logradouros_id;
$objForm->list_endereco = $end->endereco;
$objForm->list_numero = $end->numero;
$objForm->list_complemento = $end->complemento;
$objForm->list_bairro = $end->bairro;
$objForm->list_cidade_id = $end->cidade_id;
$objForm->list_estado_id = $end->estado_id;
$row = $this->fieldlist->addDetail($objForm);
$row->del($row->get(count($row->getChildren())-1));
}
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
else
{
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
public static function onDefine($param)
{
$opcao = $param['key'];
if($opcao == '1')
{
AdiantiCoreApplication::loadPage(__CLASS__, 'onSave', $param);
}
else
{
$action = new TAction([__CLASS__, 'onDelete']);
$action->setParameters($param);
new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
}
}
// method onSave
public function onSave($param)
{
try
{
// captura o indice e id
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
TTransaction::open('setcis');
//$this->form->validate();
if($id_end > 0)
{
$objEndereco = new EntidadeEndereco($id_end);
}
else
{
$objEndereco = new EntidadeEndereco;
$objEndereco->entidade_id = TSession::getValue('id_entidade');
}
$objEndereco->enderecos_id = $param['list_enderecos_id'][$indice];
$objEndereco->cep = $param['list_cep'][$indice];
$objEndereco->logradouros_id = $param['list_logradouros_id'][$indice];
$objEndereco->endereco = $param['list_endereco'][$indice];
$objEndereco->numero = $param['list_numero'][$indice];
$objEndereco->complemento = $param['list_complemento'][$indice];
$objEndereco->bairro = $param['list_bairro'][$indice];
$objEndereco->cidade_id = $param['list_cidade_id'][$indice];
$objEndereco->estado_id = $param['list_estado_id'][$indice];
$objEndereco->store();
TTransaction::close();
//$ret = array_pop($fieldlist ['list_id']);
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
// method delete endereço
public function onDelete($param)
{
try
{
// captura o indice e id
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
TTransaction::open('setcis');
if($id_end > 0)
{
$tabEndereco = new EntidadeEndereco($id_end);
$tabEndereco->delete();
}
TTransaction::close();
$this->onLoad(0);
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
// method busca cep
public static function onCep($param = null)
{
try
{
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
$input_id = $param['_field_id'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);
$retorno = ConsultaCepService::getCep($param['key'], 'json');
$from = 'àáãâéêíóõôúüç';
$to = 'ÀÁÃÂÉÊÍÓÕÔÚÜÇ';
if( isset($retorno->erro) )
{
throw new Exception($retorno->mensagem);
}
else
{
TTransaction::open('setcis');
$logra = explode(' ', strtoupper($retorno->logradouro));
$end = '';
$logEnd = strtr($logra[0], $from, $to);
foreach ($logra as $i => $value) if ($i != 0) $end = $end . strtr($logra[$i], $from, $to) . ' ';
$objCep = new StdClass;
$objCep->{'enderecos_id_'.$unique_id} = $param['list_enderecos_id'][$indice];
$objCep->{'cep_'.$unique_id} = $retorno->cep;
$logradouro = logradouros::where('descricao', '=', $logEnd)->load();
foreach ($logradouro as $logradouros) $objCep->{'logradouros_id_'.$unique_id} = $logradouros->id;
$objCep->{'endereco_'.$unique_id} = trim($end);
$objCep->{'bairro_'.$unique_id} = strtoupper(strtr($retorno->bairro, $from, $to));
$municipios = municipio::where('nome', '=', strtoupper(strtr($retorno->localidade, $from, $to)))->load();
foreach ($municipios as $municipio) $objCep->{'cidade_id_'.$unique_id} = $municipio->id;
$estados = estado::where('sigla', '=', strtoupper($retorno->uf))->load();
foreach ($estados as $estado) $objCep->{'estado_id_'.$unique_id} = $estado->id;
//$objCep->{'ibge_'.$unique_id} = $retorno->ibge;
TTransaction::close();
var_dump($objCep);
TForm::sendData('form_endereco', $objCep);
}
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
}
?>
Por favor me ajude a entender porque o TForm::sendData não envia os dados do cep para a tela!!! segue o fonte comando na linha 358.
class EnderecoForm extends TPage
{
protected $form; // form
protected $detail_row;
protected $fieldlist;
static $id_ent;
// Creates the page and the registration form
function __construct()
{
parent::__construct();
// creates the form
$this->form = new TForm('form_endereco');
// cria fieldlist
$this->fieldlist = new TFieldList;
$this->fieldlist->width = '100%';
$this->fieldlist->name = 'fdlEndereco';
$this->form->add($this->fieldlist);
//$fieldlist->setRemoveFunction('onDelete');
//TFieldList::clear('fdlEndereco');
//TFieldList::addRows('fdlEndereco', 1);
// define campos
$id = new THidden('list_id[]');
$enderecos_id = new TDBCombo('list_enderecos_id[]', 'setcis', 'Enderecos', 'id', 'descricao');
$cep = new TEntry('list_cep[]');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$logradouros_id = new TDBCombo('list_logradouros_id[]', 'setcis', 'Logradouros', 'id', 'descricao', 'descricao asc');
$endereco = new TEntry('list_endereco[]');
$numero = new TEntry('list_numero[]');
$complemento = new TEntry('list_complemento[]');
$bairro = new TEntry('list_bairro[]');
$cidade_id = new TDBCombo('list_cidade_id[]', 'setcis', 'municipio', 'id', 'nome', 'nome asc');
$estado_id = new TDBCombo('list_estado_id[]', 'setcis', 'estado', 'id', 'sigla', 'sigla asc');
$entidade_id = new THidden('list_entidade_id[]', 'setcis', 'Entidade', 'id', 'nome');
$actEnd = new TCombo('action');
// validações
$enderecos_id->addValidation('Tipo', new TRequiredValidator);
$cep->addValidation('Cep', new TRequiredValidator);
$logradouros_id->addValidation('Logradouro', new TRequiredValidator);
$endereco->addValidation('Endereço', new TRequiredValidator);
$numero->addValidation('Número', new TRequiredValidator);
$complemento->addValidation('Complemento', new TRequiredValidator);
$bairro->addValidation('Bairro', new TRequiredValidator);
$cidade_id->addValidation('Cidade', new TRequiredValidator);
$estado_id->addValidation('Estado', new TRequiredValidator);
// Tamanhos
$enderecos_id->setSize('100%');
$cep->setSize('100%');
$logradouros_id->setSize('100%');
$endereco->setSize('100%');
$numero->setSize('100%');
$complemento->setSize('100%');
$bairro->setSize('100%');
$cidade_id->setSize('100%');
$estado_id->setSize('100%');
$actEnd->setSize('100%');
// define ações
$items = ['1'=>'Salvar', '2'=>'Excluir'];
$actEnd->addItems($items);
$actEnd->setValue('1');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$change_action = new TAction(array($this, 'onDefine'));
$actEnd->setChangeAction($change_action);
// monta fieldlist
$this->fieldlist->addField( '', $id);
$this->fieldlist->addField( 'Tipo', $enderecos_id);
$this->fieldlist->addField( 'Cep', $cep);
$this->fieldlist->addField( 'Logradouro', $logradouros_id);
$this->fieldlist->addField( 'Endereço', $endereco);
$this->fieldlist->addField( 'Número', $numero);
$this->fieldlist->addField( 'Complemento', $complemento);
$this->fieldlist->addField( 'Bairro', $bairro);
$this->fieldlist->addField( 'Cidade', $cidade_id);
$this->fieldlist->addField( 'Estado', $estado_id);
$this->fieldlist->addField( '', $entidade_id);
$this->fieldlist->addField( 'Salvar/Excluir', $actEnd);
// adiciona campos no form
$this->form->addField($id);
$this->form->addField($enderecos_id);
$this->form->addField($cep);
$this->form->addField($logradouros_id);
$this->form->addField($endereco);
$this->form->addField($numero);
$this->form->addField($complemento);
$this->form->addField($bairro);
$this->form->addField($cidade_id);
$this->form->addField($estado_id);
$this->form->addField($entidade_id);
$this->form->addField($actEnd);
// create the page container
$container = new TVBox;
$container->style = 'width: 100%';
$container->add($this->form);
parent::add($container);
}
// metodo show() - mostra os dados na pagina
public function show()
{
if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onLoad') )
{
$this->onLoad(0);
}
parent::show();
}
// Clear form
public function onClear($param)
{
$this->fieldlist->addHeader();
}
// metodo carga do fieldlist
function onLoad($param)
{
try
{
TTransaction::open('setcis');
$id_ent = TSession::getValue('id_entidade');
$objEndereco = EntidadeEndereco::where('entidade_id', '=', $id_ent)->load();
$this->fieldlist->addHeader();
if ($objEndereco)
{
foreach ($objEndereco as $end)
{
$objForm = new stdClass;
$objForm->list_id = $end->id;
$objForm->list_enderecos_id = $end->enderecos_id;
$objForm->list_cep = $end->cep;
$objForm->list_logradouros_id = $end->logradouros_id;
$objForm->list_endereco = $end->endereco;
$objForm->list_numero = $end->numero;
$objForm->list_complemento = $end->complemento;
$objForm->list_bairro = $end->bairro;
$objForm->list_cidade_id = $end->cidade_id;
$objForm->list_estado_id = $end->estado_id;
$row = $this->fieldlist->addDetail($objForm);
$row->del($row->get(count($row->getChildren())-1));
}
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
else
{
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
public static function onDefine($param)
{
$opcao = $param['key'];
if($opcao == '1')
{
AdiantiCoreApplication::loadPage(__CLASS__, 'onSave', $param);
}
else
{
$action = new TAction([__CLASS__, 'onDelete']);
$action->setParameters($param);
new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
}
}
// method onSave
public function onSave($param)
{
try
{
// captura o indice e id
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
TTransaction::open('setcis');
//$this->form->validate();
if($id_end > 0)
{
$objEndereco = new EntidadeEndereco($id_end);
}
else
{
$objEndereco = new EntidadeEndereco;
$objEndereco->entidade_id = TSession::getValue('id_entidade');
}
$objEndereco->enderecos_id = $param['list_enderecos_id'][$indice];
$objEndereco->cep = $param['list_cep'][$indice];
$objEndereco->logradouros_id = $param['list_logradouros_id'][$indice];
$objEndereco->endereco = $param['list_endereco'][$indice];
$objEndereco->numero = $param['list_numero'][$indice];
$objEndereco->complemento = $param['list_complemento'][$indice];
$objEndereco->bairro = $param['list_bairro'][$indice];
$objEndereco->cidade_id = $param['list_cidade_id'][$indice];
$objEndereco->estado_id = $param['list_estado_id'][$indice];
$objEndereco->store();
TTransaction::close();
//$ret = array_pop($fieldlist ['list_id']);
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
// method delete endereço
public function onDelete($param)
{
try
{
// captura o indice e id
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
TTransaction::open('setcis');
if($id_end > 0)
{
$tabEndereco = new EntidadeEndereco($id_end);
$tabEndereco->delete();
}
TTransaction::close();
$this->onLoad(0);
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
// method busca cep
public static function onCep($param = null)
{
try
{
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
$input_id = $param['_field_id'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);
$retorno = ConsultaCepService::getCep($param['key'], 'json');
$from = 'àáãâéêíóõôúüç';
$to = 'ÀÁÃÂÉÊÍÓÕÔÚÜÇ';
if( isset($retorno->erro) )
{
throw new Exception($retorno->mensagem);
}
else
{
TTransaction::open('setcis');
$logra = explode(' ', strtoupper($retorno->logradouro));
$end = '';
$logEnd = strtr($logra[0], $from, $to);
foreach ($logra as $i => $value) if ($i != 0) $end = $end . strtr($logra[$i], $from, $to) . ' ';
$objCep = new StdClass;
$objCep->{'enderecos_id_'.$unique_id} = $param['list_enderecos_id'][$indice];
$objCep->{'cep_'.$unique_id} = $retorno->cep;
$logradouro = logradouros::where('descricao', '=', $logEnd)->load();
foreach ($logradouro as $logradouros) $objCep->{'logradouros_id_'.$unique_id} = $logradouros->id;
$objCep->{'endereco_'.$unique_id} = trim($end);
$objCep->{'bairro_'.$unique_id} = strtoupper(strtr($retorno->bairro, $from, $to));
$municipios = municipio::where('nome', '=', strtoupper(strtr($retorno->localidade, $from, $to)))->load();
foreach ($municipios as $municipio) $objCep->{'cidade_id_'.$unique_id} = $municipio->id;
$estados = estado::where('sigla', '=', strtoupper($retorno->uf))->load();
foreach ($estados as $estado) $objCep->{'estado_id_'.$unique_id} = $estado->id;
//$objCep->{'ibge_'.$unique_id} = $retorno->ibge;
TTransaction::close();
var_dump($objCep);
TForm::sendData('form_endereco', $objCep);
}
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
}
?>
class EnderecoForm extends TPage
{
protected $form; // form
protected $detail_row;
protected $fieldlist;
static $id_ent;
// Creates the page and the registration form
function __construct()
{
parent::__construct();
// creates the form
$this->form = new TForm('form_endereco');
// cria fieldlist
$this->fieldlist = new TFieldList;
$this->fieldlist->width = '100%';
$this->fieldlist->name = 'fdlEndereco';
$this->form->add($this->fieldlist);
//$fieldlist->setRemoveFunction('onDelete');
//TFieldList::clear('fdlEndereco');
//TFieldList::addRows('fdlEndereco', 1);
// define campos
$id = new THidden('list_id[]');
$enderecos_id = new TDBCombo('list_enderecos_id[]', 'setcis', 'Enderecos', 'id', 'descricao');
$cep = new TEntry('list_cep[]');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$logradouros_id = new TDBCombo('list_logradouros_id[]', 'setcis', 'Logradouros', 'id', 'descricao', 'descricao asc');
$endereco = new TEntry('list_endereco[]');
$numero = new TEntry('list_numero[]');
$complemento = new TEntry('list_complemento[]');
$bairro = new TEntry('list_bairro[]');
$cidade_id = new TDBCombo('list_cidade_id[]', 'setcis', 'municipio', 'id', 'nome', 'nome asc');
$estado_id = new TDBCombo('list_estado_id[]', 'setcis', 'estado', 'id', 'sigla', 'sigla asc');
$entidade_id = new THidden('list_entidade_id[]', 'setcis', 'Entidade', 'id', 'nome');
$actEnd = new TCombo('action');
// validações
$enderecos_id->addValidation('Tipo', new TRequiredValidator);
$cep->addValidation('Cep', new TRequiredValidator);
$logradouros_id->addValidation('Logradouro', new TRequiredValidator);
$endereco->addValidation('Endereço', new TRequiredValidator);
$numero->addValidation('Número', new TRequiredValidator);
$complemento->addValidation('Complemento', new TRequiredValidator);
$bairro->addValidation('Bairro', new TRequiredValidator);
$cidade_id->addValidation('Cidade', new TRequiredValidator);
$estado_id->addValidation('Estado', new TRequiredValidator);
// Tamanhos
$enderecos_id->setSize('100%');
$cep->setSize('100%');
$logradouros_id->setSize('100%');
$endereco->setSize('100%');
$numero->setSize('100%');
$complemento->setSize('100%');
$bairro->setSize('100%');
$cidade_id->setSize('100%');
$estado_id->setSize('100%');
$actEnd->setSize('100%');
// define ações
$items = ['1'=>'Salvar', '2'=>'Excluir'];
$actEnd->addItems($items);
$actEnd->setValue('1');
$cep->setExitAction(new TAction(array($this, 'onCep')));
$change_action = new TAction(array($this, 'onDefine'));
$actEnd->setChangeAction($change_action);
// monta fieldlist
$this->fieldlist->addField( '', $id);
$this->fieldlist->addField( 'Tipo', $enderecos_id);
$this->fieldlist->addField( 'Cep', $cep);
$this->fieldlist->addField( 'Logradouro', $logradouros_id);
$this->fieldlist->addField( 'Endereço', $endereco);
$this->fieldlist->addField( 'Número', $numero);
$this->fieldlist->addField( 'Complemento', $complemento);
$this->fieldlist->addField( 'Bairro', $bairro);
$this->fieldlist->addField( 'Cidade', $cidade_id);
$this->fieldlist->addField( 'Estado', $estado_id);
$this->fieldlist->addField( '', $entidade_id);
$this->fieldlist->addField( 'Salvar/Excluir', $actEnd);
// adiciona campos no form
$this->form->addField($id);
$this->form->addField($enderecos_id);
$this->form->addField($cep);
$this->form->addField($logradouros_id);
$this->form->addField($endereco);
$this->form->addField($numero);
$this->form->addField($complemento);
$this->form->addField($bairro);
$this->form->addField($cidade_id);
$this->form->addField($estado_id);
$this->form->addField($entidade_id);
$this->form->addField($actEnd);
// create the page container
$container = new TVBox;
$container->style = 'width: 100%';
$container->add($this->form);
parent::add($container);
}
// metodo show() - mostra os dados na pagina
public function show()
{
if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onLoad') )
{
$this->onLoad(0);
}
parent::show();
}
// Clear form
public function onClear($param)
{
$this->fieldlist->addHeader();
}
// metodo carga do fieldlist
function onLoad($param)
{
try
{
TTransaction::open('setcis');
$id_ent = TSession::getValue('id_entidade');
$objEndereco = EntidadeEndereco::where('entidade_id', '=', $id_ent)->load();
$this->fieldlist->addHeader();
if ($objEndereco)
{
foreach ($objEndereco as $end)
{
$objForm = new stdClass;
$objForm->list_id = $end->id;
$objForm->list_enderecos_id = $end->enderecos_id;
$objForm->list_cep = $end->cep;
$objForm->list_logradouros_id = $end->logradouros_id;
$objForm->list_endereco = $end->endereco;
$objForm->list_numero = $end->numero;
$objForm->list_complemento = $end->complemento;
$objForm->list_bairro = $end->bairro;
$objForm->list_cidade_id = $end->cidade_id;
$objForm->list_estado_id = $end->estado_id;
$row = $this->fieldlist->addDetail($objForm);
$row->del($row->get(count($row->getChildren())-1));
}
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
else
{
$row = $this->fieldlist->addDetail( new stdClass );
$row->del($row->get(count($row->getChildren())-1));
}
TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
public static function onDefine($param)
{
$opcao = $param['key'];
if($opcao == '1')
{
AdiantiCoreApplication::loadPage(__CLASS__, 'onSave', $param);
}
else
{
$action = new TAction([__CLASS__, 'onDelete']);
$action->setParameters($param);
new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
}
}
// method onSave
public function onSave($param)
{
try
{
// captura o indice e id
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
TTransaction::open('setcis');
//$this->form->validate();
if($id_end > 0)
{
$objEndereco = new EntidadeEndereco($id_end);
}
else
{
$objEndereco = new EntidadeEndereco;
$objEndereco->entidade_id = TSession::getValue('id_entidade');
}
$objEndereco->enderecos_id = $param['list_enderecos_id'][$indice];
$objEndereco->cep = $param['list_cep'][$indice];
$objEndereco->logradouros_id = $param['list_logradouros_id'][$indice];
$objEndereco->endereco = $param['list_endereco'][$indice];
$objEndereco->numero = $param['list_numero'][$indice];
$objEndereco->complemento = $param['list_complemento'][$indice];
$objEndereco->bairro = $param['list_bairro'][$indice];
$objEndereco->cidade_id = $param['list_cidade_id'][$indice];
$objEndereco->estado_id = $param['list_estado_id'][$indice];
$objEndereco->store();
TTransaction::close();
//$ret = array_pop($fieldlist ['list_id']);
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
// method delete endereço
public function onDelete($param)
{
try
{
// captura o indice e id
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
TTransaction::open('setcis');
if($id_end > 0)
{
$tabEndereco = new EntidadeEndereco($id_end);
$tabEndereco->delete();
}
TTransaction::close();
$this->onLoad(0);
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}
// method busca cep
public static function onCep($param = null)
{
try
{
parse_str($param['_field_data'], $field_data);
$indice = $field_data['row'];
$id_end = (int) $param['list_id'][$indice];
$input_id = $param['_field_id'];
$input_pieces = explode('_', $input_id);
$unique_id = end($input_pieces);
$retorno = ConsultaCepService::getCep($param['key'], 'json');
$from = 'àáãâéêíóõôúüç';
$to = 'ÀÁÃÂÉÊÍÓÕÔÚÜÇ';
if( isset($retorno->erro) )
{
throw new Exception($retorno->mensagem);
}
else
{
TTransaction::open('setcis');
$logra = explode(' ', strtoupper($retorno->logradouro));
$end = '';
$logEnd = strtr($logra[0], $from, $to);
foreach ($logra as $i => $value) if ($i != 0) $end = $end . strtr($logra[$i], $from, $to) . ' ';
$objCep = new StdClass;
$objCep->{'enderecos_id_'.$unique_id} = $param['list_enderecos_id'][$indice];
$objCep->{'cep_'.$unique_id} = $retorno->cep;
$logradouro = logradouros::where('descricao', '=', $logEnd)->load();
foreach ($logradouro as $logradouros) $objCep->{'logradouros_id_'.$unique_id} = $logradouros->id;
$objCep->{'endereco_'.$unique_id} = trim($end);
$objCep->{'bairro_'.$unique_id} = strtoupper(strtr($retorno->bairro, $from, $to));
$municipios = municipio::where('nome', '=', strtoupper(strtr($retorno->localidade, $from, $to)))->load();
foreach ($municipios as $municipio) $objCep->{'cidade_id_'.$unique_id} = $municipio->id;
$estados = estado::where('sigla', '=', strtoupper($retorno->uf))->load();
foreach ($estados as $estado) $objCep->{'estado_id_'.$unique_id} = $estado->id;
//$objCep->{'ibge_'.$unique_id} = $retorno->ibge;
TTransaction::close();
var_dump($objCep);
TForm::sendData('form_endereco', $objCep);
}
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
}
}
}
?>
Os nomes dos atributos do objeto $objCep devem ser iguais aos nomes dos campos:
Nataniel, Obrigado funcionou!!!