Jump to content

Gabriel Frones

Membros
  • Posts

    115
  • Joined

  • Last visited

  • Days Won

    2

Gabriel Frones last won the day on May 13 2015

Gabriel Frones had the most liked content!

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Gabriel Frones's Achievements

Collaborator

Collaborator (7/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

32

Reputation

1

Community Answers

  1. Na versão mais recente dos fontes, o PCN e o ACBrDFe estão altamente acoplados, de maneira que usar o PCN apenas para geração dos arquivos XML inclui até mesmo as bibliotecas de criptografia. Em um teste rápido que fiz, criei um novo projeto apenas com um pcnNFe e um pcnNFeW e ao compilar, o executável tentou carregar dinamicamente a libxml2.dll. Esse acoplamento se deve ao uso da ACBrDFeUtil no pcnNFeW. Para resolver isso aqui eu movi todas as funções de validação do ACBrDFeUtil para o pcnAuxiliar. As funções movidas foram: function ValidaDIDSI(AValue: String): Boolean; function ValidaDIRE(AValue: String): Boolean; function ValidaRE(AValue: String): Boolean; function ValidaDrawback(AValue: String): Boolean; function ValidaSUFRAMA(AValue: String): Boolean; function ValidaRECOPI(AValue: String): Boolean; function ValidaNVE(AValue: string): Boolean; Obs.: As funções ValidaUFCidade não são usadas em parte alguma dos fontes do ACBr.
  2. O código sugere que o repositório contem um arquivo .res binário pré-compilado para 32 bits, e que usa o .rc para compilar um novo .res se for 64 bits. O seu deve estar caindo nessa linha do .rc porque está usando uma plataforma 64 bits. Mas o FPC possui suporte a arquivos .rc desde a versão 2.4. De uma olhada aqui: http://wiki.freepascal.org/Lazarus_Resources#FPC_resources Quanto à sua dificuldade, talvez você não tenha o compilador de resources instalado. Mas posta aqui a mensagem de erro que você está obtendo, assim não temos que adivinhar qual o problema. rs
  3. Bom, adiciona todos os paths, independente de pacote escolhido (dá pra otimizar, mas tenho minhas dúvidas se vale o trabalho), mas não adicionou nenhum .svn. Você baixa os fontes pelo SVN ou por algum zip?
  4. Confesso que também fiquei confuso com a resposta do amigo Juliomar rs. Então procurei nos fontes do instalador e achei a seguinte função: procedure TfrmPrincipal.FindDirs(ADirRoot: String; bAdicionar: Boolean = True); var oDirList: TSearchRec; function EProibido(const ADir: String): Boolean; const LISTA_PROIBIDOS: ARRAY[0..4] OF STRING = ( 'quick', 'rave', 'laz', 'VerificarNecessidade', '__history' ); var Str: String; begin Result := False; for str in LISTA_PROIBIDOS do begin Result := Pos(AnsiUpperCase(str), AnsiUpperCase(ADir)) > 0; if Result then Break; end; end; begin ADirRoot := IncludeTrailingPathDelimiter(ADirRoot); if FindFirst(ADirRoot + '*.*', faDirectory, oDirList) = 0 then begin try repeat if ((oDirList.Attr and faDirectory) <> 0) and (oDirList.Name <> '.') and (oDirList.Name <> '..') and (not EProibido(oDirList.Name)) then begin with oACBr.Installations[iVersion] do begin if bAdicionar then begin AddToLibrarySearchPath(ADirRoot + oDirList.Name, tPlatform); AddToLibraryBrowsingPath(ADirRoot + oDirList.Name, tPlatform); end else RemoveFromLibrarySearchPath(ADirRoot + oDirList.Name, tPlatform); end; //-- Procura subpastas FindDirs(ADirRoot + oDirList.Name, bAdicionar); end; until FindNext(oDirList) <> 0; finally SysUtils.FindClose(oDirList) end; end; end; Pelo código, só posso assumir que ele adiciona todos os subdiretórios de Fontes, com exceção destes poucos listados no array de proibidos. Curiosamente, o diretório .svn não aparece na lista de proibidos, então me pergunto se ele não estará adicionando estes diretórios também ao path. Alguém que tenha instalado pelo instalador confirma? Abraços.
  5. Raylan, Sempre usei ACBr sem instalar. Funciona muito bem e facilita bastante a instalação de atualizações: É só baixar. Sempre que o componente é não visual, eu costumo preferir essa abordagem. Só o que tem que fazer é como disse o colega Nazareno: Adicionar o ACBr ao path: são várias pastas a adicionar. Quanto mais componentes for usar, mais pastas terá que adicionar. Eu particularmente, vou tentando compilar, vejo qual unit está faltando, localizo e adicionando ao path. Uma alternativa a essas várias pastas é colocar tudo na mesma pasta... mas aí você vai ter um pouco mais de trabalho na hora de atualizar... acho mais prático adicionar os paths. Depois você pode copiar a linha do Library Path e guardar em um arquivo texto (eu tenho um repositório só para esses arquivos texto rs) caso precise configurar em uma nova instalação. Usar os componentes instanciando dinamicamente quando for usar (variavel := TComponente.Create). Aqui cabe ter uma certa atenção às boas práticas de instanciamento de classes no Delphi: Não esquecer de liberar os objetos não mais necessários; Usar sempre uma variável local ou Field de algum objeto, se possível (poucas situações na minha experiencia exigiram uma variável global!) Se for um Field, provavelmente será uma boa ideia instanciar no constructor da classe e destruir no destructor (às vezes não é necessário destruir manualmente, se o objeto for owner do componente instanciado.
  6. Colegas, O grupo ICMS90 (N10 no manual), não está sendo exportado corretamente no TXT, pois a id de grupo do cst90 está associada ao código 12 (o que corresponderia ao grupo N12, que nem existe). O correto é associar ao grupo N10, portanto a seguinte alteração corrige o problema: ----------------------- Fontes/PCNComum/pcnConversao.pas ----------------------- index 5c54c86..8ce2434 100644 @@ -708,7 +708,7 @@ end; function CSTICMSToStrTagPos(const t: TpcnCSTIcms): string; begin - result := EnumeradoToStr(t, ['02', '03', '04', '05', '06', '06', '06', '07', '08', '09', '10', '11', '12', '10a', '10a', '10b'], + result := EnumeradoToStr(t, ['02', '03', '04', '05', '06', '06', '06', '07', '08', '09', '10', '11', '10', '10a', '10a', '10b'], [cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstPart10 , cstPart90 , cstRep41]); end; Abraços.
  7. Arnaldo, Não sou advogado, mas no meu entendimento, seu cliente está fraudando a receita usando recursos que qualquer sistema de AC será certamente obrigado a fornecer. Não vejo saída nesse momento, a não ser fiscalização. Aliás, em breve não será muito difícil, pois com NFe em todas as operações, o fisco terá um bom controle do estoque do varejista. Só vai conseguir vender sem nota se comprar sem nota. Enfim, eu não me preocuparia com isso, a não ser como cidadão. rs
  8. Colega, Não acho que você possa ter problemas legais com relação a isso. Fica muito claro nessa situação que a má fé é do seu cliente, e não sua. E até onde sei, uma venda pode ser cancelada antes de ser transmitida (antes mesma de ser "paga", nesse caso), e nesse caso, não tem que transmitir nada mesmo, diferente do ECF, que nesse ponto já teria registrado os itens. Agora, sugiro que verifique se o seu sistema toma as medidas possíveis para evitar isso, como exigir uma senha de supervisor para cancelar os itens. Porque se você não exige nenhuma senha, então você pode ter problemas com seu próprio cliente, que pode a qualquer momento ser roubado por um operador de caixa executando exatamente esse procedimento.
  9. Em qual UF? Em SP, não tem como: se estiver sem internet, só com SAT/CFe. Não tem outra contingencia. Se disser sua UF, posso dar uma pesquisada aqui e ver se encontro se o mesmo vale.
  10. Amigo, Qual estado? O seu procedimento me parece incompleto, porque você não está fazendo nenhum tipo de transmissão de informação à SEFAZ. No estado de SP, se bem me lembro, a contingencia é o SAT/CFe. Tem também o EPEC, mas só é ativado quando a própria sefaz sai do ar, e ainda assim tem que transmitir um arquivo (só que para um ambiente diferente).
  11. Existiu outro fórum sobre o ACBr (inclusive era o oficial), e acho que talvez ainda tenha muito conhecimento interessante por lá. Este fórum, no entanto estava muito mal administrado e acabou caindo em desuso (uma pena... tinhamos formado uma comunidade Delphi muito legal por lá). Acho que por isso a equipe do ACBr optou por migrar. Não vou passar o link porque a última vez que acessei recebi alerta de malware do google e do meu antivirus (algum ad, provavelmente), mas se alguém quiser arriscar, se chama forumweb. =/ Edit: Aparentemente está fora do ar. Era só questão de tempo para morrer definitivamente.
  12. Italo, Desculpe, acho que não fui claro. O que acontece é que esse campo está duplicado no TNFe. Ele existe dentro do grupo NFRef, como deveria e como manda o manual, como você observou. Mas ele também existe como filho do TIde, e isso não está no manual. No meu arquivo anexo, apenas removi aquele que está como filho do TIde e, portanto, não existe no manual.
  13. Colegas, A propriedade refNFP do TIde não existe no leiaute da receita e não é utilizada em lugar nenhum, e acredito que tenha sido incluida por acidente. Para verificar isso, eu fiz um grep por Ide.refNFP no diretório de fontes e não encontrei nada. Estou enviando o pcnNFe.pas que alterei removendo essa propriedade. Abraços. pcnNFe.pas
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.