Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Categoria Pai e SubCategoria. Estou elaborando um plano de contas onde cada plano pode ou não ser herdeira de outro plano de contas. como fazer para peguar o id do plano de contas pai e concatene com o plano de contas filho e exiba no campo sequência. esse recurso seria para organizar o conteudo. ex: #id: 1 #nome: Despesas #ContaPai: 0 #Sequencia: 1 #Descrição: 1.Despesa #id: 2 #nome: Luz #ContaPai: 1 (...
GR
Categoria Pai e SubCategoria.  
Fechado
Estou elaborando um plano de contas onde cada plano pode ou não ser herdeira de outro plano de contas.

como fazer para peguar o id do plano de contas pai e concatene com o plano de contas filho e exiba no campo sequência.

esse recurso seria para organizar o conteudo.

ex:
#id: 1
#nome: Despesas
#ContaPai: 0
#Sequencia: 1
#Descrição: 1.Despesa

#id: 2
#nome: Luz
#ContaPai: 1 (Faz referencia a conta Pai que é Despesa)
#sequecia: 1.1
#descrição: 1.1.Luz

Como fazer isso no FW adianti.

  1. <?php
  2. // sequência de valores baseado no 1 ID
  3. // id = 1, sequencia 1.1, 1.2
  4. $sequencia 0;
  5. $i =1;
  6. while($i 20  ){
  7. 1512 10;
  8. $sequencia $i;
  9. $nome="PC - Luz";
  10. echo "O Valor de id = " .1512."."$sequencia ."-" .$nome"<br>"PHP_EOL;
  11. $i++;
  12. }
  13. ?>


Classe de Controle

  1. <?php
  2. /**
  3.  * planoContasForm Registration
  4.  * @author getulio rodrigues
  5.  */
  6. class planoContasForm extends TPage
  7. {
  8.     protected $form// form
  9.     
  10.     /**
  11.      * Class constructor
  12.      * Creates the page and the registration form
  13.      */
  14.     function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         // creates the form
  19.         $this->form = new TForm('form_planoContas');
  20.         $this->form->class 'tform'// CSS class
  21.         $this->form->style 'width: 500px';
  22.         
  23.         // add a table inside form
  24.         $table = new TTable;
  25.         $table-> width '100%';
  26.         $this->form->add($table);
  27.         
  28.         // add a row for the form title
  29.         $row $table->addRow();
  30.         $row->class 'tformtitle'// CSS class
  31.         $row->addCell( new TLabel('planoContas') )->colspan 2;
  32.         
  33.         // create the form fields
  34.         1512                             = new TEntry('id');
  35.         $ativo                          = new TCheckGroup('ativo');
  36.         $sequencia                      = new TEntry('sequencia');
  37.         $descricao                      = new TEntry('descricao');
  38.         $tipo                           = new TRadioGroup('tipo');
  39.         $categoria                      = new TRadioGroup('categoria');
  40.         $plano_contas_id                = new TEntry('plano_contas_id');
  41.         // define the sizes
  42.         1512->setSize(100);
  43.         $ativo->setSize(100);
  44.         $sequencia->setSize(100);
  45.         $descricao->setSize(200);
  46.         $tipo->setSize(200);
  47.         $categoria->setSize(200);
  48.         $plano_contas_id->setSize(100);
  49.         // add one row for each form field
  50.         $table->addRowSet( new TLabel('id:'), 1512 );
  51.         $table->addRowSet( new TLabel('ativo:'), $ativo );
  52.         $table->addRowSet( new TLabel('sequencia:'), $sequencia );  
  53.         $table->addRowSet( new TLabel('Conta Pai:'), $plano_contas_id );
  54.         $table->addRowSet( new TLabel('descricao:'), $descricao );
  55.         $table->addRowSet( new TLabel('Tipo de Contas:'), $tipo );
  56.         $table->addRowSet( new TLabel('categoria:'), $categoria );
  57.         
  58.         $label1=new TLabel('');
  59.         $label1->setFontStyle('b');
  60.         $label1->setValue('Analitíca = Contas que podem receber movimentação');
  61.         
  62.         $row=$table->addRow();
  63.         $cell=$row->addCell($label1);
  64.         $cell->colspan=2;
  65.         
  66.         $label2=new TLabel('');
  67.         $label2->setFontStyle('b');
  68.         $label2->setValue('Sintético = Agrupamento / Contas totalizadoras');
  69.         
  70.         $row=$table->addRow();
  71.         $cell=$row->addCell($label2);
  72.         $cell->colspan=2;
  73.         
  74.         
  75.         $ativo->setLayout('horizontal');
  76.         $categoria->setLayout('horizontal');
  77.         $tipo->setLayout('horizontal');
  78.         
  79.         $ativoC = array();
  80.         $ativoC['S'] ='';
  81.         $ativo->addItems($ativoC);
  82.         
  83.         $categoriaR = array();
  84.         $categoriaR['R'] ='Receita';
  85.         $categoriaR['D'] ='Despesa';
  86.         $categoria->addItems($categoriaR);
  87.         
  88.         $tipoR = array();
  89.         $tipoR['A'] ='Analitíca';
  90.         $tipoR['S'] ='Sintético';
  91.         $tipo->addItems($tipoR);
  92.         
  93.         1512->setEditable(FALSE); 
  94.         $this->form->setFields(array(1512,$ativo,$sequencia,$descricao,$tipo,$categoria,$plano_contas_id));
  95.         // create the form actions
  96.         $save_button TButton::create('save', array($this'onSave'), _t('Save'), 'ico_save.png');
  97.         $new_button  TButton::create('new',  array($this'onEdit'), _t('New'),  'ico_new.png');
  98.         
  99.         $this->form->addField($save_button);
  100.         $this->form->addField($new_button);
  101.         
  102.         $buttons_box = new THBox;
  103.         $buttons_box->add($save_button);
  104.         $buttons_box->add($new_button);
  105.         
  106.         // add a row for the form action
  107.         $row $table->addRow();
  108.         $row->class 'tformaction'// CSS class
  109.         $row->addCell($buttons_box)->colspan 2;
  110.         
  111.         parent::add($this->form);
  112.     }
  113.     /**
  114.      * method onSave()
  115.      * Executed whenever the user clicks at the save button
  116.      */
  117.     function onSave()
  118.     {
  119.         try
  120.         {
  121.             TTransaction::open('sample'); // open a transaction
  122.             
  123.             // get the form data into an active record planoContas
  124.             $object $this->form->getData('planoContas');
  125.             $this->form->validate(); // form validation
  126.             $object->store(); // stores the object
  127.             $this->form->setData($object); // keep form data
  128.             TTransaction::close(); // close the transaction
  129.             
  130.             // shows the success message
  131.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  132.         }
  133.         catch (Exception $e// in case of exception
  134.         {
  135.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  136.             $this->form->setData$this->form->getData() ); // keep form data
  137.             TTransaction::rollback(); // undo all pending operations
  138.         }
  139.     }
  140.     
  141.     /**
  142.      * method onEdit()
  143.      * Executed whenever the user clicks at the edit button da datagrid
  144.      */
  145.     function onEdit($param)
  146.     {
  147.         try
  148.         {
  149.             if (isset($param['key']))
  150.             {
  151.                 $key=$param['key'];  // get the parameter $key
  152.                 TTransaction::open('sample'); // open a transaction
  153.                 $object = new planoContas($key); // instantiates the Active Record
  154.                 $this->form->setData($object); // fill the form
  155.                 TTransaction::close(); // close the transaction
  156.             }
  157.             else
  158.             {
  159.                 $this->form->clear();
  160.             }
  161.         }
  162.         catch (Exception $e// in case of exception
  163.         {
  164.             new TMessage('error''<b>Error</b> ' $e->getMessage()); // shows the exception error message
  165.             TTransaction::rollback(); // undo all pending operations
  166.         }
  167.     }
  168. }
  169. ?>



Class de modelo

  1. <?php
  2. /**
  3.  * planoContas Active Record
  4.  * @author  getulio rodrigues
  5.  */
  6. class planoContas extends TRecord
  7. {
  8.     const TABLENAME 'plano_contas';
  9.     const PRIMARYKEY'id';
  10.     const IDPOLICY =  'max'// {max, serial}
  11.     const CACHECONTROL 'TAPCache';
  12.     
  13.     private $plano_contas;
  14.     /**
  15.      * Constructor method
  16.      */
  17.     public function __construct(1512 NULL$callObjectLoad TRUE)
  18.     {
  19.         parent::__construct(1512$callObjectLoad);
  20.         parent::addAttribute('ativo');
  21.         parent::addAttribute('sequencia');
  22.         parent::addAttribute('descricao');
  23.         parent::addAttribute('tipo');
  24.         parent::addAttribute('categoria');
  25.         parent::addAttribute('plano_contas_id');
  26.     }
  27.     
  28.     /**
  29.      * Method set_plano_contas
  30.      * Sample of usage: $plano_contas->plano_contas = $object;
  31.      * @param $object Instance of planoContas
  32.      */
  33.     public function set_plano_contas(planoContas $object)
  34.     {
  35.         $this->plano_contas $object;
  36.         $this->plano_contas_id $object->id;
  37.     }
  38.     
  39.     /**
  40.      * Method get_plano_contas
  41.      * Sample of usage: $plano_contas->plano_contas->attribute;
  42.      * @returns planoContas instance
  43.      */
  44.     public function get_plano_contas()
  45.     {
  46.         // loads the associated object
  47.         if (empty($this->plano_contas))
  48.             $this->plano_contas = new planoContas($this->plano_contas_id);
  49.     
  50.         // returns the associated object
  51.         return $this->plano_contas;
  52.     }
  53.     
  54.     
  55.     /**
  56.      * Method getcontasPagars
  57.      */
  58.     public function getcontasPagars()
  59.     {
  60.         $criteria = new TCriteria;
  61.         $criteria->add(new TFilter('planocontas_id''='$this->id));
  62.         return contasPagar::getObjects$criteria );
  63.     }
  64.     
  65.     
  66. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (7)


GR

$object->sequencia = $object->plano_contas_id; com essa linha consegui pegar o id da contas a pagar "pai", porem queria pegar o ultimo valor gravado no banco e a partir do id contas a pagar "pai" adicionar o ultimo valor ex:

id contas a pagar pai: 2
id contas a pagar: 1
sequencia: 2.1

o subsequente

id contas a pagar pai: 2
id contas a pagar: 2
sequencia: 2.2
isso é possível.
GR

Acabei de achar o Tree View na aplicação tuto

como poderia interagir dinamicamente com a base de dados?
GR

demos.thesoftwareguy.in/category-tree-php/

é isso que preciso, como fazer isso no adiante fw
GR

www.thesoftwareguy.in/create-category-tree-php-mysql/
PD

Getúlio,

Você precisará transformar a estrutura do banco em uma matriz antes de jogar no Tree View.
Não é no framework que está a trabalheira, e sim em fazer essa lógica, que é recursiva.
Particularmente, eu recomendo usar código hierárquico estruturado no lugar de auto-relacionamento,
pois é mais fácil de manter, realizar alterações, e também de implementar:

1 ATIVO

1.1 ATIVO CIRCULANTE
1.1.1 Caixa
1.1.1.01 Caixa Geral
1.1.2 Bancos C/Movimento
1.1.2.01 Banco Alfa
1.1.3 Contas a Receber

Att,
Pablo
GR

Pablo, Valeu pela atenção, cara estou com muita dificuldade de trazer isso para o Framework, consegui depois de estudar/pesquisar a forma com a saída que precisava.

o codigo abaixo ele esta exatamente como gostaria, gerando a sequencia que preciso para organizar o plano de Contas na visualização.

  1. <?php
  2. //Array para simular o resultado de sua consulta no banco de dados
  3. $planoDeContas = array(
  4. array('ID'=>1    'NOME' =>' DESPESAS'                 'PARENT'=>null),
  5. array('ID'=>2    'NOME' =>' Despesas administrativas' 'PARENT'=>1),
  6. array('ID'=>3    'NOME' =>' 13 Salario '              'PARENT'=> 2),
  7. array('ID'=>4    'NOME' =>' Adicional noturno '       'PARENT'=> 2),
  8. array('ID'=>5    'NOME' =>' Agua / Esgoto '           'PARENT'=> 2),
  9. array('ID'=>9    'NOME' =>' Multa '                   'PARENT'=> 5),
  10. array('ID'=>6    'NOME' =>' Despesas Comerciais '    'PARENT'=> 1),
  11. array('ID'=>7    'NOME' =>' RECEITAS'                'PARENT'=> null),
  12. array('ID'=>8    'NOME' =>' Locacao'                 'PARENT'=> 7)
  13. );
  14. /**
  15.  * Função - Estruturar o plano de conta pai e filho
  16.  */
  17. function estruturarPlanoDeContas($planoDeContas$idPai null) {
  18.     $planoEstruturado = array();
  19.         foreach($planoDeContas as $conta) {
  20.             if($conta['PARENT'] == $idPai) {
  21.                 $planoEstruturado[$conta['ID']] = $conta;
  22.                 $child estruturarPlanoDeContas($planoDeContas$conta['ID']);
  23.                 if($child)
  24.                     $planoEstruturado[$conta['ID']]['CHILD']=$child;
  25.             }
  26.         }
  27.         return $planoEstruturado;
  28. }
  29. // Submete o array a função de estruturação
  30. $pcEstruturado estruturarPlanoDeContas($planoDeContas);
  31. echo '<pre>';
  32. // Imprime o array para verificar o resultado
  33.  print_r($pcEstruturado);
  34. /**
  35.  * Função - Imprimir um array estruturado
  36.  */
  37. function imprimirPlanoDeContasEstruturado($planoDeContasEstruturado$parentLevel "")  {
  38.     echo "<ul>";
  39.     $itemLevel 1;
  40.     foreach($planoDeContasEstruturado as $conta) {
  41.         $level = ($parentLevel=="")? $itemLevel $parentLevel "." $itemLevel;
  42.         echo sprintf("<li>%s - %s</li>"$level$conta['NOME']);
  43.        if(isset($conta['CHILD'])) {
  44.             imprimirPlanoDeContasEstruturado($conta['CHILD'], $level);
  45.         }
  46.         $itemLevel++;
  47.     }
  48.     echo '</ul>';
  49. }    
  50. // Imprime um array estruturado
  51. imprimirPlanoDeContasEstruturado($pcEstruturado);
  52. ?>
</pre>
FW

Ei o seu artigo é bom que eu encontrei novo https://www.welookups.com