$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 $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;
$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); $digito = 11 - $resto2; if ($digito == 10 || $digito == 11) {
$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); $dadosboleto["agencia_codigo"] = $agencia_codigo; $dadosboleto["nosso_numero"] = $nossonumero;
$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}"); //Se vier 2 caracteres significa que o dv2 deu 1 então o dv1 e o dv2 foi recalculado e retornado nesta string(Coisa do manual do banco =D !) if (strlen($dv2) == 2) { $dv1 = substr($dv2, 0, 1); $dv2 = substr($dv2, 1, 1); } // DONE: Bugfix 2007-03-25 Francisco Ernesto Teixeira <*****@*****.**> // Notice: Undefined variable: dv in funcoes_nossacaixa.php on line 93
function geraNossoNumero($ndoc) { return $ndoc . "-" . digitoVerificador_nossonumero($ndoc); }