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. $this->produtos[] = new ItensVenda($this->id);
  22. }
  23. return $this->produtos;
  24. }
  25. function get_vendedor(){
  26. if(empty($this->vendedor)){
  27. $this->vendedor = new Funcionarios($this->vendedor_id);
  28. }
  29. return $this->vendedor->nome;
  30. }
  31. public function store() {
  32. parent::store();
  33. foreach ($this->produtos as $itens){
  34. $itenVenda = new ItensVenda();
  35. $produto = new Servicos($itens->idProduto);
  36. $itenVenda->produto_id = $itens->idProduto;
  37. $itenVenda->qtd = $itens->qtd;
  38. $itenVenda->venda_id = $this->id;
  39. $itenVenda->total = $produto->preco * $itens->qtd;
  40. $itenVenda->store();
  41. }
  42. }
  43. }
  44. ?>


formulario, onde o edit não vai por nada

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

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


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


abraços