openboleto icon indicating copy to clipboard operation
openboleto copied to clipboard

Linha Digitavel - Sicredi

Open FabricioGRodrigues opened this issue 3 years ago • 2 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?

FabricioGRodrigues avatar Apr 08 '22 12:04 FabricioGRodrigues

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.

fredroo avatar Aug 09 '22 19:08 fredroo