Ir para conteúdo
  • Cadastre-se

dalpiaze

Membros
  • Total de ítens

    111
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

dalpiaze's Achievements

Collaborator

Collaborator (7/14)

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

Recent Badges

8

Reputação

4

Community Answers

  1. Na verdade a alteração que fiz continua enviando o valor na tag normalmente, a única coisa que muda é que ele sempre gera essa tag com essa alteração, mesmo quando a variável está igual a zero, pois antes essa tag não era gerada quando o valor igual a zero. Desta forma o WS está aceitando o envio do CT-e...
  2. Senhores, boa tarde, Aqui tínhamos o mesmo problema até então com nosso clientes que utilizam CT-e OS. Apesar do manual informar que o campo vINSS é opcional, parece que ele sempre precisa ser informado para que não ocorra o erro 760. Desta, forma alterei no fonte do arquivo pcteCTeW.pas para que gere sempre a tag vINSS mesmo com valor zerado, e desta forma os xml's estão sendo autorizados normalmente. Anexo arquivo alterado para análise do pessoal do ACBr. Muito obrigado. pcteCTeW.pas
  3. Correto, mas neste caso pego os valores conforme a tributação original e vejo quais os itens foram cancelados, para somar o montante cancelado de cada tributação.
  4. Sim, na verdade resolvi analisando e deduzindo pela seguinte ideia: No Layout do XML da Redução Z, os dados dos produtos são informados dentro de um determinado totalizador. Então, pressupõe-se que seria estranho ter por exemplo os dados do mesmo produto no Totalizador T1700 quando o produto foi tributado e ter o mesmo produto informado em Can-T quando esse mesmo produto foi cancelado. (Teríamos diversos produtos com todos os dados de cadastro repetidos nos totalizadores e mais no totalizador de Cancelamento - além disso teríamos apenas no totalizador de Cancelamento se tivéssemos o produto apenas cancelado naquele determinado dia) Por isso é de se pressupor que isso não faria muito sentido. Sendo assim deduzi que deve-se informar o totalizador "original" (que é o que determina a tributação do produto, exemplo T0700, T1200,...), e então nesse mesmo totalizador informar o valor relativo a cancelamentos - por isso que existe esse campo de cancelamento por totalizador, senão também não faria sentido ter o valor de cancelamento já que informaríamos o valor do totalizador Can-T por exemplo. Também não encontrei mais informações sobre isso em outros lugares, por isso resolvi desta forma. Comentem aí suas ideias também. Obrigado.
  5. Pessoal, Agora com a nova publicação do Bloco X (DESPACHO 45/2017 - de 4 de Abril de 2017), foram acrescentados no Layout do XML da Redução Z alguns campos que compreendes o valor acumulado por totalizador. São eles: ValorDesconto, ValorAcrescimo, ValorCancelamento e ValorTotalLiquido. Antes dessa publicação, já tínhamos o Bloco X implementado em nosso sistema (inclusive homologado) seguindo o seguinte critério: Os totalizadores eram agrupados da mesma forma que são agrupados nos registros do PAF, exemplo: - T0700 - T1200 - I - Can-T (Cancelamento de ICMS) Agora com esses novos campos, como surgiu o campo do ValorCancelamento, deu a entender que na verdade o agrupamento faria mais sentido da seguinte forma: - T0700, incluindo os cancelamentos que eram de produtos originalmente de 7% de ICMS (declarando o valor dos itens cancelados no campo ValorCancelamento) ??? - E assim por diante, mas não declarando um Totalizador com o "Can-T" por exemplo, pois não faria sentido ??? O que vocês acham dessa análise. Também pensam da mesma forma? Quem já implementou com essas alterações, qual o critério utilizou para o agrupamento dos Totalizadores?
  6. Bom dia a todos, Acabo de atualizar o svn e recebi a modificação no arquivo DACTE_RETRATO.fr3, porém parece que o layout continua da versão antiga do CT-e. Baixei o arquivo .fr3 anexo aqui neste tópico e então o layout ficou correto conforme a versão 3.00 Juliomar, essa alteração que você fez no svn também faz parte esse arquivo da versão 3.00 ? Obrigado desde já.
  7. Pessoal do ACBr, bom dia, Está ocorrendo erro de compilação na unit ACBrNFeWebServices na linha 709: FPDFeOwner.SSL.SSLType := LT_TLSv1_2; O tipo "LT_TLSv1_2" está contido na unit "blcksock". Porém essa unit é excluída da uses quando definido DFE_SEM_OPENSSL, gerando erro de compilação. {$IfNDef DFE_SEM_OPENSSL} blcksock, {$EndIf} Fiz uma alteração na unit apenas removendo o IFNDEF para que a unit seja incluída em ambos os casos. Anexo a unit alterada. Obrigado. ACBrNFeWebServices.pas
  8. Ficou show! Blz, Daniel, igualmente muito obrigado.
  9. Opa, me desculpe, achei que queria as units com as alterações para carregamento todo dinâmico... Fiz o acerto aqui nas 3 units com base nos arquivos baixados agora do SVN (apenas incluído freelibrary no finalization para funcionamento do delayed corretamente) Segue: libxml2.pas libxmlsec.pas libxslt.pas De acordo com os testes aqui, funcionando corretamente com o delayed desligado e também com ele ligado.
  10. Exato, concordo, por isso testei a suas alterações aqui, usando o recurso do delayed, o qual não alterou a declaração dos métodos... e funcionou desta forma... apenas fazendo aquele ajuste no final da unit. Assim não precisaria reestruturar as units para carga dinamica por variável.
  11. Daniel, exato... realmente observando melhor notei que a dependência ao inicializar o objeto TDFeOpenSSL é apenas para a DLL libeay32.dll que contém métodos diretos external. Blz. Fiz os testes aqui nas várias funções com o delayed desabilitado para ver se tudo continua funcionando, e, a princípio, tudo certo. Daí fiz o teste com o delayed ativado, mas ocorreram erros em algumas funções... então fiz aquele ajuste que você havia sugerido do FreeLibrary no finalization, e então deu certo! O ajuste fiz nas três units: libxmlsec, libxml2 e libxslt (todas iguais no final da unit, comentando o freelibrary no Init e deixando para o finalization): ... //FreeLibrary(libHandle); end; end; initialization libHandle := 0; finalization if libHandle<>0 then FreeLibrary(libHandle); end. Com isso funcionaram as funções com o delayed habilitado.
  12. Daniel, nas alterações que você fez na unit ACBrDFeOpenSSL, faltou chamar o InitXmlSec no Create do TDFeOpenSSL, pois as inicializações do OpenSSL estão separadas em duas etapas: aquelas que eram no initialization e as das externals. Veja que no ACBrDFeOpenSSL existem funções (exemplo carga do Certificado) que não usa a InitXmlSec, porém usa funções que eram carregadas na initialization, por isso já precisam estar disponíveis quando o componente chamar essas funções.
  13. Daniel, blz, Sim alterei a estrutura das 4 units todas (são milhares de métodos....) (libeay32.pas, libxmlsec.pas, libxml2.pas, libxslt.pas) Coloquei inclusive o FreeLibrary no finalization das units. Mas foi preciso fazer o carregamento dinâmico dos métodos que antes estavam como "external", exatamente por dois motivos: 1- Como a carga acontecia em duas etapas (external e no loadlibrary), ficavam duas handles da dll separadas que dava problema de comunicação entre a dll 2- O delayed além de não funcionar no Lazarus e não ser compatível com todos os Delphi's, li na documentação da Embarcadero que ele não é recomendado utilizar quando houverem muitas funções (que é o caso - milhares de funções), pois tornará o carregamento dinâmico lento. Dessa forma o carregamento ficou todo dinâmico por LoadLibrary e funcionando em todos os Delphis / Lararus. PS: Para alterar as units escrevi um programinha para fazer isso automatizadamente, para não ter que alterar linha por linha na mão.
  14. Bom dia, Descobri qual é o problema: existem as duas partes que carregam a mesma DLL: - A parte do initialization (onde está dinamicamente com LoadLibrary) - E a parte do external que carrega estaticamente direto O fato é que, se observar no LoadLibrary, o carregamento dos ponteiros é feito e depois liberada a DLL, o que faz com que o endereçamento correspondente a ponteiros que se comunicam com função usada no external e que tenha propriedades que foram carregadas pelo LoadLibrary estourem a memória pois essa última não está mais acessível. O que fiz aqui: Transformei as 3 units (libxmlsec.pas, libxml2.pas e libxslt) com todas as funções em carregamento dinâmico (LoadLibrary). Ou seja, tirei todos os externals, e agora tudo é por LoadLibrary, assim não dependendo mais de versão do Delphi e nem do Delayed (que não iria funcionar mesmo por causa dos ponteiros). Estou testando nas diversas rotinas (carregamento de certificado, envio de nota, assinatura, validação) e tudo funcionou normalmente até agora. Agora o caso é: Existe esse porém de que realmente não é interessante alterar essas units. E esse carregamento por LoadLibrary fez com que eu tivesse que reescrever toda a estrutura dessas units. Por isso, como você falou (Daniel), não sei até que ponto isso é seguro! Então deixo aqui apenas como sugestão, para quem quiser conferir e dar uma garantia maior do funcionamento... pois caso contrário melhor deixar como estava para não haver problemas. Obrigado.
  15. Daniel, realmente, estive fazendo testes em todas as rotinas que envolvem o uso do OpenSSL e algumas delas falham, exemplo a Validação da Assinatura. Usando no método tradicional antigo funciona normalmente. Então, essa implementação do "delayed" realmente não funciona corretamente. Acredito que podemos descartar essa ideia.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...