openboleto / openboleto

Biblioteca para geração de boletos bancários em PHP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Linha Digitavel - Sicredi

FabricioGRodrigues opened this issue · comments

Estou tento dificuldade em gerar a linha digital dos boletos do sicredi.
Um exemplo:
74891.12222 00008.807182 62013.091004 1 89460000100000 - BANCO
74891.12222 00008.708 71800.013097 1 89460000100000 - Que eu gero,

A classe uso a mesma de exemplo.
https://github.com/openboleto/openboleto/blob/master/src/OpenBoleto/Banco/Sicredi.php

Unica modificação que faço é no getSequencial(), pois o numero que tenho no banco tem 222000088, e eu mantenho como no exemplo não gera o boleto :

/**
* Gera o Nosso Número.
*
* @return string
*/
protected function gerarNossoNumero() {
$ano = date("y");

    $numero = self::zeroFill($this->getAgencia(), 4) .
              self::zeroFill($this->getPosto(), 2) .
              self::zeroFill($this->getConta(), 5) .
              self::zeroFill($ano, 2) .
              $this->bytecode .
              self::zeroFill($this->getSequencial(), 9);

    $dv = static::modulo11($numero);

    return self::zeroFill($ano, 2) . '/' . $this->bytecode . self::zeroFill($this->getSequencial(), 9) . '-' . $dv['digito'];
}

/**
 * Método para gerar o código da posição de 20 a 44
 *
 * @return string
 * @throws \OpenBoleto\Exception
 */
public function getCampoLivre() {
    $numero = $this->tipoCobranca .
            '1' .
            self::zeroFill($this->getNossoNumero(false), 13) .
            self::zeroFill($this->getAgencia(), 4) .
            self::zeroFill($this->getPosto(), 2) .
            self::zeroFill($this->getConta(), 5) .
            '1' .
            '0';

    $dv = static::modulo11($numero);

    return $numero . $dv['digito'];
}

Na chamada da classe, está assim, pego os dados do banco.

$dados = $this->obtemDados($cid, "748");
$boleto = $dados["boleto"];
$sacado = $dados["sacado"];
$cedente = $dados["cedente"];

$objBoleto = new Sicredi([
// Parâmetros obrigatórios
"dataVencimento" => new DateTime($boleto["b748_data_venc"]),
"dataDocumento" => DateTime::createFromFormat(
"d/m/Y",
$boleto["b748_data_docu"]
),
"valor" => +preg_replace(
["/[^0-9\.\,]/", "/,/"],
["", "."],
$boleto["b748_valor"]
),
"sequencial" => substr($boleto["b748_no_banc"], 0, -1),
"carteiraDv" => substr($boleto["b748_no_banc"], -1),
'sacado' => $sacado,
'cedente' => $cedente,
"agencia" => str_pad($boleto["b748_empr_agen"], 4, "0", STR_PAD_LEFT),
"conta" => str_pad($boleto["b748_empr_cont"], 5, "0", STR_PAD_LEFT),
"contaDv" => $boleto["b748_empr_cont_dv"],
"carteira" => $boleto["b748_empr_cart"],
'numeroDocumento' => $boleto["b748_titu_parc"],
'descricaoDemonstrativo' => array(
$boleto["b748_clie_demo1"],
$boleto["b748_clie_demo2"],
),
'instrucoes' => array(
$boleto["b748_clie_inst1"],
$boleto["b748_clie_inst2"],
$boleto["b748_clie_inst3"],
$boleto["b748_clie_inst4"],
),
]);

Uso o openBoleto para outros bancos, e tudo ok. Esse eu não sei o que acontece.
Alguém tem alguma dica?

o Sicredi tá como beta, pode ter tido alguma atualização do banco, pedimos que entre em contato com o banco e faça a homologação seguindo a última documentação fornecida por eles, depois envie para nós caso consiga homologar.