$carteira = $dadosboleto["carteira"]; //modalidade da conta $modalidade = formata_numero($dadosboleto["modalidade_conta"], 2, 0); // DONE: Bugfix 2007-03-25 Francisco Ernesto Teixeira <*****@*****.**> // Notice: Undefined variable: modalidade_c1 in funcoes_nossacaixa.php on line 48 $modalidade_c1 = isset($modalidade_c1) ? $modalidade_c1 : 0; //Converte a modalidade de acordo com a tabela do banco $modalidade == "01" ? $modalidade_c1 = 1 : $modalidade_c1; $modalidade == "04" ? $modalidade_c1 = 4 : $modalidade_c1; $modalidade == "09" ? $modalidade_c1 = 9 : $modalidade_c1; $modalidade == "13" ? $modalidade_c1 = 3 : $modalidade_c1; $modalidade == "16" ? $modalidade_c1 = 6 : $modalidade_c1; $modalidade == "17" ? $modalidade_c1 = 7 : $modalidade_c1; $modalidade == "18" ? $modalidade_c1 = 8 : $modalidade_c1; //nosso número (sem dv) é 9 digitos $nnum = $dadosboleto["inicio_nosso_numero"] . formata_numero($dadosboleto["nosso_numero"], 7, 0); //Agencia sem o digito + modalidade convertida e conta sem o dígito $ag_contacedente = $agencia . $modalidade_c1 . $conta_cedente; // $carteira == 5 ? $prefixo = "9" : $prefixo; $carteira == 1 ? $prefixo = "0" : $prefixo; //Calcula o digito verificador do nosso número $dv_nosso_numero = digitoVerificador_nossonumero($nnum, $conta_cedente, $conta_cedente_dv, $agencia, $modalidade); $nossonumero_dv = "{$nnum}{$dv_nosso_numero}"; //pega o nosso numero a partir da 2º posição $nnum = substr($nnum, 1); //numero para o calculo dos dígitos verificadores da posição 43 e 44 $calcdv1 = $prefixo . $nnum . $ag_contacedente . $codigobanco; //Gera os dígitos verificadores da posição 43 e 44 $dv1 = geraDv43($calcdv1); $dv2 = geraDv44("{$calcdv1}{$dv1}");
$conta = formata_numero($dadosboleto["conta"], 5, 0); //dv da conta $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira é 2 caracteres $carteira = $dadosboleto["carteira"]; //conta cedente (sem dv) com 6 digitos $conta_cedente = formata_numero($dadosboleto["conta_cedente"], 6, 0); //dv da conta cedente $conta_cedente_dv = digitoVerificador_cedente($conta_cedente); //campo livre (sem dv) é 24 digitos $campo_livre = $conta_cedente . $conta_cedente_dv . formata_numero($dadosboleto["nosso_numero1"], 3, 0) . formata_numero($dadosboleto["nosso_numero_const1"], 1, 0) . formata_numero($dadosboleto["nosso_numero2"], 3, 0) . formata_numero($dadosboleto["nosso_numero_const2"], 1, 0) . formata_numero($dadosboleto["nosso_numero3"], 9, 0); //dv do campo livre $dv_campo_livre = digitoVerificador_nossonumero($campo_livre); $campo_livre_com_dv = "{$campo_livre}{$dv_campo_livre}"; //nosso número (sem dv) é 17 digitos $nnum = formata_numero($dadosboleto["nosso_numero_const1"], 1, 0) . formata_numero($dadosboleto["nosso_numero_const2"], 1, 0) . formata_numero($dadosboleto["nosso_numero1"], 3, 0) . formata_numero($dadosboleto["nosso_numero2"], 3, 0) . formata_numero($dadosboleto["nosso_numero3"], 9, 0); //nosso número completo (com dv) com 18 digitos $nossonumero = $nnum . digitoVerificador_nossonumero($nnum); // 43 numeros para o calculo do digito verificador do codigo de barras $dv = digitoVerificador_barra("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$campo_livre_com_dv}", 9, 0); // Numero para o codigo de barras com 44 digitos $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$campo_livre_com_dv}"; $agencia_codigo = $agencia . " / " . $conta_cedente . "-" . $conta_cedente_dv; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; function digitoVerificador_nossonumero($numero) { $resto2 = modulo_11($numero, 9, 1);
$cvt = "5"; $zero = "00"; //valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); $carteira = $dadosboleto["carteira"]; //nosso número (sem dv) são 8 digitos $nossonumero_sem_dv = substr($dadosboleto["nosso_numero"], 0, 8); //dvs do nosso número $nossonumero_dv1 = modulo_11($nossonumero_sem_dv); $nossonumero_dv2 = modulo_11($nossonumero_sem_dv . $nossonumero_dv1, 10); $nossonumero_com_dv = $nossonumero_sem_dv . "." . $nossonumero_dv1 . $nossonumero_dv2; unset($nossonumero_dv1, $nossonumero_dv2); //conta corrente (sem dv) são 11 digitos $conta = formata_numero($dadosboleto["conta"], 11, 0); // Chave ASBACE 25 dígitos $Wtemp = formata_numero($nossonumero_sem_dv, 8, 0) . $conta . $dadosboleto["tipo_cobranca"] . $codigobanco; $chaveasbace_dv1 = modulo_10($Wtemp); $chaveasbace_dv2 = modulo_11($Wtemp . $chaveasbace_dv1, 7); $dadosboleto["chave_asbace"] = $Wtemp . $chaveasbace_dv1 . $chaveasbace_dv2; unset($chaveasbace_dv1, $chaveasbace_dv2); // 43 numeros para o calculo do digito verificador $dv = digitoVerificador("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}" . $dadosboleto['chave_asbace']); $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}" . $dadosboleto['chave_asbace']; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $conta; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; $dadosboleto["nosso_numero"] = $nossonumero_com_dv; // FUNÇÕES // Algumas foram retiradas do Projeto PhpBoleto e modificadas para atender as particularidades de cada banco function digitoVerificador($numero)
// | Desenvolvimento Boleto HSBC: Bruno Leonardo M. F. Gonçalves | // +----------------------------------------------------------------------+ $codigobanco = "399"; $codigo_banco_com_dv = geraCodigoBanco($codigobanco); $nummoeda = "9"; $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]); //valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //carteira é CNR $carteira = $dadosboleto["carteira"]; //codigocedente deve possuir 7 caracteres $codigocedente = formata_numero($dadosboleto["codigo_cedente"], 7, 0); $ndoc = $dadosboleto["numero_documento"]; $vencimento = $dadosboleto["data_vencimento"]; // número do documento (sem dvs) é 13 digitos $nnum = formata_numero($dadosboleto["numero_documento"], 13, 0); // nosso número (com dvs) é 16 digitos $nossonumero = geraNossoNumero($nnum, $codigocedente, $vencimento, '4'); $vencjuliano = dataJuliano($vencimento); $app = "2"; // 43 numeros para o calculo do digito verificador do codigo de barras $barra = "{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$codigocedente}{$nnum}{$vencjuliano}{$app}"; $dv = digitoVerificador_barra($barra, 9, 0); // Numero para o codigo de barras com 44 digitos $linha = substr($barra, 0, 4) . $dv . substr($barra, 4); $agencia_codigo = $codigocedente; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;
$valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //agencia é 4 digitos $agencia = formata_numero($dadosboleto["agencia"], 4, 0); //conta é 6 digitos + 1 do dv $conta = formata_numero($dadosboleto["conta"], 6, 0); //dv da conta $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira é 2 digitos $carteira = $dadosboleto["carteira"]; //nosso número (sem dv) é 14 digitos $nnum = formata_numero($dadosboleto["nosso_numero"], 14, 0); //dv do nosso número $dv_nosso_numero = modulo_11($nnum); $nossonumero_dv = "{$nnum}{$dv_nosso_numero}"; //codigo_cliente é 6 digitos + 1 do dv $codigo_cliente = formata_numero($dadosboleto["codigo_cliente"], 7, 0); // 43 numeros para o calculo do digito verificador $dv = digitoVerificador("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$cvt}{$codigo_cliente}{$zero}{$nossonumero_dv}"); // Numero para o codigo de barras com 44 digitos $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$cvt}{$codigo_cliente}{$zero}{$nossonumero_dv}"; //ok $nossonumero = substr($nossonumero_dv, 0, 14) . '-' . substr($nossonumero_dv, 14, 1); $agencia_codigo = $agencia . " / " . $conta . "-" . $conta_dv; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; // FUNÇÕES // Algumas foram retiradas do Projeto PhpBoleto e modificadas para atender as particularidades de cada banco function digitoVerificador($numero)
$conta = formata_numero($dadosboleto["conta"], 5, 0); //dv da conta $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira é 2 caracteres $carteira = $dadosboleto["carteira"]; //fillers - zeros Obs: filler1 contera 1 quando houver valor expresso no campo valor $filler1 = 1; $filler2 = 0; // Byte de Identificação do cedente 1 - Cooperativa; 2 a 9 - Cedente $byteidt = $dadosboleto["byte_idt"]; // Codigo referente ao tipo de cobrança: "3" - SICREDI $tipo_cobranca = 3; // Codigo referente ao tipo de carteira: "1" - Carteira Simples $tipo_carteira = 1; //nosso número (sem dv) é 8 digitos $nnum = $dadosboleto["inicio_nosso_numero"] . $byteidt . formata_numero($dadosboleto["nosso_numero"], 5, 0); //calculo do DV do nosso número $dv_nosso_numero = digitoVerificador_nossonumero("{$agencia}{$posto}{$conta}{$nnum}"); $nossonumero_dv = "{$nnum}{$dv_nosso_numero}"; //formação do campo livre $campolivre = "{$tipo_cobranca}{$tipo_carteira}{$nossonumero_dv}{$agencia}{$posto}{$conta}{$filler1}{$filler2}"; $campolivre_dv = $campolivre . digitoVerificador_campolivre($campolivre); // 43 numeros para o calculo do digito verificador do codigo de barras $dv = digitoVerificador_barra("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$campolivre_dv}", 9, 0); // Numero para o codigo de barras com 44 digitos $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$campolivre_dv}"; // Formata strings para impressao no boleto $nossonumero = substr($nossonumero_dv, 0, 2) . '/' . substr($nossonumero_dv, 2, 6) . '-' . substr($nossonumero_dv, 8, 1); $agencia_codigo = $agencia . "." . $posto . "." . $conta; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha);
// | Ajuste de algumas rotinas: Anderson Nuernberg | // +----------------------------------------------------------------------+ $codigobanco = "756"; $codigo_banco_com_dv = geraCodigoBanco($codigobanco); $nummoeda = "9"; $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]); //valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //agencia é sempre 4 digitos $agencia = formata_numero($dadosboleto["agencia"], 4, 0); //conta é sempre 8 digitos $conta = formata_numero($dadosboleto["conta"], 8, 0); //Zeros: usado quando convenio de 7 digitos $livre_zeros = '000000'; $carteira = preg_replace("/[^0-9]/", "", $dadosboleto["carteira"]); $modalidadecobranca = formata_numero(substr($carteira, -2, 2), 2, 0); $carteira = substr($carteira, -3, 1); $numeroparcela = formata_numdoc($dadosboleto["numero_parcela"], 3); $convenio = formata_numdoc($dadosboleto["convenio"], 7); //agencia e conta $agencia_codigo = $agencia . " / " . $convenio; //é utilizado apenas os últimos 7 dígitos do id do pedido pois 7 digitos é o padrão do sicoob $nosso_numero = formata_numdoc(substr($dadosboleto["nosso_numero"], -7), 7); //Lógica para nosso número $coop = formata_numdoc($dadosboleto["agencia"], 4); $conveniovalidacao = formata_numdoc($dadosboleto["convenio"], 10); $numero_validacao = "{$coop}{$conveniovalidacao}{$nosso_numero}"; $cont = 0; $calculoDv = ''; for ($num = 0; $num <= strlen($numero_validacao); $num++) { $cont++;
$nummoeda = "9"; $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]); //valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //agencia � 4 digitos $agencia = formata_numero($dadosboleto["agencia"], 4, 0); //conta � 5 digitos + 1 do dv $conta = formata_numero($dadosboleto["conta"], 5, 0); $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira 175 $carteira = $dadosboleto["carteira"]; //nosso_numero no maximo 8 digitos //correcao da formatação do erro no boleto enviado por Thiago <*****@*****.**> //$nnum = formata_numero($dadosboleto["nosso_numero"],8,0); //agora fica assim: Nosso_numero no maximo 8 digitos / Testado utilizando a carteira 176 $nnum = formata_numero($dadosboleto["nosso_numero"] - 90000000, 8, 0); $codigo_barras = $codigobanco . $nummoeda . $fator_vencimento . $valor . $carteira . $nnum . modulo_10($agencia . $conta . $carteira . $nnum) . $agencia . $conta . modulo_10($agencia . $conta) . '000'; // 43 numeros para o calculo do digito verificador $dv = digitoVerificador_barra($codigo_barras); // Numero para o codigo de barras com 44 digitos $linha = substr($codigo_barras, 0, 4) . $dv . substr($codigo_barras, 4, 43); $nossonumero = $carteira . '/' . $nnum . '-' . modulo_10($agencia . $conta . $carteira . $nnum); $agencia_codigo = $agencia . " / " . $conta . "-" . modulo_10($agencia . $conta); $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); // verificar $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; // FUN��ES // Algumas foram retiradas do Projeto PhpBoleto e modificadas para atender as particularidades de cada banco
//agencia é 4 digitos $agencia = formata_numero($dadosboleto["agencia"], 4, 0); //conta é 5 digitos $conta = formata_numero($dadosboleto["conta"], 5, 0); //dv da conta $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira é 2 caracteres $carteira = $dadosboleto["carteira"]; //conta cedente (sem dv) com 11 digitos (Operacao de 3 digitos + Cedente de 8 digitos) $conta_cedente = formata_numero($dadosboleto["conta_cedente_caixa"], 11, 0); //dv da conta cedente $conta_cedente_dv = formata_numero($dadosboleto["conta_cedente_dv_caixa"], 1, 0); //nosso número (sem dv) é 10 digitos //nosso_numero no maximo 8 digitos $numeromagento = substr($dadosboleto["nosso_numero"], -8); $nnum = $dadosboleto["inicio_nosso_numero"] . formata_numero($numeromagento, 8, 0); //nosso número completo (com dv) com 11 digitos $nossonumero = $nnum . '-' . digitoVerificador_nossonumero($nnum); // 43 numeros para o calculo do digito verificador do codigo de barras $dv = digitoVerificador_barra("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$nnum}{$agencia}{$conta_cedente}", 9, 0); // Numero para o codigo de barras com 44 digitos $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$nnum}{$agencia}{$conta_cedente}"; $agencia_codigo = $agencia . " / " . $conta_cedente . "-" . $conta_cedente_dv; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; function digitoVerificador_nossonumero($numero) { $resto2 = modulo_11($numero, 9, 1);
// | Acesse o site do Projeto BoletoPhp: www.boletophp.com.br | // +----------------------------------------------------------------------+ // +----------------------------------------------------------------------+ // | Equipe Coordenação Projeto BoletoPhp: <*****@*****.**> | // | Desenvolvimento Boleto Banespa : Fabio Gabbay | // +----------------------------------------------------------------------+ $codigobanco = "033"; $codigo_banco_com_dv = geraCodigoBanco($codigobanco); $nummoeda = "9"; $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]); //valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //Modalidade Carteira $carteira = $dadosboleto["carteira"]; //codigocedente deve possuir 11 caracteres $codigocliente = formata_numero($dadosboleto["codigo_cedente"], 11, 0, "valor"); // Formata no pedido para colocar zero à esquerda $nossonumero = substr("0000000", strlen($dadosboleto['nosso_numero'])) . $dadosboleto['nosso_numero']; // Calcula vencimento juliano $vencjuliano = dataJuliano($data_venc); // Calcula Campo Livre $campoLivre = calculaCampoLivre($codigocliente . $nossonumero . "00" . $codigobanco); // 43 números para o cálculo do dígito verificador do código de barras // retorna 44 números que são 43 + 1 dígito verificador formando 44 posições $linha = monta_codigo_de_barras($codigobanco . $nummoeda . $fator_vencimento . $valor . $codigocliente . $nossonumero . "00" . $codigobanco . substr($campoLivre, strlen($campoLivre) - 2)); $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["nosso_numero"] = calcula_verificador_nosso_numero($dadosboleto["ponto_venda"], $nossonumero); $dadosboleto["agencia_conta"] = substr($dadosboleto["codigo_cedente"], 0, 3) . " " . substr($dadosboleto["codigo_cedente"], 3, 2) . " " . substr($dadosboleto["codigo_cedente"], 5, 5) . " " . substr($dadosboleto["codigo_cedente"], 10); $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; function geraNossoNumero($no_pedido, $dig_inicial)
//valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //agencia é 4 digitos $agencia = formata_numero($dadosboleto["agencia"], 4, 0); //conta é 5 digitos $conta = formata_numero($dadosboleto["conta"], 5, 0); //dv da conta $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira é 2 caracteres $carteira = $dadosboleto["carteira"]; //conta cedente (sem dv) com 6 digitos $conta_cedente = formata_numero($dadosboleto["conta_cedente"], 6, 0); //dv da conta cedente $conta_cedente_dv = modulo_10($conta_cedente); //nosso número (sem dv) é 17 digitos $nossonumero = $dadosboleto["inicio_nosso_numero"] . formata_numero($dadosboleto["nosso_numero"], 15, 0); $sequenciaNossoNumero = sequenciaNossoNumero($nossonumero); // Campo livre $livre = rand(1, 9); // 44 numeros para o calculo do digito verificador do codigo de barras $dv = digitoVerificador_barra("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$conta_cedente}{$conta_cedente_dv}{$sequenciaNossoNumero}{$livre}", 9, 0); // Numero para o codigo de barras com 44 digitos $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$conta_cedente}{$conta_cedente_dv}{$sequenciaNossoNumero}{$livre}"; $agencia_codigo = $agencia . " / " . $conta_cedente . "-" . $conta_cedente_dv; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; function sequenciaNossoNumero($nossoNumero) {
$bb->conta = tamanho_string(str_replace('-', '', $bb->conta), '0', 'e', '9'); #escreve o header do arquivo de remessa $nomeArquivo = "CB" . $diames . $bb->remessa_ . ".REM"; $arquivoDiretorio = "../boletos/remessabancodobrasil/" . date('Y') . '/' . $nomeArquivo; $file_path = "../boletos/remessabancodobrasil/" . date("Y") . "/"; $arquivoConteudo = "01REMESSA01COBRANCA " . $bb->agencia . $bb->conta . "000000" . $bb->favorecido . "001BANCO DO BRASIL" . $data . $bb->versao . " " . $bb->codigo . " " . "000001\r\n"; #variavel do numero de linhas $linha = 2; $i = 0; #captura as informa��es do ultimo envio $brasil = $contaDAO->selectBoletosBrasil($controle_id_empresa, $id_conta); $cont = 0; foreach ($brasil as $b) { $cont++; //nosso n�mero (sem dv) � 11 digitos $nossonumero = formata_numero($b->id_conta_fatura, 10, 0); //dv do nosso n�mero //$dv_nosso_numero = digitoVerificador_nossonumero($nnum); $nossonumero = $bb->codigo . $nossonumero; $b->juros_mora = number_format((double) $b->valor / 100 * (double) $b->juros_mora / 30, 2, ".", ""); #nosso numero //$b->nossonumero = tamanho_string($b->id_conta_fatura,'0','e','11').$dv_nosso_numero; $b->nossonumero = $nossonumero; #numero do documento $b->controle_empresa = tamanho_string($controle_id_empresa . '-' . $b->id_conta_fatura, ' ', 'd', '25'); #valor de desconto por dia (opcional) $b->valor_desc_dia = tamanho_string(str_replace('.', '', $b->valor_desc_dia), '0', 'e', '10'); #valor cobrado $b->valor = tamanho_string(str_replace('.', '', $b->valor), '0', 'e', '11'); #valor de mora por dia (opcional) $b->juros_mora = tamanho_string(str_replace('.', '', $b->juros_mora), '0', 'e', '11');
$cont++; if ($b->ocorrencia == 31) { $b->valor = $b->valor_o; $b->juros_mora = $b->juros_mora_o; $b->instrucao1 = $b->instrucao1_o; $b->instrucao2 = $b->instrucao2_o; $b->cpf = $b->cpf_o; $b->sacado = $b->sacado_o; $b->endereco = $b->endereco_o; $b->mensagem1 = $b->mensagem1_o; $b->cep = $b->cep_o; $b->mensagem2 = $b->mensagem2_o; $b->tipo = $b->tipo_o; } //nosso número (sem dv) é 11 digitos $nnum = formata_numero($bradesco->carteira, 2, 0) . formata_numero($b->id_conta_fatura, 11, 0); //dv do nosso número $dv_nosso_numero = digitoVerificador_nossonumero($nnum); #nosso numero $b->nossonumero = tamanho_string($b->id_conta_fatura, '0', 'e', '11') . $dv_nosso_numero; #numero do documento $b->controle_empresa = tamanho_string($controle_id_empresa . '-' . $b->id_conta_fatura, ' ', 'd', '25'); #valor de desconto por dia (opcional) $b->valor_desc_dia = tamanho_string(str_replace('.', '', $b->valor_desc_dia), '0', 'e', '10'); #valor cobrado $b->valor = tamanho_string(str_replace('.', '', $b->valor), '0', 'e', '13'); #valor de mora por dia (opcional) $b->juros_mora = tamanho_string(str_replace('.', '', $b->juros_mora), '0', 'e', '13'); #valor de desconto até a data (opcional) $b->valor_desc = tamanho_string(str_replace('.', '', $b->valor_desc), '0', 'e', '13'); #valor de abatimento concedido ou cancelado
$codigo_banco_com_dv = geraCodigoBanco($codigobanco); $nummoeda = "9"; $fixo = "9"; // Numero fixo para a posição 05-05 $ios = "0"; // IOS - somente para Seguradoras (Se 7% informar 7, limitado 9%) // Demais clientes usar 0 (zero) $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]); //valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //Modalidade Carteira $carteira = $dadosboleto["carteira"]; //codigocedente deve possuir 7 caracteres $codigocliente = formata_numero($dadosboleto["codigo_cliente"], 7, 0); //nosso número (sem dv) é 11 digitos $nnum = formata_numero($dadosboleto["nosso_numero"], 7, 0); //dv do nosso número $dv_nosso_numero = modulo_11($nnum, 9, 0); // nosso número (com dvs) são 13 digitos $nossonumero = "00000" . $nnum . $dv_nosso_numero; $vencimento = $dadosboleto["data_vencimento"]; $vencjuliano = dataJuliano($vencimento); // 43 numeros para o calculo do digito verificador do codigo de barras $barra = "{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$fixo}{$codigocliente}{$nossonumero}{$ios}{$carteira}"; //$barra = "$codigobanco$nummoeda$fixo$codigocliente$nossonumero$ios$carteira"; $dv = digitoVerificador_barra($barra); // Numero para o codigo de barras com 44 digitos $linha = substr($barra, 0, 4) . $dv . substr($barra, 4); $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["nosso_numero"] = $nossonumero;
if ($dadosboleto["formatacao_nosso_numero"] == "1") { // Nosso número de até 5 dígitos $nossonumero = formata_numero($dadosboleto["nosso_numero"],5,0); $dv = modulo_11("$codigobanco$nummoeda$fator_vencimento$valor$convenio$nossonumero$agencia$conta$carteira"); $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$convenio$nossonumero$agencia$conta$carteira"; //montando o nosso numero que aparecerá no boleto $nossonumero = $convenio . $nossonumero ."-". modulo_11($convenio.$nossonumero); } if ($dadosboleto["formatacao_nosso_numero"] == "2") { // Nosso número de até 17 dígitos $nservico = "21"; $nossonumero = formata_numero($dadosboleto["nosso_numero"],17,0); $dv = modulo_11("$codigobanco$nummoeda$fator_vencimento$valor$convenio$nossonumero$nservico"); $linha = "$codigobanco$nummoeda$dv$fator_vencimento$valor$convenio$nossonumero$nservico"; } } $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; // FUNÇÕES // Algumas foram retiradas do Projeto PhpBoleto e modificadas para atender as particularidades de cada banco
$agencia = formata_numero($dadosboleto["agencia"], 4, 0); //conta é 5 digitos $conta = formata_numero($dadosboleto["conta"], 5, 0); //dv da conta $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira é 2 caracteres $carteira = $dadosboleto["carteira"]; //nosso número (sem dv) é 10 digitos $nnum = $dadosboleto["inicio_nosso_numero"] . formata_numero($dadosboleto["nosso_numero"], 8, 0); //dv do nosso número $dv_nosso_numero = digitoVerificador_nossonumero($nnum); $nossonumero_dv = "{$nnum}{$dv_nosso_numero}"; //conta cedente (sem dv) é 11 digitos $conta_cedente = formata_numero($dadosboleto["conta_cedente"], 11, 0); //dv da conta cedente $conta_cedente_dv = formata_numero($dadosboleto["conta_cedente_dv"], 1, 0); $ag_contacedente = $agencia . $conta_cedente; // 43 numeros para o calculo do digito verificador do codigo de barras $dv = digitoVerificador_barra("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$nnum}{$ag_contacedente}", 9, 0); // Numero para o codigo de barras com 44 digitos $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$nnum}{$ag_contacedente}"; $nossonumero = substr($nossonumero_dv, 0, 10) . '-' . substr($nossonumero_dv, 10, 1); $agencia_codigo = $agencia . " / " . $conta_cedente . "-" . $conta_cedente_dv; $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; function digitoVerificador_nossonumero($numero) { $resto2 = modulo_11($numero, 9, 1);
$codigobanco = "341"; $codigo_banco_com_dv = geraCodigoBanco($codigobanco); $nummoeda = "9"; $fator_vencimento = fator_vencimento($dadosboleto["data_vencimento"]); //valor tem 10 digitos, sem virgula $valor = formata_numero($dadosboleto["valor_boleto"], 10, 0, "valor"); //agencia é 4 digitos $agencia = formata_numero($dadosboleto["agencia"], 4, 0); //conta é 5 digitos + 1 do dv $conta = formata_numero($dadosboleto["conta"], 5, 0); $conta_dv = formata_numero($dadosboleto["conta_dv"], 1, 0); //carteira 175 $carteira = $dadosboleto["carteira"]; //nosso_numero no maximo 8 digitos $numeromagento = substr($dadosboleto["nosso_numero"], -8); $nnum = formata_numero($numeromagento, 8, 0); $codigo_barras = $codigobanco . $nummoeda . $fator_vencimento . $valor . $carteira . $nnum . modulo_10($agencia . $conta . $carteira . $nnum) . $agencia . $conta . modulo_10($agencia . $conta) . '000'; // 43 numeros para o calculo do digito verificador $dv = digitoVerificador_barra($codigo_barras); // Numero para o codigo de barras com 44 digitos $linha = substr($codigo_barras, 0, 4) . $dv . substr($codigo_barras, 4, 43); $nossonumero = $carteira . '/' . $nnum . '-' . modulo_10($agencia . $conta . $carteira . $nnum); $agencia_codigo = $agencia . " / " . $conta . "-" . modulo_10($agencia . $conta); $dadosboleto["codigo_barras"] = $linha; $dadosboleto["linha_digitavel"] = monta_linha_digitavel($linha); // verificar $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero; $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv; // FUNÇÕES // Algumas foram retiradas do Projeto PhpBoleto e modificadas para atender as particularidades de cada banco