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.