225 lines
6.6 KiB
PHP
225 lines
6.6 KiB
PHP
<?php
|
|
|
|
namespace App\Utils;
|
|
|
|
use Illuminate\Support\Str;
|
|
use App\Models\Empresa;
|
|
use App\Models\PlanoConta;
|
|
|
|
class BoletoUtil {
|
|
|
|
public function gerarBoleto($beneficiario, $pagador, $dadosBoleto, $contaBoleto){
|
|
|
|
$objeto = $this->preparaObjeto($beneficiario, $pagador, $dadosBoleto, $contaBoleto);
|
|
try{
|
|
$boleto = $this->geraBoleto($objeto, $contaBoleto);
|
|
$empresa = Empresa::findOrFail($dadosBoleto['empresa_id']);
|
|
|
|
$pdf = new \Eduardokum\LaravelBoleto\Boleto\Render\Pdf();
|
|
$pdf->addBoleto($boleto);
|
|
$fileName = date('d_m_Y_H:i:s') . "_". Str::random(10) . '.pdf';
|
|
$pdf->gerarBoleto($pdf::OUTPUT_SAVE, public_path('boletos_pdf/'.$fileName));
|
|
// dd($boleto);
|
|
|
|
$linhaDigitavel = $boleto->getLinhaDigitavel();
|
|
|
|
return [
|
|
'fileName' => $fileName,
|
|
'linhaDigitavel' => $linhaDigitavel
|
|
];
|
|
}catch(\Exception $e){
|
|
|
|
return [
|
|
'erro' => true,
|
|
'mensagem' => $e->getMessage()
|
|
];
|
|
}
|
|
}
|
|
|
|
private function preparaObjeto($beneficiario, $pagador, $dadosBoleto, $contaBoleto){
|
|
$logo = null;
|
|
if($dadosBoleto['usar_logo']){
|
|
$empresa = Empresa::findOrFail($dadosBoleto['empresa_id']);
|
|
if($empresa->logo != null){
|
|
if(file_exists(public_path('/uploads/logos/'. $empresa->logo))){
|
|
$logo = public_path('/uploads/logos/'. $empresa->logo);
|
|
}
|
|
}
|
|
}
|
|
|
|
$data = [
|
|
'logo' => $logo,
|
|
'dataVencimento' => new \Carbon\Carbon($dadosBoleto['vencimento']),
|
|
'valor' => $dadosBoleto['valor'],
|
|
'multa' => $dadosBoleto['multa'],
|
|
'juros' => $dadosBoleto['juros'],
|
|
'numero' => $dadosBoleto['numero'],
|
|
'numeroDocumento'=> $dadosBoleto['numero_documento'],
|
|
'instrucoes' => [$dadosBoleto['instrucoes']],
|
|
'aceite' => 'S',
|
|
'especieDoc' => 'DM',
|
|
'pagador' => $pagador,
|
|
'beneficiario' => $beneficiario,
|
|
'carteira' => $dadosBoleto['carteira'],
|
|
'convenio' => $dadosBoleto['convenio'],
|
|
];
|
|
|
|
if($contaBoleto->banco == 'Sicoob' || $contaBoleto->banco == 'Bradesco' || $contaBoleto->banco == 'Sicredi' || $contaBoleto->banco == 'Itau' || $contaBoleto->banco == 'Banco do nordeste' || $contaBoleto->banco == 'Banco btg'){
|
|
$data['agencia'] = $contaBoleto->agencia;
|
|
$data['conta'] = $contaBoleto->conta;
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Santander' || $contaBoleto->banco == 'C6'){
|
|
$data['codigoCliente'] = $dadosBoleto['cliente_id'];
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Sicredi'){
|
|
$data['posto'] = $dadosBoleto['posto'];
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Banco inter'){
|
|
$data['operacao'] = rand(1111111111,9999999999);
|
|
$data['nossoNumero'] = rand(1111111111,9999999999);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
private function geraBoleto($objeto, $contaBoleto){
|
|
|
|
if($contaBoleto->banco == 'Banco do brasil'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Bb($objeto);
|
|
}
|
|
if($contaBoleto->banco == 'Sicoob'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Bancoob($objeto);
|
|
}
|
|
if($contaBoleto->banco == 'Bradesco'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Bradesco($objeto);
|
|
}
|
|
if($contaBoleto->banco == 'Santander'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Santander($objeto);
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Sicredi'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Sicredi($objeto);
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Itau'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Itau($objeto);
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Banco inter'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Inter($objeto);
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Banco do nordeste'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Bnb($objeto);
|
|
}
|
|
|
|
if($contaBoleto->banco == 'C6'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\C6($objeto);
|
|
}
|
|
|
|
if($contaBoleto->banco == 'Banco btg'){
|
|
return new \Eduardokum\LaravelBoleto\Boleto\Banco\Btg($objeto);
|
|
}
|
|
}
|
|
|
|
public function gerarBoletoParaRemessa($beneficiario, $pagador, $dadosBoleto, $contaBoleto){
|
|
$objeto = $this->preparaObjeto($beneficiario, $pagador, $dadosBoleto, $contaBoleto);
|
|
$boleto = $this->geraBoleto($objeto, $contaBoleto);
|
|
return $boleto;
|
|
}
|
|
|
|
public function geraRemessa($boletos, $tipo, $banco, $data){
|
|
$remessa = null;
|
|
if($banco == 'Banco do brasil'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Bb($data);
|
|
}else{
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Bb($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Sicoob'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Bancoob($data);
|
|
}else{
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Bancoob($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Bradesco'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Bradesco($data);
|
|
}else{
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Bradesco($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Santander'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Santander($data);
|
|
}else{
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Santander($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Sicredi'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Sicredi($data);
|
|
}else{
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Sicredi($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Itau'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Itau($data);
|
|
}else{
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Itau($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Banco inter'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Inter($data);
|
|
}else{
|
|
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Inter($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Banco do nordeste'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Bnb($data);
|
|
}else{
|
|
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Bnb($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'C6'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\C6($data);
|
|
}else{
|
|
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\C6($data);
|
|
}
|
|
}
|
|
|
|
if($banco == 'Banco btg'){
|
|
if($tipo == 'Cnab400'){
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Btg($data);
|
|
}else{
|
|
|
|
$remessa = new \Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab240\Banco\Btg($data);
|
|
}
|
|
}
|
|
|
|
$remessa->addBoletos($boletos);
|
|
$fileName = date('d_m_Y_H:i:s') . "_". Str::random(10) . '.txt';
|
|
$remessa->save(public_path('remessas_boleto/'.$fileName));
|
|
return $fileName;
|
|
}
|
|
|
|
}; |