'Todas' ,0 => 'Aguardando Pagamento', 1 => 'Pago', 2 => 'Cancelado', 3 => 'Vencido'); public static $_arrayStatusEntrega = array(0 => 'Preparando Pedido', 1 => 'Enviado', 2 => 'Entregue'); public static $_arrayTiposFatura = array(0 => 'Venda direta', 1 => 'Adesão', 2 => 'Upgrade', 3 => 'Mensalidade'); const ORIGEM_BAIXA_MANUAL = 0; const ORIGEM_BAIXA_RETORNO_CNAB = 1; const ORIGEM_BAIXA_PAYPAL = 2; const ORIGEM_BAIXA_AUTOMATICA_CREDITOS = 4; const ORIGEM_BAIXA_ASTROPAY = 5; const ORIGEM_BAIXA_API = 6; const ORIGEM_BAIXA_CDR = 7; const TIPO_FATURA_ADESAO = 1; const TIPO_FATURA_UPGRADE = 2; const TIPO_FATURA_MENSALIDADE = 3; const TIPO_FATURA_COMPRA_CREDITOS = 4; public function init() { $this->_helper->layout()->setLayout('public_internas'); } public function indexAction() { $this->view->situacoes = $this->_situacoesPagamento; $this->view->formasPagamento = Backoffice_TipoPagamentoController::retornaTiposPagamentoOptionsTodos(); $this->view->statusEntrega = self::$_arrayStatusEntrega; $this->view->tiposFatura = self::$_arrayTiposFatura; } public function consultarfaturasAction() { // desabilitando o layout e renderizacao $this->_helper->layout()->disableLayout(true); $this->getHelper('viewRenderer')->setNoRender(true); $post = $this->getRequest()->getPost(); $exibirRetiradaNoLocal = ""; $exibirAlertaEntrega = ""; switch (@$post['situacao']) { case '3': $situacao = " AND f.confirmado <> 1 AND f.data_vencimento < DATE(now())"; break; case '': $situacao = null; break; default: $situacao = " AND f.confirmado={$post['situacao']}"; break; } if (isset($post['idCadastro']) && $post['idCadastro'] != "") $idCadastro = (Int) $post['idCadastro']; else $idCadastro = "NULL"; if (isset($post['login']) && $post['login'] != "") $login = "'" . strtolower($post['login']) . "'"; else $login = "NULL"; if (isset($post['cpf']) && $post['cpf'] != "") $cpf = "'" . $post['cpf'] . "'"; else $cpf = "NULL"; if (isset($post['statusEntrega']) && $post['statusEntrega'] != "") $statusEntrega = (Int) $post['statusEntrega']; else $statusEntrega = "NULL"; if (isset($post['tipoFatura']) && $post['tipoFatura'] != "") $tipoFatura = (Int) $post['tipoFatura']; else $tipoFatura = "NULL"; if (isset($post['idFatura']) && $post['idFatura'] != ""){ $idFatura = (Int) $post['idFatura']; }else { if(isset($_GET["idFatura"]) && $_GET["idFatura"] != "" && $_GET["idFatura"] != null){ $idFatura = $_GET["idFatura"]; $exibirRetiradaNoLocal = ""; $tipoData = 2; }else{ $idFatura = "NULL";} } if (isset($post['formaPagamento']) && $post['formaPagamento'] != "") $formaPagamento = (Int) $post['formaPagamento']; else $formaPagamento = "NULL"; if (isset($post['dataInicio']) && $post['dataInicio'] != "") { $dataInicio = "'" . UtilController::datePtBrToEnUS($post['dataInicio']) . "'"; }else{ $dataInicio = "NULL"; } if (isset($post['dataTermino']) && $post['dataTermino'] != "") { $dataTermino = "'" . UtilController::datePtBrToEnUS($post['dataTermino']) . "'"; }else{ $dataTermino = "NULL"; } $filtrarCidade = ""; $filtrarEstado = ""; if (isset($post['cidade']) && $post['cidade'] != "") { $cidade = $post['cidade']; $filtrarCidade = " AND ((c.cidade = '$cidade'))"; }else { $cidade = "NULL"; } //---- if (isset($post['tipoData']) && $post['tipoData'] != "") { $tipoData = $post['tipoData']; }else { $cidade = "NULL"; } ///---- if (isset($post['estado']) && $post['estado'] != "") { $estado = $post['estado']; $filtrarEstado = " AND ((c.estado = '$estado'))"; }else $estado = "NULL"; if($tipoData=="1"){ $campoData = "f.data_pagamento"; }elseif($tipoData=="2"){ $campoData = "f.data_fatura"; } $sqlPametros = "SET @ID_CADASTRO = {$idCadastro}, @LOGIN = {$login}, @CPF = {$cpf}, @ID_FATURA = {$idFatura}, @STATUS_ENTREGA = {$statusEntrega}, @TIPO_FATURA = {$tipoFatura}, @FORMA_PAGAMENTO = {$formaPagamento}, @DATA_INICIO = {$dataInicio}, @DATA_TERMINO = {$dataTermino};"; $sqlFaturas = "SELECT *, f.id AS idFatura, f.id_cdr AS idCdr, m.id AS idMovimento, c.id AS idCadastro, u.id AS idUsuario, u.login AS login, f.confirmado as confirmado FROM faturas f LEFT JOIN controle_movimento m ON (id_movimento = m.id) LEFT JOIN usuarios u ON (u.iD = m.id_usuario) LEFT JOIN cadastros c ON (c.id = u.id_cadastro) WHERE ((f.id = @ID_FATURA) OR (@ID_FATURA is null)) AND ((f.status_entrega = @STATUS_ENTREGA) OR (@STATUS_ENTREGA is NULL)) AND ((f.tipo_fatura = @TIPO_FATURA) OR (@TIPO_FATURA is NULL)) AND ((c.id = @ID_CADASTRO) OR (@ID_CADASTRO is null)) AND ((LOWER(u.login) = @LOGIN) OR (@LOGIN is null)) AND ((c.cpf = @CPF) OR (@CPF is null)) AND ((tipo = @FORMA_PAGAMENTO) OR (@FORMA_PAGAMENTO is null)) {$filtrarCidade} {$filtrarEstado} {$situacao} AND ( ( @DATA_INICIO is null AND @DATA_TERMINO is null ) OR ( @DATA_INICIO is null AND DATE({$campoData}) <= DATE(@DATA_TERMINO) ) OR ( @DATA_TERMINO is null AND DATE({$campoData}) >= DATE(@DATA_INICIO) ) OR ( DATE({$campoData}) >= DATE(@DATA_INICIO) AND DATE({$campoData}) <= DATE(@DATA_TERMINO) ) ) ORDER BY f.id DESC LIMIT 200;"; // recuperando resource do bando de dados. $db = SessionController::recuperaDBSessao(); $db->query($sqlPametros); // rodando query $result = $db->fetchAll($sqlFaturas); $paginator = Zend_Paginator::factory($result); $paginator->setCurrentPageNumber($this->_getParam('page')); $paginator->setItemCountPerPage($post["itemPerPage"]); $this->view->situacoes = $this->_situacoesPagamento; $this->view->faturas = $paginator; $this->renderScript('faturasadmin/faturasgrid.phtml'); return; } public function retornaFormConfirmacaoPagamento($fatura, $options = null) { $nomeCliente = Backoffice_FaturasController::retornaNomeClientePorIdFatura($fatura->id); $valor = UtilController::formataValorMoedaBR($fatura->valor); $dataAtual = UtilController::retornaDataAtualBR(); $publicUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); $tabelaFormCofirmarPagamento = "
'administrador', 'controller' => 'faturasadmin', 'action' => 'confirmarpagamento'))}'>
Pedido: {$fatura->id}
Cliente: {$nomeCliente}
Valor: {$valor}
Data Pagamento:
Forma Pagamento:
Observaçoes:
Senha:
"; return $tabelaFormCofirmarPagamento; } public function retornaFormConfirmacaoEnvioEntrega($fatura, $options = null, $acaoForm = null) { $nomeCliente = Backoffice_FaturasController::retornaNomeClientePorIdFatura($fatura->id); $valor = UtilController::formataValorMoedaBR($fatura->valor); $dataAtual = UtilController::retornaDataAtualBR(); $publicUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); if ($acaoForm == null || $acaoForm == "") { $acaoForm = $this->view->url(array('module' => 'administrador', 'controller' => 'faturasadmin', 'action' => 'confirmarenvio')); } $tabelaFormCofirmarEnvio = "
Pedido: {$fatura->id}
Cliente: {$nomeCliente}
Valor: {$valor}
Observaçoes:
"; return $tabelaFormCofirmarEnvio; } public function retornaFaturasRetornoBancarioParaProcessamento($arrayRetornoBancario) { if(array_key_exists(0, $arrayRetornoBancario)){ $headerRetorno = $arrayRetornoBancario[0]; $trailerRetorno = $arrayRetornoBancario[count($arrayRetornoBancario)-1]; $arrayFaturas = array(); foreach($arrayRetornoBancario as $linha) { if(array_key_exists("nosso_numero", $linha)){ $linhaInt = (int)$linha["nosso_numero"]; if((int)$linha["nosso_numero"] > 0){ // and ((valor = {$linha["valor"]}) or (valor = {$linha["valor"]} - 1.99)) $sqlFatura="select *, DATE_FORMAT( data_vencimento , '%d/%m/%Y' ) AS data_vencimento, DATE_FORMAT( data_fatura , '%d/%m/%Y' ) AS data_fatura from faturas where id = ".substr($linhaInt,0,strlen($linhaInt)-1)." and ((data_baixa is null) or (data_baixa ='0000-00-00 00:00:00')) and (confirmado <> 1 OR confirmado is null)"; $db = SessionController::recuperaDBSessao(); $stmt = $db->query($sqlFatura); $result = $stmt->fetchAll(); if(array_key_exists(0, $result)){ $result[0]["hd_rt_id_tipo_operacao"] = $headerRetorno["id_tipo_operacao"]; $result[0]["hd_rt_data_gravacao"] = $headerRetorno["data_gravacao"]; $result[0]["hd_rt_sequencial_reg"] = $headerRetorno["sequencial_reg"]; $result[0]["hd_full_file_name"] = $headerRetorno["fullFileName"]; $result[0]["rt_nosso_numero"] = substr($linhaInt,0,strlen($linhaInt)-1); $result[0]["rt_valor"] = $linha["valor"]; $result[0]["rt_data_vencimento"] = $linha["data_vencimento"]; $result[0]["rt_data_ocorrencia"] = $linha["data_ocorrencia"]; $result[0]["rt_valor_recebido"] = $linha["valor_recebido"]; $result[0]["rt_codigo_ocorrencia"] = $linha["codigo_ocorrencia"]; $result[0]["rt_debito_credito"] = $linha["debito_credito"]; $result[0]["rt_sequencial"] = $linha["sequencial"]; $result[0]["rt_codigo_erro_original_remessa"] = $linha["codigo_erro_original_remessa"]; $arrayFaturas[]= $result[0]; } } } } if(count($arrayFaturas) > 0){ if(!array_key_exists(0, $arrayFaturas)){ $result[0]["hd_rt_id_tipo_operacao"] = $headerRetorno["id_tipo_operacao"]; $result[0]["hd_rt_data_gravacao"] = $headerRetorno["data_gravacao"]; $result[0]["hd_rt_sequencial_reg"] = $headerRetorno["sequencial_reg"]; $result[0]["hd_full_file_name"] = $headerRetorno["fullFileName"]; return $result[0]; } } return $arrayFaturas; } return false; } public function retornaFormListaFaturasParaBaixa($arrayFaturas) { if($arrayFaturas != false){ if(!array_key_exists(0, $arrayFaturas) and $arrayFaturas["hd_rt_id_tipo_operacao"] == "RETORNO"){ $faturasEncontradas = 0; }else{ $faturasEncontradas = 1; } $formListaFaturasbaixa = "
"; if($faturasEncontradas == 1){ foreach($arrayFaturas as $fatura){ if($fatura["rt_codigo_ocorrencia"] == "S"){ $faturaLinha = "ERRO: {$fatura["rt_codigo_erro_original_remessa"]}"; }else{ $faturaLinha = ""; } $formListaFaturasbaixa .= ""; } }else{ $formListaFaturasbaixa .= ""; } $formListaFaturasbaixa .= "
Dados das faturas encontradas
em: ".date("d/m/Y")." às".date("h:m:s")."
Cod.Fatura Data da fatura Vencimento Valor
{$faturaLinha} {$fatura["id"]} {$fatura["data_fatura"]} {$fatura["data_vencimento"]} {$fatura["valor"]}
Nenhuma fatura encontrada .
"; if($faturasEncontradas == 1){ $formListaFaturasbaixa .= " "; foreach($arrayFaturas as $fatura){ if($fatura["rt_debito_credito"] == "C"){ $debito_credito = "CRÉDITO"; }elseif($fatura["rt_debito_credito"] == "C"){ $debito_credito = "DÉBITO"; }else{ $debito_credito = ""; } if($fatura["rt_codigo_ocorrencia"] == "N"){ $ocorrencia_erro = "Sem erros."; }elseif($fatura["rt_codigo_ocorrencia"] == "S"){ $ocorrencia_erro = "Erro - {$fatura["rt_codigo_erro_original_remessa"]}"; }else{ $ocorrencia_erro = ""; } $formListaFaturasbaixa .= ""; } $formListaFaturasbaixa .= "
Dados do detalhamento referente a fatura
({$fatura["hd_rt_id_tipo_operacao"]} - {$fatura["hd_rt_data_gravacao"]} - {$fatura["hd_rt_sequencial_reg"]})
Cod.Fatura Valor R$ Vencimento Erro Sequencial
{$fatura["rt_nosso_numero"]} {$fatura["rt_valor"]} {$fatura["rt_data_vencimento"]} {$ocorrencia_erro} {$fatura["rt_sequencial"]}
"; } $formListaFaturasbaixa .= "
"; return $formListaFaturasbaixa; } return false; } public function retornaformfaturasparabaixaviaretornobancarioAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $fullFileName = PATH_ARQUIVO_BANCARIO_RETORNO_SANTANDER_PROCESSAMENTO.$this->getRequest()->getParam('fullFileName'); echo self::retornaFormListaFaturasParaBaixa(self::retornaFaturasRetornoBancarioParaProcessamento(Administrador_RetornobancarioController::retornaArrayProcessamentoArquivoRetornoBancario($fullFileName))); } public function retornaListaFaturasProcessadas ($arrayFaturasProcessadas) { // recuperando resource do banco de dados $db = SessionController::recuperaDBSessao(); $formListaFaturasImpressao = "
"; foreach ($arrayFaturasProcessadas as $fatura) { $sqlFatura ="select * from faturas where id = {$fatura["linha"]}"; $stmt = $db->query($sqlFatura); $results = $stmt->fetchAll(); $dataBaixa = $results[0]["data_baixa"]; $retornoCnab = $results[0]["cnab_retorno"]; $sqlDetalhamentoFatura ="select * from detalhamento_retorno_bancario where id_fatura = {$fatura["linha"]}"; $stmt2 = $db->query($sqlDetalhamentoFatura); $results2 = $stmt2->fetchAll(); $erro = $results2[0]["codigo_aceite"]; $statusErro = $results2[0]["codigo_status_erro"]; if(array_key_exists('sucesso', $fatura)){ if($fatura["sucesso"] === true){ $status = "LIQUIDADA"; }elseif($fatura["sucesso"] === false){ $status = "ERRO"; } } if($dataBaixa != "" or $dataBaixa != "0000-00-00 00:00:00"){ $status = "LIQUIDADA"; }elseif($erro == 'S'){ $status = "ERRO"; } $formListaFaturasImpressao .= ""; } $formListaFaturasImpressao .= "
Dados das faturas liquidadas
em: " .date("d/m/Y") . " às" . date("hh:mm:ss") . "
Status Cod.Fatura Vencimento Baixa Valor
{$status} {$results[0]["id"]} ".UtilController::dateEnUSToPtBr($results[0]["data_vencimento"])." ".UtilController::dateEnUSToPtBr($results[0]["data_baixa"])." {$results[0]["valor"]}
Faturas processadas: ". count($arrayFaturasProcessadas)."
"; return $formListaFaturasImpressao; } public function retornalistafaturasprocessadasAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $getFaturas = $this->getRequest()->getParam('faturasProcessadas'); $arrayFaturasProcessadas = json_decode($getFaturas,true); echo self::retornaListaFaturasProcessadas($arrayFaturasProcessadas); } public function retornalistafaturasprocessadasporarquivoAction() { // recuperando resource do banco de dados $db = SessionController::recuperaDBSessao(); // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $arquivo = $this->getRequest()->getParam('fullFileName'); $sqlArquivos ="select drb.* from detalhamento_retorno_bancario drb left join arquivos_bancarios ab on ab.full_file_name ='".PATH_ARQUIVO_BANCARIO_RETORNO_SANTANDER_PROCESSAMENTO.$arquivo."' inner join faturas f on f.cnab_retorno = ab.id where drb.id_fatura = f.id"; $stmt = $db->query($sqlArquivos); $results = $stmt->fetchAll(); if(count($results) > 0){ foreach ($results as $fatura){ $faturasEncontradas[]["linha"] = $fatura["id_fatura"]; } }else{ $faturasEncontradas= array(); } echo self::retornaListaFaturasProcessadas($faturasEncontradas); } public function liquidarfaturasviaretornobancarioAction() { try{ // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $post = $this->getRequest()->getPost(); $post = str_replace("'",'"',$post["faturas"]); $arrayFaturas = json_decode($post); // recuperando resource do banco de dados $db = SessionController::recuperaDBSessao(); // iniciando transação UtilController::beginTransaction(); $data = array(); $erro = array(); $sucesso = array(); $tipoRetorno = 0; $headerFatura = unserialize($arrayFaturas[0]); if($headerFatura["hd_rt_id_tipo_operacao"] == "RETORNO"){ $tipoRetorno = 1; }else{ $data['sucesso'] = false; $data['msg'] = "Tipo de arquivo de retorno fora do padrão esperado."; die(json_encode($data)); } if(is_array($headerFatura)){ $arquivoBancario = Administrador_ArquivosbancariosController::retornaNovoObjArquivoBancario(); $usuario = UsuariosController::retornaUsuarioLogado(); $arquivoBancario->setFullFileName($headerFatura["hd_full_file_name"]) ->setDescricao('Arquivo do tipo '.$headerFatura["hd_rt_id_tipo_operacao"]) ->setDatahoraGravacao(UtilController::datePtBrToEnUS($headerFatura["hd_rt_data_gravacao"])) ->setIdUsuario($usuario->id) ->setTipoRetorno($tipoRetorno) ->setSequencial($headerFatura["hd_rt_sequencial_reg"]) ->setDatahoraTransacao(date("Y-m-d H:i:s")) ->save(); $sql="SELECT LAST_INSERT_ID() as id"; $stmt = $db->query($sql); $results = $stmt->fetchAll(); $lastId = $results[0]["id"]; $idArquivo = $lastId; $i = 0; foreach($arrayFaturas as $faturaLinha){ $fatura = unserialize($faturaLinha); $status = ""; if($fatura["rt_codigo_ocorrencia"] == "N"){ $idStatusConfirmacaoBancaria = 3; }elseif($fatura["rt_codigo_ocorrencia"] == "S"){ $idStatusConfirmacaoBancaria = 2; } if($fatura["rt_nosso_numero"] != "" and $idArquivo != ""){ if(self::Confirmarpagamentofatura($fatura["rt_nosso_numero"],1,$idArquivo,false)){ $sqlFatura ="select data_baixa,cnab_retorno from faturas where id = {$fatura["rt_nosso_numero"]}"; $stmt = $db->query($sqlFatura); $results = $stmt->fetchAll(); $dataBaixa = $results[0]["data_baixa"]; $retornoCnab = $results[0]["cnab_retorno"]; if($idArquivo == $retornoCnab){ if($dataBaixa != '0000-00-00 00:00:00' and $dataBaixa != ""){ $sucesso[$i]['sucesso'] = true; $status = 'Fatura liquidada com sucesso.'; $sucesso[$i]['linha'] = $fatura['rt_nosso_numero']; }else{ $sucesso[$i]['sucesso'] = false; $status = 'Data da baixa da fatura inválida ou vázia.'; $sucesso[$i]['linha'] = $fatura['rt_nosso_numero']; } }else{ $sucesso[$i]['sucesso'] = false; $status = 'O id do arquivo de retorno é diferente do id encontrado na fatura liquidada.'; $sucesso[$i]['linha'] = $fatura['rt_nosso_numero']; } }else{ $sucesso[$i]['sucesso'] = false; $status = 'Erro no método de liquidar fatura.'; $sucesso[$i]['linha'] = $fatura['rt_nosso_numero']; } }else{ $sucesso[$i]['sucesso'] = false; $status = 'Número da fatura inválido .'; $sucesso[$i]['linha'] = $fatura['rt_nosso_numero']; } $detalhamentoProcessamentoRetornoBancario = Administrador_DetalhamentoretornobancarioController::retornaNovoObjDetalhamentoRetornoBancario(); $detalhamentoProcessamentoRetornoBancario->setIdFatura($fatura["rt_nosso_numero"]) ->setIdArquivo($idArquivo) ->setIdStatusConfirmacaoBancaria($idStatusConfirmacaoBancaria) ->setStatusBaixaFatura($status) ->setDatahoraConfirmacao(UtilController::datePtBrToEnUS($fatura["rt_data_ocorrencia"])) ->setDatahoraTransacao(date("Y-m-d H:i:s")) ->setCodigoAceite($fatura["rt_codigo_ocorrencia"]) ->setCodigoStatusErro($fatura["rt_codigo_erro_original_remessa"]) ->setLinhaArquivo(serialize($faturaLinha)) ->save(); $i++; } UtilController::commit(); $mudar = copy($headerFatura["hd_full_file_name"], str_replace(PATH_ARQUIVO_BANCARIO_RETORNO_SANTANDER_PROCESSAMENTO, PATH_ARQUIVO_BANCARIO_RETORNO_SANTANDER_PROCESSADOS, $headerFatura["hd_full_file_name"])); // copia $mudar = unlink ($headerFatura["hd_full_file_name"]); // remove $data['processamentoFaturas'] = $sucesso; $data['sucesso'] = true; $data['msg'] = "Fatura(s) liquidadas com sucesso."; die(json_encode($data)); }else{ // voltando a transacao do banco de dados UtilController::rollback(); $data['sucesso'] = false; $data['msg'] = "Erro ao recuperar dados da(s) fatura(s)."; die(json_encode($data)); } }catch (Exception $e){ // voltando a transacao do banco de dados UtilController::rollback(); // lancando exceção $data['sucesso'] = false; $data['msg'] = "Erro ao liquidar fatura: " . $e->getMessage(); die(json_encode($data)); } } public function exibirformconfirmacaopagamentoAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); if ($fatura) { $this->view->fatura = $fatura; $this->view->formaPagamento = array('cformaPagamento' => $fatura->tipo); $this->renderScript('faturasadmin/confirmarpagamento.phtml'); return; } echo "Pedido não encontrado."; return; } public function exibirformconfirmacaoenvioentregaAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $params = $this->getRequest()->getParams(); $idFatura = $params['idFatura']; $fatura = Backoffice_FaturasController::retornaNovoObjFaturas(); $fatura->find($idFatura); if (isset($params['entrega'])) { $acaoForm = $this->view->url(array('module' => 'administrador', 'controller' => 'faturasadmin', 'action' => 'confirmarentrega')); }else{ $acaoForm = null; } if ($fatura->id) { echo self::retornaFormConfirmacaoEnvioEntrega($fatura, null, $acaoForm); }else echo "Pedido não encontrado."; return; } /** * Realiza a confirmação do pagamento da fatura (baixa manual) * */ public function confirmarpagamentoAction() { try { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $this->_response->setHeader('Content-Type', 'text/json'); $post = $this->getRequest()->getParams(); if (UtilController::retornaStringEncriptada($post['senha']) !== SENHA_FINANCEIRA) { $this->_response->setBody(json_encode(array('erro' => 1, 'msg' => 'Senha financeira incorreta.'))); return; } $retorno = self::confirmarPagamentoFatura($post['id'], null, null, true, $post['dataPagamento'], $post['forma'], $post['memo'], false, $post['enviarBling']); if (isset($retorno['erro'])) { $this->_response->setBody(json_encode(array('erro' => 1, 'msg' => $retorno['erro']))); return; } $fatura = Backoffice_FaturasController::retornaFaturaPorId($post['id']); $formaPagamento = Backoffice_TipoPagamentoController::retornaTipoPagamentoPorId($fatura->getTipo()); $dataBaixa = UtilController::dateEnUSToPtBr($fatura->dataBaixa); $this->_response->setBody(json_encode(array('erro' => 0, 'id' => $fatura->id, 'msg' => 'Pagamento confirmado com sucesso.', 'forma' => $formaPagamento->getNome(), 'dataBaixa' => $dataBaixa))); return; }catch(Exception $e) { $this->_response->setBody(json_encode(array('erro' => 1, 'Erro na confirmação do pagamento: ' . $e->getMessage()))); return; } } public function cancelarfaturaAction() { try { // desabilitando o layout $this->_helper->layout()->disableLayout(true); $this->_response->setHeader('Content-Type', 'text/json'); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); UtilController::beginTransaction(); $post = $this->getRequest()->getParams(); $fatura = Backoffice_FaturasController::retornaNovoObjFaturas()->find($post['id']); if (UtilController::retornaStringEncriptada($post['senha']) !== SENHA_FINANCEIRA) { $this->_response->setBody(json_encode(array('erro' => 1, 'msg' => 'Senha financeira incorreta.'))); return; } if ($fatura->id != null) { if (($fatura->dataCancelamento == null || $fatura->dataCancelamento == '0000-00-00 00:00:00')) { $fatura->dataCancelamento = UtilController::retornaDataAtualUS(true); $fatura->confirmado = 2; $fatura->origemBaixa = UsuariosController::retornaUsuarioLogado()->id; $fatura->memo = $post['memo']; $fatura->save(); $creditosDistribuidor = Backoffice_CreditosController::retornaCreditosPorIdFatura($fatura->id); if ($creditosDistribuidor) { // devolvendo credito para o distribuidor foreach ($creditosDistribuidor as $credito) { $novoCreditoDistribuidor = Backoffice_CreditosController::retornaNovoObjCreditos(); $novoCreditoDistribuidor->idCadastro = $credito->idCadastro; $novoCreditoDistribuidor->idFatura = $credito->idFatura; $novoCreditoDistribuidor->tipo = 0; $novoCreditoDistribuidor->valorCredito = $credito->valorCredito * (-1); $novoCreditoDistribuidor->data = UtilController::retornaDataAtualUS(true); $novoCreditoDistribuidor->log = "Cancelamento pedido"; $novoCreditoDistribuidor->sacavel = $credito->sacavel; $novoCreditoDistribuidor->save(); } } // recuperando bonus relacionados a fatura $bonusFatura = Backoffice_BonusController::retornaNovoObjBonus()->fetchList("id_fatura = {$fatura->id}"); // excluindo bonus if (count($bonusFatura) > 0) { foreach ($bonusFatura as $bonus) { $bonus->delete(); } } // finalizando transação com banco de dados UtilController::commit(); $this->_response->setBody(json_encode(array('erro' => 0, 'id' => $fatura->id, 'msg' => 'Pedido cancelado com sucesso.'))); return; } } UtilController::rollback(); $this->_response->setBody(json_encode(array('erro' => 1, 'id' => $fatura->id, 'msg' => 'Pedido não encontrado.'))); return; }catch(Exception $e) { UtilController::rollback(); $this->_response->setBody(json_encode(array('erro' => 1, 'Erro no cancelamento do pedido: ' . $e->getMessage()))); return; } } public function exibirformcancelamentoAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); if ($fatura) { $this->view->fatura = $fatura; $this->renderScript('faturasadmin/cancelarpagamento.phtml'); return; } echo "Pedido não encontrado."; return; } public function confirmarenvioAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); $memo = $this->getRequest()->getParam('memo'); if ($fatura != false && $fatura->confirmado == 1 && $fatura->statusEntrega == 0) { $fatura->statusEntrega = 1; $fatura->origemEnvio = UsuariosController::retornaUsuarioLogado()->id; $fatura->memoEnvio = $memo; $fatura->save(); //Backoffice_EnderecoEntregaController::finalizaCompraConjunta($fatura->id); //salvando log $user = UsuariosController::retornaUsuarioLogado(); Administrador_LoggeralController::insere($user->getId(), $_SERVER['REMOTE_ADDR'], "Confirma��o de Envio Fatura ID {$idFatura}- {$memo} .", "administrador/faturasadmin/confirmarenvio"); echo "Envio confirmado com sucesso."; } return; } public function confirmarentregaAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); $memo = $this->getRequest()->getParam('memo'); if ($fatura != false && $fatura->confirmado == 1 && $fatura->statusEntrega == 1) { $fatura->statusEntrega = 2; $fatura->origemEntrega = UsuariosController::retornaUsuarioLogado()->id; $fatura->memoEntrega = $memo; $fatura->save(); //salvando log $user = UsuariosController::retornaUsuarioLogado(); Administrador_LoggeralController::insere($user->getId(), $_SERVER['REMOTE_ADDR'], "Confirma��o de Entrega Fatura ID {$idFatura}- {$memo} .", "administrador/faturasadmin/confirmarentrega"); echo "Entrega confirmada com sucesso."; } return; } /** * */ public function exibirobservacoesenvioentregaAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); if ($fatura->origemEnvio) $origemEnvio = "(".UsuariosController::retornaUsuarioPorId($fatura->origemEnvio)->login.")"; else $origemEnvio = ""; if ($fatura->origemEntrega) $origemEntrega = "(".UsuariosController::retornaUsuarioPorId($fatura->origemEntrega)->login.")"; else $origemEntrega = ""; if ($fatura->origemBaixa) $origemBaixa = "(".UsuariosController::retornaUsuarioPorId($fatura->origemBaixa)->login.")"; else $origemBaixa = ""; $htmlRetorno = "Observações de Envio:

{$fatura->memoEnvio}

$origemEnvio




Observações de Entrega:

{$fatura->memoEntrega}

$origemEntrega



Observações da Baixa:

{$fatura->memo}

$origemBaixa


"; echo $htmlRetorno; return; } public function cancelamentofaturasAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $str = "UPDATE `faturas` set data_baixa=null, confirmado='2' WHERE (data_baixa = '0000-00-00 00:00:00' or data_baixa is NULL ) AND data_cancelamento is not null "; $db = SessionController::recuperaDBSessao(); $stmt = $db->query($str); $result = $stmt->execute(); $str2 = "SELECT A.id AS id_movimento, B.id AS id_fatura, DATE_FORMAT(B.data_fatura, '%Y-%m-%d') AS data_geracao FROM controle_movimento A INNER JOIN faturas B ON A.id = B.id_movimento WHERE B.confirmado = '0' AND (B.data_baixa is NULL OR B.data_baixa = '0000-00-00 00:00:00') AND (DATEDIFF(NOW(), DATE_ADD(B.data_fatura, INTERVAL 8 DAY)) >= 1) ORDER BY B.data_fatura, B.id"; $db = SessionController::recuperaDBSessao(); $stmt = $db->query($str2); $faturas = $stmt->fetchAll(); $dataAtual = UtilController::retornaDataAtualUS(); $resultado = "Faturas Canceladas:

"; foreach ($faturas as $fatura) { $faturaVencida = Backoffice_FaturasController::retornaFaturaPorId($fatura['id_fatura']); $faturaVencida->dataCancelamento = UtilController::retornaDataAtualUS(true); $faturaVencida->confirmado = 2; $faturaVencida->memo = "Cancelamento Automático MVC"; $faturaVencida->save(); //salvando log $user = UsuariosController::retornaUsuarioLogado(); Administrador_LoggeralController::insere($user->getId(), $_SERVER['REMOTE_ADDR'], "Cancelamento Automático MVC- Fatura ID {$fatura['id_fatura']}", "administrador/faturasadmin/cancelamentofaturas"); $creditoCdr = Cdr_CreditosController::retornaCreditoPorIdFatura($faturaVencida->id); $creditoDistribuidor = Backoffice_CreditosController::retornaCreditoPorIdFatura($faturaVencida->id); if ($creditoCdr) { // retirando credito do cdr $novoDebitoCdr = Cdr_CreditosController::retornaNovoObjCreditos(); $novoDebitoCdr->idCdr = $creditoCdr->idCdr; $novoDebitoCdr->idFatura = $creditoCdr->idFatura; $novoDebitoCdr->tipo = 1; $novoDebitoCdr->valorCredito = $creditoCdr->valorCredito * (-1); $novoDebitoCdr->data = UtilController::retornaDataAtualUS(true); $novoDebitoCdr->log = "Cancelamento pedido"; $novoDebitoCdr->save(); } if ($creditoDistribuidor) { // devolvendo credito para o distribuidor $novoCreditoDistribuidor = Backoffice_CreditosController::retornaNovoObjCreditos(); $novoCreditoDistribuidor->idCadastro = $creditoDistribuidor->idCadastro; $novoCreditoDistribuidor->idFatura = $creditoDistribuidor->idFatura; $novoCreditoDistribuidor->tipo = 0; $novoCreditoDistribuidor->valorCredito = $creditoDistribuidor->valorCredito * (-1); $novoCreditoDistribuidor->data = UtilController::retornaDataAtualUS(true); $novoCreditoDistribuidor->log = "Cancelamento pedido"; $novoCreditoDistribuidor->save(); } // recuperando bonus relacionados a fatura $bonusFatura = Backoffice_BonusController::retornaNovoObjBonus()->fetchList("id_fatura = {$faturaVencida->id}"); // excluindo bonus if (count($bonusFatura) > 0) { foreach ($bonusFatura as $bonus) { $bonus->delete(); } } $resultado .= "- {$faturaVencida->id}
"; } echo $resultado; } public function retornaFormCodigoRastreio($idFatura) { $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); $publicUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); $acaoForm = $this->view->url(array('module' => 'administrador', 'controller' => 'faturasadmin', 'action' => 'salvarcodigorastreio')); $tabelaFormCofirmarEnvio = "
Pedido: {$idFatura}
Código para Rastreio:
"; return $tabelaFormCofirmarEnvio; } public function exibirformcodigorastreioAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); echo self::retornaFormCodigoRastreio($idFatura); } public function salvarcodigorastreioAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $post = $this->getRequest()->getPost(); $fatura = Backoffice_FaturasController::retornaFaturaPorId($post['idFatura']); if ($fatura) { $fatura->codigoRastreio = $post['codigoRastreio']; $fatura->save(); //salvando log $user = UsuariosController::retornaUsuarioLogado(); Administrador_LoggeralController::insere($user->getId(), $_SERVER['REMOTE_ADDR'], "Salvar C�digo de Ratrei Fatura ID {$post['idFatura']}.", "administrador/faturasadmin/salvarcodigorastreio"); echo UtilController::retornaMensagemFormatada("Código salvo com sucesso.", "green", 12, "bold"); }else{ echo UtilController::retornaMensagemFormatada("Erro ao salvar.", "red", 12, "bold"); } echo self::retornaFormCodigoRastreio($post['idFatura']); return; } public function exibircodigorastreioAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); echo UtilController::retornaMensagemFormatada("

{$fatura->codigoRastreio}
", "green", 18, "bold"); } public function exibirformlocalretiradaAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); echo self::retornaFormLocalRetirada($idFatura); } public function retornaFormLocalRetirada($idFatura) { $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); $publicUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); $acaoForm = $this->view->url(array('module' => 'administrador', 'controller' => 'faturasadmin', 'action' => 'salvarlocalretirada')); $listaCdrs = Cdr_CdrController::retornaCdrOptions(); if($fatura->idCdr == 0){$faturas_nome = "0 - beebetter Contagem MG";} if($fatura->idCdr == null){$faturas_nome = "0 - beebetter Contagem MG";} if($fatura->idCdr == 26){$faturas_nome = "26 - CDA - SAO LUIS - MA";} if($fatura->idCdr == 23){$faturas_nome = "23 - CDA- Rio de Janeiro - RJ";} if($fatura->idCdr == 24){$faturas_nome = "24 - CDA - ALAGOINHAS - BA";} if($fatura->idCdr == 27){$faturas_nome = "27 - CDA - CABO FRIO - RJ";} if($fatura->idCdr == 25){$faturas_nome = "25 - CDA - CONTAGEM - MG";} if($fatura->idCdr == 28){$faturas_nome = "28 - CDA beebetter GOIANIA";} $tabelaFormLocalRetirada = "
Pedido: {$idFatura}
Local de Retirada Atual
Local de Retirada:
"; return $tabelaFormLocalRetirada; } /** * Salva a alteração do local de retirada * */ public function salvarlocalretiradaAction() { try { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $post = $this->getRequest()->getPost(); $fatura = Backoffice_FaturasController::retornaFaturaPorId($post['idFatura']); $fatura->idCdr = $post['localRetirada']; $fatura->save(); //salvando log $user = UsuariosController::retornaUsuarioLogado(); Administrador_LoggeralController::insere($user->getId(), $_SERVER['REMOTE_ADDR'], "Salvar Local de Reatirada Fatura ID {$post['idFatura']} - {$post['localRetirada']}.", "administrador/faturasadmin/salvarlocalretirada"); echo UtilController::retornaMensagemFormatada("Alteração salva com sucesso.", "green", 14, "bold"); echo self::retornaFormLocalRetirada($fatura->id); }catch (Exception $e) { echo UtilController::retornaMensagemFormatada("Erro ao salvar alteração.", "red", 14, "bold"); } } public static function retornaFaturasPagasPorIdCadastroMesAno($idCadastro, $mes, $ano) { $sql = "SELECT f.id as idFatura, f.data_fatura as data, f.data_baixa as data_baixa, f.valor as valor_fatura, (cm.valor_movimento + (ISNULL(cm.valor_frete))) as valor_movimento, c.id as idCadastro FROM controle_movimento cm LEFT JOIN faturas f ON f.id_movimento = cm.id LEFT JOIN usuarios u ON u.id = cm.id_usuario LEFT JOIN cadastros c ON c.id = u.id_cadastro WHERE c.id = {$idCadastro} AND MONTH( f.data_fatura ) = {$mes} AND YEAR( f.data_fatura ) = {$ano} AND data_baixa is not null AND f.confirmado = 1"; $db = SessionController::recuperaDBSessao(); $stmt = $db->query($sql); $result = $stmt->fetchAll(); if (count($result) > 0) return $result; else return false; } /** * */ public function formentregaAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); if($fatura->idCdr == 0){$faturas_nome = "0 - beebetter";} if($fatura->idCdr == null){$faturas_nome = "0 - beebetter";} if($fatura->idCdr == 26){$faturas_nome = "26 - CDA MA";} if($fatura->idCdr == 23){$faturas_nome = "23 - CDA RJ";} if($fatura->idCdr == 24){$faturas_nome = "24 - CDA BA";} if($fatura->idCdr == 27){$faturas_nome = "27 - CDA CF";} if($fatura->idCdr == 25){$faturas_nome = "25 - CDA - CONTAGEM - MG";} $htmlRetorno = "
'administrador', 'controller' => 'faturasadmin', 'action' => 'savaentrega'))}'>
Fatura
Local de Entrega Atual
Novo Local
"; echo $htmlRetorno; return; } /** * Realiza a consulta de faturas no banco e retorna um array com os resultados * * @return Array */ public function savaentregaAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $post = $this->getRequest()->getPost(); $fatura = Backoffice_FaturasController::retornaFaturaPorId($post['id_fatura']); if ($fatura) { $fatura->idCdr = $post['cda']; $fatura->save(); //salvando log $user = UsuariosController::retornaUsuarioLogado(); Administrador_LoggeralController::insere($user->getId(), $_SERVER['REMOTE_ADDR'], "Salvar Entrega Fatura ID {$post['idFatura']} - {$post['cda']}.", "administrador/faturasadmin/savaentrega"); echo UtilController::retornaMensagemFormatada("Alterado com sucesso.", "green", 12, "bold"); }else{ echo UtilController::retornaMensagemFormatada("Erro ao alterar.", "red", 12, "bold"); } echo ""; return; } public function tirafreteAction(){ // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $sql = "SELECT cm.id FROM controle_movimento cm left join faturas f on (f.id_movimento = cm.id) where f.id = {$idFatura}"; $db = SessionController::recuperaDBSessao(); $stmt = $db->query($sql); $ids = $stmt->fetchAll(); foreach ($ids as $id){$id_movimento = $id["id"];} $sql = "UPDATE `beebetter_mlm_db`.`controle_movimento` SET `valor_frete` = '0' WHERE `controle_movimento`.`id` = {$id_movimento};"; $stmt = $db->query($sql); echo "Frete Removido"; echo ""; } /** * @name trocatipopgAction * Alterar Tipo de Pagamento */ public function trocatipopgAction(){ // Query para fazer update do tipo de Pagamento $sql = "UPDATE `beebetter_mlm_db`.`faturas` SET `tipo` = '{$_POST["tipo"]}' WHERE id = {$_POST["idFatura"]};"; //recupera sessao com BD akteste_mlm_db beebetter_mlm_db $db = SessionController::recuperaDBSessao(); // faz update do tipo de Pagamento $stmt = $db->query($sql); $this->view->form = $this->getFormConsultaFaturas(); $this->renderScript('faturasadmin/index.phtml'); } public function retornaCampoSelectSituacoesPagamento($idSituacaoSelecionada = null) { $selectStatusPagamento = ""; return $selectStatusPagamento; } /** * Metodo para confirmacao de pagamento de uma fatura * * @param Int $idFatura - id da fatura no sistema * @param Int $origemBaixa - inteiro que representa o tipo da baixa vide: constantes deste controlador * @param String|Int $idTransacao - Identificador unico da origem baixa, utilizado nas baixas automaticas (CNAB, PagSeguro, FlexPag) * @param $usarDbTransaction - define se o metodo utilizara db transaction * * @author João Vasconcelos (jdrums2@gmail.com) * @since 12/04/2014 */ public static function confirmarPagamentoFatura($idFatura, $origemBaixa = self::ORIGEM_BAIXA_MANUAL, $idTransacao = NULL, $usarDbTransaction = true, $dataBaixa = NULL, $formaPagamento = null, $obs = null, $baixaApi = false, $enviarBling = true) { if ($usarDbTransaction) UtilController::beginTransaction(); if ( $origemBaixa != self::ORIGEM_BAIXA_CDR && $origemBaixa != self::ORIGEM_BAIXA_AUTOMATICA_CREDITOS && $origemBaixa != self::ORIGEM_BAIXA_MANUAL && $origemBaixa != self::ORIGEM_BAIXA_PAYPAL && $origemBaixa != self::ORIGEM_BAIXA_ASTROPAY && (NULL == $idTransacao || "" == $idTransacao) ) { if ($usarDbTransaction) UtilController::rollback(); return array('erro' => "Para baixas automaticas o parametro \$idTransacao tem que estar preenchido."); } $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); if ($fatura) { $movimento = Backoffice_ControleMovimentoController::retornaMovimentoPorId($fatura->idMovimento); if (($fatura->dataCancelamento == null || $fatura->dataCancelamento == '0000-00-00 00:00:00') && $fatura->confirmado == 0 && ($fatura->dataBaixa == null || $fatura->dataBaixa == '0000-00-00 00:00:00')) { $ativacao = false; switch ($origemBaixa) { case self::ORIGEM_BAIXA_MANUAL: // SO REGISTRA O USUARIO SE NAO FOR UMA BAIXA POR API if (!$baixaApi){ $usuarioLogado = UsuariosController::retornaUsuarioLogado(); if (!$usuarioLogado) { if ($usarDbTransaction) UtilController::rollback(); return array("erro" => "Na baixa manual é preciso existir um usuario logado"); } $fatura->origemBaixa = $usuarioLogado->id; } if (null == $formaPagamento) { if ($usarDbTransaction) UtilController::rollback(); return array("erro" => "Na baixa manual é preciso informar a forma de pagamento"); } $fatura->tipo = $formaPagamento; break; case self::ORIGEM_BAIXA_RETORNO_CNAB: $fatura->cnabRetorno = $idTransacao; $fatura->tipo = Backoffice_TipoPagamentoController::retornaTipoPagamentoPorNome(TIPO_PAGAMENTO_BOLETO_BANCARIO)->id; break; case self::ORIGEM_BAIXA_PAYPAL: $fatura->memo = "Baixa automática - PayPal"; $fatura->tipo = Backoffice_TipoPagamentoController::retornaTipoPagamentoPorNome(TIPO_PAGAMENTO_PAYPAL)->id; break; case self::ORIGEM_BAIXA_AUTOMATICA_CREDITOS: $fatura->tipo = Backoffice_TipoPagamentoController::retornaTipoPagamentoPorTipo("CREDITOS")->id; break; case self::ORIGEM_BAIXA_ASTROPAY: $fatura->memo = "Baixa automática - Boleto AstroPay"; $fatura->tipo = Backoffice_TipoPagamentoController::retornaTipoPagamentoPorNome(TIPO_PAGAMENTO_ASTROPAY)->id; $fatura->idTransacaoFlexpag = $idTransacao; break; } if ($dataBaixa != NULL) { $fatura->dataBaixa = UtilController::datePtBrToEnUS($dataBaixa); $fatura->dataPagamento = UtilController::datePtBrToEnUS($dataBaixa); }else{ $fatura->dataBaixa = UtilController::retornaDataAtualUS(true); $fatura->dataPagamento = UtilController::retornaDataAtualUS(true); } $fatura->confirmado = 1; if (null != $obs) { $fatura->memo = $obs; } //recuperando cadastro por ID Fatura $cadastro = Backoffice_CadastroController::retornaCadastroPorIdFatura($fatura->id); $produtosMovimento = Backoffice_ProdutosMovimentoController::retornaProdutosPorIdMovimento($fatura->idMovimento); $totalPontos = 0; $compraCreditos = false; if (!is_array($produtosMovimento) || !count($produtosMovimento)) { if ($usarDbTransaction) UtilController::rollback(); return array("erro" => "Nenhum item encontrado na fatura."); } $nivel = Backoffice_NiveisController::retornaNivelPorId(@$cadastro->idNivel); foreach ($produtosMovimento as $produto) { /* if ($produto->idProduto == ID_PRODUTO_CREDITOS) { $compraCreditos = true; break; } */ // recuperando o obj produto $objProduto = Shopping_ProdutosController::retornaProdutoPorId($produto->idProduto); $pontos = $objProduto->getPontos() * $produto->quantidade; $idProdutoAtivacao = false; if ($nivel && $nivel->idProdutoAtivacao == $objProduto->id) $idProdutoAtivacao = true; // verificando se eh produto de adesao if ($objProduto->ativacao) { $ativacao = true; // recuperando nivel gerado pela compra do produto $nivelProduto = Backoffice_NiveisController::retornaNivelPorId($objProduto->idNivel); if ($nivelProduto && $cadastro instanceof Core_Model_Cadastros) { $cadastro->setIdNivel($nivelProduto->id); $cadastro->ativo = 1; $cadastro->dataAtivacao = UtilController::retornaDataAtualUS(true); $cadastro->save(); if ($fatura->tipoFatura != self::TIPO_FATURA_UPGRADE) $fatura->setTipoFatura(self::TIPO_FATURA_ADESAO); $fatura->setIdNivel($nivelProduto->id); $fatura->save(); } } $totalPontos += $pontos; } $movimento->pontos = $totalPontos; $movimento->save(); if ($cadastro instanceof Core_Model_Cadastros) { $cadastroAtivo = (Backoffice_CadastroController::verificaAtividade($cadastro->id)); $dataLimiteAtivacao = Backoffice_ControleMovimentoController::retornaDataLimiteAtivacaoIdCadastro($cadastro->id); $valorConsumoManutencaoMensal = Shopping_ProdutosController::retornaTotalCompraManutencaoPeriodoAtual($cadastro->id); $cadastro->save(); $fatura->save(); if ($ativacao) { // posicionando cadastro na rede binaria if (POSICIONAMENTO_BINARIO == Backoffice_BinarioController::POSICIONAR_NA_ADESAO) { Backoffice_BinarioController::posicionarBinario($cadastro->id, $cadastro->indicanteId); Backoffice_BinarioController::gerarIndicadoresEmBackground(); } Administrador_BonusUnilevelController::gerarBonusUnilevel($fatura, Backoffice_RegrasBonusController::retornaRegrasBonusPorSigla('BID')); }else if (!$ativacao) { if ($nivel) { if ( (Administrador_AtivacaoMensalController::verificaAtivacaoMensalCompraMinima($nivel, $valorConsumoManutencaoMensal, $movimento) || Administrador_AtivacaoMensalController::verificaAtivacaoMensalProduto($nivel, $idProdutoAtivacao)) && !Administrador_FaturasadminController::verificaCompraAtivacaoMesAtual($cadastro->id) ) { if ($cadastroAtivo) { if ($dataLimiteAtivacao) { $fatura->setDataBaixa($dataLimiteAtivacao); } } $fatura->setTipoFatura(self::TIPO_FATURA_MENSALIDADE); $fatura->save(); Administrador_BonusUnilevelController::gerarBonusUnilevel($fatura, Backoffice_RegrasBonusController::retornaRegrasBonusPorSigla('BA')); } } } } if ($compraCreditos) { $novoCredito = Backoffice_CreditosController::retornaNovoObjCreditos(); $novoCredito->setIdCadastro($cadastro->id); $novoCredito->setData(UtilController::retornaDataAtualUS(true)); $novoCredito->setidFatura($fatura->id); $novoCredito->setLog("Compra de créditos pelo Distribuidor"); $novoCredito->setValorCredito($fatura->getValor()); $novoCredito->setTipo(0); $novoCredito->save(); } $respostaBling = "OK"; $enviadoErp = 0; if ($enviarBling) { if (BLING_EXPORT_ACTIVE && strpos($_SERVER['HTTP_HOST'], 'teste.') === false && $fatura->getEnviadoErp() != 1) { // enviando pedido para o bling $url = URL_API_BLING; $xml = self::gerarXmlFaturaBling($fatura->id); if ($xml) { $data = "apiKey=" . CHAVE_API_BLING . "&pedidoXML=" . urlencode($xml); $respostaBling = self::enviarPedidoREST($url, $data); $enviadoErp = 1; } } } if ($respostaBling == "OK") { $fatura->setEnviadoErp($enviadoErp); $fatura->save(); // finalizando transação com banco de dados if ($usarDbTransaction) UtilController::commit(); return array('msg' => 'Pagamento confirmado com sucesso.'); }else{ if ($usarDbTransaction) UtilController::rollback(); return array('erro' => "Erro na importacao para o Bling: {$respostaBling}."); } }else{ return array('erro' => "Fatura com pagamento já confirmado ou cancelada."); } }else{ if ($usarDbTransaction) UtilController::rollback(); return array('erro' => "Fatura {$idFatura} não encontrada."); } } public static function enviarPedidoREST($url, $data){ $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_POST, 2); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $data); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); $response = curl_exec($curl_handle); curl_close($curl_handle); return $response; } public static function gerarXmlFaturaBling($idFatura) { $fatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); $movimento = Backoffice_ControleMovimentoController::retornaMovimentoPorId($fatura->idMovimento); $usuario = UsuariosController::retornaUsuarioPorId($movimento->idUsuario); $cadastro = Backoffice_CadastroController::retornaCadastroPorId($usuario->idCadastro); if ($cadastro->getTipoCadastro() == 0) { $tipoPessoa = "F"; $docPessoa = UtilController::retiraCaracteresString(array('.', '-'), $cadastro->getCPF()); }else{ $tipoPessoa = "J"; $docPessoa = UtilController::retiraCaracteresString(array('.', '-', '/'), $cadastro->getCnpj()); } $cep = $cadastro->getCep(); $antes = substr($cep, 0, 2); $depois = substr($cep, 2); $cep = $antes . "." . $depois; $estado = $cadastro->getEstado(); if (strlen($estado) > 2) { $estados = Core_Model_Estados::retornaEstadosOptions(); $estado = array_search($estado, $estados); } $produtosFatura = ""; $produtosMovimento = Backoffice_ProdutosMovimentoController::retornaProdutosPorIdMovimento($movimento->id); if (!is_array($produtosMovimento) || !count($produtosMovimento)) return false; foreach ($produtosMovimento as $produtoMovimento) { $objProduto = Shopping_ProdutosController::retornaProdutoPorId($produtoMovimento->idProduto); if ($objProduto->getServico() != true && $produtoMovimento->getQuantidade() > 0) { $pesoBruto = $objProduto->getPeso() * $produtoMovimento->getQuantidade(); $valorUnitario = $produtoMovimento->getValor() / $produtoMovimento->getQuantidade(); $descricao = ($objProduto->getDescricaoBling() != '') ? $objProduto->getDescricaoBling() : $objProduto->getNome(); $produtosFatura .= " {$objProduto->getCodigo()} {$descricao} {$objProduto->getUnidadeBling()} {$produtoMovimento->getQuantidade()} {$valorUnitario} P {$pesoBruto} {$pesoBruto} {$objProduto->getNmc()} {$objProduto->getOrigemIcms()} "; } } if ($produtosFatura == "") return false; $valorFrete = $movimento->getValorFrete(); $stringXml = " {$cadastro->nome} {$tipoPessoa} {$docPessoa} {$cadastro->getRG()} {$cadastro->getEndereco()} {$cadastro->getNumero()} {$cadastro->getComplemento()} {$cadastro->getBairro()} {$cep} {$cadastro->getCidade()} {$estado} {$cadastro->getTelefoneCelular()} {$cadastro->getEmail()} {$produtosFatura} {$fatura->getId()} {$valorFrete} "; return $stringXml; } public function baixarfaturasmensalidadediaAction() { try { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); if (!COBRAR_MENSALIDADE) { echo "Cobrança de mensalidade desativada."; return false; } UtilController::beginTransaction(); $dataAtual = UtilController::retornaDataAtualUS(); $faturasDia = Backoffice_FaturasController::retornaFaturasMensalidadePorDataVencimento(); $faturasBaixadas = 0; $faturasCanceladas = 0; $faturasComErro = 0; if (is_array($faturasDia) && count($faturasDia)) { foreach ($faturasDia as $fatura) { $cadastro = Backoffice_CadastroController::retornaCadastroPorIdFatura($fatura['id']); $saldoCreditos = Backoffice_CreditosController::retornaTotalCreditosPorIdCadastro($cadastro->id); if ($saldoCreditos >= $fatura['valor']) { // pagando fatura com creditos do usuario $retorno = Backoffice_FaturasController::pagarFaturaMensalidadeMesAtual($cadastro->id, $fatura); if ($retorno['erro'] == 0) { $faturasBaixadas++; }else{ $faturasComErro++; } }else{ $faturasCanceladas++; self::cancelarFaturaMensalidade($fatura['id']); } } } UtilController::commit(); echo "Baixadas: {$faturasBaixadas}\nCanceladas: {$faturasCanceladas}\nCom erro: {$faturasComErro}\n"; return; } catch (Exception $e) { UtilController::rollback(); throw new Exception("Erro ao baixar faturas de mensalidade: {$e->getMessage()}"); } } public static function cancelarFaturaMensalidade($idFatura) { // cancelando fatura por falta de creditos para pagt $objFatura = Backoffice_FaturasController::retornaFaturaPorId($idFatura); $objFatura->setDataCancelamento(UtilController::retornaDataAtualUS(true)); $objFatura->setConfirmado(2); $objFatura->save(); } public function getinfosedicaoAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $this->_response->setHeader('Content-Type', 'json'); $idFatura = $this->getRequest()->getParam('id'); $fatura = Backoffice_FaturasController::retornaNovoObjFaturas()->find($idFatura); if ($fatura->id != null) { $envio = $vencimento = ""; if ($fatura->dataVencimento != '' && $fatura->dataVencimento != '0000-00-00 00:00:00') $vencimento = UtilController::dateEnUSToPtBr($fatura->getDataVencimento()); $entrega = null; if ($fatura->dataEntrega != '' && $fatura->dataEntrega != '0000-00-00 00:00:00') $entrega = UtilController::dateEnUSToPtBr($fatura->getDataEntrega()); $return = array('erro' => 0, 'forma' => $fatura->getTipo(), 'vencimento' => $vencimento, 'envio' => $envio, 'statusEntrega' => $fatura->getStatusEntrega(), 'dataEntrega' => $entrega, 'rastreamento' => $fatura->getCodigoRastreio(), 'obs' => $fatura->getMemo()); }else{ $return = array('erro' => 1, 'msg' => 'Fatura não encontrada.'); } $this->_response->setBody(json_encode($return)); } public function salvarpedidoAction() { // desabilitando o layout $this->_helper->layout()->disableLayout(true); // desligando a renderizacao $this->getHelper('viewRenderer')->setNoRender(true); $this->_response->setHeader('Content-Type', 'json'); $post = $this->getRequest()->getPost(); if (!isset($post['forma'])) { $this->_response->setBody(json_encode(array('erro' => 1, 'msg' => 'Selecione uma forma de pagamento.'))); return; } $idFatura = $post['id']; $fatura = Backoffice_FaturasController::retornaNovoObjFaturas()->find($idFatura); if ($fatura->id != null) { $fatura->dataVencimento = UtilController::datePtBrToEnUS($post['vencimento']); $fatura->memo = $post['obs']; if (isset($post['enviado']) && $post['enviado'] != '') { $fatura->dataEnvio = date("Y-m-d H:i:s"); }else{ $fatura->dataEnvio = null; } if ($post['dataEntrega'] != '') $fatura->dataEntrega = UtilController::datePtBrToEnUS($post['dataEntrega']); $fatura->tipo = $post['forma']; $fatura->statusEntrega = $post['statusEntrega']; $fatura->codigoRastreio = $post['rastreamento']; $fatura->save(); $return = array('erro' => 0, 'msg' => 'Pedido atualizado com sucesso.'); }else{ $return = array('erro' => 1, 'msg' => 'Fatura não encontrada.'); } $this->_response->setBody(json_encode($return)); } public function baixarcomprovanteAction() { $this->_helper->layout()->disableLayout(true); $this->getHelper('viewRenderer')->setNoRender(true); $idFatura = $this->getRequest()->getParam('idFatura'); $arquivo = UtilController::retornaArquivosPath(UPLOAD_PATH."/comprovantes/".$idFatura); $arquivo = UPLOAD_PATH."/comprovantes/".$idFatura."/".$arquivo[0]; if(isset($arquivo) && file_exists($arquivo)){ header("Content-Type:jpeg"); header("Content-Length:".filesize($arquivo)); header("Content-Disposition:attachment;filename=".basename($arquivo)); readfile($arquivo); exit; } } public static function verificaCompraAtivacaoMesAtual($idCadastro) { $sql = "SELECT f.id FROM faturas f INNER JOIN controle_movimento cm ON (cm.id = f.id_movimento) INNER JOIN usuarios u ON (u.id = cm.id_usuario) WHERE f.confirmado=1 AND f.tipo_fatura IN (1, 2, 3) AND u.id_cadastro = {$idCadastro} AND MONTH(f.data_pagamento) = MONTH(now()) AND YEAR(f.data_pagamento) = YEAR(now())"; $result = UtilController::executeSQLQuery($sql); if (is_array($result) && count($result)) return true; return false; } } }
Fatal error: Uncaught Zend_Session_Exception: Session must be started before any output has been sent to the browser; output started in /var/www/maxx-mlm/application/modules/administrador/controllers/FaturasadminController.php/1 in /var/www/maxx-mlm/library/Zend/Session.php:456 Stack trace: #0 /var/www/maxx-mlm/library/Zend/Session/Namespace.php(143): Zend_Session::start() #1 /var/www/maxx-mlm/application/controllers/SessionController.php(67): Zend_Session_Namespace->__construct() #2 /var/www/maxx-mlm/application/controllers/SessionController.php(90): SessionController::registraSessaoDB() #3 /var/www/maxx-mlm/application/Bootstrap.php(28): SessionController::registraSessaoDBResource() #4 /var/www/maxx-mlm/library/Zend/Application/Bootstrap/BootstrapAbstract.php(681): Bootstrap->_initApplication() #5 /var/www/maxx-mlm/library/Zend/Application/Bootstrap/BootstrapAbstract.php(634): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource() #6 /var/www/maxx-mlm/library/Zend/Application/Bootstrap/BootstrapAbstract.php(59 in /var/www/maxx-mlm/library/Zend/Session.php on line 456