Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Cadastro cliente com vinculo de usuário Boa tarde! Fui orientado a não alterar as classes padrão do framework, justamente devido as atualizações que pode sofrer e o trabalho de ajustar as customizações ser inviável ao projeto. Havia criado campos que representava dados de cadastro de clientes na tabela 'system_user' e ajustado as classes 'SystemUserForm' e 'SystemUserList' com os campos necessários. Então como sugerido em apoi...
FF
Cadastro cliente com vinculo de usuário  
Boa tarde! Fui orientado a não alterar as classes padrão do framework, justamente devido as atualizações que pode sofrer e o trabalho de ajustar as customizações ser inviável ao projeto. Havia criado campos que representava dados de cadastro de clientes na tabela 'system_user' e ajustado as classes 'SystemUserForm' e 'SystemUserList' com os campos necessários. Então como sugerido em apoio anterior, criei uma FK 'system_user_id' em uma tabela de nome 'clientes' e ajustei o filtro de sessão. O problema agora é que não estou conseguindo encontrar um meio de carregar/gravar dados na tabela 'cliente' através do 'SystemUserForm'. São apenas 5 campos, mas não encontrei uma forma de ajustar os metodos 'onEdit' e 'onSave'. A model está ok, e funcionando em outras telas.. porem na de cadastro não consigo evoluir. Os campos são os vazios da imagem. Os métodos são os padrões que vem no fw!

  1. <?php
  2. public function onSave($param)
  3.     {
  4.         try
  5.         {
  6.             // open a transaction with database 'permission'
  7.             TTransaction::open('permission');
  8.             
  9.             $data $this->form->getData();
  10.             $this->form->setData($data);
  11.             
  12.             $object = new SystemUser;
  13.             $object->fromArray( (array) $data );
  14.             
  15.             $senha $object->password;
  16.             
  17.             if( empty($object->login) )
  18.             {
  19.                 throw new Exception(TAdiantiCoreTranslator::translate('The field ^1 is required'_t('Login')));
  20.             }
  21.             
  22.             if( empty($object->id) )
  23.             {
  24.                 if (SystemUser::newFromLogin($object->login) instanceof SystemUser)
  25.                 {
  26.                     throw new Exception(_t('An user with this login is already registered'));
  27.                 }
  28.                 
  29.                 if (SystemUser::newFromEmail($object->email) instanceof SystemUser)
  30.                 {
  31.                     throw new Exception(_t('An user with this e-mail is already registered'));
  32.                 }
  33.                 
  34.                 if ( empty($object->password) )
  35.                 {
  36.                     throw new Exception(TAdiantiCoreTranslator::translate('The field ^1 is required'_t('Password')));
  37.                 }
  38.                 
  39.                 $object->active 'Y';
  40.             }
  41.             
  42.             if( $object->password )
  43.             {
  44.                 if( $object->password !== $param['repassword'] )
  45.                     throw new Exception(_t('The passwords do not match'));
  46.                 
  47.                 $object->password md5($object->password);
  48.             }
  49.             else
  50.             {
  51.                 unset($object->password);
  52.             }
  53.             
  54.             $object->store();
  55.             $object->clearParts();
  56.             
  57.             if( !empty($data->groups) )
  58.             {
  59.                 foreach( $data->groups as $group_id )
  60.                 {
  61.                     $object->addSystemUserGroup( new SystemGroup($group_id) );
  62.                 }
  63.             }
  64.             
  65.             if( !empty($data->units) )
  66.             {
  67.                 foreach( $param['units'] as $unit_id )
  68.                 {
  69.                     $object->addSystemUserUnit( new SystemUnit($unit_id) );
  70.                 }
  71.             }
  72.             
  73.             if (!empty($data->program_list))
  74.             {
  75.                 foreach ($data->program_list as $program_id)
  76.                 {
  77.                     $object->addSystemUserProgram( new SystemProgram$program_id ) );
  78.                 }
  79.             }
  80.             
  81.             $data = new stdClass;
  82.             $data->id $object->id;
  83.             TForm::sendData('form_System_user'$data);
  84.             
  85.             // close the transaction
  86.             TTransaction::close();
  87.             
  88.             // shows the success message
  89.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  90.         }
  91.         catch (Exception $e// in case of exception
  92.         {
  93.             new TMessage('error'$e->getMessage());
  94.             TTransaction::rollback();
  95.         }
  96.     }
  97.     
  98.     /**
  99.      * method onEdit()
  100.      * Executed whenever the user clicks at the edit button da datagrid
  101.      */
  102.     function onEdit($param)
  103.     {
  104.         try
  105.         {
  106.             if (isset($param['key']))
  107.             {
  108.                 // get the parameter $key
  109.                 $key=$param['key'];
  110.                 
  111.                 // open a transaction with database 'permission'
  112.                 TTransaction::open('permission');
  113.                 
  114.                 // instantiates object System_user
  115.                 $object = new SystemUser($key);
  116.                 
  117.                 unset($object->password);
  118.                 
  119.                 $groups = array();
  120.                 $units  = array();
  121.                 
  122.                 if( $groups_db $object->getSystemUserGroups() )
  123.                 {
  124.                     foreach( $groups_db as $group )
  125.                     {
  126.                         $groups[] = $group->id;
  127.                     }
  128.                 }
  129.                 
  130.                 if( $units_db $object->getSystemUserUnits() )
  131.                 {
  132.                     foreach( $units_db as $unit )
  133.                     {
  134.                         $units[] = $unit->id;
  135.                     }
  136.                 }
  137.                 
  138.                 $program_ids = array();
  139.                 foreach ($object->getSystemUserPrograms() as $program)
  140.                 {
  141.                     $program_ids[] = $program->id;
  142.                 }
  143.                 
  144.                 $object->program_list $program_ids;
  145.                 $object->groups $groups;
  146.                 $object->units  $units;
  147.                 
  148.                 // fill the form with the active record data
  149.                 $this->form->setData($object);
  150.                 
  151.                 // close the transaction
  152.                 TTransaction::close();
  153.             }
  154.             else
  155.             {
  156.                 $this->form->clear();
  157.             }
  158.         }
  159.         catch (Exception $e// in case of exception
  160.         {
  161.             new TMessage('error'$e->getMessage());
  162.             TTransaction::rollback();
  163.         }
  164.     }
  165. ?>

Alguem consegue me apoiar?

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


NR

Se entendi corretamente, você precisa de algo parecido com o esquema abaixo:
  1. <?php
  2. // onSave
  3. ...
  4. $object->store();
  5. // buscar cliente ja cadastrado
  6. $cliente Cliente::where('system_user_id','=',$object->id)->first();
  7. // se nao encontrar, cria
  8. if (! $cliente) {
  9.    $cliente = new Cliente();
  10.    $cliente->system_user_id $object->id;
  11. }
  12. $cliente->cnpj $data->cnpj;
  13. ...
  14. $cliente->store();
  15. ?>
FF

Muito Obrigado Nataniel!
Acabei preferindo manter as alterações neste projeto direto na tabela SystemUser. No proximo projeto, farei desta forma.