public static function getFavorecidosTitularesByCodLancamentoFinanceiro() { $dao = new FavorecidoTitularLancamentoFinanceiroDao(); $items = $dao->getFavorecidosTitularesByCodLancamentoFinanceiro($_GET); if ($items) { Flight::json($items); } else { Flight::halt(404, 'Nenhum lançamento encontrado.'); } }
private static function processSaveLancamentoFinanceiro($lanFinTO, $cod_lancamento_pai = null, $num_parcela_processar = 0, $statusCode = 200, $successMessage = "Lançamento registrado com sucesso!") { if (!$lanFinTO->flg_lancamento_recorrente || $lanFinTO->flg_lancamento_recorrente && $num_parcela_processar < (int) $lanFinTO->qtd_parcelas) { $lanFinDao = new LancamentoFinanceiroDao(); /*if(!$lanFinTO->cod_lancamento_financeiro && $lanFinTO->flg_lancamento_recorrente) { // É novo lançamento recorrente? if($num_parcela_processar == 0) { // É a primeira parcela? $lanFinTO->dsc_lancamento = $lanFinTO->dsc_lancamento ." (1/". $lanFinTO->qtd_parcelas .")"; } else if($num_parcela_processar > 0) { $lanFinTO->dsc_lancamento = substr($lanFinTO->dsc_lancamento, 0, strlen($lanFinTO->dsc_lancamento)-6) ." (". ($num_parcela_processar+1) ."/". $lanFinTO->qtd_parcelas .")"; } }*/ if (!$lanFinTO->cod_lancamento_financeiro) { $statusCode = 201; $successMessage = 'Lançamento registrado com sucesso!'; // Grava o lançamento financeiro $lanFinTO->cod_lancamento_financeiro = $lanFinDao->saveLancamentoFinanceiro($lanFinTO); if (!$lanFinTO->cod_lancamento_financeiro != '') { Flight::halt(500, 'Erro ao registrar lançamento.'); } } else { $statusCode = 200; $successMessage = 'Lançamento atualizado com sucesso!'; if (!$lanFinDao->updateLancamentoFinanceiro($lanFinTO)) { Flight::halt(500, 'Erro ao atualizar lançamento.'); } } if ($lanFinTO->cod_lancamento_financeiro) { // Só se já tiver gravado o lançamento financeiro // Grava os favorecidos/titulares do movimento if ($_POST['flg_lancamento_aberto'] === "true") { // Se o lançamento for rateado... $favorecidos = $_POST['favorecidos']; foreach ($favorecidos as $key => $favorecidoItem) { $favTitLanFinTO = new FavorecidoTitularLancamentoFinanceiroTO(); $favTitLanFinTO->cod_favorecido_lancamento_financeiro = isset($favorecidoItem['cod_favorecido_lancamento_financeiro']) ? $favorecidoItem['cod_favorecido_lancamento_financeiro'] : null; $favTitLanFinTO->cod_lancamento_financeiro = $lanFinTO->cod_lancamento_financeiro; $favTitLanFinTO->vlr_correspondente = $favorecidoItem['vlr_correspondente']; $favTitLanFinTO->dsc_observacao_adicional = isset($favorecidoItem['dsc_observacao_adicional']) ? $favorecidoItem['dsc_observacao_adicional'] : ""; $favTitLanFinTO->cod_origem_correspondente = isset($favorecidoItem['cod_origem_correspondente']) ? $favorecidoItem['cod_origem_correspondente'] : ""; switch ($favorecidoItem['favorecido']['type']) { case 'empresas': $favTitLanFinTO->cod_favorecido_fornecedor = $favorecidoItem['favorecido']['data']['cod_empresa']; break; case 'colaboradores': $favTitLanFinTO->cod_favorecido_colaborador = $favorecidoItem['favorecido']['data']['cod_colaborador']; break; case 'terceiros': $favTitLanFinTO->cod_favorecido_terceiro = $favorecidoItem['favorecido']['data']['cod_terceiro']; break; } switch ($favorecidoItem['titularMovimento']['type']) { case 'empresas': $favTitLanFinTO->cod_titular_fornecedor = $favorecidoItem['titularMovimento']['data']['cod_empresa']; break; case 'colaboradores': $favTitLanFinTO->cod_titular_colaborador = $favorecidoItem['titularMovimento']['data']['cod_colaborador']; break; case 'terceiros': $favTitLanFinTO->cod_titular_terceiro = $favorecidoItem['titularMovimento']['data']['cod_terceiro']; break; } $favTitLanFinDAO = new FavorecidoTitularLancamentoFinanceiroDao(); if (!$favTitLanFinTO->cod_favorecido_lancamento_financeiro) { // insert if (!$favTitLanFinDAO->saveFavorecidoTitularLancamentoFinanceiro($favTitLanFinTO)) { Flight::halt(500, 'Erro ao associar Favorecido/Titular do Movimento ao Lançamento'); } } else { if ($favTitLanFinTO->cod_favorecido_lancamento_financeiro && $favorecidoItem['flg_removido'] == "false") { // update if (!$favTitLanFinDAO->updateFavorecidoTitularLancamentoFinanceiro($favTitLanFinTO)) { Flight::halt(500, 'Erro ao atualizar Favorecido/Titular do Movimento'); } } else { if ($favTitLanFinTO->cod_favorecido_lancamento_financeiro && $favorecidoItem['flg_removido'] == "true") { // delete if (!$favTitLanFinDAO->deleteFavorecidoTitularLancamentoFinanceiro($favTitLanFinTO)) { Flight::halt(500, 'Erro ao excluir Favorecido/Titular do Movimento!'); } } } } } } else { // Se não... $favTitLanFinTO = new FavorecidoTitularLancamentoFinanceiroTO(); $favTitLanFinTO->cod_lancamento_financeiro = $lanFinTO->cod_lancamento_financeiro; $favTitLanFinTO->vlr_correspondente = $lanFinTO->vlr_realizado != "" ? $lanFinTO->vlr_realizado : $lanFinTO->vlr_previsto; $favTitLanFinTO->dsc_observacao_adicional = $lanFinTO->dsc_observacao; $favTitLanFinTO->cod_origem_correspondente = $lanFinTO->cod_origem_despesa; if (isset($_POST['favorecido'])) { switch ($_POST['favorecido']['type']) { case 'empresas': $favTitLanFinTO->cod_favorecido_fornecedor = $_POST['favorecido']['data']['cod_empresa']; break; case 'colaboradores': $favTitLanFinTO->cod_favorecido_colaborador = $_POST['favorecido']['data']['cod_colaborador']; break; case 'terceiros': $favTitLanFinTO->cod_favorecido_terceiro = $_POST['favorecido']['data']['cod_terceiro']; break; } } if (isset($_POST['titularMovimento'])) { switch ($_POST['titularMovimento']['type']) { case 'empresas': $favTitLanFinTO->cod_titular_fornecedor = $_POST['titularMovimento']['data']['cod_empresa']; break; case 'colaboradores': $favTitLanFinTO->cod_titular_colaborador = $_POST['titularMovimento']['data']['cod_colaborador']; break; case 'terceiros': $favTitLanFinTO->cod_titular_terceiro = $_POST['titularMovimento']['data']['cod_terceiro']; break; } } $favTitLanFinDAO = new FavorecidoTitularLancamentoFinanceiroDao(); if ($statusCode == 201) { // insert if (!$favTitLanFinDAO->saveFavorecidoTitularLancamentoFinanceiro($favTitLanFinTO)) { Flight::halt(500, 'Erro ao associar Favorecido/Titular do Movimento ao Lançamento'); } } else { if ($statusCode == 200) { // update if (!$favTitLanFinDAO->updateFavorecidoTitularLancamentoFinanceiro($favTitLanFinTO)) { Flight::halt(500, 'Erro ao atualizar Favorecido/Titular do Movimento'); } } } } if ($_POST['flg_lancamento_recorrente'] === "true" || $_POST['flg_lancamento_recorrente'] === "1") { // Se o lançamento for parcelado... $addMoreItems = true; if ($statusCode == 201 && $cod_lancamento_pai == null && ($lanFinTO->cod_lancamento_pai == "" || $lanFinTO->cod_lancamento_pai == null || $lanFinTO->cod_lancamento_pai == "NULL")) { // é um novo registro $cod_lancamento_pai = $lanFinTO->cod_lancamento_financeiro; } else { if ($statusCode == 200) { // esta atualizando $addMoreItems = false; /*$cod_lancamento_pai = $lanFinTO->cod_lancamento_pai; if(!$cod_lancamento_pai) $cod_lancamento_pai = $lanFinTO->cod_lancamento_financeiro; $filtro = array('nolimit'=>'1', 'cod_lancamento_financeiro' => array('exp' => "=". $lanFinTO->cod_lancamento_financeiro ." OR cod_lancamento_pai=". $cod_lancamento_pai ." OR cod_lancamento_financeiro=". $cod_lancamento_pai)); $itensAssociados = $lanFinDao->getLancamentosFinanceiros($filtro)['rows']; if((int)$lanFinTO->qtd_parcelas > count($itensAssociados)) { // se aumentou a quantidade de parcelas... foreach ($itensAssociados as $index => $value) { $lanFinDao->atualizaQtdParcelasLancamentoFinanceiro( $lanFinTO->qtd_parcelas, $lanFinTO->vlr_orcado, $lanFinTO->vlr_previsto, $lanFinTO->vlr_realizado, $value['cod_lancamento_financeiro']); } $lanFinTO->dta_vencimento = $itensAssociados[count($itensAssociados)-1]['dta_vencimento']; // pego a data de vencimento do último lançamento $num_parcela_processar = count($itensAssociados)-1; } else if((int)$lanFinTO->qtd_parcelas < count($itensAssociados)) { // se diminuiu a quantidade de parcelas $addMoreItems = false; foreach ($itensAssociados as $index => $value) { $lanFinDao->atualizaQtdParcelasLancamentoFinanceiro( $lanFinTO->qtd_parcelas, $lanFinTO->vlr_orcado, $lanFinTO->vlr_previsto, $lanFinTO->vlr_realizado, $value['cod_lancamento_financeiro']); } $countItemsToDelete = count($itensAssociados) - (int)$lanFinTO->qtd_parcelas; $countDelete = 0; for ($i=count($itensAssociados); $i > 0; $i--) { if($countDelete < $countItemsToDelete) { $lanFinDao->deleteLancamentoFinanceiro($itensAssociados[$i-1]['cod_lancamento_financeiro'], null, 'NULL', false); $countDelete++; } else break; } }*/ } } if ($addMoreItems) { $lanFinTO->cod_lancamento_financeiro = null; $lanFinTO->cod_lancamento_pai = $cod_lancamento_pai; if ((int) $lanFinTO->qtd_dias_recorrencia != 30) { $date = new DateTime(str_replace("'", "", $lanFinTO->dta_vencimento)); $date->add(new DateInterval('P' . $lanFinTO->qtd_dias_recorrencia . 'D')); $lanFinTO->dta_vencimento = $date->format('Y-m-d'); } else { $lanFinTO->dta_vencimento = geraDataProximoMes(str_replace("'", "", $lanFinTO->dta_vencimento)); } $lanFinTO->dta_competencia = ""; $lanFinTO->dta_emissao = ""; $lanFinTO->dta_pagamento = ""; $lanFinTO->num_nota_fatura = ""; $lanFinTO->num_documento_banco = ""; $lanFinTO->num_lancamento_contabil = ""; $lanFinTO->vlr_realizado = null; $lanFinTO->vlr_previsto = null; $lanFinTO->vlr_juros = null; $lanFinTO->vlr_desconto = null; $num_parcela_processar++; LancamentoFinanceiroController::processSaveLancamentoFinanceiro($lanFinTO, $cod_lancamento_pai, $num_parcela_processar, $statusCode, $successMessage); } } } } else { Flight::halt($statusCode, $successMessage); } }