-
Total de ítens
620 -
Registro em
-
Última visita
-
Days Won
4
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Waldir Paim postou
-
Rode ai no XE7 a alteração que fiz foi apenas a inclusão do parâmetro abaixo nos *.dproj. <DCC_UnitSearchPath>$(BDS)\Source\DUnit\src;$(DCC_UnitSearchPath)</DCC_UnitSearchPath> vjea: $(BDS)\Source\DUnit\src observe que mesmo no Seatle esta usando DUnit.
-
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Daniel, Ta ficando legal. Veja ainda não definimos essa situação: Preciso de uma definição quanto esses dois casos citados acima. Para não perder o costume segue mais algumas units. Apenas a inclusão da unit Contnrs no Uses pois o Seatle reclama da falta dela. ACBrBancoSicredi.pas ACBrBancoSantander.pas ACBrBancoItau.pas ACBrBancoCaixaSICOB.pas ACBrBancoCaixa.pas ACBrBancoBrasil.pas -
Rodei os testes no Sealte e ele apresentou uma falha! fui verificar o problema e no debug o resultado estava correto! No teste acima foi onde apresentou o erro nos testes, analisando percebi que ele faz essa checagem : or (abs(expected-actual) > delta) then Então como o teste que apresentou problema foi : procedure RoundABNTTest.DoctoABNTRegra2_1; begin CheckEquals( 1.3, RoundABNT(1.3333, 1) ); end; Como RoundABNT entrega uma resultado que é decorrente de uma série de cálculos o retorno não é exato como o teste exige. Nesse caso foi só acrescentar uma tolerância para que ele rodasse todos os testes. procedure RoundABNTTest.DoctoABNTRegra2_1; begin CheckEquals( 1.3, RoundABNT(1.3333, 1), 0.00001 ); end; Aproveitei e registrei um teste que tinha ficado sem registro. Segue unit alterada. acbrutiltest.pas
-
RETORNO 0 - LOTE EM PROCESSAMENTO
Waldir Paim replied to Wellington Graves's tópico in Dúvidas Gerais sobre o ACBr
Anexei a unit atualizada só com as correções que mencionei mas agora analisando a situação percebi que tempo a unit que trata especificamente do assunto que mencionei unit pcnRetEnvNFe.pas e essa faz o tratamento que estou sugerindo. Mas como podem ver o sefaz retorna numa consulta o conteúdo que deveria retorna em outra. A situação está ai e com essa alteração que apliquei parei ter receber 999 onde deveria receber 105. pcnRetConsReciNFe.pas -
RETORNO 0 - LOTE EM PROCESSAMENTO
Waldir Paim replied to Wellington Graves's tópico in Dúvidas Gerais sobre o ACBr
Nesse link eu citei um fato que tem haver com seu problema! http://www.projetoacbr.com.br/forum/topic/26479-limpar-o-webservicesretorno/ O problema no tópico acima foi resolvido e só não foi aplicado esse tratamento do lote em processamento. Pelo que vi o erro de lote em processamento só foi tratado em uma das situações abaixo: Apliquei essa correção como citei no tópico anterior faz um tempo e quando o sefaz me retorna 105 ou 103 eu aguardo uns 30 segundos e faço a consulta para verificar o resultado. Segue link da unit anexada no tópico anterior para uma possível analise: http://www.projetoacbr.com.br/forum/applications/core/interface/file/attachment.php?id=19464 -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Aqui rodou sem problemas. Aproveitei e já inclui mais algumas unit que faltaram. Junto compactei a pasta com as units alteradas. Na ACBrUtil.pas utilizei a CharInSet, fiz isso nas outras também. Na unit ACBrEPCBloco_C_Class ainda passou uma procedure LimpaRegistros; override; Na unit ACBrCMC7.pas publiquei a function CalcDigitoCMC7 e usei CharInSet. Na unit ACBrValidador.pas publiquei a function MascaraIE e usei CharInSet. Tirando essas mensagem ficam praticamente as mensagens W1058 e W1057 que ainda precisamos definir qual será o tratamento e muito poucas das Units do ACBrBoleto que indicam outros tratamentos. Fontes.zip ACBrUtil.pas ACBrDFeCapicomDelphiSoap.pas ACBrDFeOpenSSL.pas ACBrCMC7.pas ACBrValidador.pas ACBrDevice.pas ACBrSocket.pas ACBrEPCBloco_C_Class.pas pcnAuxiliar.pas -
Daniel, Após um estudo mais especifico nos testes acabei conseguindo fazer os testes rodar sem a unit de compatibilização que havia citado. Fiz alguns ajustes apenas nos *.dproj Dessa forma não foi preciso nenhuma intervenção no código fonte em si. Segue anexo com os fontes um arquivo zipado a pasta toda, dessa forma pode apenas descompactar por cima e comparar as alterações efetuada. ACBrComumTestCases.dpr ACBrComumTestCases.dproj TestesTACrTXTClass.dpr TestesTACrTXTClass.dproj ACBrDiversos.dpr ACBrDiversos.dproj grpTestesUnitarios.groupproj Dunit.zip
-
Oi Daniel, Da sim, mas precisa de uma unit de compatibilização. Se me permitir posso dar andamento nesse processo e tentarei alterar somente o necessário para que os testes rodem nos Delphis e FPC.
-
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Conforme solicitado criei um novo tópico para tratar dos testes. http://www.projetoacbr.com.br/forum/topic/28464-test-case/ -
De acordo com esse link http://docwiki.embarcadero.com/RADStudio/Seattle/en/How_to_convert_DUnit_Tests_to_DUnitX A Embarcadero adotou um novo formato padrão para os testes. Com a data marcada para o final do suporte oficial para as versões mais antigas do Delphi, como já é de conhecimento da maioria que há muitos pontos a ser observados nessa transição, gostaria da colaboração e sugestão dos membros e coordenadores. Qual caminho a ser seguido a respeito do assunto do título desse tópico? A minha sugestão seria criar uma unit de compatibilidade entre o DUnit e DUnitX (na verdade já temos essa unit) para que as diversas IDEs possam rodar os testes.
-
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
EMBarbosa, Acredito que entendi o motivo do erro! Antes faltava o DUnit, baixei ele nesse link https://sourceforge.net/projects/dunit/ No D7 rodou 100%. Mas como disse no Sealte apresenta alguns erros; Veja: Nesse trecho da unit GUITestRunner. procedure TGUITestRunner.FormCreate(Sender: TObject); begin inherited; FTests := TInterfaceList.Create; LoadConfiguration; TimeSeparator := ':'; SetUpStateImages; SetupCustomShortcuts; TestTree.Items.Clear; EnableUI(false); ClearFailureMessage; FUpdateTimer := TTimer.Create(Self); FUpdateTimer.Interval := 200; FUpdateTimer.Enabled := False; FUpdateTimer.OnTimer := OnUpdateTimer; Setup; {$IFDEF VER180} //FastMM built in already FailTestCaseIfMemoryLeakedAction.Enabled := True; ReportMemoryLeaksOnShutdown := ReportMemoryLeakTypeOnShutdownAction.Checked; {$ELSE} Apresenta esse erro: O Sealte tem embutido o DUnit e acredito que alguns $IFDEFs devem resolve. Vou reservar um tempo e ver se consigo fazer os Testes rodar no Sealte usando o DUnit nativo. Se conseguir crio o outro tópico para tratar desse assunto. -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Daniel, Para gente não ficar com um numero muito grande de units alteradas vou aguardar a sua definição para continuar. Conversa ai com os outros mantenedores sobre a questão dos casts nas strings se vamos aplicar ou agir de outra maneira. -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Eu acho que tem sim: Segue unit ACBrUtil.pas alterada. ACBrUtil.pas -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Na unit SysUtils; do Delphi 7 tem sim. Em IDEs inferior D7 da para fazer igual foi feito em ACBrUtil : { PosEx, retirada de StrUtils.pas do D7, para compatibilizar com o Delphi 6 (que nao possui essa funçao) } {$IFNDEF COMPILER7_UP} function PosEx(const SubStr, S: AnsiString; Offset: Cardinal = 1): Integer; {$ENDIF} Daniel, a inclusão da função em si realmente não remove, mas podemos mudar essas funções: De: {----------------------------------------------------------------------------- *** Extraido de JclStrings.pas - Project JEDI Code Library (JCL) *** Retorna <True> se <C> é Alpha maiusculo/minusculo ---------------------------------------------------------------------------- } function CharIsAlpha(const C: Char): Boolean; begin Result := ( C in ['A'..'Z','a'..'z'] ) ; end ; {----------------------------------------------------------------------------- *** Extraido de JclStrings.pas - Project JEDI Code Library (JCL) *** Retorna <True> se <C> é Númerico ---------------------------------------------------------------------------- } function CharIsNum(const C: Char): Boolean; begin Result := ( C in ['0'..'9'] ) ; end ; {----------------------------------------------------------------------------- *** Extraido de JclStrings.pas - Project JEDI Code Library (JCL) *** Retorna <True> se <C> é Alpha maiusculo/minusculo ou Numerico ---------------------------------------------------------------------------- } function CharIsAlphaNum(const C: Char): Boolean; begin Result := ( CharIsAlpha( C ) or CharIsNum( C ) ); end ; {----------------------------------------------------------------------------- Retorna <True> se <C> é um char hexa válido ---------------------------------------------------------------------------- } function CharIsHexa(const C: Char): Boolean; begin Result := ( C in ['0'..'9','A'..'F','a'..'f'] ) ; end; Para: {----------------------------------------------------------------------------- *** Extraido de JclStrings.pas - Project JEDI Code Library (JCL) *** Retorna <True> se <C> é Alpha maiusculo/minusculo ---------------------------------------------------------------------------- } function CharIsAlpha(const C: Char): Boolean; begin Result := CharInSet(C, ['A'..'Z','a'..'z'] ) ; end ; {----------------------------------------------------------------------------- *** Extraido de JclStrings.pas - Project JEDI Code Library (JCL) *** Retorna <True> se <C> é Númerico ---------------------------------------------------------------------------- } function CharIsNum(const C: Char): Boolean; begin Result := CharInSet( C, ['0'..'9'] ) ; end ; {----------------------------------------------------------------------------- *** Extraido de JclStrings.pas - Project JEDI Code Library (JCL) *** Retorna <True> se <C> é Alpha maiusculo/minusculo ou Numerico ---------------------------------------------------------------------------- } function CharIsAlphaNum(const C: Char): Boolean; begin Result := ( CharIsAlpha( C ) or CharIsNum( C ) ); end ; {----------------------------------------------------------------------------- Retorna <True> se <C> é um char hexa válido ---------------------------------------------------------------------------- } function CharIsHexa(const C: Char): Boolean; begin Result := CharInSet( C , ['0'..'9','A'..'F','a'..'f'] ) ; end; Alem de que já vi dentro de outras Units o $IFDEF para utilizar a função sitada. -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Será que podemos adotar esses casts nas strings ou alguem quer sugerir mais alguma solução? Delphi Unicode – entendo os avisos (warning) do compilar sua aplicação Estou migrando a CharInSet para dentro do ACBrUtil.pas; {$IFNDEF COMPILER12_UP} function CharInSet(C: AnsiChar; const CharSet: TSysCharSet): Boolean; {$ENDIF} Dessa forma uma parte do hints a gente mata com essa função também. Fico no aguardo da definição sobre os casts nas strings. Nas untis do ACBrBoleto temos essa situação! No treco acima ele reclama que a variável Titulo não foi inicializada. Pretendo mudar para: Dessa forma ele para de reclamar e se não instanciar ele também não gera um AV. -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Daniel, Vou usar os testes existentes e na medida do possível acrescentar o que falta. Eu tentei compilar os testes no Sealte e eles não rodaram, acredito que vai ser preciso alguma alteração. Nos fontes: Fiz umas alterações que já removem uma pequena parte dos hints e acredito que não quebrem o código existente. No código em si alterei muito pouca coisa, só na ACBrUtil.pas a remoção de atribuição de valores que o compilador disse que não estava sendo usado. Nas units do ACBrBoleto inclui no Uses a unit Contnrs que essas IDEs mais novas pedem para incluir. Nas units do Sped só inclui alguns override que a IDE pediu. ACBrBancoCaixaSICOB.pas ACBrBancoSantander.pas ACBrBancoCaixa.pas ACBrBancoSicredi.pas ACBrBancoItau.pas ACBrBancoBrasil.pas ACBrUtil.pas ACBrEFDBloco_0.pas ACBrSpedFiscal.pas ACBrEFDBloco_K_Class.pas ACBrEFDBloco_H_Class.pas ACBrEFDBloco_G_Class.pas ACBrEFDBloco_D_Class.pas ACBrEFDBloco_C_Class.pas ACBrEFDBloco_9_Class.pas ACBrEFDBloco_1_Class.pas ACBrEFDBloco_0_Class.pas ACBrEFDBloco_E_Class.pas ACBrEPCBloco_0.pas ACBrEPCBloco_M.pas ACBrEPCBloco_I_Class.pas ACBrEPCBloco_P_Class.pas ACBrEPCBloco_F_Class.pas ACBrEPCBloco_D_Class.pas ACBrEPCBloco_A_Class.pas ACBrEPCBloco_9_Class.pas ACBrEPCBloco_1_Class.pas ACBrEPCBloco_M_Class.pas ACBrEPCBloco_0_Class.pas ACBrEPCBloco_C.pas -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Na medida do possível e para garantir que as alterações não gerem efeitos colaterais vou criando os Teste Case e enviar junto com as units. Dessa forma os usuários das diversas IDEs e plataforma atendidas pode ajudar e rodar os testes. Vou me focar nesse momento na unit ACBrUtil.pas para iniciar essa tarefa. -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Vamos fazer unit a unit para evitar qualquer tipo de surpresa. Citei o exemplo para mostrar o tamanho do problema nas IDEs mais novas. Sem problemas. -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
EMBarbosa Qual a melhor abordagem? Teremos um trunk3? Vou iniciar por units com esse tipo de hint: [dcc32 Hint] ACBrUtil.pas(3224): H2077 Value assigned to 'PosIni' never used; Nesse outro tipo: [dcc32 Warning] ACBrUtil.pas(1898): W1057 Implicit string cast from 'AnsiString' to 'string' Podemos mudar o tipo para string pois cada IDE usa conforme precisa e usar AnsiString só nos casos bem específicos! -
Remoção de Hints e Warning do ACBr
um tópico no fórum postou Waldir Paim Dúvidas Gerais sobre o ACBr
Olá a todos! De acordo com outros tópicos que estão orientando a migração para compiladores mais modernos. Quero na medida do possível ajudar para que o código fique cada fez melhor e com menos hints e Warnings. Colei abaixo um exemplo do que estou dizendo. Esse exemplo acima foi gerado na instalação do package ACBr_Diversos no D7; Mas ele não mostra nem uma parte dos alertas que a IDE mais nova mostra. Como apresenta no trecho abaixo. No exemplo acima é apenas uma parte, em alguns projetos chego ter acima de 2 mil avisos desses. Sei que a IDE faz o cast forçado, mas no entanto isso para um controle do código final fica muito mais limpo e de fácil manutenção. Não fiz nenhuma alteração ainda pois depende da abordagem e da importância que os cordeadores e mantenedores das units tomarão. -
@ronluis, Tudo depende de seus ponto de vista. Eu considero problema uma rotina ou funcionalidade que faz errado o que se propõe a fazer. Eu uso ACBr Boleto e não vejo que a falta desse recurso seja um problema, nem dele nem do Fortes. Se os outros gerados de boleto ou relatório tem essa funcionalidade eles tem um recurso extra, mas por outro lado tem muitas outras limitações que não temos nesse conjunto.
-
joemil, Na unit ACBrNFeWebServices foi incluido o estado do MT veja : procedure TNFeConsulta.DefinirServicoEAction; begin if (FPConfiguracoesNFe.Geral.ModeloDF = moNFe) and (FPConfiguracoesNFe.Geral.VersaoDF = ve310) and (FPConfiguracoesNFe.WebServices.UFCodigo in [29, 51]) then // 29 = BA 51 = MT FPServico := GetUrlWsd + 'NfeConsulta' else FPServico := GetUrlWsd + 'NfeConsulta2'; FPSoapAction := FPServico; end; http://www.nfe.fazenda.gov.br/portal/webservices.aspx De acordo com as informações abaixo ele deveria usar NfeConsulta2. Sefaz Mato Grosso - (MT) Serviço Versão URL NfeRecepcao 2.00 https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRecepcao2?wsdl NfeRetRecepcao 2.00 https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetRecepcao2?wsdl NfeInutilizacao 2.00 / 3.10 https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao2?wsdl NfeConsultaProtocolo 2.00 / 3.10 https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta2?wsdl NfeStatusServico 2.00 / 3.10 https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico2?wsdl NfeConsultaCadastro 2.00 / 3.10 https://nfe.sefaz.mt.gov.br/nfews/v2/services/CadConsultaCadastro2?wsdl RecepcaoEvento 2.00 / 3.10 https://nfe.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento?wsdl NFeAutorizacao 3.10 https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao?wsdl NFeRetAutorizacao 3.10 https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao?wsdl Waldir.
-
Você pode testar uma alteração que fiz? Nela eu fiz a limpeza dos objetos antes do envio. Isso garante que a resposta nunca uso o retorno da ultima consulta em caso de erro. Fiz também um tratamento e inclui um a checagem do retEnviNFe para pegar o retorno 103 e 105. Tenho usado assim faz algum tempo e não tive problemas com falsos retornos. pcnRetConsReciNFe.pas ACBrDFeWebService.pas
-
José! Eu testei aqui e tá tudo certo! Poe um break point e vai no F8 até chegar no AV. São ossos do ofício! Pega ele na unha e com isso podemos te ajudar com mais precisão. Use midaslib no demo se sua maquina foi formatada recentemente, você também pode copiar a midas.dll para a pasta do exe. Veja nesse trecho {$IFDEF BORLAND} DBClient, {$ELSE} BufDataset, {$ENDIF} DB; ele usa DBClient e esse cara depende da midas. Isso é tudo que posso fazer para te ajudar por enquanto
-
José, Verifique duas situações ai: 1 - No demo mesmo veja onde ele apresenta esse AV. O problema está nesse erro. 2 - Você está com um usuário com direitos de administrador? Em muitos dos casos é o windows que está bem exigente com a segurança e precisa desses direitos.