Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linha Digitavel - Sicredi #173

Open
FabricioGRodrigues opened this issue Apr 8, 2022 · 1 comment
Open

Linha Digitavel - Sicredi #173

FabricioGRodrigues opened this issue Apr 8, 2022 · 1 comment

Comments

@FabricioGRodrigues
Copy link

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?

@fredroo
Copy link
Contributor

fredroo commented Aug 9, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants