Ola, eu utilizo o ACBR a muito tempo já, porem nunca fiz nenhuma contribuição, então segue problema critico que encontrei no ACBR. Ocorre que eu utilizava o trunk e para mim era perfeito, funcionava 100%, porem em virtude das modificações do diferencial de alíquota tive que migrar para o trunk2. Ocorre que existe um erro critico na NFE no procedimento LoadFromFile e também no CTE.
Nós somente descobrimos porque um cliente nosso enviou uma mercadoria para fora do pais e quando chegou na alfandega e foram verificar a chave da nota fiscal, estava aparecendo outra nota fiscal que não era aquela, porem era outra do mesmo lote que ele enviou, isto gerou um problema e multa para o cliente, ocorre que trabalhando neste feriadão descobrimos o problema.
Procedimento Original!
function TNotasFiscais.LoadFromFile(CaminhoArquivo: String;
AGerarNFe: Boolean = True): Boolean;
var
XMLStr: String;
XMLUTF8: AnsiString;
i: integer;
MS: TMemoryStream;
begin
Result := False;
MS := TMemoryStream.Create;
try
MS.LoadFromFile(CaminhoArquivo);
XMLUTF8 := ReadStrFromStream(MS, MS.Size);
finally
MS.Free;
end;
// Converte de UTF8 para a String nativa da IDE //
XMLStr := DecodeToString(XMLUTF8, True);
LoadFromString(XMLStr, AGerarNFe);
for i := 0 to Self.Count - 1 do
Self.Items.NomeArq := CaminhoArquivo; (isto este errado, observar que se estou carregando várias notas, sempre vai substituir o path para o da ultima)
Result := True; end;
Procedimento Corrigido!
function TNotasFiscais.LoadFromFile(CaminhoArquivo: String; AGerarNFe: Boolean = True): Boolean; var XMLStr: String; XMLUTF8: AnsiString; i: integer; MS: TMemoryStream; begin Result := False;
MS := TMemoryStream.Create; try MS.LoadFromFile(CaminhoArquivo); XMLUTF8 := ReadStrFromStream(MS, MS.Size); finally MS.Free; end;
// Converte de UTF8 para a String nativa da IDE // XMLStr := DecodeToString(XMLUTF8, True); LoadFromString(XMLStr, AGerarNFe);
Self.Items[Self.Count - 1].NomeArq := CaminhoArquivo;
Result := True; end;
Para entender porque uso o LoadFromFile, eu primeiro gero todos os XMLs, depois tem uma tela que criei chamada envio de lote, onde o usuário seleciona todas as notas fiscais geradas no sistema e clica em um botão enviar, neste momento eu carrego todos os XMLs com o path que já esta gravado no meu sistema e ao final chamo a função para Enviar.
Aproveitando gostaria de informar que sempre que atualizo o ACBR sou obrigado a trocar as Units para impressão de etiqueta ACBrETQ, ACBrETQClass, ACBrETQEpl2, ACBrETQPpla, ACBrETQZplII, porque primeiro que a impressão para zebra desenvolvida pela comunidade não funciona, segundo a forma como foram desenvolvidas é muito lenta a impressão, se você pega uma industria grande onde a impressora de etiquetas não para é bem complicado. Não sei como poderia estar enviando estes fontes para vocês avaliarem e colocarem como oficial.
Também outro problema que enfrento sempre com a atualização do ACBR é a NFSe que nunca funciona corretamente, existem diversos problemas com emissão do sistema Betha Fly Nota (maioria dos meus clientes usam este) e também com o sistema da Prefeitura de POA. Por exemplo com a atualização do trunk2 tudo parou de funcionar corretamente com relação a isto, então peguei os fontes da NFSe anterior onde eu já tinha também implementado correções e incorporei a este fonte, porem passei um trabalhão, porque tive que mexer nos pacotes devido a existirem units que são do comum que foram modificadas no trunk2.
Creio que antes de mudarem versões ou abandonarem uma que esta funcionando, poderiam fazer uma analise melhor se realmente esta tudo funcionando na nova para assim não prejudicarem os usuário, exemplo o problema do LoadFromFile da NFE e CTE é critico, com a versão anterior nunca tive problemas, agora você imagina devido a este problema vamos aqui na empresa fazer um pente fino em funções básicas, pois não esta confiável. É claro é uma comunidade então cabe a todos que utilizam contribuírem.