PG
Dados nao aparecem no Grid !
Fiz um formulario Mestre/detalhes.
Cadastro de Pessoa (Mestre)
Cadastro de Enderecos (Filho).
No cadastro de endreco tem (tipo de endereco (entrega,cobranca,faturamento).
e cidade/uf.
Quando faço uma inclusao de dados no formulario o grid dos enderecos nao prenche
o tipo de endereco e nem a cadade, uf;.
Mas quando salvo no banco de dados fica salvo corrento,
entro novamente e o grid esta preenchido corretamente,
mas se vou editar um registro, e salvor esse registgro (filho)
no formulario nao preenche os campos, mas qd salvo no banco de
dados fica ok.
O que estou fazendo de errado ?
Cadastro de Pessoa (Mestre)
Cadastro de Enderecos (Filho).
No cadastro de endreco tem (tipo de endereco (entrega,cobranca,faturamento).
e cidade/uf.
Quando faço uma inclusao de dados no formulario o grid dos enderecos nao prenche
o tipo de endereco e nem a cadade, uf;.
Mas quando salvo no banco de dados fica salvo corrento,
entro novamente e o grid esta preenchido corretamente,
mas se vou editar um registro, e salvor esse registgro (filho)
no formulario nao preenche os campos, mas qd salvo no banco de
dados fica ok.
O que estou fazendo de errado ?
- <?php
- /**
- * PessoaForm
- *
- * @version 1.0
- * @package tutorerpdfe
- * @subpackage control
- * @author Pablo Dall'Oglio
- * @copyright Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
- * @license http://www.adianti.com.br/framework-license
- */
- use Brazanation\Documents\Cpf;
- use Brazanation\Documents\Cnpj;
- use Brazanation\Documents\StateRegistration;
- use Brazanation\Documents\Exception\InvalidDocument as InvalidDocumentException;
- class PessoaForm extends TWindow
- {
- protected $form; // form
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- parent::setSize(0.8, null);
- parent::removePadding();
- parent::removeTitleBar();
- //parent::disableEscape();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_Pessoa');
- $this->form->setFormTitle('Pessoa');
- $this->form->setProperty('style', 'margin:0;border:0');
- $this->form->setClientValidation(true);
- $this->form->appendPage('');
- // create the form fields
- $id = new TEntry('id');
- $nome = new TEntry('nome');
- $nome_fantasia = new TEntry('nome_fantasia');
- $tipo = new TCombo('tipo');
- $codigo_nacional = new TEntry('codigo_nacional');
- $codigo_estadual = new TEntry('codigo_estadual');
- $codigo_municipal = new TEntry('codigo_municipal');
- $fone = new TEntry('fone');
- $celular = new TEntry('celular');
- $email = new TEntry('email');
- $email_nfe = new TEntry('email_nfe');
- $observacao = new TText('observacao');
- $cep = new TEntry('cep');
- $logradouro = new TEntry('logradouro');
- $numero = new TEntry('numero');
- $complemento = new TEntry('complemento');
- $bairro = new TEntry('bairro');
- $cadastro_completo = new TCombo('cadastro_completo');
- $filter = new TCriteria;
- $filter->add(new TFilter('id', '<', '0'));
- $cidade_id = new TDBCombo('cidade_id', 'tutorerpdfe', 'Cidade', 'id', 'nome', 'nome', $filter);
- $grupo_id = new TDBUniqueSearch('grupo_id', 'tutorerpdfe', 'Grupo', 'id', 'nome');
- $papeis_id = new TDBMultiSearch('papeis_id', 'tutorerpdfe', 'Papel', 'id', 'nome');
- $estado_id = new TDBCombo('estado_id', 'tutorerpdfe', 'Estado', 'id', '{nome} ({uf})');
- $estado_id->setChangeAction( new TAction( [$this, 'onChangeEstado'] ) );
- $cep->setExitAction( new TAction([ $this, 'onExitCEP']) );
- $codigo_nacional->setExitAction( new TAction( [$this, 'onExitCNPJ'],['tipo'=>$tipo] ) );
- $cidade_id->enableSearch();
- $estado_id->enableSearch();
- $grupo_id->setMinLength(0);
- $papeis_id->setMinLength(0);
- $papeis_id->setSize('100%', 60);
- $observacao->setSize('100%', 60);
- $tipo->addItems( ['F' => 'Física', 'J' => 'Jurídica' ] );
- $cadastro_completo->addItems( ['SIM' => 'SIM', 'NAO' => 'NAO' ] );
- $tipo->setValue('J');
- $cadastro_completo->setValue('SIM');
- $nome->forceUpperCase();
- $nome_fantasia->forceUpperCase();
- $logradouro->forceUpperCase();
- $complemento->forceUpperCase();
- $bairro->forceUpperCase();
- // add the fields
- $row1=$this->form->addFields( [ new TLabel('Id') ], [ $id ],[ new TLabel('Cadastro Completo') ], [ $cadastro_completo ] );
- $row2=$this->form->addFields( [ new TLabel('Tipo','red') ], [ $tipo ], [ new TLabel('CPF/CNPJ','red') ], [ $codigo_nacional ] );
- $row3=$this->form->addFields( [ new TLabel('Nome','red') ], [ $nome ] , [ new TLabel('Nome Fantasia') ], [ $nome_fantasia ] );
- $row5=$this->form->addFields( [ new TLabel('Papéis','red')], [ $papeis_id ], [ new TLabel('Grupo','red') ], [ $grupo_id ] );
- $row6=$this->form->addFields( [ new TLabel('I.E.') ], [ $codigo_estadual ], [ new TLabel('I.M.') ], [ $codigo_municipal ] );
- $row7=$this->form->addFields( [ new TLabel('Fone','red') ], [ $fone ], [ new TLabel('Email','red') ], [ $email ] );
- $row14=$this->form->addFields([ new TLabel('Celular') ], [ $celular ], [ new TLabel('Email-NFe') ], [ $email_nfe ] );
- $row8=$this->form->addFields( [ new TLabel('Observacao') ], [ $observacao ] );
- $row1->class = 'form-control-sm';
- $row2->class = 'form-control-sm';
- $row3->class = 'form-control-sm';
- // $row4->class = 'form-control-sm';
- $row5->class = 'form-control-sm';
- $row6->class = 'form-control-sm';
- $row7->class = 'form-control-sm';
- $row8->class = 'form-control-sm';
- // $row9->class = 'form-control-sm';
- $row14->class = 'form-control-sm';
- // set sizes
- $id->setSize('100%');
- $nome->setSize('100%');
- $nome_fantasia->setSize('100%');
- $tipo->setSize('100%');
- $cadastro_completo->setSize('100%');
- $codigo_nacional->setSize('100%');
- $codigo_estadual->setSize('100%');
- $codigo_municipal->setSize('100%');
- $fone->setSize('100%');
- $celular->setSize('100%');
- $email->setSize('100%');
- $email_nfe->setSize('100%');
- $observacao->setSize('100%');
- $cep->setSize('100%');
- $logradouro->setSize('100%');
- $numero->setSize('100%');
- $complemento->setSize('100%');
- $bairro->setSize('100%');
- $cidade_id->setSize('100%');
- $grupo_id->setSize('100%');
- $cep->setMask('99.999-999');
- $fone->setMask('(99)9999-9999');
- $celular->setMask('(99)99999-9999');
- $fone->placeholder = '(99)99999-9999';
- $celular->placeholder = '(99)99999-9999';
- $id->setEditable(FALSE);
- $nome->addValidation('Nome', new TRequiredValidator);
- $nome_fantasia->addValidation('Nome Fantasia', new TRequiredValidator);
- $tipo->addValidation('Tipo', new TRequiredValidator);
- $grupo_id->addValidation('Grupo', new TRequiredValidator);
- $cidade_id->addValidation('Cidade', new TRequiredValidator);
- if ($cadastro_completo == 'SIM') {
- $codigo_nacional->addValidation('CPF/CNPJ', new TRequiredValidator);
- $fone->addValidation('Fone', new TRequiredValidator);
- $email->addValidation('Email', new TRequiredValidator);
- $email->addValidation('Email', new TEmailValidator);
- $cep->addValidation('CEP', new TRequiredValidator);
- $logradouro->addValidation('Logradouro', new TRequiredValidator);
- $numero->addValidation('Número', new TRequiredValidator);
- }
- /*subform para enderecos principal
- */
- $subform = new BootstrapFormBuilder;
- $subform->setFieldSizes('100%');
- $subform->setProperty('style', 'border:none');
- $subform->appendPage( 'Endereço Principal' );
- //$row9 =$subform->form->addContent([ new TFormSeparator('Endereço Principal', '#3d32a5', '16', '#eeeeee')]);
- $row10=$subform->addFields( [ new TLabel('Cep','red') ], [ $cep ] );
- $row11=$subform->addFields( [ new TLabel('Logradouro','red') ], [ $logradouro ], [ new TLabel('Numero','red') ], [ $numero ] );
- $row12=$subform->addFields( [ new TLabel('Complemento') ], [ $complemento ], [ new TLabel('Bairro','red') ], [ $bairro ] );
- $row13=$subform->addFields( [ new TLabel('Estado','red') ], [$estado_id], [ new TLabel('Cidade','red') ], [ $cidade_id ] );
- $row10->class = 'form-control-sm';
- $row11->class = 'form-control-sm';
- $row12->class = 'form-control-sm';
- $row13->class = 'form-control-sm';
- /*subform para enderecos outros
- */
- $subform->appendPage( 'Endereço Outros' );
- $detail_uniqid = new THidden('detail_uniqid');
- $detail_id = new THidden('detail_id');
- $detail_endereco_id = new TDBUniqueSearch('detail_endereco_id', 'tutorerpdfe', 'Endereco', 'id', 'nome');
- $detail_cep = new TEntry('detail_cep');
- $detail_logradouro = new TText('detail_logradouro');
- $detail_numero = new TText('detail_numero');
- $detail_complemento = new TText('detail_complemento');
- $detail_bairro = new TText('detail_bairro');
- $detail_cidade_id = new TDBUniqueSearch('detail_cidade_id', 'tutorerpdfe', 'Cidade', 'id', 'nome');
- $detail_endereco_id->setMinLength(0);
- $detail_cidade_id->setMinLength(2);
- $detail_cep->setExitAction( new TAction([ $this, 'onExitCEPDetail']) );
- $detail_cep->setMask('99.999-999');
- // detail fields
- $rowd1=$subform->addFields( [$detail_uniqid] );
- $rowd2=$subform->addFields( [$detail_id] );
- $rowd3=$subform->addFields( [new TLabel('Endereco')], [$detail_endereco_id],[],[] );
- $rowd4=$subform->addFields( [new TLabel('Cep')], [$detail_cep] , [new TLabel('Cidade')], [$detail_cidade_id]);
- $rowd5=$subform->addFields( [new TLabel('Logradouro')], [$detail_logradouro],
- [new TLabel('Numero')], [$detail_numero] );
- $rowd7=$subform->addFields( [new TLabel('Complemento')], [$detail_complemento], [new TLabel('Bairro')], [$detail_bairro] );
- $add = TButton::create('add', [$this, 'onDetailAdd'], 'Registrar Endereço', 'fa:plus-circle green');
- $add->getAction()->setParameter('static','1');
- $rowd12=$subform->addFields( [], [$add] );
- $rowd1->class = 'form-control-sm';
- $rowd2->class = 'form-control-sm';
- $rowd3->class = 'form-control-sm';
- $rowd4->class = 'form-control-sm';
- $rowd5->class = 'form-control-sm';
- $rowd7->class = 'form-control-sm';
- $rowd12->class = 'form-control-sm';
- $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
- $this->detail_list->setId('PessoaEndereco_list');
- $this->detail_list->generateHiddenFields();
- $this->detail_list->style = "min-width: 700px; width:100%;margin-bottom: 10px";
- $this->detail_list->class = 'table-sm table-striped table-hover';
- // items
- $column_uniqid = new TDataGridColumn('uniqid', 'Uniqid', 'center');
- $column_id = new TDataGridColumn('id', 'Id', 'center');
- $column_endereco_id = new TDataGridColumn('endereco_id', 'Endereco_id', 'center');
- $column_endereco_nome = new TDataGridColumn('endereco->nome', 'Endereco', 'left', 20);
- $column_cep = new TDataGridColumn('cep', 'Cep', 'left', 20);
- $column_logradouro = new TDataGridColumn('logradouro', 'Logradouro', 'left', 150);
- $column_numero = new TDataGridColumn('numero', 'Numero', 'left', 20) ;
- $column_bairro = new TDataGridColumn('bairro', 'Bairro', 'left', 100) ;
- $column_cidade_id = new TDataGridColumn('cidade_id', 'Cidade_id', 'center');
- $column_cidade_nome = new TDataGridColumn('cidade->nome', 'Cidade Id', 'left', 150) ;
- $column_cidade_estado_uf = new TDataGridColumn('cidade->estado->uf', 'UF', 'left',50);
- $this->detail_list->addColumn($column_uniqid)->setVisibility(false);
- $this->detail_list->addColumn($column_id)->setVisibility(false);
- $this->detail_list->addColumn($column_endereco_id)->setVisibility(false);
- $this->detail_list->addColumn($column_endereco_nome);
- $this->detail_list->addColumn($column_cep);
- $this->detail_list->addColumn($column_logradouro);
- $this->detail_list->addColumn($column_numero);
- $this->detail_list->addColumn($column_bairro);
- $this->detail_list->addColumn($column_cidade_id)->setVisibility(false);
- $this->detail_list->addColumn($column_cidade_nome);
- $this->detail_list->addColumn($column_cidade_estado_uf);
- // $this->detail_list->addColumn( new TDataGridColumn('complemento', 'Complemento', 'left', 100) );
- // detail actions
- $action1 = new TDataGridAction([$this, 'onDetailEdit'] );
- $action1->setFields( ['uniqid', '*'] );
- $action2 = new TDataGridAction([$this, 'onDetailDelete']);
- $action2->setField('uniqid');
- // add the actions to the datagrid
- $this->detail_list->addAction($action1, _t('Edit'), 'fa:edit blue');
- $this->detail_list->addAction($action2, _t('Delete'), 'far:trash-alt red');
- $this->detail_list->createModel();
- $panel = new TPanelGroup;
- $panel->add($this->detail_list);
- $panel->getBody()->style = 'overflow-x:auto';
- $subform->addContent( [$panel] );
- /* FIM DOS DOS ENDERECOS
- */
- // create the form actions
- $this->form->addHeaderActionLink( _t('Close'), new TAction([__CLASS__, 'onClose'], ['static'=>'1']), 'fa:times red');
- $btn = $this->form->addAction(_t('Save'), new TAction([$this, 'onSave']), 'fa:save');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addActionLink(_t('New'), new TAction([$this, 'onEdit']), 'fa:eraser red');
- // adicionar acoes
- //******************************************************************
- //script para definir a mascara do cpf/cn
- $script = new TElement('script');
- $script->type = 'text/javascript';
- $javascript = "
- $(document).ready(function () {
- $('select[name=\"tipo\"]').trigger('change');
- });
- $(document).on('change','select[name=\"tipo\"]' , function(event){
- //alert($(this).val() );
- //$('input[name=\"codigo_nacional\"]').val('');
- $('select[name=\"tipo\"] > option:selected').each(function(){
- tipoPessoa = $(this).val();
- });
- if(tipoPessoa == 'F') {
- // $('input[name=\"codigo_nacional\"]').val('');
- $('input[name=\"codigo_nacional\"]').attr('placeholder', \"999.999.999-99\");
- $('input[name=\"codigo_nacional\"]').attr({onkeypress:'return tentry_mask(this,event,\"999.999.999-99\")'});
- }
- if(tipoPessoa == 'J') {
- // $('input[name=\"codigo_nacional\"]').val('');
- $('input[name=\"codigo_nacional\"]').attr('placeholder', \"99.999.999/9999-99\");
- $('input[name=\"codigo_nacional\"]').attr({onkeypress:'return tentry_mask(this,event,\"99.999.999/9999-99\")'});
- }
- });";
- $script->add($javascript);
- $tableScriptPessoa = new TTable;
- $tableScriptPessoa->addRow()->addCell($script);
- //*****************************************************************
- // vertical box container
- $this->form->addContent( [$subform] );
- $container = new TVBox;
- $container->style = 'width: 100%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- $container->add($tableScriptPessoa);
- parent::add($container);
- }
- /**
- * Save form data
- * @param $param Request
- */
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('tutorerpdfe'); // open a transaction
- $this->form->validate(); // validate form data
- $data = $this->form->getData(); // get form data as array
- $data->codigo_nacional = Uteis::awi_pegarApenasNumeros($data->codigo_nacional);
- $data->cep = Uteis::awi_pegarApenasNumeros($data->cep);
- $data->fone = Uteis::awi_pegarApenasNumeros($data->fone);
- $data->celular = Uteis::awi_pegarApenasNumeros($data->celular);
- $object = new Pessoa; // create an empty object
- $object->fromArray( (array) $data); // load the object with data
- $object->store(); // save the object
- PessoaEndereco::where('pessoa_id', '=', $object->id)->delete();
- if( $param['PessoaEndereco_list_id'] )
- {
- foreach( $param['PessoaEndereco_list_id'] as $key => $item_id )
- {
- $detail = new PessoaEndereco;
- $detail->endereco_id = $param['PessoaEndereco_list_endereco_id'][$key];
- $detail->pessoa_id = $object->id;
- $detail->cep = $param['PessoaEndereco_list_cep'][$key];
- $detail->cep = Uteis::awi_pegarApenasNumeros($detail->cep);
- $detail->logradouro = $param['PessoaEndereco_list_logradouro'][$key];
- $detail->numero = $param['PessoaEndereco_list_numero'][$key];
- $detail->bairro = $param['PessoaEndereco_list_bairro'][$key];
- $detail->cidade_id = $param['PessoaEndereco_list_cidade_id'][$key];
- $detail->store();
- }
- }
- PessoaPapel::where('pessoa_id', '=', $object->id)->delete();
- if ($data->papeis_id)
- {
- foreach ($data->papeis_id as $papel_id)
- {
- $pp = new PessoaPapel;
- $pp->pessoa_id = $object->id;
- $pp->papel_id = $papel_id;
- $pp->store();
- }
- }
- // get the generated id
- $data->id = $object->id;
- $this->form->setData($data); // fill form data
- TTransaction::close(); // close the transaction
- new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback(); // undo all pending operations
- }
- }
- /**
- * Clear form data
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear(TRUE);
- }
- /**
- * Load object to form data
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key'];
- TTransaction::open('tutorerpdfe');
- $object = new Pessoa($key);
- $object->codigo_nacional = Uteis::awi_mask($object->codigo_nacional,'CNPJCPF');
- $object->papeis_id = PessoaPapel::where('pessoa_id', '=', $object->id)->getIndexedArray('papel_id');
- $this->form->setData($object);
- $items = PessoaEndereco::where('pessoa_id', '=', $key)->load();
- foreach( $items as $item )
- {
- $item->uniqid = uniqid();
- $row = $this->detail_list->addItem( $item );
- $row->id = $item->uniqid;
- }
- // force fire events
- $data = new stdClass;
- $data->estado_id = $object->cidade->estado->id;
- $data->cidade_id = $object->cidade_id;
- TForm::sendData('form_Pessoa', $data);
- TTransaction::close();
- }
- else
- {
- $this->form->clear(TRUE);
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- /**
- * Action to be executed when the user changes the state
- * @param $param Action parameters
- */
- public static function onChangeEstado($param)
- {
- try
- {
- TTransaction::open('tutorerpdfe');
- if (!empty($param['estado_id']))
- {
- $criteria = TCriteria::create( ['estado_id' => $param['estado_id'] ] );
- // formname, field, database, model, key, value, ordercolumn = NULL, criteria = NULL, startEmpty = FALSE
- TDBCombo::reloadFromModel('form_Pessoa', 'cidade_id', 'tutorerpdfe', 'Cidade', 'id', '{nome} ({id})', 'nome', $criteria, TRUE);
- }
- else
- {
- TCombo::clearField('form_Pessoa', 'cidade_id');
- }
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- /**
- * Autocompleta outros campos a partir do CNPJ
- */
- public static function onExitCNPJ($param)
- {
- session_write_close();
- $cnpj = preg_replace('/[^0-9]/', '', $param['codigo_nacional']);
- if (($cnpj <> '00000000000') and ($cnpj <> '00000000000000'))
- {
- $valido = true;
- if (strlen($cnpj) == 11)
- {
- try {
- $document = new Cpf($cnpj);
- } catch (InvalidDocumentException $e) {
- $valido = false;
- }
- }
- else
- {
- try {
- $document = new Cnpj($cnpj);
- } catch (InvalidDocumentException $e) {
- $valido = false;
- }
- }
- if (true === $valido)
- {
- try
- {
- if (strlen($cnpj) > 11)
- {
- $url = 'http://receitaws.com.br/v1/cnpj/'.$cnpj;
- $content = @file_get_contents($url);
- if ($content !== false)
- {
- $cnpj_data = json_decode($content);
- $data = new stdClass;
- if (is_object($cnpj_data) && $cnpj_data->status !== 'ERROR')
- {
- $data->tipo = 'J';
- $data->nome = $cnpj_data->nome;
- $data->nome_fantasia = !empty($cnpj_data->fantasia) ? $cnpj_data->fantasia : $cnpj_data->nome;
- if (empty($param['cep']))
- {
- $data->cep = $cnpj_data->cep;
- $data->numero = $cnpj_data->numero;
- }
- if (empty($param['fone']))
- {
- $data->fone = $cnpj_data->telefone;
- }
- if (empty($param['email']))
- {
- $data->email = $cnpj_data->email;
- }
- TForm::sendData('form_Pessoa', $data, false, true);
- }
- else
- {
- $data->nome = '';
- $data->nome_fantasia = '';
- $data->cep = '';
- $data->numero = '';
- $data->telefone = '';
- $data->email = '';
- TForm::sendData('form_Pessoa', $data, false, true);
- }
- }
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- } else
- {
- new TMessage('info', 'CPF/CNPJ - Inválido !'.$cnpj.' Para não Cadastrar digite Zeros (0)!');
- }
- }
- }
- /**
- * Autocompleta outros campos a partir do CEP
- */
- public static function onExitCEP($param)
- {
- session_write_close();
- try
- {
- $cep = preg_replace('/[^0-9]/', '', $param['cep']);
- $url = 'https://viacep.com.br/ws/'.$cep.'/json/unicode/';
- $content = @file_get_contents($url);
- if ($content !== false)
- {
- $cep_data = json_decode($content);
- $data = new stdClass;
- if (is_object($cep_data) && empty($cep_data->erro))
- {
- TTransaction::open('tutorerpdfe');
- $estado = Estado::where('uf', '=', $cep_data->uf)->first();
- $cidade = Cidade::where('codigo_ibge', '=', $cep_data->ibge)->first();
- TTransaction::close();
- $data->logradouro = $cep_data->logradouro;
- $data->complemento = $cep_data->complemento;
- $data->bairro = $cep_data->bairro;
- $data->estado_id = $estado->id ?? '';
- $data->cidade_id = $cidade->id ?? '';
- TForm::sendData('form_Pessoa', $data, false, true);
- }
- else
- {
- $data->logradouro = '';
- $data->complemento = '';
- $data->bairro = '';
- $data->estado_id = '';
- $data->cidade_id = '';
- TForm::sendData('form_Pessoa', $data, false, true);
- }
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- /**
- Onexit cep detail
- **/
- public static function onExitCEPDetail($param)
- {
- session_write_close();
- try
- {
- $cep = preg_replace('/[^0-9]/', '', $param['detail_cep']);
- $url = 'https://viacep.com.br/ws/'.$cep.'/json/unicode/';
- $content = @file_get_contents($url);
- if ($content !== false)
- {
- $cep_data = json_decode($content);
- $data = new stdClass;
- if (is_object($cep_data) && empty($cep_data->erro))
- {
- TTransaction::open('tutorerpdfe');
- $estado = Estado::where('uf', '=', $cep_data->uf)->first();
- $cidade = Cidade::where('codigo_ibge', '=', $cep_data->ibge)->first();
- TTransaction::close();
- $data->detail_logradouro = $cep_data->logradouro;
- $data->detail_complemento = $cep_data->complemento;
- $data->detail_bairro = $cep_data->bairro;
- $data->detail_estado_id = $estado->id ?? '';
- $data->detail_cidade_id = $cidade->id ?? '';
- TForm::sendData('form_Pessoa', $data, false, true);
- }
- else
- {
- $data->logradouro = '';
- $data->complemento = '';
- $data->bairro = '';
- $data->estado_id = '';
- $data->cidade_id = '';
- TForm::sendData('form_Pessoa', $data, false, true);
- }
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- /**
- * Closes window
- */
- public static function onClose()
- {
- parent::closeWindow();
- }
- /**
- * Add detail item
- * @param $param URL parameters
- */
- public function onDetailAdd( $param )
- {
- try
- {
- $this->form->validate();
- $data = $this->form->getData();
- // echo '<br>'.'param'.'<br>';
- // print_r($param);
- // echo '<br>'.'data'.'<br>';
- /** validation sample
- if (empty($data->fieldX))
- {
- throw new Exception('The field fieldX is required');
- }
- **/
- $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid : uniqid();
- $grid_data = [];
- $grid_data['uniqid'] = $uniqid;
- $grid_data['id'] = $data->detail_id;
- $grid_data['endereco_id'] = $data->detail_endereco_id;
- $grid_data['cep'] = $data->detail_cep;
- $grid_data['logradouro'] = $data->detail_logradouro;
- $grid_data['numero'] = $data->detail_numero;
- $grid_data['complemento'] = $data->detail_complemento;
- $grid_data['bairro'] = $data->detail_bairro;
- $grid_data['cidade_id'] = $data->detail_cidade_id;
- // insert row dynamically
- $row = $this->detail_list->addItem( (object) $grid_data );
- $row->id = $uniqid;
- TDataGrid::replaceRowById('PessoaEndereco_list', $uniqid, $row);
- // clear detail form fields
- $data->detail_uniqid = '';
- $data->detail_id = '';
- $data->detail_endereco_id = '';
- $data->detail_cep = '';
- $data->detail_logradouro = '';
- $data->detail_numero = '';
- $data->detail_complemento = '';
- $data->detail_bairro = '';
- $data->detail_cidade_id = '';
- // send data, do not fire change/exit events
- TForm::sendData( 'form_Pessoa', $data, false, false );
- }
- catch (Exception $e)
- {
- $this->form->setData( $this->form->getData());
- new TMessage('error', $e->getMessage());
- }
- }
- /**
- * Edit detail item
- * @param $param URL parameters
- */
- public static function onDetailEdit( $param )
- {
- $data = new stdClass;
- $data->detail_uniqid = $param['uniqid'];
- $data->detail_id = $param['id'];
- $data->detail_endereco_id = $param['endereco_id'];
- $data->detail_cep = $param['cep'];
- $data->detail_logradouro = $param['logradouro'];
- $data->detail_numero = $param['numero'];
- $data->detail_complemento = $param['complemento'];
- $data->detail_bairro = $param['bairro'];
- $data->detail_cidade_id = $param['cidade_id'];
- // send data, do not fire change/exit events
- TForm::sendData( 'form_Pessoa', $data, false, false );
- }
- /**
- * Delete detail item
- * @param $param URL parameters
- */
- public static function onDetailDelete( $param )
- {
- // clear detail form fields
- $data = new stdClass;
- $data->detail_uniqid = '';
- $data->detail_id = '';
- $data->detail_endereco_id = '';
- $data->detail_cep = '';
- $data->detail_logradouro = '';
- $data->detail_numero = '';
- $data->detail_complemento = '';
- $data->detail_bairro = '';
- $data->detail_cidade_id = '';
- // send data, do not fire change/exit events
- TForm::sendData( 'form_Pessoa', $data, false, false );
- // remove row
- TDataGrid::removeRowById('PessoaEndereco_list', $param['uniqid']);
- }
- }
Usar associação nesses casos não funciona, pois ao adicionar um item não temos uma instância de TRecord, apenas um objeto genérico:
fiz a troca mas agora aparece esse erro :
Sem transação ativa com a base de dados: AdiantiDatabaseTRecord::load "public"."endereco" 86.808-160 Rua Ouro Branco 11 Centro Sem transação ativa com a base de dados: AdiantiDatabaseTRecord::load cidade Sem transação ativa com a base de dados: AdiantiDatabaseTRecord::load cidade
na linha do grid apos inclusao.
Abra transação antes de chamar addItem
obrigado. deu certo