";
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 = "
";
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 = "
";
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: