fhferreira / cielo-edi-parser
There is no license information available for the latest version (1.0.4) of this package.
Projeto para processar arquivo retorno no formato EDI
1.0.4
2016-03-16 21:23 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/php-code-coverage: 1.2.*
- phpunit/phpunit: 3.7.*
README
Parser para o arquivo do tipo EDI, transmitido pela Cielo para conciliação bancária
Fork criado para ajuste de conciliação de cartões de Crédito CIELO
<?php use EdiParser\Arquivo\Arquivo; function calculaComissao($value, $percent) { return ($value / 100) * $percent; } function formatNumber($value) { return number_format($value, 2, ',', ''); } function baixaParcela($db, $cartao) { try { $num_parcela = intval($cartao['parcela']); if ($num_parcela == 0) { $num_parcela = 1; } $parcelaDesc = "valor_" . $num_parcela . "_parcela"; $parcelaRecebidoDesc = 'valor_' . $num_parcela . '_recebido'; $parcelaStatusDesc = 'status_recebido_' . $num_parcela . '_parcela'; $parcelaCustoDesc = 'custo_recebimento_' . $num_parcela . '_parcela'; $parcelaDataDesc = 'data_recebimento_' . $num_parcela . '_parcela_operadora'; $parcelaDataBaixaDesc = 'data_baixa_automatica_' . $num_parcela . '_parcela'; $parcelaUsuarioBaixaDesc = 'usuario_baixa_automatica_' . $num_parcela . '_parcela'; $nr_usuario_id = 1; $liquido = round($cartao["valorLiquido"],2, PHP_ROUND_HALF_DOWN); $taxa = round($cartao["valorComissao"] ,2); $updateSQL = "update cartao_de_credito set {$parcelaRecebidoDesc} = '" . number_format($liquido, 2, '.', '') . "', {$parcelaStatusDesc} = 'S', {$parcelaCustoDesc} = '" . number_format($taxa, 2, '.', '') . "', {$parcelaDataDesc} = '" . $cartao["dtBaixa"]->format("Y-m-d") . "', {$parcelaDataBaixaDesc} = '" . date("Y-m-d H:i:s") . "', {$parcelaUsuarioBaixaDesc} = '" . $nr_usuario_id . "' where {$parcelaStatusDesc} <> 'S' AND id_cad_cartao = " . $cartao['id_cad_cartao']; $p_sql = $db->prepare($updateSQL); $p_sql->execute(); $sqlUpdateSaldo = "UPDATE cartao_de_credito SET saldo_a_receber = (valor_da_conta - ROUND(( (valor_1_recebido + custo_recebimento_1_parcela) + (valor_2_recebido + custo_recebimento_2_parcela) + (valor_3_recebido + custo_recebimento_3_parcela) + (valor_4_recebido + custo_recebimento_4_parcela) + (valor_5_recebido + custo_recebimento_5_parcela) + (valor_6_recebido + custo_recebimento_6_parcela) ),2)) WHERE id_cad_cartao = " . $cartao['id_cad_cartao']; $p_sql = $db->prepare($sqlUpdateSaldo); $p_sql->execute(); return true; } catch (\Exception $e) { var_dump($e, $cartao); } return false; } try{ $valorGeral = 0; $valorSemComprovantesGeral = 0; $valoresComissao = array(); $valorGeralLiquido = 0; $valoresCancelados = array(); $countSemComprovantesGeral = 0; $valoresCobrancas = array(); $resumos = array(); $valorPorComprovanteNaoEncontrados = array(); $DB_HOST = env('DB_HOST'); $DB_DATABASE = env('DB_DATABASE'); $DB_USERNAME = env('DB_USERNAME'); $DB_PASSWORD = env('DB_PASSWORD'); $db = new PDO("mysql:host={$DB_HOST};port=3306;dbname={$DB_DATABASE}", $DB_USERNAME, $DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING); echo "<div class='container'>"; echo "<div class='row'>"; echo "<div class='col-md-12'>"; foreach ($arquivos as $filename) { try { $arquivo = new Arquivo($filename); $detalhes = $arquivo->getDetalhesRO(); $cont = 1; $valorBruto = array(); $detalhesCount = array(); $detalhesValor = array(); $valorPorComprovante = array(); $valorSemComprovante = array(); $countSemCVs = 0; $sumSemCVs = array(); $valorLiquido = array(); $valorComissao = array(); $valorCobrancas = array(); $jaBaixados = array(); $count = 0; foreach ($detalhes as $detalhe) { $valorBruto[] = $detalhe->getValorBruto(); $detalhesCV = $detalhe->getDetalhesCV(); $detalhesCount[] = count($detalhesCV); $bruto = $detalhe->getValorBruto(); $valorPorComprovante[$cont]['total'] = $bruto; if ($bruto < 0 && count($detalhesCV) == 0) { $valorCobrancas[] = $detalhe->getValorBruto(); } elseif ($bruto < 0 && count($detalhesCV) > 0) { $valoresCancelados[] = $detalhe->getValorBruto(); } $valorLiquido[] = $valorPorComprovante[$cont]['liquido'] = $detalhe->getValorLiquido(); $valorPorComprovante[$cont]['dtPrevPagamento'] = $detalhe->getDtPrevPagamento(); $valorPorComprovante[$cont]['quantidadeCVs'] = $detalhe->getQuantidadeCVs(); $valorComissaoResumo = $detalhe->getValorComissao(); $valorComissao[] = $valorComissaoResumo; $valorPorComprovante[$cont]['valorComissao'] = $valorComissaoResumo; $taxaComissao = $detalhe->getTaxaDeComissao(); $valorPorComprovante[$cont]['taxaDeComissao'] = $taxaComissao; $valorPorComprovante[$cont]['tarifa'] = $detalhe->getTarifa(); $valorPorComprovante[$cont]['IdentificadorProduto'] = $detalhe->getIdentificadorProduto(); $valorPorComprovante[$cont]['IdentificadorProdutoDesc'] = $detalhe->getIdentificadorProdutoDesc(); $valorPorComprovante[$cont]['numeroRO'] = $detalhe->getNumeroRO(); $valorPorComprovante[$cont]['codigoBandeira'] = $detalhe->getCodigoBandeira(); $dtCaptura = $detalhe->getDtCaptura(); $valorPorComprovante[$cont]['dtCaptura'] = $dtCaptura; $valorPorComprovante[$cont]['Bandeira'] = $detalhe->getBandeira($valorPorComprovante[$cont]['codigoBandeira']); $valorPorComprovante[$cont]['valores'] = array(); if (count($detalhesCV)) { foreach ($detalhesCV as $detalheCV) { $nsuDoc = $detalheCV->getNsuDoc(); $codigoAutorizacao = $detalheCV->getCodigoAutorizacao(); $valor = $detalheCV->getValor(); $parcela = $detalheCV->getParcela(); $totalParcelas = $detalheCV->getTotalParcelas(); $num_parcela = intval($parcela); if ($num_parcela == 0) { $num_parcela = 1; } $parcelaDesc = "valor_" . $num_parcela . "_parcela"; $parcelaRecebidoDesc = 'valor_' . $num_parcela . '_recebido'; $parcelaStatusDesc = 'status_recebido_' . $num_parcela . '_parcela'; $parcelaCustoDesc = 'custo_recebimento_' . $num_parcela . '_parcela'; $parcelaDataDesc = 'data_recebimento_' . $num_parcela . '_parcela_operadora'; $parcelaDataBaixaDesc = 'data_baixa_automatica_' . $num_parcela . '_parcela'; $parcelaUsuarioBaixaDesc = 'usuario_baixa_automatica_' . $num_parcela . '_parcela'; try { $sql = "SELECT c.id_cad_cartao, c.data_da_conta, c.operadora_do_cartao, c.debito_ou_credito, c.quantidade_de_parcelas, c.titular_do_cartao, c.valor_da_conta, c.origem_da_conta, c.contrato, c.{$parcelaDesc}, c.{$parcelaRecebidoDesc}, c.{$parcelaStatusDesc}, c.{$parcelaCustoDesc}, c.{$parcelaDataDesc}, c.{$parcelaDataBaixaDesc}, c.{$parcelaUsuarioBaixaDesc}, IF(c.{$parcelaRecebidoDesc} > 0, 1, 0) as StatusParcela FROM cartao_de_credito c WHERE c.documento = :nsuDoc AND c.autorizacao = :codigoAutorizacao AND CAST(c.{$parcelaDesc} AS DECIMAL) = CAST(:valor AS DECIMAL)"; $p_sql = $db->prepare($sql); $p_sql->bindValue(":nsuDoc", $nsuDoc); $p_sql->bindValue(":codigoAutorizacao", $codigoAutorizacao); $p_sql->bindValue(":valor", $valor); $p_sql->execute(); $numRows = $p_sql->rowCount(); $cartao = $p_sql->fetch(PDO::FETCH_ASSOC); $localizado = false; $mensagem = ''; if ($numRows) { $localizado = true; } else { $cartao = array(); echo "<pre>"; echo "<h2 style='color:red;'>Cartão não encontrado !!</h2>"; echo "<h4>nsuDoc: {$nsuDoc}</h4>"; echo "<h4>codigoAutorizacao: {$codigoAutorizacao}</h4>"; echo "<h4>Valor: {$valor}</h4>"; echo "<h4>Data Previsão: {$valorPorComprovante[$cont]['dtPrevPagamento']->format('d/m/Y')}</h4>"; echo "<h4>Bandeira: {$valorPorComprovante[$cont]['Bandeira']}</h4>"; echo "<h4>Produto: {$valorPorComprovante[$cont]['IdentificadorProdutoDesc']}</h4>"; echo "<h4>Dt. Captura: {$valorPorComprovante[$cont]['dtCaptura']->format('d/m/Y')}</h4>"; $p_sql = $db->prepare($sql); $p_sql->bindValue(":nsuDoc", $codigoAutorizacao); $p_sql->bindValue(":codigoAutorizacao", $nsuDoc); $p_sql->bindValue(":valor", $valor); $p_sql->execute(); $numRows2 = $p_sql->rowCount(); $cartao2 = $p_sql->fetch(PDO::FETCH_ASSOC); if ($numRows2) { echo $mensagem = "<h4 style='color:red;'>Causa: Código de Documento e Autorização invertidos !!<br/>" . "Parcela: {$parcela}/{$totalParcelas}</h4>"; } else { $sql2 = "SELECT c.id_cad_cartao, c.data_da_conta, c.operadora_do_cartao, c.debito_ou_credito, c.quantidade_de_parcelas, c.titular_do_cartao, c.valor_da_conta, c.origem_da_conta, c.contrato, c.{$parcelaDesc}, c.{$parcelaRecebidoDesc}, c.{$parcelaStatusDesc}, c.{$parcelaCustoDesc}, c.{$parcelaDataDesc}, c.{$parcelaDataBaixaDesc}, c.{$parcelaUsuarioBaixaDesc}, IF(c.{$parcelaRecebidoDesc} > 0, 1, 0) as StatusParcela FROM cartao_de_credito c WHERE c.documento = :nsuDoc AND CAST(c.{$parcelaDesc} AS DECIMAL) = CAST(:valor AS DECIMAL)"; $p_sql = $db->prepare($sql2); $p_sql->bindValue(":nsuDoc", $nsuDoc); $p_sql->bindValue(":valor", $valor); $p_sql->execute(); $numRows2 = $p_sql->rowCount(); $cartao2 = $p_sql->fetch(PDO::FETCH_ASSOC); if ($numRows2) { echo $mensagem = "<h4 style='color:red;'>" . "Provável Causa: Código de Autorização incorreto !!<br/>" . "Pesquise pelo Número do Documento: {$nsuDoc}<br/>" . "Parcela: {$parcela}/{$totalParcelas}" . "</h4>"; } else { $sql2 = "SELECT c.id_cad_cartao, c.data_da_conta, c.operadora_do_cartao, c.debito_ou_credito, c.quantidade_de_parcelas, c.titular_do_cartao, c.valor_da_conta, c.origem_da_conta, c.contrato, c.{$parcelaDesc}, c.{$parcelaRecebidoDesc}, c.{$parcelaStatusDesc}, c.{$parcelaCustoDesc}, c.{$parcelaDataDesc}, c.{$parcelaDataBaixaDesc}, c.{$parcelaUsuarioBaixaDesc}, IF(c.{$parcelaRecebidoDesc} > 0, 1, 0) as StatusParcela FROM cartao_de_credito c WHERE c.autorizacao = :codigoAutorizacao AND CAST(c.{$parcelaDesc} AS DECIMAL) = CAST(:valor AS DECIMAL)"; $p_sql = $db->prepare($sql2); $p_sql->bindValue(":codigoAutorizacao", $codigoAutorizacao); $p_sql->bindValue(":valor", $valor); $p_sql->execute(); $numRows2 = $p_sql->rowCount(); $cartao2 = $p_sql->fetch(PDO::FETCH_ASSOC); if ($numRows2) { echo $mensagem = "<h4 style='color:red;'>Provável Causa: Código de Documento incorreto !!<br/>" . "Pesquise pelo Código de Autorização: {$codigoAutorizacao}<br/>" . "Parcela: {$parcela}/{$totalParcelas}</h4>"; } else { $sql2 = "SELECT c.id_cad_cartao, c.data_da_conta, c.operadora_do_cartao, c.debito_ou_credito, c.quantidade_de_parcelas, c.titular_do_cartao, c.valor_da_conta, c.origem_da_conta, c.contrato, c.{$parcelaDesc}, c.{$parcelaRecebidoDesc}, c.{$parcelaStatusDesc}, c.{$parcelaCustoDesc}, c.{$parcelaDataDesc}, c.{$parcelaDataBaixaDesc}, c.{$parcelaUsuarioBaixaDesc}, IF(c.{$parcelaRecebidoDesc} > 0, 1, 0) as StatusParcela FROM cartao_de_credito c WHERE c.autorizacao = :codigoAutorizacao AND c.documento = :nsuDoc "; $p_sql = $db->prepare($sql2); $p_sql->bindValue(":codigoAutorizacao", $codigoAutorizacao); $p_sql->bindValue(":nsuDoc", $nsuDoc); $p_sql->execute(); $numRows2 = $p_sql->rowCount(); $cartao2 = $p_sql->fetch(PDO::FETCH_ASSOC); if ($numRows2) { echo $mensagem = "<h4 style='color:red;'>Provável Causa: Valor cadastrado incorretamente !!<br/>" . "Valor Comprovante: {$valor}<br/>" . "Valor Cadastrado: {$cartao2[$parcelaDesc]}<br/>" . "Parcela: {$parcela}/{$totalParcelas}" . "</h4>"; } else { echo $mensagem = "<div style='color:red;text-align: left;'>" . "<b>Provável Causa: Comprovante não cadastrado ou cadastrado incorretamente !!</b><br/>" . "Consulte o número de Doc.:<b>{$nsuDoc}</b><br/>" . "Código de Autorização: <b>{$codigoAutorizacao}</b> <br/>" . "Para localiza-lo no relátorio de Cartões.</div>"; } } } } echo "</pre>"; } } catch (\Exception $e) { $params = $p_sql->debugDumpParams(); print_r($e); var_dump($sql, $nsuDoc, $codigoAutorizacao, $valor, $params); die(); } $detalhesValor[] = $detalheCV->getValor(); $dataParcela = array( 'valor' => $valor, 'dtVenda' => $detalheCV->getDtVendaAjuste(), 'tid' => $detalheCV->getTid(), 'parcela' => $parcela, 'totalParcelas' => $totalParcelas, 'nsuDoc' => $nsuDoc, 'codigoAutorizacao' => $codigoAutorizacao, 'localizado' => $localizado, 'mensagem' => $mensagem ); $calculaComissao = calculaComissao($valor, $taxaComissao); $calculaLiquido = $valor - $calculaComissao; $dataParcela['valorLiquido'] = $calculaLiquido; $dataParcela['valorComissao'] = $calculaComissao; $dataParcela['dtBaixa'] = $arquivo->getHeader()->getDtProcessamento(); $dataParcela['dtCaptura'] = $dtCaptura; $valorArr = array_merge($dataParcela, $cartao); $baixa = false; if ($baixar && $localizado && isset($cartao['StatusParcela']) && $cartao['StatusParcela'] == 0 && count($cartao) > 0) { $baixa = baixaParcela($db, $valorArr); } $valorArr['baixa'] = $baixa; $valorPorComprovante[$cont]['valores'][] = $valorArr; } if (!$localizado) { $valorArr['Bandeira'] = $valorPorComprovante[$cont]['Bandeira']; $valorArr['IdentificadorProdutoDesc'] = $valorPorComprovante[$cont]['IdentificadorProdutoDesc']; $valorPorComprovanteNaoEncontrados[$cont][] = $valorArr; } } else { if ($bruto > 0) { $valorPorComprovante[$cont]['mensagem'] = 'Resumo de Operações sem CV\'s'; $countSemCVs++; $sumSemCVs[] = $bruto; $valorSemComprovante[$cont] = $valorPorComprovante[$cont]; } } $cont++; } if (count($valorPorComprovante) == 0) { continue; } echo "<table width='100%' border='1' class='table table-bordered table-condensed'>"; $dataArquivo = $arquivo->getHeader()->getDtProcessamento()->format('d/m/Y'); echo "<tr> <td align='center' colspan='17'><b>{$dataArquivo} - Arquivo: {$filename}</b></td> </tr>"; echo <<<EOF <tr style='background-color:#0B66DC;color: #FFF;'> <th> </th> <th>Bruto</th> <th>Comissão</th> <th>Líquido</th> <th>Data Pag.</th> <th>CVs</th> <th>Bandeira</th> <th>Produto</th> <th>Valor Comissão CV</th> <th>Valor Líquido CV</th> <th>Parcela</th> <th>Status</th> <th>Valor CV</th> <th>Contrato</th> <th>Titular Cartão</th> <th>Data Venda</th> <th>NsuDoc</th> <th>Autorização</th> </tr> EOF; $countCVs = 1; foreach ($valorPorComprovante as $comprovante) { $colorComprovante = $color = '#FFFFFF'; $colorComprovanteText = $colorText = '#000000'; if (intval($comprovante['quantidadeCVs']) > 1) { $color = 'lightsteelblue'; $colorText = '#5D5D5D'; $colorComprovante = '#447FCC'; $colorComprovanteText = '#FFF'; } if (count($comprovante['valores']) == 0) { $color = '#E03C30'; $colorText = '#FFF'; } if (intval($comprovante['total']) < 0 && count($comprovante['valores']) == 0) { $color = 'orange'; $colorText = '#FFF'; } elseif (intval($comprovante['total']) < 0 && count($comprovante['valores']) > 0) { $color = '#4C9980'; $colorText = '#FFF'; } $comprovante['totalDesc'] = formatNumber($comprovante['total']); $comprovante['valorComissaoDesc'] = formatNumber($comprovante['valorComissao']); $comprovante['liquidoDesc'] = formatNumber($comprovante['liquido']); if ($comprovante['valores']) { $cont = 0; foreach ($comprovante['valores'] as $cv) { $calculaComissao = calculaComissao($cv['valor'], $comprovante['taxaDeComissao']); $calculaComissao = number_format( $calculaComissao, 2, '.', '' ); $calculaLiquido = $cv['valor'] - $calculaComissao; if (isset($cv['StatusParcela']) && $cv['StatusParcela'] == 1) { $jaBaixados[] = ['valor' => $cv['valor'], 'liquido' => $calculaLiquido, 'comissao' => $calculaComissao]; } $calculaComissao = number_format($calculaComissao, 2, ',', ''); $calculaLiquido = number_format($calculaLiquido, 2, ',', ''); $localizado = $cv['localizado'] ? ($cv['StatusParcela'] == 1 ? '<span style="color:orange;">Já Baixado</span>' : '<span style="color:green;">Encontrado</span>') : '<span style="color:#FFF;">Não Encontrado</span>'; $baixa = $cv['baixa'] ? ' - Baixado com sucesso' : ''; $colorComprovante = $cv['localizado'] ? $colorComprovante : 'red'; $cv['valorDesc'] = formatNumber($cv['valor']); echo <<<EOF <tr> EOF; if ($cont == 0) { echo <<<EOF <th style='background-color:{$color};color:{$colorText}'>{$countCVs}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['totalDesc']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['valorComissaoDesc']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['liquidoDesc']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['dtPrevPagamento']->format('d/m/Y')}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['quantidadeCVs']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['Bandeira']}/{$comprovante['codigoBandeira']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['IdentificadorProdutoDesc']}</th> EOF; } else { $countCVs++; echo <<<EOF <th style='background-color:{$color};color:{$colorText}'>{$countCVs}</th> <th colspan='5'> </th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['Bandeira']}/{$comprovante['codigoBandeira']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['IdentificadorProdutoDesc']}</th> EOF; } $cont++; $cv['contrato'] = isset($cv['contrato']) ? $cv['contrato'] : ''; $cv['titular_do_cartao'] = isset($cv['titular_do_cartao']) ? $cv['titular_do_cartao'] : ''; $cv['nsuDoc'] = isset($cv['nsuDoc']) ? $cv['nsuDoc'] : ''; $cv['codigoAutorizacao'] = isset($cv['codigoAutorizacao']) ? $cv['codigoAutorizacao'] : ''; echo <<<EOF <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$calculaComissao}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$calculaLiquido}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$cv['parcela']}/{$cv['totalParcelas']}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$localizado}{$baixa}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$cv['valorDesc']}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$cv['contrato']}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$cv['titular_do_cartao']}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$cv['dtVenda']->format('d/m/Y')}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$cv['nsuDoc']}</th> <th style='background-color:{$colorComprovante};color:{$colorComprovanteText}'>{$cv['codigoAutorizacao']}</th> </tr> EOF; } } else { $mensagem = $comprovante['total'] < 0 ? 'Tarifa' : 'Comprovante não consta no arquivo'; echo <<<EOF <tr> <th style='background-color:{$color};color:{$colorText}'>{$countCVs}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['totalDesc']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['valorComissaoDesc']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['liquidoDesc']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['dtPrevPagamento']->format('d/m/Y')}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['quantidadeCVs']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['Bandeira']}/{$comprovante['codigoBandeira']}</th> <th style='background-color:{$color};color:{$colorText}'>{$comprovante['IdentificadorProdutoDesc']}</th> <th style='background-color:{$color};color:{$colorText}' colspan='10'>$mensagem</th> </tr> EOF; } $countCVs++; } $resumos[$filename]['jaBaixados'] = ($jaBaixados); //echo 'Total de Cv\'s: '; $resumos[$filename]['totalCvs'] = array_sum($detalhesCount); //echo 'Total Bruto Resumo: '; $valorGeral += array_sum($valorBruto); $resumos[$filename]['valorBrutoRO'] = array_sum($valorBruto); //echo 'Total Bruto Comprovantes: '; $resumos[$filename]['valorBrutoCVs'] = array_sum($detalhesValor); //echo 'Total Liquido Resumo: '; $resumos[$filename]['valorLiquido'] = array_sum($valorLiquido); $valorGeralLiquido += array_sum($valorLiquido); $resumos[$filename]['valorComissao'] = array_sum($valorComissao); $valoresComissao[] = $resumos[$filename]['valorComissao']; //echo 'Total Cobranças: '; $valoresCobrancas[$filename] = array_sum($valorCobrancas); $resumos[$filename]['CountROsemCVs'] = 0; $resumos[$filename]['ValorROsemCVs'] = 0; $resumos[$filename]['OperacoesSemCVs'] = []; if (count($valorSemComprovante)) { //echo 'Operacoes sem Comprovantes: '; $countSemComprovantesGeral += ($countSemCVs); $resumos[$filename]['CountROsemCVs'] = ($countSemCVs); //echo 'Valor sem Comprovantes: '; $valorSemComprovantesGeral += array_sum($sumSemCVs); $resumos[$filename]['ValorROsemCVs'] = array_sum($sumSemCVs); //echo 'Operacoes sem Comprovantes: '; $resumos[$filename]['OperacoesSemCVs'] = ($valorSemComprovante); } $background = 'background-color:grey;text-align:right;'; $cobranca = formatNumber($valoresCobrancas[$filename]); $valorBrutoDia = formatNumber($resumos[$filename]['valorBrutoRO']); $valorBrutoCVs = formatNumber($resumos[$filename]['valorBrutoCVs']); $valorComissaoDia = formatNumber($resumos[$filename]['valorComissao']); $valorLiquidoDia = formatNumber($resumos[$filename]['valorLiquido']); $valorSemCVDia = formatNumber($resumos[$filename]['ValorROsemCVs']); $resumos[$filename]['data'] = $dataArquivo; $resumos[$filename]['cobranca'] = $valoresCobrancas[$filename]; $valoresCanceladosDesc = formatNumber(array_sum($valoresCancelados)); $sumJaBaixados = array_sum(array_column($resumos[$filename]['jaBaixados'], 'valor')); $sumJaBaixadosDesc = formatNumber($sumJaBaixados); $sumJaBaixadosLiquido = array_sum(array_column($resumos[$filename]['jaBaixados'], 'liquido')); $sumJaBaixadosLiquidoDesc = formatNumber($sumJaBaixadosLiquido); $sumJaBaixadosComissao = array_sum(array_column($resumos[$filename]['jaBaixados'], 'comissao')); $sumJaBaixadosComissaoDesc = formatNumber($sumJaBaixadosComissao); $countJaBaixados = count($resumos[$filename]['jaBaixados']); $saldoABaixar = $resumos[$filename]['valorBrutoCVs'] - $sumJaBaixados; $saldoABaixarDesc = formatNumber($saldoABaixar); $saldoABaixarLiquido = $resumos[$filename]['valorLiquido'] - $sumJaBaixadosLiquido; $saldoABaixarLiquidoDesc = formatNumber($saldoABaixarLiquido); $saldoABaixarComissao = $resumos[$filename]['valorComissao'] - (-$sumJaBaixadosComissao); $saldoABaixarComissaoDesc = formatNumber($saldoABaixarComissao); $countSaldoCVS = $resumos[$filename]['totalCvs'] - $countJaBaixados; echo <<<EOF <tr> <td style='background-color:#0B66DC;color: #FFF;' colspan=6>Resumo do Dia</td> </tr> <tr style='{$background}'> <th colspan='5'>Data</th> <th style='text-align:right;'>{$dataArquivo}</th> </tr> <tr style='{$background}'> <th colspan='5'>Quantidade de CV's</th> <th style='text-align:right;'>{$resumos[$filename]['totalCvs']}</th> </tr> <tr style='{$background}'> <th colspan='5'>Valor Bruto Resumo de Operações</th> <th style='text-align:right;'>{$valorBrutoDia}</th> </tr> <tr style='{$background}'> <th colspan='5'>Valor Bruto de CV's</th> <th style='text-align:right;'>{$valorBrutoCVs}</th> </tr> <tr style='{$background}'> <th colspan='5'>Valor Comissão</th> <th style='text-align:right;'>{$valorComissaoDia}</th> </tr> <tr style='{$background}'> <th colspan='5'>Valor Líquido Depositado</th> <th style='text-align:right;'>{$valorLiquidoDia}</th> </tr> <tr style='{$background}'> <th colspan='5'>Operações sem CV's</th> <th style='text-align:right;'>{$resumos[$filename]['CountROsemCVs']}</th> </tr> <tr style='{$background}'> <th colspan='5'>Valor sem CV's</th> <th style='text-align:right;'>{$valorSemCVDia}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Cobranças</th> <th style='text-align:right;background-color:red;'>{$cobranca}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Cancelamentos</th> <th style='text-align:right;background-color:#4C9980;'>{$valoresCanceladosDesc}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Quantidade de CV's já Baixados</th> <th style='text-align:right;background-color:#CCC;'>{$countJaBaixados}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Valor Bruto já Baixado</th> <th style='text-align:right;background-color:#CCC;'>{$sumJaBaixadosDesc}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Valor Bruto já Baixado Líquido</th> <th style='text-align:right;background-color:#CCC;'>{$sumJaBaixadosLiquidoDesc}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Valor Bruto já Baixado Comissão</th> <th style='text-align:right;background-color:#CCC;'>{$sumJaBaixadosComissaoDesc}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Quantidade de CV's a baixar</th> <th style='text-align:right;background-color:#FBDEDE;'>{$countSaldoCVS}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Valor Bruto a baixar</th> <th style='text-align:right;background-color:#FBDEDE;'>{$saldoABaixarDesc}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Valor Bruto a baixar Liquido</th> <th style='text-align:right;background-color:#FBDEDE;'>{$saldoABaixarLiquidoDesc}</th> </tr> <tr style='{$background};text-align:right;'> <th colspan='5'>Valor Bruto a baixar Comissão</th> <th style='text-align:right;background-color:#FBDEDE;'>{$saldoABaixarComissaoDesc}</th> </tr> EOF; if (!is_null($det = $arquivo->getDetalheAntecipacao())) { try { $valorAntecipacao = $det->getValorBrutoAntecipacaoTotal(); $valorLiquidoAntecipacaoTotal = $det->getValorLiquidoAntecipacaoTotal(); $diff = $valorAntecipacao - $valorLiquidoAntecipacaoTotal; $resumos[$filename]['valorComissao'] = -($resumos[$filename]['valorComissao']); $resumos[$filename]['valorLiquido'] = $resumos[$filename]['valorLiquido'] - $diff; $valorCobrancas[] = -($diff); $valoresCobrancas[$filename] = array_sum($valorCobrancas); $resumos[$filename]['cobranca'] = $valoresCobrancas[$filename]; $valorAntecipacaoDesc = formatNumber($valorAntecipacao); $diffDesc = formatNumber($diff); $valorLiquidoAntecipacaoTotalDesc = formatNumber($valorLiquidoAntecipacaoTotal); echo <<<EOF <tr style='color:#000;text-align:right;'> <th colspan='5'>Valor Bruto Antecipação</th> <th style='text-align:right;background-color:#000;color:#FFF'>{$valorAntecipacaoDesc}</th> </tr> <tr style='color:#000;text-align:right;'> <th colspan='5'>Taxa Antecipação</th> <th style='text-align:right;background-color:#000;color:#FFF'>{$diffDesc}</th> </tr> <tr style='color:#000;text-align:right;'> <th colspan='5'>Valor Líquido Antecipação</th> <th style='text-align:right;background-color:#000;color:#FFF'>{$valorLiquidoAntecipacaoTotalDesc}</th> </tr> EOF; } catch (\Exception $e) { var_dump($e); } } echo "</table>"; $valoresCancelados = []; } catch (\Exception $e) { echo "<div class='col-md-12' style='color:red !important;'>"; echo "Arquivo: $filename"; echo "<br/>"; echo "Erro: ", $e->getMessage(); echo "<br/>"; echo "Linha: ", $e->getLine(); echo "<br/>"; echo "Linha: ", $e->getFile(); echo "<hr/>"; echo "</div>"; } } echo '<table width="100%" border="1" class="table table-bordered table-condensed table-striped">'; echo "<caption>Resumo</caption>"; echo <<<EOF <tr style='background-color:#0B66DC;color: #FFF;'> <th>Data</th> <th>Quantidade de CV's</th> <th>Valor Líquido Depositado</th> <th>Valor Comissão</th> <th>Valor Bruto Resumo de Operações</th> <th>Valor Bruto de CV's</th> <th>Operações sem CV's</th> <th>Valor sem CV's</th> <th>Cobranças</th> </tr> EOF; $sumTotalCvs = 0; $sumValorBrutoRO = 0; $sumValorBrutoCVs = 0; $sumValorComissao = 0; $sumValorLiquido = 0; $sumCountROsemCVs = 0; $sumValorROsemCVs = 0; $sumCobranca = 0; foreach ($resumos as $resumo) { if ($resumo['valorLiquido'] > 0) { $sumTotalCvs += $resumo['totalCvs']; $sumValorBrutoRO += $resumo['valorBrutoRO']; $sumValorBrutoCVs += $resumo['valorBrutoCVs']; $sumValorComissao += $resumo['valorComissao']; $sumValorLiquido += $resumo['valorLiquido']; $sumCountROsemCVs += $resumo['CountROsemCVs']; $sumValorROsemCVs += $resumo['ValorROsemCVs']; $sumCobranca += $resumo['cobranca']; $resumo['valorBrutoRODesc'] = formatNumber($resumo['valorBrutoRO']); $resumo['valorBrutoCVsDesc'] = formatNumber($resumo['valorBrutoCVs']); $resumo['valorComissaoDesc'] = formatNumber($resumo['valorComissao']); $resumo['valorLiquidoDesc'] = formatNumber($resumo['valorLiquido']); $resumo['ValorROsemCVsDesc'] = formatNumber($resumo['ValorROsemCVs']); $resumo['cobrancaDesc'] = formatNumber($resumo['cobranca']); echo <<<EOF <tr style='text-align:right !important;'> <td style='text-align:right;'>{$resumo['data']}</td> <td style='text-align:right;'>{$resumo['totalCvs']}</td> <td style='text-align:right;'>{$resumo['valorLiquidoDesc']}</td> <td style='text-align:right;'>{$resumo['valorComissaoDesc']}</td> <td style='text-align:right;'>{$resumo['valorBrutoRODesc']}</td> <td style='text-align:right;'>{$resumo['valorBrutoCVsDesc']}</td> <td style='text-align:right;'>{$resumo['CountROsemCVs']}</td> <td style='text-align:right;'>{$resumo['ValorROsemCVsDesc']}</td> <td style='text-align:right;'>{$resumo['cobrancaDesc']}</td> </tr> EOF; } } $sumValorBrutoRODesc = formatNumber($sumValorBrutoRO); $sumValorBrutoCVsDesc = formatNumber($sumValorBrutoCVs); $sumValorComissaoDesc = formatNumber($sumValorComissao); $sumValorLiquidoDesc = formatNumber($sumValorLiquido); $sumValorROsemCVsDesc = formatNumber($sumValorROsemCVs); $sumCobrancaDesc = formatNumber($sumCobranca); echo <<<EOF <tr style='text-align:right !important;background-color:gray;'> <th> </th> <th style='text-align:right;'>{$sumTotalCvs}</th> <th style='text-align:right;'>{$sumValorLiquidoDesc}</th> <th style='text-align:right;color: #C30B0B;'>{$sumValorComissaoDesc}</th> <th style='text-align:right;'>{$sumValorBrutoRODesc}</th> <th style='text-align:right;'>{$sumValorBrutoCVsDesc}</th> <th style='text-align:right;'>{$sumCountROsemCVs}</th> <th style='text-align:right;'>{$sumValorROsemCVsDesc}</th> <th style='text-align:right; color: #C30B0B;'>{$sumCobrancaDesc}</th> </tr> EOF; $sumBruto = $sumValorBrutoCVs + $sumValorROsemCVs; $sumBrutoDesc = formatNumber($sumBruto); echo <<<EOF <tr style='text-align:right !important;background-color:#0B66DC;color: #FFF;'> <th colspan='5'> </th> <th>Total Bruto</th> <th colspan='3' style='text-align: center;'>{$sumBrutoDesc}</th> </tr> EOF; echo '</table>'; if (count($valorPorComprovanteNaoEncontrados)) { echo "<hr/>"; echo "<table width='100%' border='1' class='table table-bordered table-condensed'>"; echo "<caption>Cartões não encontrados</caption>"; echo <<<EOF <tr style='background-color:#0B66DC;color: #FFF;'> <th> </th> <th>Valor</th> <th>Data Venda</th> <th>Parcela</th> <th>Documento</th> <th>Autorização</th> <th>Mensagem</th> <th>Bandeira</th> <th>Produto</th> </tr> EOF; $cont = 1; foreach ($valorPorComprovanteNaoEncontrados as $resumo) { foreach ($resumo as $valorCV) { echo <<<EOF <tr> <th style='text-align:right;'>{$cont}</th> <th style='text-align:right;'>{$valorCV['valor']}</th> <th style='text-align:right;'>{$valorCV['dtVenda']->format('d/m/Y')}</th> <th style='text-align:right;'>{$valorCV['parcela']}/{$valorCV['totalParcelas']}</th> <th style='text-align:right;'>{$valorCV['nsuDoc']}</th> <th style='text-align:right;'>{$valorCV['codigoAutorizacao']}</th> <th style='text-align:right;'>{$valorCV['mensagem']}</th> <th style='text-align:right;'>{$valorCV['Bandeira']}</th> <th style='text-align:right;'>{$valorCV['IdentificadorProdutoDesc']}</th> </tr> EOF; $cont++; } } echo "</table>"; //echo "</pre>"; } if (count($resumos)) { $countSemCVS = 0; foreach ($resumos as $resumo) { foreach ($resumo['OperacoesSemCVs'] as $op) { $countSemCVS++; } } if ($countSemCVS) { echo "<hr/>"; echo "<table width='100%' border='1' class='table table-bordered table-condensed'>"; echo "<caption>Comprovantes Faltantes</caption>"; echo <<<EOF <tr style='background-color:#0B66DC;color: #FFF;'> <th> </th> <th>Valor</th> <th>Comissao</th> <th>Líquido</th> <th>Data Venda</th> <th>Data Pagamento</th> <th>Taxa %</th> <th>Bandeira</th> <th>Numero RO</th> <th>Tipo</th> </tr> EOF; $cont = 1; foreach ($resumos as $resumo) { foreach ($resumo['OperacoesSemCVs'] as $op) { $valorComissao_ = number_format($op['valorComissao'], 2, ',', ''); $valorLiquido_ = number_format($op['liquido'], 2, ',', ''); $valorTotal_ = number_format($op['total'], 2, ',', ''); echo <<<EOF <tr> <th style='text-align:right;'>{$cont}</th> <th style='text-align:right;'>{$valorTotal_}</th> <th style='text-align:right;'>{$valorComissao_}</th> <th style='text-align:right;'>{$valorLiquido_}</th> <th style='text-align:right;'>{$op['dtCaptura']->format('d/m/Y')}</th> <th style='text-align:right;'>{$op['dtPrevPagamento']->format('d/m/Y')}</th> <th style='text-align:right;'>{$op['taxaDeComissao']}</th> <th>{$op['Bandeira']} - {$op['codigoBandeira']}</th> <th>{$op['numeroRO']}</th> <th>{$op['IdentificadorProdutoDesc']} - {$op['IdentificadorProduto']}</th> </tr> EOF; $cont++; } } echo "</table>"; } } echo "</div>"; echo "</div>"; echo "</div>"; } catch (\Exception $e) { dd($e); } ?>