Ir para conteúdo
  • Cadastre-se

Edson.pol

Membros
  • Total de ítens

    210
  • Registro em

  • Última visita

  • Days Won

    2

Tudo que Edson.pol postou

  1. Questão do espaçamento resolvida. No meu caso, na unit do provedor CONAM (pnfsNFSeW_CONAM.pas) function TNFSeW_CONAM.GerarXml: Boolean; var Gerar: Boolean; begin Gerador.Opcoes.RetirarEspacos := False; Gerador.Opcoes.DecimalChar := ','; Gerador.ArquivoFormatoXML := ''; Desta forma o XML é gerado com os espaços duplos e a impressão sai da forma "correta". O problema é que alterei a fonte para "Courier New" na unit ACBrNFSeDANFSeRLClass, e toda vez que houver uma atualização, vou ter que refazer. procedure TACBrNFSeDANFSeRL.ImprimirDANFSe(NFSe: TNFSe = nil); var i: integer; frlDANFSeRLRetrato: TfrlDANFSeRLRetrato; begin frlDANFSeRLRetrato := TfrlDANFSeRLRetrato.Create(Self); try frlDANFSeRLRetrato.rlmDescricao.Font:='Courier New'; frlDANFSeRLRetrato.rllCodVerificacao.Font.Size:=9; frlDANFSeRLRetrato.QuebradeLinha(TACBrNFSe(ACBrNFSe).Configuracoes.Geral.ConfigGeral.QuebradeLinha); Uma sugestão seria criar mais uma propriedade no arquivo INI para "RemoverEspacos", outra para Fonte... e vai chegar um dia que o INI vai ter tantos parâmetros que... []´s Edson
  2. Beleza Italo... Vou pro terceiro round contra o CONAM (o bárbaro)... Por enquanto é ele quem está ganhando... Vou ver se consigo pegar o protocolo em algum outro ponto. []´s Edson.
  3. Boa tarde ! Estou me baseando no demo do ACBrNFSe para pegar o número do protocolo, após o comando Enviar... (Provedor CONAM) AlimentaComponente(sAux); ACBrNFSe1.Enviar(vNumLote); sProtocolo := ACBrNFSe1.WebServices.EnviarLoteRPS.Protocolo; Ocorre que, se após o envio, recebo uma mensagem "Protocolo em processamento", e o fluxo não segue... é disparada uma exception com a mensagem e não consigo pegar o nr do protocolo para salvar no banco de dados. Mesmo ajustando: ConsultarLoteAposEnvio = True AjustaAguardaConsultaRet = True AguardarConsultaRet = 4000 (já tentei ir aumentando de mil em mil, até 10.000) IntervaloEntreTentativas = 1000 (também aumentei de mil em mil) Estou fazendo da forma correta ? []´s Edson
  4. Bom dia. DANFSe - Fortes Report. Um cliente precisa que a discriminação dos serviços saia com a fonte "Courier New", para que o serviço e valor individual fique alinhado, em colunas. Tipo: DISCRIMINAÇÃO QTD PREÇO UNITÁRIO PREÇO TOTAL TROCA DE ÓLEO............ 1 100,00 100,00 ALINHAMENTO DE PNEUS..... 4 20,00 80,00 Mas os espaços duplos estão sendo trocados por espaços simples, fica assim: DISCRIMINAÇÃO QTD PREÇO UNITÁRIO PREÇO TOTAL TROCA DE ÓLEO............ 1 100,00 100,00 ALINHAMENTO DE PNEUS..... 4 20,00 80,00 Não estou encontrando o "culpado"... Alguém já precisou fazer a impressão desta forma ? []´s Edson.
  5. Bom dia Italo. Testei agora com emissão de NFe com certificado A3 e NFSe sem certificado (em produção), e deu tudo certo. Acho que a alteração não afetará o funcionamento em outras situações. O principal problema era com a " ACBrHTTPReqResp.pas ", que dava erro de certificado, mesmo quando o nr de séria estava em branco. Depois que acrescentei a função "IgnoreCerticateErrors", deu tudo certo (ela só entrará em ação se ocorrer o erro: ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED) []´s Edson.
  6. Boa noite Italo. Você conseguiu analisar as units do provedor CONAM do primeiro post ? Atualizei o ACBr ontem e parou de funcionar o envio. Fiz um "debug" geral, e vi que faltam algumas rotinas, porque o CONAM não usa certificado, mas usa SSL. Vou postar aqui um resumo das units que alterei depois que fiz o update pelo svn, para que seja possível "consumir" o web-service deles. (e para facilitar um pouco o seu trabalho com o "merge") \ACBr\Fontes\ACBrDFe\ACBrDFeCapicom.pas - na procedure TDFeCapicom.CarregarCertificado, ignorar se provedor não utilizar certificado \ACBr\Fontes\PCNComum\pcnLeitor.pas - na function TLeitor.rCampo, adicionado suporte a data e data/hora fora de padrão \ACBr\Fontes\ACBrCapicom\ACBrHTTPReqResp.pas - na procedure TACBrHTTPReqResp.Execute, alteração para ignorar certificado - incluída a IgnoreCerticateErrors, para ignorar o erro ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED \ACBr\Fontes\ACBrDFe\ACBrNFSe\ACBrNFSeWebServices.pas - procedure TNFSeWebService.InicializarServico, setar UseCertificate=False para o CONAM (Talvez um boa ideia seja criar mais um campo no arquivo INI, tipo UsaCertificado=False) Units alteradas para Gerar/Ler XMLs no padrao CONAM: \ACBr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe pnfsConversao.pas pnfsNFSeG.pas pnfsNFSeR.pas pnfsConsSitLoteRpsResposta.pas pnfsLerListaNFSe.pas Na impressão dos ítens da NFSe, para funcionar corretamente a quebra de linha na impressão, alterei: \ACBr\Fontes\ACBrDFe\ACBrNFSe\DANFSE\Fortes\ACBrNFSeDANFSeRLClass.pas - procedure TACBrNFSeDANFSeRL.ImprimirDANFSe: de: frlDANFSeRLRetrato.QuebradeLinha(TACBrNFSe(ACBrNFSe).Configuracoes.WebServices.QuebradeLinha); para: frlDANFSeRLRetrato.QuebradeLinha(TACBrNFSe(ACBrNFSe).Configuracoes.Geral.ConfigGeral.QuebradeLinha); assim a quebra de linha vem do arquivo "PROVEDOR".INI e também o arquivo CONAM.INI, com alguns ajustes. -- Anexo arquivo com as units alteradas. []´s Edson Polonio. ACBrNFSe_CONAM 01_03_2016.rar
  7. Boa tarde. O meu problema eram units em "conflito". Apaguei a pasta ACBr, e atualizei pelo SVN e está tudo OK agora. O conflito ocorreu porque eu estou testando alterações para a NFSe com provedor que não usa certificado, e alterei algo em algum lugar que "zicou" []´s Edson.
  8. Wilson. Depois que fizer o rateio do desconto nos ítems, some os valores do desconto rateado. Se houver diferença comparando com o valor original do desconto, normalmente de centavos, diminua o valor do desconto (ou aumente) do ítem de maior valor. []´s Edson.
  9. Bom dia. Desde ontem tem ocorrido um esporádico ao enviar NFe´s No botão "Criar e enviar": NFe não foi enviada. Erro: Não existem mais arquivos. URL:https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx SOAPAction:http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao Motivo: No botão "Consultar" a msg muda para: NFe não foi enviada. Erro: Não é possível criar um arquivo já existente URL:https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx SOAPAction:http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao Motivo: Nunca ocorreu este erro. Alguém tem alguma dica? []´s Edson
  10. Moderador... Desculpe, postei no fórum errado... Procurei uma forma de mover ou excluir o tópico mas não encontrei. Estou postando no ACBrNFe...
  11. Bom dia. Desde ontem tem ocorrido um esporádico ao enviar NFe´s No botão "Criar e enviar": NFe não foi enviada. Erro: Não existem mais arquivos. URL:https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx SOAPAction:http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao Motivo: No botão "Consultar" a msg muda para: NFe não foi enviada. Erro: Não é possível criar um arquivo já existente URL:https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx SOAPAction:http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao Motivo: Nunca ocorreu este erro. Alguém tem alguma dica? []´s Edson
  12. Boa noite Italo. Estou anexando o único manual que recebi do suporte (.PDF) e um arquivo xml que foi gerado por um erro no site, mas serve pra ver a estrutura. Um ponto que percebi hoje é que enviando o RPS no Delphi, processando passo a passo com F8, da tudo certo, o RPS é recebido, gera o protocolo, consulta o protocolo e carrega a nota para impressão. Se executo no aplicativo, fora do Delphi, ao enviar um RPS, dá msg de arquivo aceito, "em processamento". Como está configurado para consultar o lote após o envio, achei que fosse por causa do nr de tentativas e intervalo entre tentativas, por isto criei o método FConsLote.Executar, para ficar igual ao TNFSeConsultarSituacaoLoteRPS.Executar, mas não sei se fiz da forma correta, porque não resolveu. Vou continuar tentando pra ver se entendo a causa disto. []´s Edson. webservicenfe2.pdf aws_nfe.aspx.xml
  13. Boa noite. Fiz diversas alterações para incluir o provedor CONAM no trunk2. O envio de RPS, impressão e cancelamento estão funcionando. Segue um breve resumo: Cidades.INI - Alteração: [3525300] Nome=Jau UF=SP Provedor=CONAM Novo arquivo INI: CONAM.INI Unit nova: \ACBr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe\pnfsNFSeW_CONAM.pas Units alteradas para tratar os dados do provedor CONAM: \ACBr\Fontes\PCNComum\pcnConversao.pas \ACBr\Fontes\PCNComum\pcnGerador.pas \ACBr\Fontes\PCNComum\pcnLeitor.pas \ACBr\Fontes\PCNComum\pcnAuxiliar.pas \ACBr\Fontes\ACBrComun\ACBrUtil.pas \ACBr\Fontes\ACBrDFe\ACBrDFeWebService.pas \ACBr\Fontes\ACBrDFe\ACBrDFeUtil.pas \ACBr\Fontes\ACBrDFe\ACBrNFSe\ACBrNFSe.pas \ACBr\Fontes\ACBrDFe\ACBrNFSe\ACBrNFSeConfiguracoes.pas \ACBr\Fontes\ACBrDFe\ACBrNFSe\ACBrNFSeNotasFiscais.pas \ACBr\Fontes\ACBrDFe\ACBrNFSe\ACBrNFSeWebServices.pas \ACBr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe\pnfsEnvLoteRpsResposta.pas \ACBr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe\pnfsConversao.pas \ACBr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe\pnfsNFSeW.pas \ACBr\Fontes\ACBrCapicom\ACBrCapicomACBrHTTPReqResp.pas -------------------------------------- \ACBr\Fontes\ACBrCapicom\ACBrCapicomACBrHTTPReqResp.pas - Incluido: function IgnoreCerticateErrors para ignorar erros de certificado em provedor que não usa certificado, como o caso do CONAM -------------------------------------- \ACBr\Fontes\PCNComum\pclLeitor.pas - function TLeitor.rCampo - Alterado para suportar datas no formato dd/mm/aaa ou datas inválidas tcDat : begin if length(ConteudoTag)>0 then if Pos('/',ConteudoTag)=1 then // Data está errada result:=0 else if Pos('/',ConteudoTag)=3 then // Data está no formato dd/mm/aaaa result := EncodeDate(StrToInt(copy(ConteudoTag, 07, 4)), StrToInt(copy(ConteudoTag, 04, 2)), StrToInt(copy(ConteudoTag, 01, 2))) else // Data está no formato aaaa/mm/dd result := EncodeDate(StrToInt(copy(ConteudoTag, 01, 4)), StrToInt(copy(ConteudoTag, 06, 2)), StrToInt(copy(ConteudoTag, 09, 2))) else result:=0; end; - Em anexo, units alteradas. []´s Edson. Units provedor CONAM.rar
  14. Boa tarde Juliana. Tenho problemas com rejeição de remessas sempre que atualizo o ACBrBoleto, por causa do Header da Remessa 400. Aí volto minha unit antiga e resolve. "027 a 046 – Códigos da Empresa Será informado pelo Bradesco, quando do cadastramento da Conta beneficiário na sua Agência. Esse código deve ser alinhado à direita com Zeros à esquerda." Repare que no header deve constar o código que o banco forneceu ao cliente : 00000000000004042751 (este não é o Codigo do Cedente) e na transação, vai Carteira+Agencia+Conta (ou seja, "CodigoCedente") 1 2 3 4 5 6 123456789012345678901234567890123456789012345678901234567890 01REMESSA01 COBRANCA00000000000004042751IND.COM.CALCAD 1000000000000000000000090006000584149 1000000000000000000000090006000584149 1000000000000000000000090006000584149 Veja a unit do Santander que também utiliza o "CodigoTransmissao" no header. []´s Edson
  15. Bom dia. No Header do arquivo remessa do Bradesco, posições 27 a 46 está sendo preenchida com o código do cedente. O correto e preenchear com o "Codigo da empresa no banco". "027 a 046 – Códigos da Empresa Será informado pelo Bradesco, quando do cadastramento da Conta beneficiário na sua Agência. Esse código deve ser alinhado à direita com Zeros à esquerda." Se gerado como está no SVN, o banco recusa a remessa e dá mensagem "Indícios de Rejeição" Código que está funcionando: procedure TACBrBancoBradesco.GerarRegistroHeader400(NumeroRemessa : Integer; ARemessa:TStringList); var wLinha, ATipoInscricao: String; begin with ACBrBanco.ACBrBoleto.Cedente do begin case TipoInscricao of pFisica : ATipoInscricao := '1'; pJuridica: ATipoInscricao := '2'; else ATipoInscricao := ' '; end; wLinha:= '0' + // ID do Registro '1' + // ID do Arquivo( 1 - Remessa) 'REMESSA' + // Literal de Remessa '01' + // Código do Tipo de Serviço PadRight( 'COBRANCA', 15 ) + // Descrição do tipo de serviço //PadLeft( CodigoCedente, 20, '0') + // *** PadLeft( CodigoTransmissao, 20, '0') + // Codigo da Empresa no Banco PadRight( Nome, 30) + // Nome da Empresa IntToStr( Numero )+ PadRight('BRADESCO', 15) + // Código e Nome do Banco(237 - Bradesco) FormatDateTime('ddmmyy',Now) + Space(08)+'MX' + // Data de geração do arquivo + brancos IntToStrZero(NumeroRemessa,7) + Space(277) + // Nr. Sequencial de Remessa + brancos IntToStrZero(1,6); // Nr. Sequencial de Remessa + brancos + Contador ARemessa.Text:= ARemessa.Text + UpperCase(wLinha); end; end; Lembrando que os dois dados são necessários em locais distintos, como na impressão do boleto (CodigoCedente) e na remessa (CodigoTransmissao) * Lembrar de alimentar o componente com a informação correta: with ACBrBoleto1.Cedente.CodigoTransmissao:= 'Codigo fornecido pelo banco' []´s Edson.
  16. Já tinha lido tudo, mas a dúvida persiste. Minha dúvida é no caso de o cliente não ser obrigado a ECF, somente a NFe. Vejam que neste link: http://www.nfce.fazenda.sp.gov.br/NFCePortal/Paginas/DuvidasFrequentes.aspx 7. Já existe legislação em vigor para regulamentar a NFC-e? Sim. A NFC-e foi instituída pelo Ajuste SINIEF nº 01/2013, que alterou o Ajuste SINIEF nº 07/2005 (Nota Fiscal Eletrônica – NF-e). II. Obrigatoriedade 8. Quando a minha empresa será obrigada à emissão de NFC-e? Existe cronograma de obrigatoriedade de utilização do CF-e/SAT disposto no artigo 27 da Portaria CAT 147/2012. Entretanto, conforme artigo 28 da mesma Portaria, o contribuinte pode, em substituição a esse documento, optar pela emissão da Nota Fiscal Eletrônica - NF-e, modelos 55, ou da Nota Fiscal de Consumidor Eletrônica – NFC-e (NF-e, modelo 65). - Já tive alguns casos, de clientes que emitiam nota fiscal eletrônica (55) para clientes PJ, e cupom fiscal (ECF) para pessoa física, e aposentaram o ECF, com a condição de emitir NFe (55) para todas as operações. Fiz uma consulta a SEFAZ-SP. Assim que responderem posto aqui. []´s Edson
  17. Boa tarde. Tem alguém usando NFC-e ao invés de SAT-ECF no estado de SP ? Vi que existe esta opção, e tenho clientes que emitem NFe (modelo 55) para 99% das operações e que ainda usavam talão D1 - Nota Fiscal Consumidor. O posto fiscal não está mais autorizando emissão de talão D1 (que é usado esporadicamente), para vendas a vista. A emissão de uma NFC-e (modelo 65) resolveria o problema. Texto extraído do manual do SAT da Dimep: "O SAT, A NF-E E A NFC-E O que deverei (ou serei obrigado a) usar? SAT ou NFC-e? Em São Paulo o contribuinte poderá optar entre as duas soluções, uma não exclui a outra. Existe previsão na Portaria CAT 147 de 2012 que trata do SAT permitindo ao contribuinte optar por emitir NF-e (modelo 55) ou NFC-e (modelo 65) nas hipóteses em que a legislação prevê a emissão de Cupom Fiscal, ao invés de emitir CF-e-SAT. Assim, o contribuinte obrigado à emissão de CF-e-SAT poderá, alternativamente, emitir NF-e ou NFC-e. Base legal: Artigos 28 e 28-A da Portaria CAT 147 de 2012" []´s Edson.
  18. Até que enfim uma boa notícia... Vou testar a Tanca ! Obrigado pela dicas. []´s Edson.
  19. O principal receio é sobre assistência técnica. Não sei como será no caso do SAT, se somente as autorizadas poderão abrir o equipamento, como no caso das ECFs antigas. Sabe dizer algo sobre isto Daniel ?
  20. Boa tarde. Vou começar agora a substituir alguns ECFs por SAT-ECF. Não sei qual marca indicar aos meus clientes. (Dimep, Tanca, Elgin, Gertec, Urano). Alguém sabe quais as diferenças entre as marcas ? Qual tem melhor suporte ao desenvolvedor ? []´s Edson.
  21. Boa noite... O problema com o TamanhoMaximoNossoNum é no arquivo remessa. Sobre as variáveis,vou tentar explicar melhor: O TipoCobranca esta setado corretamente: ACBrBoleto.Banco.TipoCobranca := cobBancoDoBrasil; Se a conta estiver cadastrada com 5 dígitos, o comando RightStr não gera zeros a esquerda. ACBrBoleto.Cedente.Conta := '60123'; aConta := RightStr(ACBrBoleto.Cedente.Conta, 8); // retorna '60123' aConta := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Conta),0),8); // retorna '00060123' aConta := PadLeft(ACBrBoleto.Cedente.Conta, 8, '0'); // retorna '00060123' O problema é com RightStr. Poderia ser usado o PadLeft, para ajustar o número da conta para 8 dígitos, e não "descolunar" o arquivo. []´s Edson.
  22. Boa noite Juliana. O problema éra na formatação no nosso numero. Quando a variável fpTamanhoMaximoNossoNum está zerada, o nosso numero ficava em branco. Tive outro problema com o Header (cnab400), nas variáveis "aAgencia e aConta" também por deslocamento de colunas. procedure TACBrBancoBrasil.GerarRegistroHeader400(NumeroRemessa: Integer; aRemessa:TStringList); var TamConvenioMaior6 :Boolean; aAgencia, aConta :String; wLinha: String; begin with ACBrBanco.ACBrBoleto.Cedente do begin TamConvenioMaior6:= Length(trim(Convenio)) > 6; //Alterado em 01/02/2016 por Edson Polonio aAgencia:= IntToStrZero(StrToIntDef(OnlyNumber(Agencia),0),4); aConta := IntToStrZero(StrToIntDef(OnlyNumber(Conta),0),8); //aAgencia:= RightStr(Agencia, 4); -> Desta forma está causando deslocamento das colunas //aConta := RightStr(Conta, 8); Outro ponto que causou problemas foi na transação (cnab400), quando é informada uma data para protesto superior a 6 dias. Não estava gerando as instruçoes: if (DataProtesto > 0) and (DataProtesto > Vencimento) then begin DiasProtesto := ' '; case (DaysBetween(DataProtesto,Vencimento)) of 3: // Protestar no 3º dia util após vencimento begin if (trim(Instrucao1) = '') or (trim(Instrucao1) = '03') then AInstrucao := '03'+ PadLeft(trim(Instrucao2),2,'0'); end; 4: // Protestar no 4º dia util após vencimento begin if (trim(Instrucao1) = '') or (trim(Instrucao1) = '04') then AInstrucao := '04'+ PadLeft(trim(Instrucao2),2,'0'); end; 5: // Protestar no 5º dia util após vencimento begin if (trim(Instrucao1) = '') or (trim(Instrucao1) = '05') then AInstrucao := '05'+ PadLeft(trim(Instrucao2),2,'0'); end; else if (trim(Instrucao1) = '') or (trim(Instrucao1) = '06') then AInstrucao := '06'+ PadLeft(trim(Instrucao2),2,'0') else //Alterado em 01/02/2016 Edson Polonio //Se informado data de protesto com mais de 6 dias e Instrucao1 não for brancos ou 06 AInstrucao := PadLeft(trim(Instrucao1),2,'0') + PadLeft(trim(Instrucao2),2,'0'); DiasProtesto:=IntToStr(DaysBetween(DataProtesto,Vencimento)); end; end else begin Instrucao1 := '07'; //Não Protestar AInstrucao := PadLeft(Trim(Instrucao1),2,'0') + PadLeft(Trim(Instrucao2),2,'0'); DiasProtesto:= ' '; end; Em anexo a unit alterada. []´s Edson. ACBrBancoBrasil.pas
  23. Boa tarde. Atualizei esses dias o ACBr e tive problemas com geração de remessa para o Banco do Brasil. Comparando com uma versão antiga, vi que a variável " fpTamanhoMaximoNossoNum " antigamente tinha valor = 5, e agora está com valor = 0 Alterei para 5 e tudo voltou ao normal. constructor TACBrBancoBrasil.create(AOwner: TACBrBanco); begin inherited create(AOwner); fpDigito := 9; fpNome := 'Banco do Brasil'; fpNumero := 001; fpTamanhoMaximoNossoNum := 0; // o correto é fpTamanhoMaximoNossoNum := 5; fpTamanhoConta := 12; fpTamanhoAgencia := 4; fpTamanhoCarteira:= 2; end; []´s Edson.
  24. Boa noite. Eu estou trabalhando para implantar o provedor CONAM, que também não usa certificado digital. Pra funcionar, tive que alterar diversas units, entre elas a ACBrNFSeWebServices, para ignorar o erro da exigência de certificado, mesmo quando ele não é informado. Se quiserem dar uma olhada, segue o link: http://www.projetoacbr.com.br/forum/applications/core/interface/file/attachment.php?id=20913 []´s Edson.
  25. Bom dia. Esqueci de anexar o CONAM.INI, acho que está quase pronto... []´s Edson. Cidades.INI CONAM.INI
×
×
  • 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.