Fazer adição/multiplicação ao inserir valor duplicado no PosForm Olá , boa tarde. Alguém sabe como alterar o formulário http://www.adianti.com.br/framework_files/tutor/index.php?class=POSFormView para que quando eu for inserir um valor duplicado ele faça a adição e multiplicação dos campos Price, Amount e Total ao invés de atualizar o registro?...

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


NR

Ricelli, isso acontece porque o itens são armazenados em um array associativo onde a chave é o id do produto. Para mudar esse comportamento teria que alterar a função onAddItem para verificar se o produto em questão já está no array e aí fazer as operações desejadas(soma,multiplicação,etc...):
 
  1. <?php
  2. public function onAddItem()
  3. {
  4. try
  5. {
  6. $this->form_item->validate(); // validate form data
  7. $items = TSession::getValue('items'); // get items from session
  8. $item = $this->form_item->getData('SaleItem');
  9. if (isset($items[ $item->product_id ]))
  10. {
  11. $it = $items[ $item->product_id ];
  12. $it->amount += $item->amount;
  13. $it->discount += $item->discount;
  14. ...
  15. $items[ $item->product_id ] = $it; // add the item
  16. }
  17. else
  18. {
  19. $items[ $item->product_id ] = $item; // add the item
  20. }
  21. TSession::setValue('items', $items); // store back tthe session
  22. $this->form_item->clear(); // clear form
  23. $this->onReload(); // reload data
  24. }
  25. catch (Exception $e) // in case of exception
  26. {
  27. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  28. }
  29. }
  30. ?>