/** * 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')); }