Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Form de cadastro Não vincula passagem de alguns dados com DB Estou tentado cadastra pessoas mas, só estar sendo vinculado com base de dados (id,cidade, dt_criação e grupo_id).O resto não esta sendo cadastrado tipo nome, telefone,email...O que poder esta dando de errado ao vincular dados do form com DB? ...
HL
Form de cadastro Não vincula passagem de alguns dados com DB  
Estou tentado cadastra pessoas mas, só estar sendo vinculado com base de dados (id,cidade, dt_criação e grupo_id).O resto não esta sendo cadastrado tipo nome, telefone,email...O que poder esta dando de errado ao vincular dados do form com DB?

  1. <?php
  2. /**
  3.  * Pessoa Active Record
  4.  * @author  <your-name-here>
  5.  */
  6. class Pessoa extends TRecord
  7. {
  8.     const TABLENAME 'tb_pessoa';
  9.     const PRIMARYKEY 'id';
  10.     const IDPOLICY 'max'// {max, serial}
  11.     const CREATEDAT 'hr_created_at';
  12.     const UPDATEDAT 'hr_updated_at';
  13.     /**
  14.      * Constructor method
  15.      */
  16.     public function __construct($id NULL$callObjectLoad TRUE)
  17.     {
  18.         parent::__construct($id$callObjectLoad);
  19.         parent::addAttribute('no_nome');
  20.         parent::addAttribute('no_nome_fantasia');
  21.         parent::addAttribute('st_tipo');
  22.         parent::addAttribute('nu_codigo_nacional');
  23.         parent::addAttribute('nu_codigo_estadual');
  24.         parent::addAttribute('nu_codigo_municipal');
  25.         parent::addAttribute('nu_fone');
  26.         parent::addAttribute('no_email');
  27.         parent::addAttribute('ds_observacao');
  28.         parent::addAttribute('nu_cep');
  29.         parent::addAttribute('no_logradouro');
  30.         parent::addAttribute('nu_numero');
  31.         parent::addAttribute('no_complemento');
  32.         parent::addAttribute('no_bairro');
  33.         parent::addAttribute('municipio_id');
  34.         parent::addAttribute('hr_created_at');
  35.         parent::addAttribute('hr_updated_at');
  36.         parent::addAttribute('grupo_id');
  37.     }
  38.     public function get_cidade()
  39.     {
  40.         return Cidade::find($this->municipio_id);
  41.     }
  42.     public function get_grupo()
  43.     {
  44.         return Grupo::find($this->grupo_id);
  45.     }
  46.     public function delete($id null)
  47.     {
  48.         $id = isset($id) ? $id $this->id;
  49.         PessoaPapel::where('pessoa_id''='$this->id)->delete();
  50.         parent::delete($id);
  51.     }
  52. }
  53. /* Pessoa Form
  1. <?php
  2. /**
  3.  * PessoaForm
  4.  *
  5.  * @version    1.0
  6.  * @license    http://www.adianti.com.br/framework-license
  7.  */
  8. class PessoaForm extends TWindow
  9. {
  10.     protected $form// form
  11.     
  12.     /**
  13.      * Form constructor
  14.      * @param $param Request
  15.      */
  16.     public function __construct$param )
  17.     {
  18.         parent::__construct();
  19.         parent::setSize(0.8null);
  20.         parent::removePadding();
  21.         parent::removeTitleBar();
  22.         //parent::disableEscape();
  23.         
  24.         // creates the form
  25.         $this->form = new BootstrapFormBuilder('form_Pessoa');
  26.         $this->form->setFormTitle('Pessoa');
  27.         $this->form->setProperty('style''margin:0;border:0');
  28.         $this->form->setClientValidation(true);
  29.         // create the form fields
  30.         $id = new TEntry('id');
  31.         $nome = new TEntry('nome');
  32.         $nome_fantasia = new TEntry('nome_fantasia');
  33.         $tipo = new TCombo('tipo');
  34.         $codigo_nacional = new TEntry('codigo_nacional');
  35.         $codigo_estadual = new TEntry('codigo_estadual');
  36.         $codigo_municipal = new TEntry('codigo_municipal');
  37.         $fone = new TEntry('fone');
  38.         $email = new TEntry('email');
  39.         $observacao = new TText('observacao');
  40.         $cep = new TEntry('cep');
  41.         $logradouro = new TEntry('logradouro');
  42.         $numero = new TEntry('numero');
  43.         $complemento = new TEntry('complemento');
  44.         $bairro = new TEntry('bairro');
  45.         
  46.         $filter = new TCriteria;
  47.         $filter->add(new TFilter('id''<''0'));
  48.         $cidade_id = new TDBCombo('municipio_id''sys_db''Cidade''id''no_nome''no_nome'$filter);
  49.         $grupo_id = new TDBUniqueSearch('grupo_id''sys_db''Grupo''id''no_nome');
  50.         $papeis_id = new TDBMultiSearch('papeis_id''sys_db''Papel''id''no_nome');
  51.         $estado_id = new TDBCombo('estado_id''sys_db''Estado''id''{no_nome} ({sg_uf})');
  52.         
  53.         $estado_id->setChangeAction( new TAction( [$this'onChangeEstado'] ) );
  54.         $cep->setExitAction( new TAction([ $this'onExitCEP']) );
  55.         $codigo_nacional->setExitAction( new TAction( [$this'onExitCNPJ'] ) );
  56.         
  57.         $cidade_id->enableSearch();
  58.         $estado_id->enableSearch();
  59.         $grupo_id->setMinLength(0);
  60.         $papeis_id->setMinLength(0);
  61.         $papeis_id->setSize('100%'60);
  62.         $observacao->setSize('100%'60);
  63.         $tipo->addItems( ['F' => 'Física''J' => 'Jurídica' ] );
  64.         
  65.         // add the fields
  66.         $this->form->addFields( [ new TLabel('Id') ], [ $id ] );
  67.         $this->form->addFields( [ new TLabel('Tipo') ], [ $tipo ], [ new TLabel('CPF/CNPJ') ], [ $codigo_nacional ] );
  68.         $this->form->addFields( [ new TLabel('Nome') ], [ $nome ] );
  69.         $this->form->addFields( [ new TLabel('Nome Fantasia') ], [ $nome_fantasia ] );
  70.         $this->form->addFields( [ new TLabel('Papéis')], [ $papeis_id ], [ new TLabel('Grupo') ], [ $grupo_id ] );
  71.         $this->form->addFields( [ new TLabel('I.E.') ], [ $codigo_estadual ], [ new TLabel('I.M.') ], [ $codigo_municipal ] );
  72.         $this->form->addFields( [ new TLabel('Fone') ], [ $fone ], [ new TLabel('Email') ], [ $email ] );
  73.         $this->form->addFields( [ new TLabel('Observacao') ], [ $observacao ] );
  74.         
  75.         $this->form->addContent( [new TFormSeparator('Endereço')]);
  76.         $this->form->addFields( [ new TLabel('Cep') ], [ $cep ] )->layout = ['col-sm-2 control-label''col-sm-4'];
  77.         $this->form->addFields( [ new TLabel('Logradouro') ], [ $logradouro ], [ new TLabel('Numero') ], [ $numero ] );
  78.         $this->form->addFields( [ new TLabel('Complemento') ], [ $complemento ], [ new TLabel('Bairro') ], [ $bairro ] );
  79.         $this->form->addFields( [ new TLabel('Estado') ], [$estado_id], [ new TLabel('Cidade') ], [ $cidade_id ] );
  80.         // adiciona as validações
  81.         $codigo_nacional->addValidation('Tipo', new TNumericValidator);
  82.         // set sizes
  83.         $id->setSize('100%');
  84.         $nome->setSize('100%');
  85.         $nome_fantasia->setSize('100%');
  86.         $tipo->setSize('100%');
  87.         $codigo_nacional->setSize('100%');
  88.         $codigo_estadual->setSize('100%');
  89.         $codigo_municipal->setSize('100%');
  90.         $fone->setSize('100%');
  91.         $email->setSize('100%');
  92.         $observacao->setSize('100%');
  93.         $cep->setSize('100%');
  94.         $logradouro->setSize('100%');
  95.         $numero->setSize('100%');
  96.         $complemento->setSize('100%');
  97.         $bairro->setSize('100%');
  98.         $cidade_id->setSize('100%');
  99.         $grupo_id->setSize('100%');
  100.         $cep->setMask('99.999-999');
  101.         
  102.         $id->setEditable(FALSE);
  103.         $nome->addValidation('Nome', new TRequiredValidator);
  104.         $nome_fantasia->addValidation('Nome Fantasia', new TRequiredValidator);
  105.         $tipo->addValidation('Tipo', new TRequiredValidator);
  106.         $codigo_nacional->addValidation('CPF/CNPJ', new TRequiredValidator);
  107.         $grupo_id->addValidation('Grupo', new TRequiredValidator);
  108.         $fone->addValidation('Fone', new TRequiredValidator);
  109.         $email->addValidation('Email', new TRequiredValidator);
  110.         $email->addValidation('Email', new TEmailValidator);
  111.         $cidade_id->addValidation('Cidade', new TRequiredValidator);
  112.         $cep->addValidation('CEP', new TRequiredValidator);
  113.         $logradouro->addValidation('Logradouro', new TRequiredValidator);
  114.         $numero->addValidation('Número', new TRequiredValidator);
  115.         
  116.         // create the form actions
  117.         $this->form->addHeaderActionLink_t('Close'),  new TAction([__CLASS__'onClose'], ['static'=>'1']), 'fa:times red');
  118.         $btn $this->form->addAction(_t('Save'), new TAction([$this'onSave']), 'fa:save');
  119.         $btn->class 'btn btn-sm btn-primary';
  120.         $this->form->addActionLink(_t('New'),  new TAction([$this'onEdit']), 'fa:eraser red');
  121.         
  122.         // vertical box container
  123.         $container = new TVBox;
  124.         $container->style 'width: 100%';
  125.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  126.         $container->add($this->form);
  127.         
  128.         parent::add($container);
  129.     }
  130.     /**
  131.      * Save form data
  132.      * @param $param Request
  133.      */
  134.     public function onSave$param )
  135.     {
  136.         try
  137.         {
  138.             TTransaction::open('sys_db'); // open a transaction
  139.             
  140.             $this->form->validate(); // validate form data
  141.             $data $this->form->getData(); // get form data as array
  142.             
  143.             $object = new Pessoa;  // create an empty object
  144.             $object->fromArray( (array) $data); // load the object with data
  145.             $object->store(); // save the object
  146.             var_dump($object);
  147.             
  148.             PessoaPapel::where('pessoa_id''='$object->id)->delete();
  149.             
  150.             if ($data->papeis_id)
  151.             {
  152.                 foreach ($data->papeis_id as $papel_id)
  153.                 {
  154.                     $pp = new PessoaPapel;
  155.                     $pp->pessoa_id $object->id;
  156.                     $pp->papel_id  $papel_id;
  157.                     $pp->store();
  158.                 }
  159.             }
  160.             
  161.             // get the generated id
  162.             $data->id $object->id;
  163.             
  164.             $this->form->setData($data); // fill form data
  165.             TTransaction::close(); // close the transaction
  166.             
  167.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  168.         }
  169.         catch (Exception $e// in case of exception
  170.         {
  171.             new TMessage('error'$e->getMessage()); // shows the exception error message
  172.             $this->form->setData$this->form->getData() ); // keep form data
  173.             TTransaction::rollback(); // undo all pending operations
  174.         }
  175.     }
  176.     
  177.     /**
  178.      * Clear form data
  179.      * @param $param Request
  180.      */
  181.     public function onClear$param )
  182.     {
  183.         $this->form->clear(TRUE);
  184.     }
  185.     
  186.     /**
  187.      * Load object to form data
  188.      * @param $param Request
  189.      */
  190.     public function onEdit$param )
  191.     {
  192.         try
  193.         {
  194.             if (isset($param['key']))
  195.             {
  196.                 $key $param['key'];
  197.                 TTransaction::open('sys_db');
  198.                 $object = new Pessoa($key);
  199.                 
  200.                 $object->papeis_id PessoaPapel::where('pessoa_id''='$object->id)->getIndexedArray('papel_id');
  201.                 
  202.                 $this->form->setData($object);
  203.                 
  204.                 // force fire events
  205.                 $data = new stdClass;
  206.                 $data->estado_id $object->cidade->estado->id;
  207.                 $data->municipio_id $object->municipio_id;
  208.                 TForm::sendData('form_Pessoa'$data);
  209.                 
  210.                 TTransaction::close();
  211.             }
  212.             else
  213.             {
  214.                 $this->form->clear(TRUE);
  215.             }
  216.         }
  217.         catch (Exception $e// in case of exception
  218.         {
  219.             new TMessage('error'$e->getMessage()); // shows the exception error message
  220.             TTransaction::rollback(); // undo all pending operations
  221.         }
  222.     }
  223.     
  224.     /**
  225.      * Action to be executed when the user changes the state
  226.      * @param $param Action parameters
  227.      */
  228.     public static function onChangeEstado($param)
  229.     {
  230.         try
  231.         {
  232.             TTransaction::open('sys_db');
  233.             if (!empty($param['estado_id']))
  234.             {
  235.                 $criteria TCriteria::create( ['estado_id' => $param['estado_id'] ] );
  236.                 
  237.                 // formname, field, database, model, key, value, ordercolumn = NULL, criteria = NULL, startEmpty = FALSE
  238.                 TDBCombo::reloadFromModel('form_Pessoa''municipio_id''sys_db''Cidade''id''{no_nome} ({id})''no_nome'$criteriaTRUE);
  239.             }
  240.             else
  241.             {
  242.                 TCombo::clearField('form_Pessoa''municipio_id');
  243.             }
  244.             
  245.             TTransaction::close();
  246.         }
  247.         catch (Exception $e)
  248.         {
  249.             new TMessage('error'$e->getMessage());
  250.         }
  251.     }
  252.     
  253.     /**
  254.      * Autocompleta outros campos a partir do CNPJ
  255.      */
  256.     public static function onExitCNPJ($param)
  257.     {
  258.         session_write_close();
  259.         
  260.         try
  261.         {
  262.             $cnpj preg_replace('/[^0-9]/'''$param['codigo_nacional']);
  263.             $url  'http://receitaws.com.br/v1/cnpj/'.$cnpj;
  264.             
  265.             $content = @file_get_contents($url);
  266.             
  267.             if ($content !== false)
  268.             {
  269.                 $cnpj_data json_decode($content);
  270.                 
  271.                 
  272.                 $data = new stdClass;
  273.                 if (is_object($cnpj_data) && $cnpj_data->status !== 'ERROR')
  274.                 {
  275.                     $data->tipo 'J';
  276.                     $data->nome $cnpj_data->nome;
  277.                     $data->nome_fantasia = !empty($cnpj_data->fantasia) ? $cnpj_data->fantasia $cnpj_data->nome;
  278.                     
  279.                     if (empty($param['cep']))
  280.                     {
  281.                         $data->cep $cnpj_data->cep;
  282.                         $data->numero $cnpj_data->numero;
  283.                     }
  284.                     
  285.                     if (empty($param['fone']))
  286.                     {
  287.                         $data->fone $cnpj_data->telefone;
  288.                     }
  289.                     
  290.                     if (empty($param['email']))
  291.                     {
  292.                         $data->email $cnpj_data->email;
  293.                     }
  294.                     
  295.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  296.                 }
  297.                 else
  298.                 {
  299.                     $data->nome '';
  300.                     $data->nome_fantasia '';
  301.                     $data->cep '';
  302.                     $data->numero '';
  303.                     $data->telefone '';
  304.                     $data->email '';
  305.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  306.                 }
  307.             }
  308.         }
  309.         catch (Exception $e)
  310.         {
  311.             new TMessage('error'$e->getMessage());
  312.         }
  313.     }
  314.     
  315.     /**
  316.      * Autocompleta outros campos a partir do CEP
  317.      */
  318.     public static function onExitCEP($param)
  319.     {
  320.         session_write_close();
  321.         
  322.         try
  323.         {
  324.             $cep preg_replace('/[^0-9]/'''$param['cep']);
  325.             $url 'https://viacep.com.br/ws/'.$cep.'/json/unicode/';
  326.             
  327.             $content = @file_get_contents($url);
  328.             
  329.             if ($content !== false)
  330.             {
  331.                 $cep_data json_decode($content);
  332.                 
  333.                 $data = new stdClass;
  334.                 if (is_object($cep_data) && empty($cep_data->erro))
  335.                 {
  336.                     TTransaction::open('sys_db');
  337.                     $estado Estado::where('sg_uf''='$cep_data->uf)->first();
  338.                     $cidade Cidade::where('id''='$cep_data->ibge)->first();
  339.                     TTransaction::close();
  340.                     
  341.                     $data->logradouro  $cep_data->logradouro;
  342.                     $data->complemento $cep_data->complemento;
  343.                     $data->bairro      $cep_data->bairro;
  344.                     $data->estado_id   $estado->id ?? '';
  345.                     $data->municipio_id   $cidade->id ?? '';
  346.                     
  347.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  348.                 }
  349.                 else
  350.                 {
  351.                     $data->logradouro  '';
  352.                     $data->complemento '';
  353.                     $data->bairro      '';
  354.                     $data->estado_id   '';
  355.                     $data->municipio_id   '';
  356.                     
  357.                     TForm::sendData('form_Pessoa'$datafalsetrue);
  358.                 }
  359.             }
  360.         }
  361.         catch (Exception $e)
  362.         {
  363.             new TMessage('error'$e->getMessage());
  364.         }
  365.     }
  366.     
  367.     /**
  368.      * Closes window
  369.      */
  370.     public static function onClose()
  371.     {
  372.         parent::closeWindow();
  373.     }
  374. }
  375. /* PessoaList */
  1. <?php
  2. /**
  3.  * PessoaList
  4.  *
  5.  * @version    1.0
  6.  * @license    http://www.adianti.com.br/framework-license
  7.  */
  8. class PessoaList extends TPage
  9. {
  10.     protected $form;     // registration form
  11.     protected $datagrid// listing
  12.     protected $pageNavigation;
  13.     protected $formgrid;
  14.     protected $deleteButton;
  15.     
  16.     use Adianti\base\AdiantiStandardListTrait;
  17.     
  18.     /**
  19.      * Page constructor
  20.      */
  21.     public function __construct()
  22.     {
  23.         parent::__construct();
  24.         
  25.         $this->setDatabase('sys_db');            // defines the database
  26.         $this->setActiveRecord('Pessoa');   // defines the active record
  27.         $this->setDefaultOrder('id''asc');         // defines the default order
  28.         $this->setLimit(10);
  29.         // $this->setCriteria($criteria) // define a standard filter
  30.         $this->addFilterField('id''=''id'); // filterField, operator, formField
  31.         $this->addFilterField('no_nome_fantasia''like''nome_fantasia'); // filterField, operator, formField
  32.         $this->addFilterField('nu_fone''like''fone'); // filterField, operator, formField
  33.         $this->addFilterField('no_email''like''email'); // filterField, operator, formField
  34.         $this->addFilterField('grupo_id''=''grupo_id'); // filterField, operator, formField
  35.         
  36.         // creates the form
  37.         $this->form = new BootstrapFormBuilder('form_search_Pessoa');
  38.         $this->form->setFormTitle('Pessoa');
  39.         
  40.         // create the form fields
  41.         $id = new TEntry('id');
  42.         $nome_fantasia = new TEntry('nome_fantasia');
  43.         $fone = new TEntry('fone');
  44.         $email = new TEntry('email');
  45.         $grupo_id = new TDBUniqueSearch('grupo_id''sys_db''Grupo''id''no_nome');
  46.         $grupo_id->setMinLength(0);
  47.         // add the fields
  48.         $this->form->addFields( [ new TLabel('Id') ], [ $id ] );
  49.         $this->form->addFields( [ new TLabel('Nome Fantasia') ], [ $nome_fantasia ] );
  50.         $this->form->addFields( [ new TLabel('Fone') ], [ $fone ] );
  51.         $this->form->addFields( [ new TLabel('Email') ], [ $email ] );
  52.         $this->form->addFields( [ new TLabel('Grupo') ], [ $grupo_id ] );
  53.         // set sizes
  54.         $id->setSize('100%');
  55.         $nome_fantasia->setSize('100%');
  56.         $fone->setSize('100%');
  57.         $email->setSize('100%');
  58.         $grupo_id->setSize('100%');
  59.         
  60.         // keep the form filled during navigation with session data
  61.         $this->form->setDataTSession::getValue(__CLASS__.'_filter_data') );
  62.         
  63.         // add the search form actions
  64.         $btn $this->form->addAction(_t('Find'), new TAction([$this'onSearch']), 'fa:search');
  65.         $btn->class 'btn btn-sm btn-primary';
  66.         $this->form->addActionLink(_t('New'), new TAction(['PessoaForm''onEdit']), 'fa:plus green');
  67.         
  68.         // creates a Datagrid
  69.         $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid);
  70.         $this->datagrid->style 'width: 100%';
  71.         //$this->datagrid->datatable = 'true';
  72.         // $this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
  73.         
  74.         // creates the datagrid columns
  75.         $column_id = new TDataGridColumn('id''Id''left');
  76.         $column_nome_fantasia = new TDataGridColumn('no_nome_fantasia''Nome Fantasia''left');
  77.         $column_fone = new TDataGridColumn('nu_fone''Fone''left');
  78.         $column_email = new TDataGridColumn('no_email''Email''left');
  79.         $column_grupo_id = new TDataGridColumn('grupo->no_nome''Grupo''left');
  80.         
  81.         $column_fone->enableAutoHide(500);
  82.         $column_email->enableAutoHide(500);
  83.         $column_grupo_id->enableAutoHide(500);
  84.         
  85.         // add the columns to the DataGrid
  86.         $this->datagrid->addColumn($column_id);
  87.         $this->datagrid->addColumn($column_nome_fantasia);
  88.         $this->datagrid->addColumn($column_fone);
  89.         $this->datagrid->addColumn($column_email);
  90.         $this->datagrid->addColumn($column_grupo_id);
  91.         
  92.         $column_id->setAction(new TAction([$this'onReload']), ['order' => 'id']);
  93.         $column_nome_fantasia->setAction(new TAction([$this'onReload']), ['order' => 'no_nome_fantasia']);
  94.         
  95.         $action1 = new TDataGridAction(['PessoaFormView''onEdit'], ['id'=>'{id}''register_state' => 'false']);
  96.         $action2 = new TDataGridAction(['PessoaForm''onEdit'], ['id'=>'{id}']);
  97.         $action3 = new TDataGridAction([$this'onDelete'], ['id'=>'{id}''register_state' => 'false']);
  98.         
  99.         $this->datagrid->addAction($action1_t('View'),   'fa:search gray');
  100.         $this->datagrid->addAction($action2_t('Edit'),   'far:edit blue');
  101.         $this->datagrid->addAction($action3 ,_t('Delete'), 'far:trash-alt red');
  102.         
  103.         // create the datagrid model
  104.         $this->datagrid->createModel();
  105.         
  106.         // creates the page navigation
  107.         $this->pageNavigation = new TPageNavigation;
  108.         $this->pageNavigation->setAction(new TAction([$this'onReload']));
  109.         
  110.         $panel = new TPanelGroup('''white');
  111.         $panel->add($this->datagrid);
  112.         $panel->addFooter($this->pageNavigation);
  113.         
  114.         // header actions
  115.         $dropdown = new TDropDown(_t('Export'), 'fa:list');
  116.         $dropdown->setPullSide('right');
  117.         $dropdown->setButtonClass('btn btn-primary waves-effect dropdown-toggle');
  118.         $dropdown->addAction_t('Save as CSV'), new TAction([$this'onExportCSV'], ['register_state' => 'false''static'=>'1']), 'fa:table blue' );
  119.         $dropdown->addAction_t('Save as PDF'), new TAction([$this'onExportPDF'], ['register_state' => 'false''static'=>'1']), 'far:file-pdf red' );
  120.         $panel->addHeaderWidget$dropdown );
  121.         
  122.         // vertical box container
  123.         $container = new TVBox;
  124.         $container->style 'width: 100%';
  125.         // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  126.         $container->add($this->form);
  127.         $container->add($panel);
  128.         
  129.         parent::add($container);
  130.     }
  131. }

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


HL

Desconsidera a mensagem, já resolvir o erro era isso $url = 'receitaws.com.br/v1/cnpj/'.$cnpj minha modelagem do DB estava diferente da integração