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

Boletos Banrisul #144

Open
nandodigi opened this issue Aug 20, 2020 · 10 comments
Open

Boletos Banrisul #144

nandodigi opened this issue Aug 20, 2020 · 10 comments

Comments

@nandodigi
Copy link

Boa tarde
Alguém tem algum exemplo de impressão dos boletos do Banrisul ?

@fredroo
Copy link
Contributor

fredroo commented Aug 21, 2020

consegue um boleto já do banco Banrisul e tenta fazer um igual para você entender como funciona para gerar (confere se o código de barras bate), depois manda um exemplo aqui por PR para todos usarem em samples.

@mobidrive
Copy link

Alguem conseguiu fazer funcionar?

@gpaulini
Copy link

Eu consegui gerar tirando a propriedade 'carteira' do array de parâmetros.

@mobidrive
Copy link

Eu tirei e continua com erros

@gpaulini
Copy link

Eu tirei e continua com erros

Que tipo de erros?

@mobidrive
Copy link

Atualmente eu uso o boleto do Itau e funciona perfeito. Mas o do Banrisul não funciona

@mobidrive
Copy link

use OpenBoleto\Banco\Banrisul;
use OpenBoleto\Agente;

$sacado = new Agente('Fernando Maia', '023.434.234-34', 'ABC 302 Bloco N', '72000-000', 'Brasília', 'DF');
$cedente = new Agente('Empresa de cosméticos LTDA', '02.123.123/0001-11', 'CLS 403 Lj 23', '71000-000', 'Brasília', 'DF');

$boleto = new Banrisul(array(
// Parâmetros obrigatórios
'dataVencimento' => new DateTime('2013-01-24'),
'valor' => 23.00,
'sequencial' => 1234567, // Para gerar o nosso número
'sacado' => $sacado,
'cedente' => $cedente,
'agencia' => 1724, // Até 4 dígitos
'conta' => 10403005, // Até 8 dígitos
'convenio' => 1234 // 4, 6 ou 7 dígitos
));

echo $boleto->getOutput();

@mobidrive
Copy link

Eu tirei e continua com erros

Que tipo de erros?

Erros de execução do PHP. O Boleto do Itau funciona bem. Mas do Banrisul nao

@nandodigi
Copy link
Author

Oi Pessoal
Fiz o boleto Banrisul e esta funcionando legal
Vou postar abaixo a parte de impresão

    require '../vendor/openboleto/autoloader.php';
    use OpenBoleto\Banco\Banrisul;
    use OpenBoleto\Agente;
    $cedente = new Agente($nomemp, $cgcemp, $endemp, $cepemp, $cidemp, $estemp);
    $sacado = new Agente($nomecli, $documclie, $enderclie, $cepclie, $cidclie, $estclie);
    $clas041 = new Banrisul(array(
            'datavencimento' => new DateTime($datavenc),  
            'valor' => $valor_doc,
            'sequencial' => $nnumero, 
            'sacado' => $sacado,
            'cedente' => $cedente,
            'agencia' => $agenciac, 
            'carteira' => $carteira, 
            'conta' => $contac, 
            'modalidade' => '02',
            'contaDv' => $digc,
            'convenio' => $nconvenio,
            'numeroDocumento' => $docc, 
            'logoPath' => $logo, 
            'descricaoDemonstrativo' => array( 
                $descdem,
            ),
            'instrucoes' => array( // Até 8
                $descdem, 
                $instruc1,
                $instruc2,
                $instruc3,
                $instruc4,
                $instruc5
            ),
            'dataDocumento' => new DateTime(),
            'aceite' => $aceite,
            'especieDoc' => 'DM',
            'quantidade' => 1,
        ));
        $boletoImp = $clas041->getOutput();

Evidente que antes disso tem toda preparação das variáveis

Abaixo o arquivo Banrisul.php na pasta vendor/OpenBoleto/src/OpenBoleto/Banco, só deem uma conferida sobre os cálculos do DV

* @license MIT License * @Version 1.0 */ class Banrisul extends BoletoAbstract { /** * Código do banco * @var string */ protected $codigoBanco = '041'; /** * Localização do logotipo do banco, referente ao diretório de imagens * @var string */ protected $logoBanco = 'banrisul.jpg'; /** * Linha de local de pagamento * @var string */ protected $localPagamento = 'Pagável preferencialmente no Banrisul até o vencimento'; /** * Define o tipo da cobrança: 1 Cobrança Normal, Fichário emitido pelo BANRISUL; 2 Cobrança Direta, Fichário emitido pelo CLIENTE * @var int */ protected $tipoCobranca = 2; /** * Define as carteiras disponíveis para este banco * @var array */ protected $carteiras = array('1', '3', '4', '5', '6', '7', '8', 'C', 'D', 'E', 'F', 'H', 'I', 'K', 'M', 'N', 'R', 'S', 'X'); /** * @return int */ public function getTipoCobranca(): int { return $this->tipoCobranca; } /** * @param int $tipoCobranca */ public function setTipoCobranca(int $tipoCobranca) { $this->tipoCobranca = $tipoCobranca; } /** * Gera o Nosso Número. * * @return string */ protected function gerarNossoNumero() { $nnum = self::zeroFill($this->getSequencial(), 8); $dv = self::zeroFill($this->gerarDigitoVerificadorDuplo(), 2); $nosson = $nnum .'-'.$dv; return $nosson; } /** * Gera o dígito verificador duplo * * @return string */ protected function gerarDigitoVerificadorDuplo() { $sequencial = self::zeroFill($this->getSequencial(), 8); $dv1 = static::modulo10($sequencial); $resto2 = static::modulo11($sequencial . $dv1, 7)['resto']; if ($resto2 == 1) { $dv1++; if ($dv1 == 10) { $dv1 = '0'; } $resto2 = static::modulo11($sequencial . $dv1,7)['resto']; } $digito = 11 - $resto2; if ($digito > 9) { $dv2 = 0; } else { $dv2 = $digito; } return $dv1 . $dv2; } /** * Método para gerar o código da posição de 20 a 44 * * @return string * @throws \OpenBoleto\Exception */ public function getCampoLivre() { return self::zeroFill($this->getTipoCobranca(), 1) . 1 . self::zeroFill($this->getAgencia(), 4) . self::zeroFill($this->getConta(), 7) . self::zeroFill($this->getSequencial(), 8) . 40 . self::zeroFill($this->gerarDigitoVerificadorDuplo(), 2); } } Espero ajudar Abração

@fredroo
Copy link
Contributor

fredroo commented Aug 9, 2022

pessoal caso achem algum erro e possam contribuir, subam uma PR para corrigir e caso alguém tenha feito a homologação subam também como PR pra gente atualizar o projeto.

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

4 participants