Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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...
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 ?




  1. <?php
  2. /**
  3.  * PessoaForm
  4.  *
  5.  * @version    1.0
  6.  * @package    tutorerpdfe
  7.  * @subpackage control
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. use Brazanation\Documents\Cpf;
  13. use Brazanation\Documents\Cnpj;
  14. use Brazanation\Documents\StateRegistration;
  15. use Brazanation\Documents\Exception\InvalidDocument as  InvalidDocumentException;
  16. class PessoaForm extends TWindow
  17. {
  18.     protected $form// form
  19.     
  20.     /**
  21.      * Form constructor
  22.      * @param $param Request
  23.      */
  24.     public function __construct$param )
  25.     {
  26.         parent::__construct();
  27.         parent::setSize(0.8null);
  28.         parent::removePadding();
  29.         parent::removeTitleBar();
  30.         //parent::disableEscape();
  31.         
  32.         // creates the form
  33.         $this->form = new BootstrapFormBuilder('form_Pessoa');
  34.         $this->form->setFormTitle('Pessoa');
  35.         $this->form->setProperty('style''margin:0;border:0');
  36.         $this->form->setClientValidation(true);
  37.         $this->form->appendPage('');        
  38.         // create the form fields
  39.         $id = new TEntry('id');
  40.         $nome = new TEntry('nome');
  41.         $nome_fantasia = new TEntry('nome_fantasia');
  42.         $tipo = new TCombo('tipo');
  43.         $codigo_nacional = new TEntry('codigo_nacional');
  44.         $codigo_estadual = new TEntry('codigo_estadual');
  45.         $codigo_municipal = new TEntry('codigo_municipal');
  46.         $fone = new TEntry('fone');
  47.         $celular = new TEntry('celular');
  48.         $email = new TEntry('email');
  49.         $email_nfe = new TEntry('email_nfe');
  50.         $observacao = new TText('observacao');
  51.         $cep = new TEntry('cep');
  52.         $logradouro = new TEntry('logradouro');
  53.         $numero = new TEntry('numero');
  54.         $complemento = new TEntry('complemento');
  55.         $bairro = new TEntry('bairro');
  56.         $cadastro_completo = new TCombo('cadastro_completo');
  57.         
  58.         $filter = new TCriteria;
  59.         $filter->add(new TFilter('id''<''0'));
  60.         $cidade_id = new TDBCombo('cidade_id''tutorerpdfe''Cidade''id''nome''nome'$filter);
  61.         $grupo_id  = new TDBUniqueSearch('grupo_id''tutorerpdfe''Grupo''id''nome');
  62.         $papeis_id = new TDBMultiSearch('papeis_id''tutorerpdfe''Papel''id''nome');
  63.         $estado_id = new TDBCombo('estado_id''tutorerpdfe''Estado''id''{nome} ({uf})');
  64.         
  65.         $estado_id->setChangeAction( new TAction( [$this'onChangeEstado'] ) );
  66.         $cep->setExitAction( new TAction([ $this'onExitCEP']) );
  67.         $codigo_nacional->setExitAction( new TAction( [$this'onExitCNPJ'],['tipo'=>$tipo] ) );
  68.       
  69.         
  70.         $cidade_id->enableSearch();
  71.         $estado_id->enableSearch();
  72.         $grupo_id->setMinLength(0);
  73.         $papeis_id->setMinLength(0);
  74.         $papeis_id->setSize('100%'60);
  75.         $observacao->setSize('100%'60);
  76.         $tipo->addItems( ['F' => 'Física''J' => 'Jurídica' ] );
  77.         $cadastro_completo->addItems( ['SIM' => 'SIM''NAO' => 'NAO' ] );
  78.         $tipo->setValue('J');
  79.         $cadastro_completo->setValue('SIM');
  80.         
  81.         
  82.         $nome->forceUpperCase();        
  83.         $nome_fantasia->forceUpperCase();        
  84.         $logradouro->forceUpperCase();        
  85.         $complemento->forceUpperCase();        
  86.         $bairro->forceUpperCase();        
  87.         
  88.         // add the fields
  89.         $row1=$this->form->addFields( [ new TLabel('Id') ], [ $id ],[ new TLabel('Cadastro Completo') ], [ $cadastro_completo ] );
  90.         $row2=$this->form->addFields( [ new TLabel('Tipo','red') ], [ $tipo ], [ new TLabel('CPF/CNPJ','red') ], [ $codigo_nacional ] );
  91.         $row3=$this->form->addFields( [ new TLabel('Nome','red') ], [ $nome ] , [ new TLabel('Nome Fantasia') ], [ $nome_fantasia ] );
  92.         $row5=$this->form->addFields( [ new TLabel('Papéis','red')], [ $papeis_id ], [ new TLabel('Grupo','red') ], [ $grupo_id ] );
  93.         $row6=$this->form->addFields( [ new TLabel('I.E.') ], [ $codigo_estadual ], [ new TLabel('I.M.') ], [ $codigo_municipal ] );
  94.         $row7=$this->form->addFields( [ new TLabel('Fone','red') ], [ $fone ], [ new TLabel('Email','red') ], [ $email ] );
  95.         $row14=$this->form->addFields([ new TLabel('Celular') ], [ $celular ], [ new TLabel('Email-NFe') ], [ $email_nfe ] );
  96.         $row8=$this->form->addFields( [ new TLabel('Observacao') ], [ $observacao ] );
  97.         
  98.         
  99.         $row1->class 'form-control-sm';
  100.         $row2->class 'form-control-sm';
  101.         $row3->class 'form-control-sm';
  102. //        $row4->class = 'form-control-sm';
  103.         $row5->class 'form-control-sm';
  104.         $row6->class 'form-control-sm';
  105.         $row7->class 'form-control-sm';
  106.         $row8->class 'form-control-sm';
  107. //        $row9->class = 'form-control-sm';
  108.         $row14->class 'form-control-sm';
  109.         // set sizes
  110.         $id->setSize('100%');
  111.         $nome->setSize('100%');
  112.         $nome_fantasia->setSize('100%');
  113.         $tipo->setSize('100%');
  114.         $cadastro_completo->setSize('100%');
  115.         $codigo_nacional->setSize('100%');
  116.         $codigo_estadual->setSize('100%');
  117.         $codigo_municipal->setSize('100%');
  118.         $fone->setSize('100%');
  119.         $celular->setSize('100%');
  120.         $email->setSize('100%');
  121.         $email_nfe->setSize('100%');
  122.         $observacao->setSize('100%');
  123.         $cep->setSize('100%');
  124.         $logradouro->setSize('100%');
  125.         $numero->setSize('100%');
  126.         $complemento->setSize('100%');
  127.         $bairro->setSize('100%');
  128.         $cidade_id->setSize('100%');
  129.         $grupo_id->setSize('100%');
  130.         $cep->setMask('99.999-999');
  131.         $fone->setMask('(99)9999-9999');
  132.         $celular->setMask('(99)99999-9999');
  133.         $fone->placeholder '(99)99999-9999';
  134.         $celular->placeholder '(99)99999-9999';
  135.         
  136.         $id->setEditable(FALSE);
  137.         $nome->addValidation('Nome', new TRequiredValidator);
  138.         $nome_fantasia->addValidation('Nome Fantasia', new TRequiredValidator);
  139.         $tipo->addValidation('Tipo', new TRequiredValidator);
  140.         $grupo_id->addValidation('Grupo', new TRequiredValidator);
  141.         $cidade_id->addValidation('Cidade', new TRequiredValidator);
  142.         if ($cadastro_completo == 'SIM') {
  143.             $codigo_nacional->addValidation('CPF/CNPJ', new TRequiredValidator);
  144.             $fone->addValidation('Fone', new TRequiredValidator);
  145.             $email->addValidation('Email', new TRequiredValidator);
  146.             $email->addValidation('Email', new TEmailValidator);
  147.             $cep->addValidation('CEP', new TRequiredValidator);
  148.             $logradouro->addValidation('Logradouro', new TRequiredValidator);
  149.             $numero->addValidation('Número', new TRequiredValidator);
  150.         }
  151.         
  152.         /*subform para enderecos principal
  153.         */
  154.         $subform = new BootstrapFormBuilder;
  155.         $subform->setFieldSizes('100%');
  156.         $subform->setProperty('style''border:none');
  157.         $subform->appendPage'Endereço Principal' );        
  158.         //$row9 =$subform->form->addContent([ new TFormSeparator('Endereço Principal', '#3d32a5', '16', '#eeeeee')]);        
  159.         $row10=$subform->addFields( [ new TLabel('Cep','red') ], [ $cep ] );
  160.         $row11=$subform->addFields( [ new TLabel('Logradouro','red') ], [ $logradouro ], [ new TLabel('Numero','red') ], [ $numero ] );
  161.         $row12=$subform->addFields( [ new TLabel('Complemento') ], [ $complemento ], [ new TLabel('Bairro','red') ], [ $bairro ] );
  162.         $row13=$subform->addFields( [ new TLabel('Estado','red') ], [$estado_id], [ new TLabel('Cidade','red') ], [ $cidade_id ] );
  163.         $row10->class 'form-control-sm';
  164.         $row11->class 'form-control-sm';
  165.         $row12->class 'form-control-sm';
  166.         $row13->class 'form-control-sm';
  167.         /*subform para enderecos outros
  168.         */
  169.         $subform->appendPage'Endereço Outros' );       
  170.         
  171.         
  172.         
  173.         $detail_uniqid      = new THidden('detail_uniqid');
  174.         $detail_id          = new THidden('detail_id');
  175.         $detail_endereco_id = new TDBUniqueSearch('detail_endereco_id''tutorerpdfe''Endereco''id''nome');
  176.         $detail_cep         = new TEntry('detail_cep');
  177.         $detail_logradouro  = new TText('detail_logradouro');
  178.         $detail_numero      = new TText('detail_numero');
  179.         $detail_complemento = new TText('detail_complemento');
  180.         $detail_bairro      = new TText('detail_bairro');
  181.         $detail_cidade_id   = new TDBUniqueSearch('detail_cidade_id''tutorerpdfe''Cidade''id''nome');
  182.         
  183.         $detail_endereco_id->setMinLength(0); 
  184.         $detail_cidade_id->setMinLength(2); 
  185.  
  186.         $detail_cep->setExitAction( new TAction([ $this'onExitCEPDetail']) );
  187.         $detail_cep->setMask('99.999-999');
  188.         
  189.         // detail fields
  190.         
  191.         $rowd1=$subform->addFields( [$detail_uniqid] );
  192.         $rowd2=$subform->addFields( [$detail_id] );
  193.         $rowd3=$subform->addFields( [new TLabel('Endereco')], [$detail_endereco_id],[],[] );
  194.         $rowd4=$subform->addFields( [new TLabel('Cep')], [$detail_cep] ,  [new TLabel('Cidade')], [$detail_cidade_id]); 
  195.         $rowd5=$subform->addFields( [new TLabel('Logradouro')], [$detail_logradouro], 
  196.                                     [new TLabel('Numero')], [$detail_numero] );
  197.         $rowd7=$subform->addFields( [new TLabel('Complemento')], [$detail_complemento], [new TLabel('Bairro')], [$detail_bairro] );
  198.         $add TButton::create('add', [$this'onDetailAdd'], 'Registrar Endereço''fa:plus-circle green');
  199.         $add->getAction()->setParameter('static','1');
  200.         $rowd12=$subform->addFields( [], [$add] );
  201.         $rowd1->class 'form-control-sm';
  202.         $rowd2->class 'form-control-sm';
  203.         $rowd3->class 'form-control-sm';
  204.         $rowd4->class 'form-control-sm';
  205.         $rowd5->class 'form-control-sm';
  206.         $rowd7->class 'form-control-sm';
  207.         $rowd12->class 'form-control-sm';
  208.         
  209.         $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
  210.         $this->detail_list->setId('PessoaEndereco_list');
  211.         $this->detail_list->generateHiddenFields();
  212.         $this->detail_list->style "min-width: 700px; width:100%;margin-bottom: 10px";
  213.         $this->detail_list->class 'table-sm table-striped table-hover';            
  214.         
  215.         // items
  216.         $column_uniqid            =  new TDataGridColumn('uniqid''Uniqid''center');
  217.         $column_id                =  new TDataGridColumn('id''Id''center');
  218.         $column_endereco_id       =  new TDataGridColumn('endereco_id''Endereco_id''center');
  219.         $column_endereco_nome     =  new TDataGridColumn('endereco->nome''Endereco''left'20);
  220.         $column_cep               =  new TDataGridColumn('cep''Cep''left'20);
  221.         $column_logradouro        =  new TDataGridColumn('logradouro''Logradouro''left'150);
  222.         $column_numero            =  new TDataGridColumn('numero''Numero''left'20) ;
  223.         $column_bairro            =  new TDataGridColumn('bairro''Bairro''left'100) ;
  224.         $column_cidade_id         =  new TDataGridColumn('cidade_id''Cidade_id''center');
  225.         $column_cidade_nome       =  new TDataGridColumn('cidade->nome''Cidade Id''left'150) ;
  226.         $column_cidade_estado_uf  =  new TDataGridColumn('cidade->estado->uf''UF''left',50);       
  227.         
  228.         $this->detail_list->addColumn($column_uniqid)->setVisibility(false);
  229.         $this->detail_list->addColumn($column_id)->setVisibility(false);
  230.         $this->detail_list->addColumn($column_endereco_id)->setVisibility(false);
  231.         $this->detail_list->addColumn($column_endereco_nome);
  232.         $this->detail_list->addColumn($column_cep);
  233.         $this->detail_list->addColumn($column_logradouro);
  234.         $this->detail_list->addColumn($column_numero);
  235.         $this->detail_list->addColumn($column_bairro);
  236.         $this->detail_list->addColumn($column_cidade_id)->setVisibility(false);
  237.         $this->detail_list->addColumn($column_cidade_nome);
  238.         $this->detail_list->addColumn($column_cidade_estado_uf);       
  239.          
  240. //        $this->detail_list->addColumn( new TDataGridColumn('complemento', 'Complemento', 'left', 100) );
  241.         // detail actions
  242.         $action1 = new TDataGridAction([$this'onDetailEdit'] );
  243.         $action1->setFields( ['uniqid''*'] );
  244.         
  245.         $action2 = new TDataGridAction([$this'onDetailDelete']);
  246.         $action2->setField('uniqid');
  247.         
  248.         // add the actions to the datagrid
  249.         $this->detail_list->addAction($action1_t('Edit'), 'fa:edit blue');
  250.         $this->detail_list->addAction($action2_t('Delete'), 'far:trash-alt red');
  251.         
  252.         $this->detail_list->createModel();
  253.         
  254.         $panel = new TPanelGroup;
  255.         $panel->add($this->detail_list);
  256.         $panel->getBody()->style 'overflow-x:auto';
  257.         $subform->addContent( [$panel] );
  258.         
  259.         /* FIM DOS DOS ENDERECOS
  260.         */ 
  261.         
  262.         // create the form actions
  263.         $this->form->addHeaderActionLink_t('Close'),  new TAction([__CLASS__'onClose'], ['static'=>'1']), 'fa:times red');
  264.         $btn $this->form->addAction(_t('Save'), new TAction([$this'onSave']), 'fa:save');
  265.         $btn->class 'btn btn-sm btn-primary';
  266.         $this->form->addActionLink(_t('New'),  new TAction([$this'onEdit']), 'fa:eraser red');
  267.         // adicionar acoes
  268.         //******************************************************************
  269.         //script para definir a mascara do cpf/cn
  270.         $script = new TElement('script'); 
  271.         $script->type 'text/javascript';
  272.         $javascript 
  273.                 $(document).ready(function () {
  274.                   $('select[name=\"tipo\"]').trigger('change');
  275.                 });
  276.                 $(document).on('change','select[name=\"tipo\"]' , function(event){
  277.                   //alert($(this).val() );
  278.                   //$('input[name=\"codigo_nacional\"]').val('');
  279.                
  280.                 $('select[name=\"tipo\"] > option:selected').each(function(){
  281.                     tipoPessoa = $(this).val();
  282.                 });
  283.                 
  284.                 if(tipoPessoa == 'F') {
  285.                   //  $('input[name=\"codigo_nacional\"]').val('');
  286.                     $('input[name=\"codigo_nacional\"]').attr('placeholder', \"999.999.999-99\");                  
  287.                     $('input[name=\"codigo_nacional\"]').attr({onkeypress:'return tentry_mask(this,event,\"999.999.999-99\")'});                        
  288.                  }
  289.                  if(tipoPessoa == 'J') {
  290.                     // $('input[name=\"codigo_nacional\"]').val('');
  291.                      $('input[name=\"codigo_nacional\"]').attr('placeholder', \"99.999.999/9999-99\");                  
  292.                      $('input[name=\"codigo_nacional\"]').attr({onkeypress:'return tentry_mask(this,event,\"99.999.999/9999-99\")'});                    
  293.                   }
  294.             });";
  295.         $script->add($javascript); 
  296.         $tableScriptPessoa = new TTable;
  297.         $tableScriptPessoa->addRow()->addCell($script);
  298.         //*****************************************************************
  299.         
  300.         // vertical box container
  301.         
  302.         $this->form->addContent( [$subform] );
  303.         
  304.         $container = new TVBox;
  305.         $container->style 'width: 100%';
  306.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  307.         $container->add($this->form);
  308.         $container->add($tableScriptPessoa);           
  309.         parent::add($container);
  310.     }
  311.     /**
  312.      * Save form data
  313.      * @param $param Request
  314.      */
  315.     public function onSave$param )
  316.     {
  317.         try
  318.         {
  319.             TTransaction::open('tutorerpdfe'); // open a transaction
  320.             
  321.             $this->form->validate(); // validate form data
  322.             $data $this->form->getData(); // get form data as array
  323.             
  324.             $data->codigo_nacional Uteis::awi_pegarApenasNumeros($data->codigo_nacional);
  325.             $data->cep             Uteis::awi_pegarApenasNumeros($data->cep);
  326.             $data->fone            Uteis::awi_pegarApenasNumeros($data->fone);
  327.             $data->celular         Uteis::awi_pegarApenasNumeros($data->celular);
  328.             
  329.             $object = new Pessoa;  // create an empty object
  330.             $object->fromArray( (array) $data); // load the object with data
  331.             $object->store(); // save the object
  332.             
  333.             
  334.             PessoaEndereco::where('pessoa_id''='$object->id)->delete();
  335.             if( $param['PessoaEndereco_list_id'] )
  336.             {
  337.                 foreach( $param['PessoaEndereco_list_id'] as $key => $item_id )
  338.                 {
  339.                     $detail = new PessoaEndereco;
  340.                     $detail->endereco_id  $param['PessoaEndereco_list_endereco_id'][$key];
  341.                     $detail->pessoa_id    $object->id;
  342.                     $detail->cep          $param['PessoaEndereco_list_cep'][$key];
  343.                     $detail->cep          Uteis::awi_pegarApenasNumeros($detail->cep);
  344.                     $detail->logradouro   $param['PessoaEndereco_list_logradouro'][$key];
  345.                     $detail->numero       $param['PessoaEndereco_list_numero'][$key];
  346.                     $detail->bairro       $param['PessoaEndereco_list_bairro'][$key];
  347.                     $detail->cidade_id    $param['PessoaEndereco_list_cidade_id'][$key];
  348.                     $detail->store();
  349.                 }
  350.             }            
  351.             
  352.             PessoaPapel::where('pessoa_id''='$object->id)->delete();
  353.             
  354.             if ($data->papeis_id)
  355.             {
  356.                 foreach ($data->papeis_id as $papel_id)
  357.                 {
  358.                     $pp = new PessoaPapel;
  359.                     $pp->pessoa_id $object->id;
  360.                     $pp->papel_id  $papel_id;
  361.                     $pp->store();
  362.                 }
  363.             }
  364.             
  365.             // get the generated id
  366.             $data->id $object->id;
  367.             
  368.             $this->form->setData($data); // fill form data
  369.             TTransaction::close(); // close the transaction
  370.             
  371.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  372.         }
  373.         catch (Exception $e// in case of exception
  374.         {
  375.             new TMessage('error'$e->getMessage()); // shows the exception error message
  376.             $this->form->setData$this->form->getData() ); // keep form data
  377.             TTransaction::rollback(); // undo all pending operations
  378.         }
  379.     }
  380.     
  381.     /**
  382.      * Clear form data
  383.      * @param $param Request
  384.      */
  385.     public function onClear$param )
  386.     {
  387.         $this->form->clear(TRUE);
  388.     }
  389.     
  390.     /**
  391.      * Load object to form data
  392.      * @param $param Request
  393.      */
  394.     public function onEdit$param )
  395.     {
  396.         try
  397.         {
  398.             if (isset($param['key']))
  399.             {
  400.                 $key $param['key'];
  401.                 TTransaction::open('tutorerpdfe');
  402.                 $object = new Pessoa($key);
  403.                 $object->codigo_nacional    Uteis::awi_mask($object->codigo_nacional,'CNPJCPF');                
  404.                 $object->papeis_id PessoaPapel::where('pessoa_id''='$object->id)->getIndexedArray('papel_id');
  405.                 
  406.                 $this->form->setData($object);
  407.                 
  408.                 $items                      PessoaEndereco::where('pessoa_id''='$key)->load();
  409.                 
  410.                 foreach( $items as $item )
  411.                 {
  412.                     $item->uniqid uniqid();
  413.                     $row $this->detail_list->addItem$item );
  414.                     $row->id $item->uniqid;
  415.                 }                
  416.                 
  417.                 // force fire events
  418.                 $data = new stdClass;
  419.                 $data->estado_id $object->cidade->estado->id;
  420.                 $data->cidade_id $object->cidade_id;
  421.                 TForm::sendData('form_Pessoa'$data);
  422.                 
  423.                 TTransaction::close();
  424.             }
  425.             else
  426.             {
  427.                 $this->form->clear(TRUE);
  428.             }
  429.         }
  430.         catch (Exception $e// in case of exception
  431.         {
  432.             new TMessage('error'$e->getMessage()); // shows the exception error message
  433.             TTransaction::rollback(); // undo all pending operations
  434.         }
  435.     }
  436.     
  437.     /**
  438.      * Action to be executed when the user changes the state
  439.      * @param $param Action parameters
  440.      */
  441.     public static function onChangeEstado($param)
  442.     {
  443.         try
  444.         {
  445.             TTransaction::open('tutorerpdfe');
  446.             if (!empty($param['estado_id']))
  447.             {
  448.                 $criteria TCriteria::create( ['estado_id' => $param['estado_id'] ] );
  449.                 
  450.                 // formname, field, database, model, key, value, ordercolumn = NULL, criteria = NULL, startEmpty = FALSE
  451.                 TDBCombo::reloadFromModel('form_Pessoa''cidade_id''tutorerpdfe''Cidade''id''{nome} ({id})''nome'$criteriaTRUE);
  452.             }
  453.             else
  454.             {
  455.                 TCombo::clearField('form_Pessoa''cidade_id');
  456.             }
  457.             
  458.             TTransaction::close();
  459.         }
  460.         catch (Exception $e)
  461.         {
  462.             new TMessage('error'$e->getMessage());
  463.         }
  464.     }
  465.     
  466.     /**
  467.      * Autocompleta outros campos a partir do CNPJ
  468.      */
  469.     public static function onExitCNPJ($param)
  470.     {
  471.         session_write_close();
  472.         $cnpj preg_replace('/[^0-9]/'''$param['codigo_nacional']);
  473.         
  474.         if (($cnpj <> '00000000000') and ($cnpj <> '00000000000000')) 
  475.         {
  476.                 $valido true
  477.                 if (strlen($cnpj) == 11
  478.                     {
  479.                         try {
  480.                             $document = new Cpf($cnpj);
  481.                         } catch (InvalidDocumentException $e) {
  482.                             $valido false;
  483.                         }          
  484.                     }
  485.                 else
  486.                 {
  487.                         try {
  488.                             $document = new Cnpj($cnpj);
  489.                         } catch (InvalidDocumentException $e) {
  490.                             $valido false;
  491.                         }          
  492.                 }    
  493.                     
  494.                 if (true === $valido
  495.                 {
  496.                     try
  497.                     {
  498.                         if (strlen($cnpj) > 11
  499.                         {
  500.                         
  501.                                 $url  'http://receitaws.com.br/v1/cnpj/'.$cnpj;
  502.                                 
  503.                                 $content = @file_get_contents($url);
  504.                                 
  505.                                 if ($content !== false)
  506.                                 {
  507.                                     $cnpj_data json_decode($content);
  508.                                     
  509.                                     
  510.                                     $data = new stdClass;
  511.                                     if (is_object($cnpj_data) && $cnpj_data->status !== 'ERROR')
  512.                                     {
  513.                                         $data->tipo 'J';
  514.                                         $data->nome $cnpj_data->nome;
  515.                                         $data->nome_fantasia = !empty($cnpj_data->fantasia) ? $cnpj_data->fantasia $cnpj_data->nome;
  516.                                         
  517.                                         if (empty($param['cep']))
  518.                                         {
  519.                                             $data->cep $cnpj_data->cep;
  520.                                             $data->numero $cnpj_data->numero;
  521.                                         }
  522.                                         
  523.                                         if (empty($param['fone']))
  524.                                         {
  525.                                             $data->fone $cnpj_data->telefone;
  526.                                         }
  527.                                         
  528.                                         if (empty($param['email']))
  529.                                         {
  530.                                             $data->email $cnpj_data->email;
  531.                                         }
  532.                                         
  533.                                         TForm::sendData('form_Pessoa'$datafalsetrue);
  534.                                     }
  535.                                     else
  536.                                     {
  537.                                         $data->nome '';
  538.                                         $data->nome_fantasia '';
  539.                                         $data->cep '';
  540.                                         $data->numero '';
  541.                                         $data->telefone '';
  542.                                         $data->email '';
  543.                                         TForm::sendData('form_Pessoa'$datafalsetrue);
  544.                                     }
  545.                                 }
  546.                         }        
  547.                     }
  548.                     catch (Exception $e)
  549.                     {
  550.                         new TMessage('error'$e->getMessage());
  551.                     }
  552.               } else 
  553.               {
  554.                 new TMessage('info''CPF/CNPJ - Inválido !'.$cnpj.' Para não Cadastrar digite Zeros (0)!');
  555.               }  
  556.          }         
  557.      }
  558.     
  559.     /**
  560.      * Autocompleta outros campos a partir do CEP
  561.      */
  562.     public static function onExitCEP($param)
  563.     {
  564.         session_write_close();
  565.         
  566.         try
  567.         {
  568.             $cep preg_replace('/[^0-9]/'''$param['cep']);
  569.             $url 'https://viacep.com.br/ws/'.$cep.'/json/unicode/';
  570.             
  571.             $content = @file_get_contents($url);
  572.             
  573.             if ($content !== false)
  574.             {
  575.                 $cep_data json_decode($content);
  576.                 
  577.                 $data = new stdClass;
  578.                 if (is_object($cep_data) && empty($cep_data->erro))
  579.                 {
  580.                     TTransaction::open('tutorerpdfe');
  581.                     $estado Estado::where('uf''='$cep_data->uf)->first();
  582.                     $cidade Cidade::where('codigo_ibge''='$cep_data->ibge)->first();
  583.                     TTransaction::close();
  584.                     
  585.                     $data->logradouro  $cep_data->logradouro;
  586.                     $data->complemento $cep_data->complemento;
  587.                     $data->bairro      $cep_data->bairro;
  588.                     $data->estado_id   $estado->id ?? '';
  589.                     $data->cidade_id   $cidade->id ?? '';
  590.                     
  591.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  592.                 }
  593.                 else
  594.                 {
  595.                     $data->logradouro  '';
  596.                     $data->complemento '';
  597.                     $data->bairro      '';
  598.                     $data->estado_id   '';
  599.                     $data->cidade_id   '';
  600.                     
  601.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  602.                 }
  603.             }
  604.         }
  605.         catch (Exception $e)
  606.         {
  607.             new TMessage('error'$e->getMessage());
  608.         }
  609.     }
  610.     /**
  611.     
  612.     Onexit cep detail
  613.     **/
  614.     public static function onExitCEPDetail($param)
  615.     {
  616.         session_write_close();
  617.         
  618.         try
  619.         {
  620.             $cep preg_replace('/[^0-9]/'''$param['detail_cep']);
  621.             $url 'https://viacep.com.br/ws/'.$cep.'/json/unicode/';
  622.             
  623.             $content = @file_get_contents($url);
  624.             
  625.             if ($content !== false)
  626.             {
  627.                 $cep_data json_decode($content);
  628.                 
  629.                 $data = new stdClass;
  630.                 if (is_object($cep_data) && empty($cep_data->erro))
  631.                 {
  632.                     TTransaction::open('tutorerpdfe');
  633.                     $estado Estado::where('uf''='$cep_data->uf)->first();
  634.                     $cidade Cidade::where('codigo_ibge''='$cep_data->ibge)->first();
  635.                     TTransaction::close();
  636.                     
  637.                     $data->detail_logradouro  $cep_data->logradouro;
  638.                     $data->detail_complemento $cep_data->complemento;
  639.                     $data->detail_bairro      $cep_data->bairro;
  640.                     $data->detail_estado_id   $estado->id ?? '';
  641.                     $data->detail_cidade_id   $cidade->id ?? '';
  642.                     
  643.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  644.                 }
  645.                 else
  646.                 {
  647.                     $data->logradouro  '';
  648.                     $data->complemento '';
  649.                     $data->bairro      '';
  650.                     $data->estado_id   '';
  651.                     $data->cidade_id   '';
  652.                     
  653.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  654.                 }
  655.             }
  656.         }
  657.         catch (Exception $e)
  658.         {
  659.             new TMessage('error'$e->getMessage());
  660.         }
  661.     }
  662.     
  663.     /**
  664.      * Closes window
  665.      */
  666.     public static function onClose()
  667.     {
  668.         parent::closeWindow();
  669.     }
  670.     
  671.     
  672.     /**
  673.      * Add detail item
  674.      * @param $param URL parameters
  675.      */
  676.     public function onDetailAdd$param )
  677.     {
  678.         try
  679.         {
  680.             $this->form->validate();
  681.             $data $this->form->getData();
  682. //            echo '<br>'.'param'.'<br>';
  683.  //           print_r($param);
  684.  //           echo '<br>'.'data'.'<br>';
  685.             /** validation sample
  686.             if (empty($data->fieldX))
  687.             {
  688.                 throw new Exception('The field fieldX is required');
  689.             }
  690.             **/
  691.             
  692.             $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid uniqid();
  693.             
  694.             $grid_data = [];
  695.             $grid_data['uniqid']      = $uniqid;
  696.             $grid_data['id']          = $data->detail_id;
  697.             $grid_data['endereco_id'] = $data->detail_endereco_id;
  698.             $grid_data['cep']         = $data->detail_cep;
  699.             $grid_data['logradouro']  = $data->detail_logradouro;
  700.             $grid_data['numero']      = $data->detail_numero;
  701.             $grid_data['complemento'] = $data->detail_complemento;
  702.             $grid_data['bairro']      = $data->detail_bairro;
  703.             $grid_data['cidade_id']   = $data->detail_cidade_id;
  704.             
  705.             // insert row dynamically
  706.             $row $this->detail_list->addItem( (object) $grid_data );
  707.             $row->id $uniqid;
  708.             
  709.             TDataGrid::replaceRowById('PessoaEndereco_list'$uniqid$row);
  710.             
  711.             // clear detail form fields
  712.             $data->detail_uniqid      '';
  713.             $data->detail_id          '';
  714.             $data->detail_endereco_id '';
  715.             $data->detail_cep         '';
  716.             $data->detail_logradouro  '';
  717.             $data->detail_numero      '';
  718.             $data->detail_complemento '';
  719.             $data->detail_bairro      '';
  720.             $data->detail_cidade_id   '';
  721.             
  722.             // send data, do not fire change/exit events
  723.             TForm::sendData'form_Pessoa'$datafalsefalse );
  724.             
  725.         }
  726.         catch (Exception $e)
  727.         {
  728.             $this->form->setData$this->form->getData());
  729.             new TMessage('error'$e->getMessage());
  730.         }
  731.     }
  732.     
  733.     /**
  734.      * Edit detail item
  735.      * @param $param URL parameters
  736.      */
  737.     public static function onDetailEdit$param )
  738.     {
  739.         $data = new stdClass;
  740.         $data->detail_uniqid      $param['uniqid'];
  741.         $data->detail_id          $param['id'];
  742.         $data->detail_endereco_id $param['endereco_id'];
  743.         $data->detail_cep         $param['cep'];
  744.         $data->detail_logradouro  $param['logradouro'];
  745.         $data->detail_numero      $param['numero'];
  746.         $data->detail_complemento $param['complemento'];
  747.         $data->detail_bairro      $param['bairro'];
  748.         $data->detail_cidade_id   $param['cidade_id'];
  749.         
  750.         // send data, do not fire change/exit events
  751.         TForm::sendData'form_Pessoa'$datafalsefalse );
  752.      
  753.     }
  754.     
  755.     /**
  756.      * Delete detail item
  757.      * @param $param URL parameters
  758.      */
  759.     public static function onDetailDelete$param )
  760.     {
  761.         // clear detail form fields
  762.         $data = new stdClass;
  763.         $data->detail_uniqid '';
  764.         $data->detail_id '';
  765.         $data->detail_endereco_id '';
  766.         $data->detail_cep '';
  767.         $data->detail_logradouro '';
  768.         $data->detail_numero '';
  769.         $data->detail_complemento '';
  770.         $data->detail_bairro '';
  771.         $data->detail_cidade_id '';
  772.         
  773.         // send data, do not fire change/exit events
  774.         TForm::sendData'form_Pessoa'$datafalsefalse );
  775.         
  776.         // remove row
  777.         TDataGrid::removeRowById('PessoaEndereco_list'$param['uniqid']);
  778.     }
  779.     
  780.     
  781.     
  782.     
  783. }

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (4)


NR

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:
  1. <?php
  2. // associação na coluna da grid
  3. $column_cidade_nome       =  new TDataGridColumn('cidade->nome''Cidade Id''left'150);
  4. // item adicionado na grid pela função onDetailAdd
  5. $row $this->detail_list->addItem( (object) $grid_data ); // veja que aqui é feito um cast de array para objeto genérico
  6. // talvez isso funcione(trocar o addItem acima por esse)
  7. $endereco = new PessoaEndereco();
  8. $endereco->fromArray($grid_data);
  9. $endereco->uniqid $uniqid;
  10. $row $this->detail_list->addItem$endereco );
  11. ?>
PG

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.
NR

Abra transação antes de chamar addItem
PG

obrigado. deu certo