Example #1
0
 /**
  * Metodo  responsavel por editar registros
  *
  * @param  Despesa\Model\Despesa $objDespesaForm
  * @return Boolean
  **/
 public function editar(Despesa $objDespesaForm)
 {
     $arrayDados = array_filter($objDespesaForm->getArrayCopy());
     $arrayDados['valor'] = str_replace(['.', ','], ['', '.'], $objDespesaForm->getValor());
     $arrayDados['data_vencimento'] = $this->converterData($objDespesaForm->getDataVencimento());
     $arrayDados['pagamento_data'] = $this->converterData($objDespesaForm->getPagamentoData());
     $arrayDados['modificado'] = $this->converterData(null, true);
     $despesaFormId = (int) $objDespesaForm->getId();
     $objDespesaBd = $this->buscarUm($despesaFormId);
     if (!$objDespesaBd) {
         return false;
     }
     $conexao = $this->getAdapter()->getDriver()->getConnection();
     $conexao->beginTransaction();
     try {
         $commit = $this->update($arrayDados, ['id' => $despesaFormId]);
         if (!$commit) {
             $conexao->rollback();
             return false;
         }
         $objContaBd = $this->getConta()->buscarUm($objDespesaBd->getFkConta());
         $saldoContaBd = str_replace(['.', ','], ['', '.'], $objContaBd->getSaldo());
         $saldoDespeBd = str_replace(['.', ','], ['', '.'], $objDespesaBd->getValor());
         //Se o pagamento estiver como efetuado
         if ($objDespesaForm->getPagamento() == 'S') {
             //Se a conta foi alterada
             if ($objDespesaForm->getFkConta() != $objDespesaBd->getFkConta()) {
                 $novoSaldocontaBd = $saldoContaBd + $saldoDespeBd;
                 $objContaBd->setSaldo($novoSaldocontaBd);
                 $commit = $this->getConta()->salvar($objContaBd);
                 if ($commit) {
                     $objContaNova = $this->getConta()->buscarUm($objDespesaForm->getFkConta());
                     $saldoContaNova = str_replace(['.', ','], ['', '.'], $objContaNova->getSaldo());
                     $novoSaldocontaNova = $saldoContaNova - $arrayDados['valor'];
                     $objContaNova->setSaldo($novoSaldocontaNova);
                     $commit = $this->getConta()->salvar($objContaNova);
                 }
             } elseif ($objDespesaForm->getValor() != $objDespesaBd->getValor()) {
                 $novoSaldo = $saldoContaBd + $saldoDespeBd - $arrayDados['valor'];
                 $objContaBd->setSaldo($novoSaldo);
                 $commit = $this->getConta()->salvar($objContaBd);
             } elseif ($objDespesaForm->getPagamento() != $objDespesaBd->getPagamento()) {
                 $novoSaldo = $saldoContaBd - $saldoDespeBd;
                 $objContaBd->setSaldo($novoSaldo);
                 $commit = $this->getConta()->salvar($objContaBd);
             }
         } else {
             if ($objDespesaForm->getPagamento() != $objDespesaBd->getPagamento()) {
                 $novoSaldo = $saldoContaBd + $arrayDados['valor'];
                 $objContaBd->setSaldo($novoSaldo);
                 $commit = $this->getConta()->salvar($objContaBd);
             }
         }
         if (isset($commit) && $commit) {
             if (isset($arrayDados['anexo']) && !empty($arrayDados['anexo'])) {
                 $this->deletarArquivo($objDespesaBd);
             }
             $conexao->commit();
             return true;
         }
         $conexao->rollback();
         return false;
     } catch (Exception $exc) {
         $conexao->rollback();
     }
 }
 public function salvarAction()
 {
     $form = $this->getDespesaForm();
     $request = $this->getRequest();
     if ($request->isPost()) {
         $postData = array_merge_recursive($this->getRequest()->getPost()->toArray(), $this->getRequest()->getFiles()->toArray());
         $form->setData($postData);
         if ($form->isValid()) {
             $objDespesa = new Despesa();
             $objDespesa->exchangeArray($form->getData());
             $retorno = $this->getDespesaTabela()->salvar($objDespesa);
             if ($retorno) {
                 $this->flashMessenger()->addSuccessMessage("Registro cadastrado com sucesso.");
                 return $this->redirect()->toRoute('despesa');
             } else {
                 $this->flashMessenger()->addErrorMessage("Erro ao salvar registro, tente novamente.");
             }
         }
     }
     $arrayCliente = $this->getClienteTabela()->buscarTodos(false);
     $arrayCategoria = $this->getDespesaCategoriaTabela()->buscarTodos(false);
     $arraySubcategoria = $this->getDespesaSubcategoriaTabela()->buscarTodos(false);
     $arrayContas = $this->getContaTabela()->buscarTodos(false);
     return array('form' => $form, 'clientes' => array_column($arrayCliente->toArray(), 'nome', 'id'), 'categorias' => array_column($arrayCategoria->toArray(), 'nome', 'id'), 'subcategorias' => array_column($arraySubcategoria->toArray(), 'nome', 'id'), 'contas' => array_column($arrayContas->toArray(), 'nome', 'id'));
 }