Lançado Adianti Framework 7.6!
Clique aqui para saber mais
carregar dados e TMultField boa tarde pessoal sei que ja tem um topico com esse titulo, aute segui ele porem não consegui resolver o problema, fiz a parte de salvar normal porem para editar não estou conseguindo colocar os dados no mult field segue a minha model ...
AS
carregar dados e TMultField  
Fechado
boa tarde pessoal sei que ja tem um topico com esse titulo, aute segui ele porem não consegui resolver o problema, fiz a parte de salvar normal porem para editar não estou conseguindo colocar os dados no mult field
segue a minha model

  1. <?php
  2. class Receber extends TRecord{
  3.     const TABLENAME "tblContasReceber";
  4.     const PRIMARYKEY "id";
  5.     const IDPOLICY "max";
  6. private $vendedor;
  7. private $cliente;
  8. private $produtos;
  9. private $listProdutos;
  10. function get_cliente(){
  11. if(empty($this->cliente)){
  12.     $this->cliente = new Cliente($this->cliente_id);
  13. }
  14.     return $this->cliente->razaoSocial;
  15. }
  16. function set_produtos($produto){
  17.     $this->produtos $produto;
  18. }
  19. function get_produtos(){
  20. if(empty($this->produtos)){
  21.     
  22.     $this->produtos[] = new ItensVenda($this->id);
  23. }
  24.     return $this->produtos;
  25. }
  26. function get_vendedor(){
  27. if(empty($this->vendedor)){
  28.     $this->vendedor = new Funcionarios($this->vendedor_id);
  29. }
  30.     return $this->vendedor->nome;
  31. }
  32. public function store() {
  33.     parent::store();
  34.     
  35.     foreach ($this->produtos as $itens){
  36.         
  37.         $itenVenda = new ItensVenda();
  38.         $produto = new Servicos($itens->idProduto);
  39.         
  40.         $itenVenda->produto_id $itens->idProduto;
  41.         $itenVenda->qtd $itens->qtd;
  42.         $itenVenda->venda_id $this->id;
  43.         $itenVenda->total $produto->preco $itens->qtd;
  44.         
  45.         $itenVenda->store();
  46.        }
  47.         
  48.     }
  49. }
  50. ?>


formulario, onde o edit não vai por nada

  1. <?php
  2. class VendasCompleto extends TPage{
  3.     
  4.     protected $form;
  5.   
  6.   protected $multfild;
  7.     protected   $note;
  8.             function __construct() {
  9.         parent::__construct();
  10.         
  11.  
  12.         
  13.           User::checaLogin('convidado');
  14.           
  15.     
  16.         $this->form = new TForm('VendasCompleta');
  17.        
  18.       
  19.                
  20.           $this->note = new TNotebook(800,300);
  21.           
  22.           
  23.         $pg1 = new TTable();
  24.   692 = new THidden('id');
  25.   $dataVencimento = new TDate('dataVencimento');
  26.   $vendedorId = new TSeekButton('vendedor_id');
  27.   $vendedor_nome = new TEntry('vendedor');
  28.   $cliente_id = new TSeekButton('cliente_id');
  29.   $cliente_nome = new TEntry('cliente_nome');
  30.   $vparcelas = new TEntry('vparcelas');
  31.   $vtotal = new TEntry('vtotal');
  32.   $pagamento_id = new TDBCombo('pagamento_id''mysql''Parcelas','id','tipo');
  33.   $parcelas = new TEntry('parcelas');
  34.        $calcular = new TButton('btnCalc');
  35.   
  36.    $this->multfild = new TMultiField('produtos');
  37.    
  38.   
  39.   // editaveis
  40.   
  41.   $vparcelas->setEditable(FALSE);
  42.   $vtotal->setEditable(FALSE);
  43.    $cliente_nome->setEditable(FALSE);
  44.    $vendedor_nome->setEditable(FALSE);
  45.    
  46.    $seek = new TStandardSeek();
  47.         
  48.         $action = new TAction(array($seek,'onSetup'));
  49.         $action->setParameter('database''mysql');
  50.         $action->setParameter('parent','VendasCompleta');
  51.         $action->setParameter('model','Cliente');
  52.         $action->setParameter('display_field','razaoSocial');
  53.         $action->setParameter('receive_key','cliente_id');
  54.         $action->setParameter('receive_field','cliente_nome');
  55.         
  56.           $cliente_id->setAction($action);
  57.           
  58.           
  59.       $seek2 = new TStandardSeek();
  60.         
  61.         $action2 = new TAction(array($seek2,'onSetup'));
  62.         $action2->setParameter('database''mysql');
  63.         $action2->setParameter('parent','VendasCompleta');
  64.         $action2->setParameter('model','Funcionarios');
  65.         $action2->setParameter('display_field','funcionario');
  66.         $action2->setParameter('receive_key','vendedor_id');
  67.         $action2->setParameter('receive_field','vendedor');
  68.         
  69.           $vendedorId->setAction($action2);
  70.           
  71.           
  72.           
  73.           $row $pg1->addRow();
  74.            $row->addCell(new TLabel('Data Vencimento: '));
  75.           $row->addCell($dataVencimento);
  76.           
  77.             
  78.           $row $pg1->addRow();
  79.           $row->addCell(new TLabel('cod Vendedor'));
  80.           $row->addCell($vendedorId);
  81.           $row->addCell($vendedor_nome);
  82.           
  83.                       
  84.           $row $pg1->addRow();
  85.           $row->addCell(new TLabel('cod Cliente'));
  86.           $row->addCell($cliente_id);
  87.           $row->addCell($cliente_nome);
  88.           
  89.        
  90.           
  91.            $row $pg1->addRow();
  92.            $row->addCell(new TLabel('Parcelas: '));
  93.           $row->addCell($parcelas);
  94.             $row->addCell(new TLabel('Valor Parcelas'));
  95.           $row->addCell($vparcelas);
  96.           
  97.              $row $pg1->addRow();
  98.               $row->addCell(new TLabel('Forma PGTO'));
  99.           $row->addCell($pagamento_id);
  100.           $row->addCell(new TLabel('Total'));
  101.           $row->addCell($vtotal);
  102.           
  103.           
  104.      
  105.           $btnSalvar = new TButton('salvar');
  106.           $btnSalvar->setAction(new TAction(array($this,'onSave')),'Fechar Venda');
  107.             $btnSalvar->setImage('ico_save.png');
  108.           $calcular->setAction(new TAction(array($this,'calcular')),'Calcular');
  109.           
  110.                 $row $pg1->addRow();
  111.           
  112.           $row->addCell($calcular);
  113.           
  114.           $row->addCell($btnSalvar);
  115.             
  116.          
  117.           $produto = new TEntry('nomeProduto');
  118.           $produto->setEditable(FALSE);
  119.           $cod_produto = new TSeekButton('idProduto');
  120.           $qtd = new TEntry('qtd');
  121.           
  122.            $seek3 = new TStandardSeek();
  123.         
  124.         $action3 = new TAction(array($seek2,'onSetup'));
  125.         $action3->setParameter('database''mysql');
  126.         $action3->setParameter('parent','VendasCompleta');
  127.         $action3->setParameter('model','Servicos');
  128.         $action3->setParameter('display_field','nome');
  129.         $action3->setParameter('receive_key','produtos_idProduto');
  130.         $action3->setParameter('receive_field','produtos_nomeProduto');
  131.         
  132.           $cod_produto->setAction($action3);
  133.           
  134.           $this->multfild->setClass('ItensVenda');
  135.           $this->multfild->addField('produto_id''Codigo'$cod_produto,200);
  136.           $this->multfild->addField('produto''Produto'$produto300);
  137.           $this->multfild->addField('qtd''Quantidade'$qtd50);
  138.           
  139.           $this->note->appendPage('Dados Basicos'$pg1);
  140.           $this->note->appendPage('Dados Produtos'$this->multfild);
  141.           
  142.            $this->form->setFields(array(692,$dataVencimento,$vendedorId,$vendedor_nome
  143.            ,$cliente_id,$cliente_nome,$vparcelas,$vtotal,
  144.        $pagamento_id,$parcelas,$calcular,$this->multfild,$btnSalvar));
  145.            
  146.            
  147.           $this->form->add($this->note);
  148.           
  149.           parent::add($this->form);
  150.           
  151.           
  152.   }
  153.   function calcular($param){
  154.       
  155.       try{
  156.       $obj $this->form->getData();
  157.       $valorTotal 0;
  158.       
  159.       TTransaction::open('mysql');
  160.       
  161.       foreach ($obj->produtos as $p){
  162.           
  163.       $produto = new Servicos($p->idProduto);
  164.       
  165.       $valorTotal $produto->preco $p->qtd;
  166.       
  167.       }
  168.       
  169.       $pagamento = new Parcelas($obj->pagamento_id);
  170.       
  171.       $obj->vtotal round$this->calcParcelaJuros($valorTotal$obj->parcelas$pagamento->juros),2);
  172.       $obj->vparcelas round(($this->calcParcelaJuros($valorTotal$obj->parcelas$pagamento->juros)/$obj->parcelas),2);
  173.       
  174.       $this->form->setData($obj);
  175.       
  176.      // TForm::sendData('VendasCompleta', $obj);
  177.       
  178.       TTransaction::close();
  179.       }  catch (Exception $e){
  180.           
  181.           new TMessage('info'$e->getMessage());
  182.           TTransaction::rollback();
  183.       }
  184.   }
  185.   function calcParcelaJuros($valor,$parcelas,$taxa){
  186.       
  187.    
  188. $taxa $taxa 100;
  189. $valParcela $valor pow(($taxa), $parcelas);
  190. return $valParcela;
  191.  }
  192.    function onSave()
  193.     {
  194.         try
  195.         {
  196.             // open a transaction with database 'samples'
  197.             TTransaction::open('mysql');
  198.             
  199.             $this->form->validate();
  200.             // read the form data and instantiates an Active Record
  201.             $customer $this->form->getData();
  202.             $venda = new Receber();
  203.             
  204.          
  205.                     // add the contact to the customer
  206.                     
  207.          
  208.             $venda->vendedor_id $customer->vendedor_id;
  209.             $venda->cliente_id $customer->cliente_id;
  210.             $venda->dataVencimento $customer->dataVencimento;
  211.             $venda->dataVenda date('Y-m-d');
  212.             $venda->vparcela $customer->vparcelas;
  213.             $venda->vtotal $customer->vtotal;
  214.             $venda->pagamento_id $customer->pagamento_id;
  215.             $venda->parcelas $customer->parcelas;
  216.             $venda->produtos $customer->produtos;
  217.             $venda->dataVenda date('Y-d-m');
  218.             
  219.             // stores the object in the database
  220.             $venda->store();
  221.             $this->form->setData($customer);
  222.             
  223.             // shows the success message
  224.             new TMessage('info''Venda Efetuada com susseso');
  225.             
  226.             TTransaction::close(); // close the transaction
  227.             
  228.             TApplication::executeMethod('VendasView');
  229.         }
  230.         catch (Exception $e// in case of exception
  231.         {
  232.             // shows the exception error message
  233.             new TMessage('error''<b>Error</b>' $e->getMessage());
  234.             // undo all pending operations
  235.             TTransaction::rollback();
  236.         }
  237.     }
  238.     
  239.  function onEdit($param){
  240.      
  241.     
  242.      try
  243.         {
  244.           if(isset($param['key'])){
  245.             // open a transaction with database 'samples'
  246.             TTransaction::open('mysql');
  247.             
  248.             $this->form->validate($param['key']);
  249.             // read the form data and instantiates an Active Record
  250.          
  251.             $venda = new Receber($param['key']);
  252.             
  253.        $obj = new stdClass();
  254.        
  255.        
  256.          $produto_list = array();
  257.          
  258.             if ($venda->produtos)
  259.             {
  260.                 foreach ($venda->produtos as $produto)
  261.                 {
  262.                     // add the contact to the customer
  263.                   
  264.                     $produto_list[] = $produto->id;
  265.                     
  266.                    
  267.                 }
  268.             }
  269.             
  270.             $obj->vendedor_id $venda->vendedor_id;
  271.             $obj->vendedor $venda->vendedor;
  272.             $obj->cliente_id $venda->cliente_id;
  273.             $obj->cliente_nome $venda->cliente;
  274.             $obj->dataVencimento $venda->dataVencimento;
  275.            
  276.             $obj->vparcelas $venda->vparcela;
  277.             $obj->vtotal $venda->vtotal;
  278.             $obj->pagamento_id $venda->pagamento_id;
  279.             $obj->parcelas $venda->parcelas;
  280.            
  281.             $obj->produtos $produto_list;
  282.             
  283.             // stores the object in the database
  284.           
  285.             $this->form->setData($obj);
  286.             
  287.         
  288.             
  289.             TTransaction::close(); // close the transaction
  290.             
  291.         }else{
  292.                $this->form->clear();
  293.         }
  294.         }
  295.         catch (Exception $e// in case of exception
  296.         {
  297.             // shows the exception error message
  298.             new TMessage('error''<b>Error</b>' $e->getMessage());
  299.             // undo all pending operations
  300.             TTransaction::rollback();
  301.         }
  302.      
  303.      
  304.  }
  305. }
  306. so falta o multfield ai o edite fica completo

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


AS

galera consegui, vlw
PD

Alexandre,

Poste sua solução, só para ficar registrado ;-)
Será que a solução foi essa?
www.adianti.com.br/forum/pt/view_695?nao-consigo-pegar-os-dados-do-t

abs,
Pablo
PD

então pablo hoje ue fui ver isso, estava com o mesmo problema , vim ver , descobri que não postei a resposta

resolvi isso da seguinte maneira, sempre que usar um TSeekButton com TMultField, no retorno do TSeek qtemque ter o prefix o nome do tmultfield


ex:


  1. <?php
  2.  // create the form fields
  3.         $mult = new TMultiField('servicos');
  4.      // $mult->setOrientation('horizontal');
  5.         
  6.         $servico_id                     = new TSeekButton('servico_id');
  7.         $servico_nome                      = new TEntry('c_nome');
  8.         $servico_preco                        = new TEntry('servico_preco');
  9.         $servico_nome->setEditable(false);
  10.         $servico_preco->setEditable(false);
  11.         
  12.          $this->form->setFields(array($id,$nome,$cpf_cnpj,$cep,$rua,$bairro,
  13.         $cidade,$email,$cell,$senha,$save_button,$new_button,$servico_id,$servico_nome,$servico_preco,$mult));
  14.         
  15.              // class PStandartSeek
  16.            $obj = new PStandartSeek();
  17.            //prefix usado nos campos 
  18.            //ex categoria_id
  19.              $obj->setPrefix('servicos');
  20.            // mode a ser usada
  21.            $obj->setModel('Servicos');
  22.          //primary key da model
  23.            $obj->setKey('id');
  24.          //formulario de retorno
  25.            $obj->setParentForm('form_Clientes');
  26.          //banco a ser usado
  27.            $obj->setBanco('sample');
  28.          //capos a serem mostrados na gris
  29.          //campo=>label
  30.          // estes campos seram retornados al selecionar um registro
  31.          //mas o campo deve ter o prefixo
  32.          //ex categoria_nome
  33.            $obj->setCampos(array('id'=>'Codigo','nome'=>'Nome','preco'=>'Preco'));
  34.          //campo a ser usado para filtro
  35.            $obj->setFiltro('nome');
  36.          //altura da janela
  37.            $obj->setHeight(300);
  38.          //largura da janela
  39.            $obj->setWidth(500);
  40.          //titulo da janela
  41.            $obj->setTitulo('Servicos');
  42.            
  43.          //cria a action
  44.            $action = new TAction(array($obj,'onReload'));
  45.            // iseri a action no TStandartSeek
  46.            $servico_id->setAction($action); 
  47.            
  48.         $mult->addField('id','Codigo',$servico_id,50);
  49.         $mult->addField('nome','Nome',$servico_nome,100);
  50.         $mult->addField('preco','Preco',$servico_preco,100);
  51. ?>


abraços