Eduardokum\LaravelBoleto\Util::criarRetornoFake PHP Method

criarRetornoFake() public static method

Pela remessa cria um retorno fake para testes.
public static criarRetornoFake ( $file, string $ocorrencia = '02' ) : string
$file Remessa
$ocorrencia string
return string
    public static function criarRetornoFake($file, $ocorrencia = '02')
    {
        $remessa = file($file);
        $banco = self::remove(77, 79, $remessa[0]);
        $retorno[0] = array_fill(0, 400, '0');
        // header
        self::adiciona($retorno[0], 1, 9, '02RETORNO');
        switch ($banco) {
            case Contracts\Boleto\Boleto::COD_BANCO_BB:
                self::adiciona($retorno[0], 27, 30, self::remove(27, 30, $remessa[0]));
                self::adiciona($retorno[0], 31, 31, self::remove(31, 31, $remessa[0]));
                self::adiciona($retorno[0], 32, 39, self::remove(32, 39, $remessa[0]));
                self::adiciona($retorno[0], 40, 40, self::remove(40, 40, $remessa[0]));
                self::adiciona($retorno[0], 150, 156, self::remove(130, 136, $remessa[0]));
                break;
            case Contracts\Boleto\Boleto::COD_BANCO_SANTANDER:
                self::adiciona($retorno[0], 27, 30, self::remove(27, 30, $remessa[0]));
                self::adiciona($retorno[0], 39, 46, '0' . self::remove(40, 46, $remessa[0]));
                break;
            case Contracts\Boleto\Boleto::COD_BANCO_CEF:
                self::adiciona($retorno[0], 27, 30, self::remove(27, 30, $remessa[0]));
                self::adiciona($retorno[0], 31, 36, self::remove(31, 36, $remessa[0]));
                break;
            case Contracts\Boleto\Boleto::COD_BANCO_BRADESCO:
                self::adiciona($retorno[0], 27, 46, self::remove(27, 46, $remessa[0]));
                break;
            case Contracts\Boleto\Boleto::COD_BANCO_ITAU:
                self::adiciona($retorno[0], 27, 30, self::remove(27, 30, $remessa[0]));
                self::adiciona($retorno[0], 33, 37, self::remove(33, 37, $remessa[0]));
                self::adiciona($retorno[0], 38, 38, self::remove(38, 38, $remessa[0]));
                break;
            case Contracts\Boleto\Boleto::COD_BANCO_HSBC:
                self::adiciona($retorno[0], 28, 31, self::remove(28, 31, $remessa[0]));
                self::adiciona($retorno[0], 38, 43, self::remove(38, 43, $remessa[0]));
                self::adiciona($retorno[0], 44, 44, self::remove(44, 44, $remessa[0]));
                break;
            case Contracts\Boleto\Boleto::COD_BANCO_SICREDI:
                self::adiciona($retorno[0], 27, 31, self::remove(27, 31, $remessa[0]));
                self::adiciona($retorno[0], 32, 45, self::remove(32, 45, $remessa[0]));
                self::adiciona($retorno[0], 111, 117, self::remove(111, 117, $remessa[0]));
                break;
            case Contracts\Boleto\Boleto::COD_BANCO_BANRISUL:
                self::adiciona($retorno[0], 27, 39, self::remove(18, 30, $remessa[0]));
                self::adiciona($retorno[0], 47, 76, self::remove(47, 76, $remessa[0]));
                break;
            default:
                throw new \Exception("Banco: {$banco}, inválido");
        }
        self::adiciona($retorno[0], 77, 79, $banco);
        self::adiciona($retorno[0], 95, 100, date('dmy'));
        self::adiciona($retorno[0], 395, 400, sprintf('%06s', count($retorno)));
        array_shift($remessa);
        // removo o header
        array_pop($remessa);
        // remove o trailer
        foreach ($remessa as $detalhe) {
            $i = count($retorno);
            $retorno[$i] = array_fill(0, 400, '0');
            self::adiciona($retorno[$i], 1, 1, '1');
            self::adiciona($retorno[$i], 109, 110, sprintf('%02s', $ocorrencia));
            self::adiciona($retorno[$i], 111, 116, date('dmy'));
            self::adiciona($retorno[$i], 153, 165, self::remove(127, 139, $detalhe));
            self::adiciona($retorno[$i], 254, 266, self::remove(127, 139, $detalhe));
            self::adiciona($retorno[$i], 147, 152, self::remove(121, 126, $detalhe));
            self::adiciona($retorno[$i], 117, 126, self::remove(111, 120, $detalhe));
            self::adiciona($retorno[$i], 395, 400, sprintf('%06s', count($retorno)));
            switch ($banco) {
                case Contracts\Boleto\Boleto::COD_BANCO_BB:
                    if (self::remove(1, 1, $detalhe) != 7) {
                        unset($retorno[$i]);
                        continue;
                    }
                    self::adiciona($retorno[$i], 1, 1, '7');
                    self::adiciona($retorno[$i], 64, 80, self::remove(64, 80, $detalhe));
                    break;
                case Contracts\Boleto\Boleto::COD_BANCO_SANTANDER:
                    self::adiciona($retorno[$i], 63, 71, self::remove(63, 71, $detalhe));
                    self::adiciona($retorno[$i], 384, 385, self::remove(384, 385, $detalhe));
                    break;
                case Contracts\Boleto\Boleto::COD_BANCO_CEF:
                    self::adiciona($retorno[$i], 57, 73, self::remove(57, 73, $detalhe));
                    break;
                case Contracts\Boleto\Boleto::COD_BANCO_BRADESCO:
                    self::adiciona($retorno[$i], 25, 29, self::remove(25, 29, $detalhe));
                    self::adiciona($retorno[$i], 30, 36, self::remove(30, 36, $detalhe));
                    self::adiciona($retorno[$i], 37, 37, self::remove(37, 37, $detalhe));
                    self::adiciona($retorno[$i], 71, 82, self::remove(71, 82, $detalhe));
                    break;
                case Contracts\Boleto\Boleto::COD_BANCO_ITAU:
                    self::adiciona($retorno[$i], 86, 94, self::remove(63, 70, $detalhe));
                    break;
                case Contracts\Boleto\Boleto::COD_BANCO_HSBC:
                    self::adiciona($retorno[$i], 63, 73, self::remove(63, 73, $detalhe));
                    break;
                case Contracts\Boleto\Boleto::COD_BANCO_SICREDI:
                    self::adiciona($retorno[$i], 48, 62, '00000' . self::remove(48, 56, $detalhe));
                    break;
                case Contracts\Boleto\Boleto::COD_BANCO_BANRISUL:
                    self::adiciona($retorno[$i], 38, 62, self::remove(38, 62, $detalhe));
                    self::adiciona($retorno[$i], 63, 72, self::remove(111, 120, $detalhe));
                    self::adiciona($retorno[$i], 18, 30, self::remove(18, 30, $detalhe));
                    break;
                default:
                    throw new \Exception("Banco: {$banco}, inválido");
            }
        }
        $i = count($retorno);
        $retorno[$i] = array_fill(0, 400, '0');
        self::adiciona($retorno[$i], 1, 1, '9');
        self::adiciona($retorno[$i], 395, 400, sprintf('%06s', count($retorno)));
        $retorno = array_map(function ($a) {
            return implode('', $a);
        }, $retorno);
        return implode("\r\n", $retorno);
    }