public function salvarAction()
 {
     $form = $this->getReceitaForm();
     $request = $this->getRequest();
     if ($request->isPost()) {
         $postData = array_merge_recursive($this->getRequest()->getPost()->toArray(), $this->getRequest()->getFiles()->toArray());
         $form->setData($postData);
         if ($form->isValid()) {
             $receita = new Receita();
             $receita->exchangeArray($form->getData());
             $retorno = $this->getReceitaTabela()->salvar($receita);
             if ($retorno) {
                 $this->flashMessenger()->addSuccessMessage("Registro cadastrado com sucesso.");
                 return $this->redirect()->toRoute('receita');
             } else {
                 $this->flashMessenger()->addErrorMessage("Erro ao salvar registro, tente novamente.");
             }
         }
     }
     $arrayCliente = $this->getClienteTabela()->buscarTodos(false);
     $arrayCategoria = $this->getCategoriaTabela()->buscarTodos(false);
     $arraySubcat = $this->ReceitaSubcategoriaTabela()->buscarTodos(false);
     $arrayConta = $this->getContaTabela()->buscarTodos(false);
     return array('form' => $form, 'fk_cliente' => array_column($arrayCliente->toArray(), 'nome', 'id'), 'fk_categoria' => array_column($arrayCategoria->toArray(), 'nome', 'id'), 'fk_subcategoria' => array_column($arraySubcat->toArray(), 'nome', 'id'), 'fk_conta' => array_column($arrayConta->toArray(), 'nome', 'id'));
 }
Example #2
0
 public function editar(Receita $receita)
 {
     $dados = array_filter($receita->getArrayCopy());
     $id = (int) $receita->getId();
     $objReceitaBd = $this->buscarUm($id);
     if ($objReceitaBd) {
         $dados['valor'] = str_replace(['.', ','], ['', '.'], $dados['valor']);
         $dados['data_vencimento'] = $this->converterData($receita->getDataVencimento());
         $dados['pagamento_data'] = !empty($receita->getPagamentoData()) ? $this->converterData($receita->getPagamentoData()) : null;
         $dados['modificado'] = $this->converterData();
         $conecao = $this->adapter->getDriver()->getConnection();
         $conecao->beginTransaction();
         try {
             $retorno = $this->update($dados, ['id' => $id]);
             if (!$retorno) {
                 $conecao->rollback();
                 return false;
             }
             $objContaAtual = $this->getConta()->buscarUm($objReceitaBd->getFkConta());
             $contaAtualSaldo = str_replace(['.', ','], ['', '.'], $objContaAtual->getSaldo());
             $receitaAtualSaldo = str_replace(['.', ','], ['', '.'], $objReceitaBd->getValor());
             if ($receita->getFkConta() != $objReceitaBd->getFkConta()) {
                 $saldoContaAtual = $contaAtualSaldo - $receitaAtualSaldo;
                 $objContaAtual->setSaldo($saldoContaAtual);
                 $retornoContaAtual = $this->getConta()->salvar($objContaAtual);
                 if ($retornoContaAtual) {
                     $objContaNova = $this->getConta()->buscarUm($receita->getFkConta());
                     $contaNovaSaldo = str_replace(['.', ','], ['', '.'], $objContaNova->getSaldo());
                     $saldoContaNova = $contaNovaSaldo + $dados['valor'];
                     $objContaNova->setSaldo($saldoContaNova);
                     $retornoContaNova = $this->getConta()->salvar($objContaNova);
                     if ($retornoContaNova) {
                         $conecao->commit();
                         return true;
                     }
                 }
                 $conecao->rollback();
                 return false;
             } elseif ($receita->getValor() != $objReceitaBd->getValor()) {
                 $novoSaldo = $contaAtualSaldo - $receitaAtualSaldo + $dados['valor'];
                 $objContaAtual->setSaldo($novoSaldo);
                 $retornoContaAtual = $this->getConta()->salvar($objContaAtual);
                 if ($retornoContaAtual) {
                     $conecao->commit();
                     return true;
                 }
                 $conecao->rollback();
                 return false;
             }
             $conecao->commit();
             return true;
         } catch (Exception $exc) {
             $conecao->rollback();
         }
     }
 }