Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    691
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. Não acho Regys, pois a linha que agarra é essa: Propriedades := Extension.EncodedData.Format(True); Em debug isso dai fica... fica...
  2. Como criar esse arquivo .RES ? E qual finalidade ? Pelo que conheço desse arquivo... não captei bem sua idéia.
  3. Descobri o que era: Transicao entre Delphi 2007 e XE2 O chato do unicode! Botei a variavel antes numa string, e usei pelo LoadFromString e funcionou. A saber o caracter era o #0
  4. Sim eu vi. Mas nao sabia que o rps tinha formatação pre fixada...
  5. Esse problema ainda persiste. Pessoal do ACbr, nao tem como remover isso do componente? E colocar o cnpj como propriedade ?
  6. Ainda hoje 30 04 2015 ocorre lentidao na linha Propriedades := Extension.EncodedData.Format(True); No CT-e a coisa fica pior.
  7. O trecho abaixo: Do nada ao passar para o RAD Studio XE2, passou dar problema que o arquivo está sendo cortado. O erro acontece ao repassar o valor para ArquivoXML.Text, nessa linha o texto já vem cortado. A solução paliativa que fiz, foi usar o comando LoadFromString direto do meu campo onde está o RPS, na ocasião estou lendo meu xml direto de um camo BLOB do banco de dados, segue exemplo: if cdsNFS.FieldByName('XMLRPS_NFS_NOTA').AsString <> '' then dmComercial.ACBrNFSe1.NotasFiscais.LoadFromString(cdsNFS.FieldByName('XMLRPS_NFS_NOTA').AsString) else if cdsNFS.FieldByName('XMLNFSE_NFS_NOTA').AsString <> '' then dmComercial.ACBrNFSe1.NotasFiscais.LoadFromString(cdsNFS.FieldByName('XMLNFSE_NFS_NOTA').AsString) else raise Exception.Create('XML da NFS-e ou RPS não pode ser lido. Favor verificar a emissão da NFS-e.'); Tenho isso gravado no banco pelo fato de cliente perder xml, logo, fica tudo la registrado, e ao emitir é gravado o campo, e para transmitir passo para outra tela... (isso aqui não importa muito, estou dizendo a titulo de explicar...) O estranho é a variavel LocNFSeR.Leitor.Arquivo ter o corte já logo no inicio. Em anexo segue o rps que fiz o load. (note que troquei apenas os dados do emissor e cliente) function TNotasFiscais.LoadFromStream(Stream: TStringStream): boolean; var LocNFSeR : TNFSeR; ArquivoXML: TStringList; XML : AnsiString; Tipo: Integer; {$IFDEF DELPHI2009_UP} Encoding : TEncoding; {$ENDIF} CodigoMunicipio, Prestador, RazaoSocial, CNPJ, IM, NumeroRPS, SerieRPS, TipoRPS: String; ok: Boolean; begin try Result := True; LocNFSeR := TNFSeR.Create(Self.Add.NFSe); ArquivoXML := TStringList.Create; LocNFSeR.Leitor.CarregarArquivo(Stream); ArquivoXML.Text := LocNFSeR.Leitor.Arquivo; ArquivoXML.Text := StringReplace(StringReplace( ArquivoXML.Text, '&lt;', '<', [rfReplaceAll]), '&gt;', '>', [rfReplaceAll]); ArquivoXML.Text := NotaUtil.RetirarPrefixos(ArquivoXML.Text); 2015000000161021-Rps.xml 2015000000161021-Rps.xml
  8. Antonio Gomes

    Danfse - Fast Report

    O trecho abaixo, quando é usado os 15 digitos do numero da RPS que é permitido, ao passar nessa funcao, corta-se para 9. Seria possivel comentarem tal função ? with IdentificacaoRps do begin FieldByName('Numero').AsString := DFeUtil.FormatarNumeroDocumentoFiscal(Numero); // FieldByName('Serie').AsString := Serie; // FieldByName('Tipo').AsString := DFeUtil.SeSenao(Tipo = trRPS, '0','1'); end; A ponto de deixa-la assim ? Deixar o numero do RPS do jeito que eu criei? sem corta-lo para 9 digitos with IdentificacaoRps do begin FieldByName('Numero').AsString := Numero; // FieldByName('Serie').AsString := Serie; // FieldByName('Tipo').AsString := DFeUtil.SeSenao(Tipo = trRPS, '0','1'); end; ACBrNFSeDANFSeFRDM.pas ACBrNFSeDANFSeFRDM.pas
  9. Entendo, você... seria o caso também orientar quem desenvolve usar pelo menos o mesmo tipo de variável, assim ocorreria mesmo isso? Não concorda? Mas isso poucos fazem que é ler as mensagens que aparecem embaixo ali na tela do linkeditor... a culpa não é de vocês.
  10. Compilar ou fazer build para catar piolho no programa tem andado dificil, no XE2 ou similar... Por acaso alguem que passa por esses hints monstruosos tem a receita de bolo para oculta-los ? Geralmente eu entro no fonte e coloco la a diretiva {$hints off}, porém não vou entrar no fonte desse componente todo, pois ao atualizar perderia tudo de novo. Mas um modo de colocar generico para ser ignorado o pacote acbr do ao fazer build? E arrumar o fonte? para string ? fora de cogitação ? [DCC Warning] pnfsNFSeG.pas(695): W1057 Implicit string cast from 'AnsiString' to 'string' [DCC Warning] pnfsNFSeG.pas(695): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString' [DCC Warning] pnfsNFSeG.pas(696): W1057 Implicit string cast from 'AnsiString' to 'string' [DCC Warning] pnfsNFSeG.pas(696): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString' [DCC Warning] pnfsNFSeG.pas(697): W1057 Implicit string cast from 'AnsiString' to 'string' [DCC Warning] pnfsNFSeG.pas(697): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString' [DCC Warning] pnfsNFSeG.pas(699): W1057 Implicit string cast from 'AnsiString' to 'string' [DCC Warning] pnfsNFSeG.pas(699): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString' [DCC Warning] pnfsNFSeG.pas(731): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString' [DCC Warning] pnfsNFSeG.pas(753): W1058 Implicit string cast with potential data loss from 'Variant' to 'AnsiString' [DCC Warning] pnfsNFSeG.pas(801): W1057 Implicit string cast from 'AnsiString' to 'string'
  11. A impressao da contingencia teSVCAN deu problema também, porém tive que acrescentar na linha abaixo, o teSVCAN. if ((FNFe.Ide.tpEmis in [teNormal, teSVCAN, teSCAN,teSVCRS,teSVCSP])) then Linha 1477 da unit ACBrNFeDANFEFRDM
  12. Ao fazer a impressão do DPEC/EPEC não autorizado e autorizado, deparei com o mesmo rótulo de texto acima do nProt. O problema está no código abaixo: if (FNFe.Ide.tpEmis = teDPEC) then begin FieldByName('Contingencia_Descricao').AsString := 'NÚMERO DE REGISTRO DPEC'; //prioridade para ProtocoloNFe informado if DFeUtil.NaoEstaVazio(FDANFEClassOwner.ProtocoloNFe) then FieldByName('Contingencia_Valor').AsString := FDANFEClassOwner.ProtocoloNFe else begin try FieldByName('Contingencia_Valor').AsString := FNFe.procNFe.nProt + ' ' + DFeUtil.SeSenao(FNFe.procNFe.dhRecbto <> 0, DateTimeToStr(FNFe.procNFe.dhRecbto), ''); FieldByName('Contingencia_Descricao').AsString := 'PROTOCOLO DE AUTORIZAÇÃO DE USO'; except raise EACBrNFeException.Create('Protocolo de Registro no DPEC não informado.') end; end; end Mudei para: if DFeUtil.NaoEstaVazio(FNFe.procNFe.nProt) then // DPEC TRANSMITIDO begin FieldByName('Contingencia_Descricao').AsString := 'PROTOCOLO DE AUTORIZAÇÃO DE USO'; FieldByName('Contingencia_Valor').AsString := FNFe.procNFe.nProt + ' ' + DFeUtil.SeSenao(FNFe.procNFe.dhRecbto <> 0, DateTimeToStr(FNFe.procNFe.dhRecbto), ''); end else begin FieldByName('Contingencia_Descricao').AsString := 'NÚMERO DE REGISTRO DPEC'; if DFeUtil.NaoEstaVazio(FDANFEClassOwner.ProtocoloNFe) then FieldByName('Contingencia_Valor').AsString := FDANFEClassOwner.ProtocoloNFe; end; Caso seja util, e puder incorporar. ACBrNFeDANFEFRDM.pas
  13. Eu tirei para resolver de supetao (tudo na vida de programa é para ontem) a divisao la do codigo fonte do acbr aqui na minha maquina. E como meu codigo fonte eu já passava a aliquota correta, já com a divisao, o processo ficou certo. veja o xml que é carregado depois que é salvo: (Nota: CNPJ, CPF, IM, Razão social e dados do cliente foram removidos - são ficticios)
  14. Italo, o problema é que está dividindo novamente, quando dou load from file do arquivo rps, e o rps já está gravado com a aliquota dividida. Tive caso aqui de gerar no xml do lote 0.0000 ao invés de 0.050 Eu gero ao emitir a nfs-e, o rps, para primeira validação, nisso, salvo esse xml no banco, na sequencia para transmitir, em outro form, crio o xml de lote e esse rps é lido com loadfromstrem, é nesse momento que o valor fica errado.
  15. se eu gero rps da NFs-e, salvo, depois dou um load from file do rps assinado, se eu usar a funcao gerar lote para transmitir novamente, a aliquota passa de 0.050 para 0.005 ou seja, divide novamente, ao rastrear o codigo, vi que puseram isso proGINFES: Gerador.wCampoNFSe(tcDe4, '#25', 'Aliquota', 01, 05, 1, (NFSe.Servico.Valores.Aliquota / 100), ''); unit pnfsNFSeW estaria correto ? Se sim, nao posso nunca mais usar a funcao gera lote outra vez... em versao anterior, eu que passava a aliquota já dividida.
  16. tá na mão os fontes ACBr_AlteradoAcgubamg.zip
  17. Italo, Não querendo ser chato, posso mandar outras funcoes que acusam falta de retorno pelo fato de ela ser toda retornada baseado em case end ? unit ACBrProvedorProdata function TProvedorProdata.GetAssinarXML(Acao: TnfseAcao): Boolean; begin end; unit ACBrProvedorSpeedGov function TProvedorSpeedGov.GetAssinarXML(Acao: TnfseAcao): Boolean; begin ------------------------ unit ACBrProvedorSpeedGov variavel perdida sem uso: function TProvedorSpeedGov.GetConfigURL(ACodCidade: Integer): TConfigURL; var ConfigURL: TConfigURL; URL: String; <<------------------------------------ essa aqui begin ... unit ACBrProvedorLink3 function TProvedorLink3.GetAssinarXML(Acao: TnfseAcao): Boolean; begin unit ACBrNFSeWebServices, esse .Free sozinho sem teste, essa variavel nao poderia entrar sem ponteiro e no decorrer da execução gerar uma violacao de acesso? procedure TWebServicesBase.LoadMsgEntrada; begin FxProvedor := FConfiguracoes.WebServices.xProvedor; FProvedor := FConfiguracoes.WebServices.Provedor; FProvedorClass.Free; nessa mesma implementacao acusa pelo compilador um create abstrato,. ex: [DCC Warning] ACBrNFSeWebServices.pas(594): W1020 Constructing instance of 'TProvedorGinfesV3' containing abstract method 'TProvedorClass.GeraEnvelopeConsultarSequencialRps' ------------ Outra implementacao que vive parando é essa, sem retorno: function TInfEvento.getcOrgao: integer; // (AC,AL,AP,AM,BA,CE,DF,ES,GO,MA,MT,MS,MG,PA,PB,PR,PE,PI,RJ,RN,RS,RO,RR,SC,SP,SE,TO); // (12,27,16,13,29,23,53,32,52,21,51,50,31,15,25,41,26,22,33,24,43,11,14,42,35,28,17); begin // Result := StrToInt(copy(FChave, 1, 2)); if FTpEvento = teEPEC then begin // Alterado por Italo em 28/10/2013 // case Result of case StrToIntDef(copy(FChave, 1, 2), 0) of 0, 11, // Rondônia 12, // Acre 13, // Amazonas 14, // Roraima 15, // Pará 16, // Amapá 17, // Tocantins 21, // Maranhão 22, // Piauí 23, // Ceará 24, // Rio Grande do Norte 25, // Paraibá 27, // Alagoas 28, // Sergipe 29, // Bahia 31, // Minas Gerais 32, // Espirito Santo 33, // Rio de Janeiro 41, // Paraná 42, // Santa Catarina 43, // Rio Grande do Sul 52, // Goiás 53: // Distrito Federal Result := 35; 26, // Pernanbuco 35, // São Paulo 50, // Mato Grosso do Sul 51: // Mato Grosso Result := 43; end; end else begin // Alterado por Italo em 03/10/2013 if FcOrgao <> 0 then Result := FcOrgao else Result := StrToIntDef(copy(FChave, 1, 2), 0); if Result = 0 then raise EventoException.Create('Campo cOrgao não informado.'); // Estados que utilizam a SVAN: ES, MA, PA, PI, RN Devem utilizar 91 // if Result in [32, 21, 15, 22, 24] then // Result := 91; end; end; Se na primeira linha da implementacao setasse o result para zero, o fato de ser case logo abaixo nao geraria o erro na linkedicao.
  18. As implementacoes abaixo, no codigo fonte sempre que atualizo vem vazio e ao aplicar o build all o codigo fonte para de compilar pois tenho um plugin instalado para nao parar continuar ao encontrar funcao sem retorno. O retorno dela seria esse?? Se sim, poderiam arrumar no codigo fonte? obrigado isso está na linha: 174 function TNotasCanceladasCollection.GetItem( Index: Integer): TNotasCanceladasCollectionItem; begin Result := Items[index]; end; isso está na linha: 180 procedure TNotasCanceladasCollection.SetItem(Index: Integer; Value: TNotasCanceladasCollectionItem); begin Items[index]:= Value; end;
  19. Juliomar, e depois de alterado, mando todo pacote para voces? Dai vao mudar linha a linha ?
  20. Elton Barbosa: Seria uma solução plausível! Como posso ajudar nisso ?
  21. ok. Lembrando apenas para os usuarios que tiverem a mesma funcao em seus sistemas, vulgo, clippeiros, que criaram essa função, que se começar dar problema em string.. apos incluir as units do acbr na uses, deve-se colocar o nome da sua unit propria no codigo fonte, ou isolar as chamadas ao acbr dentro de uma unit que nao seja global. Passei por esse problema aqui, em remessa bancária, não é o pacote acbr boleto usado, mas outro, que por sua vez usa as funcoes. Assunto encerrado.
  22. Estive pensando em mudar para a implementacao em portugues: Suponho que PadD = adciona caracteres a direita e PadE = adiiciona caracteres a esqueda, funcoes essas na unit ACBrDFeUtil, porém, ao ler a funcao, acredito que ela esteja invertida também: veja: // Penso em um suposto caracter a direita da string... ex: string entrada: 2: len=6 saída =>: 200000 class function DFeUtil.PadD(const AString: string; const nLen: Integer; const Caracter: Char): String; begin Result := copy(AString,1,nLen); Result := StringOfChar(Caracter, (nLen - Length(Result))) + Result; end; // Penso em um suposto caracter a esquerda da string... ex: string entrada: 1: len = 6 saída =>: 000001 class function DFeUtil.PadE(const AString: string; const nLen: Integer; const Caracter: Char): String; begin Result := copy(AString, 1, nLen); Result := Result + StringOfChar(Caracter, (nLen - Length(Result))); end; Como eu poderia ajudar arrumar isso? Se é que pode ser arrumado.
  23. Sim, inverter o cabeçalho das funcoes: PADL = 'TEXTO' + STRINGOFCHAR PADR = STRINGOFCHAR + 'TEXTO'; note que ao meu entender, o comentario em cima da funcao está correto, está invertido apenas as letras R e L na implementacao
  24. As funcoes abaixo, nao estariam com a assinatura errada ? PADL = Adiciona string no inicio, left -esquerda PADR = adiciona string no final, right - direita {----------------------------------------------------------------------------- Completa <AString> com <Caracter> a direita, até o tamanho <nLen>, Alinhando a <AString> a Esquerda. Se <AString> for maior que <nLen>, ela será truncada ---------------------------------------------------------------------------- } function padL(const AString : AnsiString; const nLen : Integer; const Caracter : AnsiChar) : AnsiString ; var Tam: Integer; begin Tam := Length(AString); if Tam < nLen then Result := AString + StringOfChar(Caracter, (nLen - Tam)) else Result := copy(AString,1,nLen) ; end ; {----------------------------------------------------------------------------- Completa <AString> com <Caracter> a esquerda, até o tamanho <nLen>, Alinhando a <AString> a Direita. Se <AString> for maior que <nLen>, ela será truncada ---------------------------------------------------------------------------- } function padR(const AString : AnsiString; const nLen : Integer; const Caracter : AnsiChar) : AnsiString ; var Tam: Integer; begin Tam := Length(AString); if Tam < nLen then Result := StringOfChar(Caracter, (nLen - Tam)) + AString else Result := copy(AString,1,nLen) ; end ;
  25. A funcao abaixo, logo no uso da variavel result no case, no delphi 2007, com o plugin da DDevExtension, acusa que a função nao tem retorno. Realmente, existe um teste da variavel result no case, mas comentaram o codigo onde a mesma estava sendo inicializada. A verificar: function TInfEvento.getcOrgao: integer; // (AC,AL,AP,AM,BA,CE,DF,ES,GO,MA,MT,MS,MG,PA,PB,PR,PE,PI,RJ,RN,RS,RO,RR,SC,SP,SE,TO); // (12,27,16,13,29,23,53,32,52,21,51,50,31,15,25,41,26,22,33,24,43,11,14,42,35,28,17); begin // Result := StrToInt(copy(FChave, 1, 2)); if FTpEvento = teEPEC then begin case Result of 11, // Rondônia 12, // Acre 13, // Amazonas 14, // Roraima 15, // Pará 16, // Amapá 17, // Tocantins 21, // Maranhão 22, // Piauí 23, // Ceará 24, // Rio Grande do Norte 25, // Paraibá 27, // Alagoas 28, // Sergipe 29, // Bahia 31, // Minas Gerais 32, // Espirito Santo 33, // Rio de Janeiro 41, // Paraná 42, // Santa Catarina 43, // Rio Grande do Sul 52, // Goiás 53: // Distrito Federal Result := 35; 26, // Pernanbuco 35, // São Paulo 50, // Mato Grosso do Sul 51: // Mato Grosso Result := 43; end; end else begin // Alterado por Italo em 03/10/2013 if FcOrgao <> 0 then Result := FcOrgao else Result := StrToIntDef(copy(FChave, 1, 2), 0); if Result = 0 then raise EventoException.Create('Campo cOrgao não informado.'); // Estados que utilizam a SVAN: ES, MA, PA, PI, RN Devem utilizar 91 // if Result in [32, 21, 15, 22, 24] then // Result := 91; end; end;
×
×
  • 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.