Envio de boleto por e-mail[Resolvido]

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ê?

Qual erro?

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.

Essa aplicação blank recebe parâmetros? Ou possui variáveis globais?
[]s

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]};

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

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]};
}

to passando dessa forma:

http://192.168.25.6:97/scriptcase/app/administrativa/boleto2/boleto2.php?id_boleto=[codigo];

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”;
}
}

cmagnoguerra

Obrigada pela dica, mas o erro continua. :confused:

Manda teu código completo pra gente analisar.
Abraços

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
$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 “”;
//sc_alert(Boleto Enviado!);

              // sc_redir(menu);

}

Camila,
Dentro da tua função fator_vencimento coloca um echo $data_vencimento; pra gente ver como tá chegando essa data.
Outra coisa, tem um if ($data != "") não seria if ($data_vencimento != "") ??

[]s

[code]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”;
}}[/code]

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.

Você chama aplicação assim:
http://192.168.25.6:97/scriptcase/app/administrativa/boleto2/boleto2.php?id_boleto=[codigo];
ou assim:
http://192.168.25.6:97/scriptcase/app/administrativa/boleto2/boleto2.php?id_boleto=75

[]s

assim,
http://192.168.25.6:97/scriptcase/app/administrativa/boleto2/boleto2.php?id_boleto=[codigo];

Testa assim, por favor:
http://192.168.25.6:97/scriptcase/app/administrativa/boleto2/boleto2.php?codigo=12

Codigo=12 (coloca um id válido aqui.
[]s

Allan Medeiros,
putz uma besteira , muito obrigada, já estava arrancando os cabelos.