Autor Tópico: Envio de boleto por e-mail[Resolvido]  (Lida 2986 vezes)

camila

  • Intermediário
  • ***
  • Mensagens: 102
Envio de boleto por e-mail[Resolvido]
« Online: Março 24, 2014, 05:31:17 pm »
Boa tarde,
criei uma app blank para enviar o boleto para os clientes, funciona direitinho o problema é q se eu copiar o link e tentar abrir em outro navegador tipo mozila dá um erro, alguém sabe explicar por quê?
« Última modificação: Abril 01, 2014, 02:23:44 pm por camila »

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Envio de boleto por e-mail
« Responder #1 Online: Março 24, 2014, 05:54:50 pm »
Qual erro?
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Envio de boleto por e-mail
« Responder #2 Online: Março 24, 2014, 05:57:06 pm »
dar esse erro:
ERRO
Undefined offset: 2
ERRO
Undefined offset: 1

como se não achasse esse boleto no banco, mas no chrome ele abre.

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Envio de boleto por e-mail
« Responder #3 Online: Março 25, 2014, 09:39:25 am »
Essa aplicação blank recebe parâmetros? Ou possui variáveis globais?
[]s
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Envio de boleto por e-mail
« Responder #4 Online: Março 25, 2014, 12:54:06 pm »
variavel :

$check_sql ="SELECT
         boleto.id_boleto,
         empresa.email_responsavel,
         boleto.codigo_empresa,
         boleto.valor
         FROM boleto INNER  JOIN empresa ON boleto.codigo_empresa=empresa.codigo_empresa
         WHERE boleto.id_boleto=[codigo]";
       

sc_lookup(rs, $check_sql);
if (({rs})){
$codigo = {rs[0][0]};
$email = {rs[0][1]};
$cod_empresa = {rs[0][2]};

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Envio de boleto por e-mail
« Responder #5 Online: Março 25, 2014, 01:35:03 pm »
Tenta assim:
$check_sql ="SELECT
         boleto.id_boleto,
         empresa.email_responsavel,
         boleto.codigo_empresa,
         boleto.valor
         FROM boleto INNER  JOIN empresa ON boleto.codigo_empresa=empresa.codigo_empresa
         WHERE boleto.id_boleto=[codigo]";
sc_lookup(rs, $check_sql);
if (isset({rs[0][0]})){ // modifiquei essa linha
         $codigo = {rs[0][0]};
         $email = {rs[0][1]};
         $cod_empresa = {rs[0][2]
};

Outra coisa, quando vc chama o form por outro browser vc tá passando o parametro [codigo]?
[]s
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Envio de boleto por e-mail
« Responder #6 Online: Março 25, 2014, 01:36:29 pm »
Correção:

$check_sql ="SELECT
         boleto.id_boleto,
         empresa.email_responsavel,
         boleto.codigo_empresa,
         boleto.valor
         FROM boleto INNER  JOIN empresa ON boleto.codigo_empresa=empresa.codigo_empresa
         WHERE boleto.id_boleto=[codigo]";
sc_lookup(rs, $check_sql);
if (isset({rs[0][0]})){ // modifiquei essa linha
         $codigo = {rs[0][0]};
         $email = {rs[0][1]};
         $cod_empresa = {rs[0][2]};
}
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Envio de boleto por e-mail
« Responder #7 Online: Março 25, 2014, 02:20:46 pm »

cmagnoguerra

  • Novato
  • *
  • Mensagens: 2
    • Email
Re:Envio de boleto por e-mail
« Responder #8 Online: Março 27, 2014, 08:44:18 pm »
Camila esse erro aconteceu comigo.
O erro é na função fator_vencimento  que contem o comando explode;
No seu banco de dados está trazendo o campo data no formato aaaa-mm-dd e a função considera dd/mm/aaaa
basta converter a variável que vai dar certo.

eu converti logo após o recebimento dos parâmetros.


$check_sql = "
SELECT
   id,
   cliente,
   cnpj,
   endereco,
   cidade,
   valor,
   nossonum,
   vencimento,
   demonstrativo
FROM
   lex_boletos
WHERE
   (id = [id])
ORDER BY
   cliente
" ;
   

sc_lookup(rs, $check_sql);

if (isset({rs[0][0]}))     // Row found
{
    $id               = {rs[0][0]};  // id
    $vcliente         = {rs[0][1]};  // cliente
   $vcnpj              = {rs[0][2]};  // cnpj
   $vendereco          = {rs[0][3]};  // endereco
   $vcidade           = {rs[0][4]};  // cidade
   $vvalor          = {rs[0][5]};  // valor
   $vnossonum          = {rs[0][6]};  // nossonum
   $vvencimento        = {rs[0][7]};  // vencimento
   $vdemonstrativo     = {rs[0][8]};  // demon      
   $dadosboleto["demonstrativo"] = $vdemonstrativo;
      
}


// DADOS DO BOLETO PARA O SEU CLIENTE
$data_venc = DbToStrDate($vvencimento) ;



// Recebe um str no formato aaaa-mm-dd e retorna no formato dd/mm/aaaa
function DbToStrDate($data) {
  if(!$data) return '';
  return substr($data, strrpos($data, '/') + 8).'/'.substr($data, strpos($data, '/') + 5, strrpos($data, '-') - strpos($data, '-') -1).'/'.substr($data, 0, strpos($data, '-'));
}

function fator_vencimento($data) {
  if ($data != "") {
   $data = explode("/",$data);
   $ano = $data[2];
   $mes = $data[1];
   $dia = $data[0];
    return(abs((_dateToDays("1997","10","07")) - (_dateToDays($ano, $mes, $dia))));
  } else {
    return "0000";
  }
}
Carlos Magno da Silva Guerra
Advogado - Feessemg
win8 64 mysql

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Envio de boleto por e-mail
« Responder #9 Online: Março 28, 2014, 01:15:21 pm »
cmagnoguerra

Obrigada pela dica, mas o erro continua. :/

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Envio de boleto por e-mail
« Responder #10 Online: Março 28, 2014, 02:10:03 pm »
Manda teu código completo pra gente analisar.
Abraços
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Envio de boleto por e-mail
« Responder #11 Online: Março 28, 2014, 02:19:37 pm »
esse é o código do boleto:


$codigo ="";
$cod_empresa ="";
$valor_boleto = "";
$data_vencimento = "";
$nossonumero = "";
$endereco = "";
$cep = "";
$cidade = "";
$estado = "";




$check_sql ="SELECT
  boleto.id_boleto, 
  boleto.codigo_empresa ,
  boleto.valor,
  boleto.vencimento ,
  boleto.nossonumero,
  empresa.endereco,
  empresa.cep,
  empresa.cidade ,
  empresa.estado
  FROM boleto INNER  JOIN empresa ON boleto.codigo_empresa = empresa.codigo_empresa
  WHERE boleto.id_boleto=[codigo]";



$this->Db->debug = true;
sc_lookup(rs, $check_sql);

if (({rs})){
   
$codigo = {rs[0][0]};
$cod_empresa = {rs[0][1]};
$valor_boleto = {rs[0][2]};
$data_vencimento = {rs[0][3]};
$nossonumero = {rs[0][0]};
$endereco = {rs[0][5]};
$cep = {rs[0][6]};
$cidade = {rs[0][7]};
$estado = {rs[0][8]};
   
   
   
}




$data_vencimento = sc_date_conv($data_vencimento,"aaaa-mm-dd hh:ii:ss","dd/mm/aaaa");
//$data_vencimento = DbToStrDate($data_vencimento) ;


// Recebe um str no formato aaaa-mm-dd e retorna no formato dd/mm/aaaa
function DbToStrDate($data_vencimento) {
  if(!$data_vencimento) return '';
  return substr($data_vencimento, strrpos($data_vencimento, '/') + 8).'/'.substr($data_vencimento, strpos($data_vencimento, '/') + 5, strrpos($data_vencimento, '-') - strpos($data_vencimento, '-') -1).'/'.substr($data_vencimento, 0, strpos($data_vencimento, '-'));
}

function fator_vencimento($data_vencimento) {
  if ($data != "") {
   $data_vencimento = explode("/",$data_vencimento);
   $ano = $data_vencimento[2];
   $mes = $data_vencimento[1];
   $dia = $data_vencimento[0];
    return(abs((_dateToDays("1997","10","07")) - (_dateToDays($ano, $mes, $dia))));
  } else {
    return "0000";
  }
}


// DADOS DO BOLETO PARA O SEU CLIENTE
$dias_de_prazo_para_pagamento = 5;
//$taxa_boleto = 2.95;
$data_venc = $data_vencimento; //date("d/m/Y", time() + ($dias_de_prazo_para_pagamento * 86400));  // Prazo de X dias OU informe data: "13/04/2006";
$valor_cobrado = $valor_boleto; // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
$valor_cobrado = str_replace(",", ".",$valor_boleto);
$valor_boleto=number_format($valor_boleto, 2, ',', '');


$dadosboleto["nosso_numero"] = $nossonumero;  // Nosso numero - REGRA: Máximo de 8 caracteres!
$dadosboleto["numero_documento"] = '0123';   // Num do pedido ou nosso numero
$dadosboleto["data_vencimento"] = $data_venc; // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
$dadosboleto["data_documento"] = date("d/m/Y"); // Data de emissão do Boleto
$dadosboleto["data_processamento"] = date("d/m/Y"); // Data de processamento do boleto (opcional)
$dadosboleto["valor_boleto"] = $valor_boleto;    // Valor do Boleto - REGRA: Com vírgula e sempre com duas casas depois da virgula

// DADOS DO SEU CLIENTE
$dadosboleto["sacado"] = $cod_empresa;
$dadosboleto["endereco1"] = $endereco;
$dadosboleto["endereco2"] = "CEP: $cep <br/> $cidade - $estado";

// INFORMACOES PARA O CLIENTE
$dadosboleto["demonstrativo1"] = "Pagamento Mensalidade do Radiola Digital";
$dadosboleto["demonstrativo2"] = "";
$dadosboleto["demonstrativo3"] = "";
$dadosboleto["instrucoes1"] = "";
$dadosboleto["instrucoes2"] = " SR. CAIXA, FAVOR NÃO RECEBER APÓS VENCIMENTO.";
$dadosboleto["instrucoes3"] = "";
$dadosboleto["instrucoes4"] = "";

// DADOS OPCIONAIS DE ACORDO COM O BANCO OU CLIENTE
$dadosboleto["quantidade"] = "";
$dadosboleto["valor_unitario"] = "";
$dadosboleto["aceite"] = "";      
$dadosboleto["especie"] = "R$";
$dadosboleto["especie_doc"] = "";


// ---------------------- DADOS FIXOS DE CONFIGURAÇÃO DO SEU BOLETO --------------- //


// DADOS DA SUA CONTA - ITAÚ
$dadosboleto["agencia"] = "1565"; // Num da agencia, sem digito
$dadosboleto["conta"] = "13877";   // Num da conta, sem digito
$dadosboleto["conta_dv"] = "4";    // Digito do Num da conta

// DADOS PERSONALIZADOS - ITAÚ
$dadosboleto["carteira"] = "175";  // Código da Carteira: pode ser 175, 174, 104, 109, 178, ou 157

// SEUS DADOS
$dadosboleto["identificacao"] = "Radiola Digital";
$dadosboleto["cpf_cnpj"] = "";
$dadosboleto["endereco"] = "Av. Marques de Olinda, 200";
$dadosboleto["cidade_uf"] = "Recife / PE";
$dadosboleto["cedente"] = "RADIOLA DIGITAL";

include("../include/funcoes_itau.php");
include("../include/layout_itau.php");
   
============================================================================================

e esse de enviar o email com o link do boleto


$this->Db->debug = false;



$check_sql="SELECT
        boleto.id_boleto,
         empresa.email_responsavel,
         boleto.codigo_empresa,
         boleto.valor
         FROM boleto INNER  JOIN empresa ON boleto.codigo_empresa=empresa.codigo_empresa
         WHERE boleto.id_boleto=[codigo]";

//var_dump($_REQUEST);
sc_lookup(rs, $check_sql);
if (isset({rs[0][0]})){ // modifiquei essa linha
         $codigo={rs[0][0]};
         $email={rs[0][1]};
         $cod_empresa= {rs[0][2]};
         


   
$mail_smtp_server = 'smtp.gmail.com';     
                   $mail_smtp_user     = 'camilasoares1507@gmail.com';               
                   $mail_smtp_pass     = '************'; 
                   $mail_from          = 'camilasoares1507@gmail.com';         
                   $mail_to            =  $email;       
                   $mail_subject       = 'Teste Envio de Boleto';
                  //$mail_message       = sc_make_link(http:/192.168.25.6:97/scriptcase/app/administrativa/boleto2/index.php?id_boleto=$codigo);
                   $mail_message       =  'http://192.168.25.6:97/scriptcase/app/administrativa/boleto2/index.php?id_boleto='.[codigo].'';
                   $mail_format        = 'T'; 
                  

 sc_mail_send($mail_smtp_server,
             $mail_smtp_user,
             $mail_smtp_pass,
             $mail_from,
             $mail_to,
             $mail_subject,
             $mail_message,
             $mail_format,
             '','',465,"S","");
            echo "<script>alert('Boleto Enviado para o E-mail do  $cod_empresa!')</script>";
                //sc_alert(Boleto Enviado!);

                  // sc_redir(menu);
         
           
     
}

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Envio de boleto por e-mail
« Responder #12 Online: Março 31, 2014, 08:55:29 am »
Camila,
Dentro da tua função fator_vencimento coloca um
Código: [Selecionar]
echo $data_vencimento; pra gente ver como tá chegando essa data.
Outra coisa, tem um
Código: [Selecionar]
if ($data != "") não seria
Código: [Selecionar]
if ($data_vencimento != "") ??

[]s

Código: [Selecionar]
function fator_vencimento($data_vencimento) {
  echo "Data de vencimento: data_vencimento";


  if ($data_vencimento != "") {
   $data_vencimento = explode("/",$data_vencimento);
   $ano = $data_vencimento[2];
   $mes = $data_vencimento[1];
   $dia = $data_vencimento[0];
    return(abs((_dateToDays("1997","10","07")) - (_dateToDays($ano, $mes, $dia))));
  } else {
    return "0000";
  }}

Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Envio de boleto por e-mail
« Responder #13 Online: Março 31, 2014, 01:22:09 pm »
sim ele mostra o valor , mas se eu clicar no link em outro navegador da erro , ele só abre no chrome, agora se eu entra no sistemas pelo firefox e gerar o boleto e ai abrir o link pelo firefox não da erro.

Putz oq será isso.

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br