openboleto / OpenCnabPHP

Biblioteca multibanco para geração e leitura de arquivos Cnab240 e Cna400 de remessa e retorno
MIT License
192 stars 118 forks source link

Implementação do layout L060 240 Santander 033 #227

Open KaduAmaral opened 1 year ago

KaduAmaral commented 1 year ago

Olá,

Eu já utilizo a biblioteca para gerar remessa e ler retornos para emissão de boletos, até aqui tudo certo. Porém agora preciso do Pagamento de Fornecedores. Fiz um fork e comecei a implementação pelo banco Santander.

O problema que encontrei é que o layout 060 do Santander tem uma peculiaridade do Registro 3 Segmento B (acho que pode acontecer com outros também, mas ainda não cheguei lá) que é quando é DOC/TED o Layout é de um jeito, mas quando é PIX o Layout é outro.

Como ficaria a estrutura de classes para essa situação, pensei em criar algo tipo isso:

class Registro3B extends Generico3 
{

    protected $meta = NULL;

    public function __construct($data = null)
    {
        if ($this->isPix($data)) {
            $this->meta = Registro3B_Pix::$meta;
        } else {
            $this->meta = Registro3B_TedDoc::$meta;
        }

        if (empty($this->data)) {
            parent::__construct($data);
        }
        $this->inserirDetalhe($data);
    }

E assim só determinar o layout quanto estivesse lendo a linha.

Teriam alguma ideia pra fazer essa implementação?

Segue o link da documentação do arquivo: https://cms.santander.com.br/sites/WPS/documentos/arq-layout-pagamento-fornecedores-mai22/23-03-07_150124_pagamento_a_fornecedores_layout_cnab_240_v11.3.2_newpt.pdf

Layout para TED/DOC/etc (Página 11 do PDF) image

Layout para PIX (Página 16 do PDF) image

Rctnet commented 1 year ago

Olá @KaduAmaral , acredito que se houver uma difrença signicativa no layout para essa função, vc pode criar um layout novo, já no arquivo reigstro3 vc pode fazer a chamada para carregar os registros auxiliares, normalmente o registro 3P é obrigatorio em todo layout, e a partir dele eu chamo os outros, vc pode observar o layout que foi criado para o Banco ABC, nele tem alguma coisa nesse sentido, onde os registros auxiliares pode ser carregados de forma opcional inclusive