Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    644
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. De acordo com o manual CNAB400, o documento do cedente será idenficado como: 4. Notas (1) TIPO/Nº DE INSCRIÇÃO DA EMPRESA/SACADOR TIPO INSCRIÇÃO NÚMERO DE INSCRIÇÃO 01 Nº DO CPF DO CEDENTE 02 Nº DO CNPJ DO CEDENTE 03 CPF DO SACADOR 04 CNPJ DO SACADOR Normalmente definem o tipo (CPF/CNPJ) e o número de inscrição do cedente. Se o título for negociado, deverão ser utilizados para indicar o CNPJ/CPF do sacador (cedente original), uma vez que os cartórios exigem essa informação para efetivação dos protestos. Para este fim, também poderá ser utilizado o registro tipo “5”. Porém o banco manda o tipo de inscrição com o numero = 02 - como cnpj. Tenho retorno meu da minha conta física o cpf vem com formatação similar ao do cnpj, preenchido com zeros antes... Solução que arrumei: Acessei o arquivo .RET e troquei para 01 para funcionar... talvez se não houvesse a validação do cnpj/cpf ou até mesmo usar uma propriedade para ignorar certas discrepâncias vindas dos bancos. No entanto, mesmo após colocar o 01 no arquivo, o mesmo insistia no erro de cnpj/cpf errado, pois o tipo de inscrição do cedente estava sendo trocado logo após a propriedade CNPJCPF ser trocado, com isso o evento Write da property aciona o SetCNPJCPF, que por sua vez faz a validação do dado informado. O que fiz foi apenas inverter a linha onde seta o tipo de inscrição, fazendo o componente saber antes do CNPJ/CPF ser informado, que tipo de informação será validada. Foi alterado no CNAB 240 e no 400. Segue unit alterada do trunk2. ACBrBancoItau.pas
  2. Porque não mudou apenas a propriedade de mascarar valores ? no TFrxmemoview, ao inves de criar 2 arquivos.
  3. Solução alá peppa pig: criei um evento: procedure TFTransmissaoNFS.frxPDFExport_NFSe_BeginExport(Sender: TObject); begin if Sender is TfrxPDFExport then TfrxPDFExport(Sender).FileName := NomeArquivoPDF_TempFastReport; end; Antes de iniciar o processamento eu fiz: NomeArquivoPDF_TempFastReport := ''; if dmComercial.ACBrNFSe1.DANFSe is TACBrNFSeDANFSeFR then NomeArquivoPDF_TempFastReport := dmComercial.ACBrNFSe1.DANFSe.PathPDF + dmComercial.ACBrNFSe1.NotasFiscais.Items[0].Nfse.Numero + '-nfse.pdf'; if dmComercial.ACBrNFSe1.DANFSe is TACBrNFSeDANFSeFR then begin TACBrNFSeDANFSeFR(dmComercial.ACBrNFSe1.DANFSe).dmDanfse.frxReport.OnGetValue := frReport_TransmiteNFSe_GetValue; TACBrNFSeDANFSeFR(dmComercial.ACBrNFSe1.DANFSe).dmDanfse.frxReport.OnBeforePrint := frReport_TransmiteNFSe_BeforePrint; TACBrNFSeDANFSeFR(dmComercial.ACBrNFSe1.DANFSe).dmDanfse.frxPDFExport.OnBeginExport := frxPDFExport_NFSe_BeginExport; end; Com isso, ao iniciar a geração do pdf lá pelo filtro export do fast report, o nome do arquivo a ser anexado no e-mail fica correto.
  4. Na funcao: procedure NotaFiscal.EnviarEmail(...) No ponto abaixo, onde seta o nome do arquivo xml, está setando como numero da nfse + '-nfse.pdf', porém chamar a impressão do pdf na unit ACBrNFSeDANFSeFR, pela função ImprimirDANFSePDF está trocando: Unit: ACBrNFSeNotasFiscais if (EnviaPDF) then begin if TACBrNFSe( TNotasFiscais( Collection ).ACBrNFSe ).DANFSE <> nil then begin TACBrNFSe( TNotasFiscais( Collection ).ACBrNFSe ).DANFSE.ImprimirDANFSEPDF(NFSe); NomeArqPDF := NomeArqXML; NomeArqPDF := StringReplace(NomeArqPDF, 'NFSe', '', [rfIgnoreCase]); NomeArqPDF := PathWithDelim(TACBrNFSe( TNotasFiscais( Collection ).ACBrNFSe ).DANFSE.PathPDF) + NomeArqPDF + '-nfse.pdf'; AnexosEmail.Add(NomeArqPDF); end; end; procedure TACBrNFSeDANFSeFR.ImprimirDANFSePDF(NFSe: TNFSe); const TITULO_PDF = 'Nota Fiscal de Serviço Eletrônica'; var I: Integer; begin if PrepareReport(NFSe) then begin dmDanfse.frxPDFExport.Author := Sistema; dmDanfse.frxPDFExport.Creator := Sistema; // dmDanfse.frxPDFExport.Producer := Sistema; // dmDanfse.frxPDFExport.Title := TITULO_PDF; dmDanfse.frxPDFExport.Subject := TITULO_PDF; // dmDanfse.frxPDFExport.Keywords := TITULO_PDF; dmDanfse.frxPDFExport.ShowDialog := False; for I := 0 to TACBrNFSe(ACBrNFSe).NotasFiscais.Count -1 do begin // dmDanfse.frxPDFExport.FileName := PathPDF+ dmDanfse.NFSe.Numero+dmDanfse.NFSe.CodigoVerificacao+'.pdf'; dmDanfse.frxPDFExport.FileName := PathPDF+ dmDanfse.NFSe.Numero+'.pdf'; << Diferente aqui dmDanfse.frxReport.Export(dmDanfse.frxPDFExport); end; end; end; Não anexei fonte, pois estou desatualizado e baseado no trunck apenas.
  5. Mais uma alteração no dfm para suprir necessidade de impressão, o campo dataemissao da NFS-e vem com a hora, no entanto, estava com tamanho 10, alterei para suprimir a hora, segue exemplo no xml de retorno da NFS-e <DataEmissao>2014-09-11T17:25:50</DataEmissao> ACBrNFSeDANFSeFRDM.pas ACBrNFSeDANFSeFRDM.dfm
  6. Outro problema encontrado: o tipo tsCodigoTributacao C Código de Tributação 20 no manual está como string de 20, no dmdanfse está como string1, logo ao ler o campo do xml CodigoTributacaoMunicipio dá problema e pega apenas o primeiro digito. <Servico> <Valores> <ValorServicos>100</ValorServicos> <IssRetido>2</IssRetido> <ValorIss>3</ValorIss> <BaseCalculo>100</BaseCalculo> <Aliquota>3</Aliquota> <ValorLiquidoNfse>100</ValorLiquidoNfse> </Valores> <ItemListaServico>1406</ItemListaServico> <CodigoTributacaoMunicipio>3329501</CodigoTributacaoMunicipio> <<<<<<<<<< Esse campo <Discriminacao>PRESTACAO DE SERVICOS/MONTAGEM</Discriminacao> <CodigoMunicipio>3169901</CodigoMunicipio> </Servico> Esse problema está no TField declarado no cdsServicos, o mesmo poderia ser mudado para 20 posições, dentro do dfm... segue trecho: object cdsServicosCodigoTributacaoMunicipio: TStringField FieldName = 'CodigoTributacaoMunicipio' Size = 20 end
  7. Estava eu precisando que saísse a serie e o tipo do RPS na impressão, então troquei o arquivo FR3 na chamada do componente por um modelo by ginfes. Questiono: Mudei no fonte para receber a serie da RPS com 5 caracteres e receber o tipo da mesma. Se for útil para alguém e puderem incorporar ao pacote. Me baseei no manual para alterar: TsNumeroRps N Número do RPS 15 TsSerieRps C Número de série do RPS 5 TsTipoRps N Código de tipo de RPS 1 - RPS 2 – Nota Fiscal Conjugada (Mista) 3 – Cupom ACBrNFSeDANFSeFRDM.dfm ACBrNFSeDANFSeFRDM.pas
  8. Não acho Regys, pois a linha que agarra é essa: Propriedades := Extension.EncodedData.Format(True); Em debug isso dai fica... fica...
  9. Como criar esse arquivo .RES ? E qual finalidade ? Pelo que conheço desse arquivo... não captei bem sua idéia.
  10. 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
  11. Sim eu vi. Mas nao sabia que o rps tinha formatação pre fixada...
  12. Esse problema ainda persiste. Pessoal do ACbr, nao tem como remover isso do componente? E colocar o cnpj como propriedade ?
  13. Ainda hoje 30 04 2015 ocorre lentidao na linha Propriedades := Extension.EncodedData.Format(True); No CT-e a coisa fica pior.
  14. 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
  15. 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
  16. 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.
  17. 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'
  18. 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
  19. 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
  20. 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)
  21. 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.
  22. 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.
  23. tá na mão os fontes ACBr_AlteradoAcgubamg.zip
  24. 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.
  25. 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;
×
×
  • 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...