public function salvar(Receita $objReceita) { $arrayDados = array_filter($objReceita->getArrayCopy()); $arrayDados['valor'] = str_replace(['.', ','], ['', '.'], $objReceita->getValor()); $arrayDados['data_vencimento'] = $this->converterData($objReceita->getDataVencimento()); $arrayDados['pagamento_data'] = $this->converterData($objReceita->getPagamentoData()); $arrayDados['criado'] = $this->converterData(null, true); $arrayDados['modificado'] = $this->converterData(null, true); if (isset($arrayDados['repetir_ocorrencia']) && $arrayDados['repetir_ocorrencia'] > 1) { $arrayDados['grupo'] = $this->gerarIdGrupo(); } $conexao = $this->adapter->getDriver()->getConnection(); $conexao->beginTransaction(); try { $fkConta = (int) $objReceita->getFkConta(); $objConta = $this->getConta()->buscarUm($fkConta); if (!$objConta) { return false; } $cont = (int) isset($arrayDados['repetir_ocorrencia']) ? $arrayDados['repetir_ocorrencia'] : 1; for ($i = 1; $i <= $cont; $i++) { if ($cont > 1) { $arrayDados['descricao'] = ''; $arrayDados['descricao'] = $i . '/' . $cont . ' ' . $objReceita->getDescricao(); } $commit = $this->insert($arrayDados); if (!$commit) { break; } if ($arrayDados['pagamento'] == 'S') { $saldoConta = str_replace(['.', ','], ['', '.'], $objConta->getSaldo()); $novoSaldo = $saldoConta - $arrayDados['valor']; $objConta->setSaldo($novoSaldo); $commit = $this->getConta()->salvar($objConta); if (!$commit) { break; } } $arrayDados['pagamento'] = 'N'; $arrayDados['anexo'] = null; $arrayDados['data_vencimento'] = $this->gerarDataPagamento($arrayDados['data_vencimento'], $objReceita->getRepetirQuando()); $arrayDados['pagamento_data'] = null; } if (isset($commit) && $commit) { $conexao->commit(); return true; } $conexao->rollback(); return false; } catch (Exception $exc) { $conexao->rollback(); } }