Bom dia a todos, e bom dia Roberto (um bom dia especial para o Roberto porque ele É O CARA da NF-e né... =D ),
Aproveitando o assunto da DF-e,
estou "bolando" uma sugestão de alteração da classe que gostaria de discutir com vocês,
até mesmo para ver se alguém já tem uma solução implementada.
Tanto para a
DF-e quanto para a
Manifestação do destinatário as notas técnicas citam logo nas primeiras páginas que o acesso às informações da DF-e ou a Manifestação poderão ser realizadas utilizando um certificado com o
CNPJ base da empresa (8 primeiros dígitos).
(Nota Técnica 2014/002 Web Service de Distribuição de DF-e Pag.4).
(Nota Técnica 2012/002 Web Service de Manifestação do Destinatário Pag.3).
Isso me interessou, pois trabalho com empresas de serviços que tem várias filiais e apenas um certificado (pelo menos em meu sistema há apenas 1).
Utilizo as classes de Develop, e também o App\DF-e.php do Roberto. Dando uma força ao que o Roberto sempre diz: Tudo está perfeitamente funcional.
Fiz alguns testes para baixar os documentos
de um CNPJ de uma filial utilizando
o certificado com o CNPJ da Matriz (Base), e
deu tudo
certo.
Para realizar o teste, lá em Common/Certificate/
Pkcs12.php , no método
loadPfxFile, alterei 'manualmente' o padrão do parâmetro
$ignoreOwner de
false para
true(
isso apenas para testar mais rápidamente):
public function loadPfxFile( $pathPfx = '', $password = '', $createFiles = true, $ignoreValidity = false, $ignoreOwner =
true ) { ... }
Bom... agora com o teste feito e com a confirmação de que funciona, minha ideia é tornar este $ignoreOwner 'dinâmico'.
Por mim, eu removeria o parâmetro $ignoreOwner do método e o tornaria um atributo da Classe, com o padrão false e com um método setIgnoreOwner().
Desta forma, nos apps de Manifestação e de DF-e eu o setaria como true.
Mas, pensando bem, não sei se é interessante apenas ignorar o "Owner" neste caso.
Então, se adicionássemos um atributo "do tipo" $verifyBaseOwner a classe seria mais interessante, já que não quero que a verificação seja totalmente ignorada, mas sim que ela verifique apenas a Base.
Em loadFfx colocaríamos uma verificação adicional a "if (!$ignoreOwner) {}" e aí a compatibilidade é mantida.
Eu quis discutir antes de sugerir alguma alteração no Git pois pode ser que alguém utilize a classe Pkcs12.php para alguma outra coisa, e precise dos parâmetros como estão.
No NFePHP utilizamos estes métodos apenas com 2 parâmetros, nos seguintes pontos:
Em Common/Base/
BaseTools.php no método
atualizaCertificado:
$this->oCertificate->
loadPfxFile($certpfx, $senha);
$this->oCertificate->
loadPfx($certpfx, $senha);
Acho que escrevi demais..
Mas também acho que ficaram claras as minhas preocupações e a minha necessidade.
Alguma sugestão?
Obrigado a todos.