Example #1
0
 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();
     }
 }