Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 01-07-2021 em todas as áreas

  1. Olá pessoal, Foi publicado a versão 1.20 da NT 2020/005 que trata sobre os novos campos da NF-e bem como das novas regras de validação, alteração de outras e atualização de outros campos. Nessa versão da NT foi corrigido uma informação que era a placa que passaria a ser opcional sendo que na verdade é a UF da placa que passa a ser opcional por conta das novas placas do Mercosul. Resumo dos novos campos: Novos campos no detalhamento do produto: cBarra - Código de barras diferente do padrão GTIN cBarraTrib - Código de Barras da unidade tributável que seja diferente do padrão GTIN Novos campos referente a Tributação: ICMS=10 , ICMS=70 e ICMS=90 vICMSSTDeson - Valor do ICMS- ST desonerado motDesICMSST - Motivo da desoneração do ICMS- ST ICMS=51 pFCPDif - Percentual do diferimento do ICMS relativo ao Fundo de Combate à Pobreza (FCP) vFCPDif - Valor do ICMS relativo ao Fundo de Combate à Pobreza (FCP) diferido vFCPEfet - Valor efetivo do ICMS relativo ao Fundo de Combate à Pobreza (FCP) Grupo PIS ST indSomaPISST - Indica se o valor do PISST compõe o valor total da NF-e Grupo COFINS ST indSomaCOFINSST - Indica se o valor da COFINS ST compõe o valor total da NF-e Houve também alteração nas regras: 1C17-50 que passa ter a seguinte redação: Se operação de saída interestadual (tpNF=1 e idDest=2) e operação com Consumidor Final (indFinal=1) e indIEDest=9: • Acessar Cadastro Centralizado de Contribuinte (Chave: UF do Destinatário, CNPJ do Emitente, cSitCNPJ=10) • Denegar a NF-e se for encontrado registro de bloqueio no CCC Nota: Regra de Validação não aplicável pelas UFs não signatárias, conforme parágrafo 7º da Cláusula sexta, do Ajuste SINIEF 07/05. 3B08-100 que passa a ter a seguinte redação: Se Tipo de Emissão da NF-e for 1 (Emissão normal), 6 (Contingência SVC-AN) ou 7 (Contingência SVC-RS): • Acesso BD de Inutilização (Chave: Modelo, UF, CNPJ/CPF, Série, Número): * Numeração da NF-e está inutilizada (NT 2011/004) (NT 2018.001) Observação: Se cUF(B02) for igual 35(SP) validar também se Tipo de Emissão da NF-e for 2 (Contingência FS-IA), 4(Contingência EPEC) ou 5(Contingência FS-DA). O prazo para implementação foi prorrogado, agora as novas datas são: Ambiente de Homologação (ambiente de teste das empresas): 02/08/2021 (antes era 01/07/2021) Ambiente de Produção: 04/10/2021 (antes era 01/09/2021) Com relação ao componente ACBrNFe, já esta em conformidade com a NT e se encontra atualizado no SVN. Recomendo que se faça a atualização de todos os fontes de todas as pastas, reinstale a suíte ACBr e aguardem a data de liberação do ambiente de homologação para dar inicio aos testes com os novos campos. Não deixem de lerem a NT na integra, ela esta disponível em nossa biblioteca: http://svn.code.sf.net/p/acbr/code/tools/DFe/NFeNFCe/NT/2020/
    5 pontos
  2. Veja a configuração de DPI do Windows. Se estiver diferente de 100% vai acontecer isso. Nesse caso você precisa configurar as propriedades AlterarEscalaPadrao e NovaEscala.
    4 pontos
  3. Boa noticia para as Softwarehouses que atendem empresas de SC, no dia 10/06/2021, foi publicado o ato DIAT 030/2021, prorrogando para 30/06/2022 a validade dos laudos de homologação PAF-ECF ainda que ainda nas versões 2.04 e 2.05 da Especificação de Requisitos. Fonte: http://legislacao.sef.sc.gov.br/html/atos_diat/2021/atodiat_21_030.htm
    2 pontos
  4. 1- A versão 1.4.0.32 do ACBrMonitorPLUS alterou a leitura do grupo "Pedagio" no MDFe. Atendendo as modificações de Schemas da NT 2021.001 do MDFe foi realizado um ajuste no arquivo .ini com dados de leitura do MDFe no grupo [valePed] - Pedagio, onde foi adicionado também a tag "categCombVeic" A forma de preenchimento já utilizada anteriormente também continuará funcionando mas para adicionar esse novo campo será necessário adequar a leitura conforme abaixo: [valePed] CategCombVeic=06 [disp001] CNPJForn= CNPJPg= nCompra= vValePed= Essa informação está atualizada também na documentação do ACBrMonitor: https://acbr.sourceforge.io/ACBrMonitor/ModeloMDFeINI.html Mais informações na NT 2021.001 2- Devido as validações da NT 2021/002 do MDFe que entraram em vigor, alguns passaram a receber a rejeição " 745 Rejeição: O tipo de transportador não ser informado quando não estiver informado proprietário do veículo de tração" Para que essa tag não seja considerada na geração do XML, passe da seguinte forma, para resolver essa rejeição: tpTransp=0 Veja registro completo
    1 ponto
  5. Depois de atualizar foi enviado com sucesso pelo padrão ABRASF versão 2 usando o programa de exemplo. Vou realizar novamente os testes pelo sistema, obrigado por enquanto. Como tinha atualizado ontem, achei que ainda não havia feito os ajustes...
    1 ponto
  6. Nenhum é um componente chamado ACBrNFSeX e o ACBrNFSeXDANFSeRL na pasta de exemplo do svn tem também o exemplo de como usar. trunk2\Exemplos\ACBrDFe\ACBrNFSeX\Delphi
    1 ponto
  7. Boa tarde Isso tem haver com a versão do arquivo que o Banco espera, essa versão pode ser definida na sessão do .ini. Exemplo: [Banco] VersaoArquivo=101 VersaoLote=60
    1 ponto
  8. Olá amigo, consegui mandar corretamente fazendo o cancelamento no evento ACBrTEFDAguardaResp. No método que retorna o valor 52 sempre passa o parâmetro Interromper := False. No evento faça: if (Arquivo = '52') and (not Interromper) then Interromper := True; ... Para mim funcionou, espero que lhe ajude também.
    1 ponto
  9. Deu certo com está versão, valeu obrigado
    1 ponto
  10. Bom dia Estou usando a ultima revisão do ACBr e o demo ACBrNFSeX apresenta erro ao tentar imprimir a DANFSe selecionando o XML, tentei com XML de Pederneiras/SP, Canoas/RS e Iconha/ES. O problema ocorre na função Document.Clear(); do LerXML no Provider, mas não consegui identificar o porque disso ocorrer. No demo sempre seleciono a cidade correspondente, preciso de mais alguma configuração?
    1 ponto
  11. Italo, enviei os arquivos no privado para preservar os dados do cliente.
    1 ponto
  12. Bom dia Valdir, Você configurou as propriedades de Margens? No programa exemplo mostra como fazer essa configuração.
    1 ponto
  13. Bom dia Renato , agradeço seu compartilhamento, creio que ja resolva meu problema desde ja muito agradeçido;
    1 ponto
  14. Faça um teste com a ultima versão disponível do ACBrMonitorPLUS: 1.4.0.32
    1 ponto
  15. Bom dia Decio, Precisei disso recentemente. Segue exemplo, caso seja útil: DFe.NFe.WebServices.Consulta.ExtrairEventos := True; str := DFe.consultaChaveAcesso(ChaveNFe); for j:=0 to DFe.NFe.WebServices.Consulta.procEventoNFe.Count-1 do with DFe.NFe.WebServices.Consulta.procEventoNFe.Items[j].RetEventoNFe.retEvento do for i:=0 to Count-1 do if ( Items[i].RetInfEvento.cStat in [135, 136] ) then ProcessaStatus( Items[i].RetInfEvento.cStat, Items[i].RetInfEvento.xMotivo, Items[i].RetInfEvento.tpEvento, Items[i].RetInfEvento.nProt, Items[i].RetInfEvento.nSeqEvento, Items[i].RetInfEvento.dhRegEvento );
    1 ponto
  16. Boa tarde Juliano, Muito obrigado por esse retorno, me parece que estamos no caminho certo.
    1 ponto
  17. Manual de migração para o novo componente de NFS-e. 1. Introdução Foi realizado um refactoring no componente de emissão de NFS-e Nota Fiscal de Serviço Eletrônica, que acabou resultando em um novo componente chamado ACBrNFSeX e consequentemente um novo para impressão do DANFSE (ACBrNFSeXDANFSERL – Fortes Report). O motivo de realizar esse refactoring foi devido a uma grande quantidade de IF e CASE em diversas units para sanar a falta de padronização entre os provedores. O componente também tinha algumas propriedades de configuração repetidas com nomes diferentes e até campos na classe da NFS-e que na verdade deveriam ser propriedades de configuração, ou seja, propriedades de configuração foram implementadas como sendo campos de uma NFS-e. Portanto ao realizar a troca do componente atual (ACBrNFSe) pelo novo (ACBrNFSeX) vai ocorrer quebra de código. Esse manual tem como objetivo apresentar um roteiro de migração e apresentar o que mudou de um componente para o outro. 2. Propriedades de configuração excluídas Foram excluídas as propriedades: SenhaWeb, UserWeb, PathIniCidades, PathIniProvedor e DadosSenhaParams, Key, Auth, RequestId e Resposta. 3. Propriedades de configuração renomeadas As propriedades: WebUser, WebSenha, WebFraseSecr e WebChaveAcesso agora se chamam: WSUser, WSSenha, WSFraseServ e WSChaveAcesso. Essas propriedade se encontram em: Configuracoes.Geral.Emitente 4. Propriedades de configuração novas Foi incluída as propriedades: WSChaveAutoriz (string) em Configuracoes.Geral.Emitente e ConsultaAposCancelar (Boolean) em Configuracoes.Geral. 5. Campos excluídos Foram excluídos da classe IdentificacaoPrestador os campos: Senha, FraseSecreta, cUF, ChaveAcesso, Usuario, CNPJ_Prefeitura, ValorReceitaBruta, DataInicioAtividade, RazaoSocial, Fantasia, Endereco, Telefone, Email, crc e crc_estado. Alguns desses campos que foram excluídos possuem uma propriedade de configuração, logo o componente vai se utilizar da informação que se encontra na configuração do mesmo. Outros campos migraram para uma outra classe. Excluído o campo PrestadorServico da classe NFSe, para informar os dados do prestador devemos utilizar o campo Prestador que já existia na classe NFSe. Os campos CNPJ e InscricaoMunicipal agora estão dentro da classe IdentificacaoPrestador, exemplo: Prestador.IdentificacaoPrestador.CNPJ Prestador.IdentificacaoPrestador. InscricaoMunicipal Excluído os campos Discriminacao, ValorServicos e Codigo da classe ItemServico, usar no lugar os campos Descricao, ValorTotal e CodServ. A classe ItemServico é utilizada pelos provedores que permitem incluir mais de um item de serviço no RPS. 6. Campos renomeados O campo ChaveNFSe da classe NFSe que é utilizado pelo provedor Infisc foi renomeado para refNF para compatibilizar com a nomenclatura da tag no XML, o seu conteúdo é gerado automaticamente, logo não se faz necessário atribuir nada a ele. 7. Campos novos Na classe DadosPrestador passou a ter os campos: cUF (Integer), crc (string), crc_estado (string), DataInicioAtividade (TDateTime) e ValorReceitaBruta (Currency). Na classe NFSe foi incluído o campo SituacaoTrib (TSituacaoTrib) pois estava sendo utilizado um outro campo chamado Situacao, sendo que este contem a situação do processamento do RPS. 8. Campos cujo tipo foi alterado Alterado o tipo de string para TTipoPessoa do campo Tipo que se encontra na classe IdentificacaoTomador. 9. Métodos excluídos Foi excluído o método Enviar, EnviarSincrono e Gerar. 10. Métodos renomeados O método SetConfigMunicipio agora se chama LerParamsMunicipio. 11. Métodos novos Foi implementado o método Emitir que detecta o modo de envio correto para cada provedor. O método Emitir possui 3 parâmetros: aLote do tipo Integer ou String que contém o número do lote de RPS que está sendo enviado para o WebService; aModoEnvio do tipo TmodoEnvio cujos valores aceitos são (meAutomatico é o valor padrão): meAutomatico = o componente vai utilizar o serviço mais adequado ou implementado pelo provedor; meLoteAssincrono = o componente vai utilizar o serviço que recepciona o lote de RPS no modo assíncrono, se o provedor não tem esse serviço será apresentado uma mensagem de erro acusando que o serviço não foi implementado pelo provedor; meLoteSincrono = o componente vai utilizar o serviço que recepciona o lote de RPS no modo síncrono, se o provedor não tem esse serviço será apresentado uma mensagem de erro acusando que o serviço não foi implementado pelo provedor; meUnitario = o componente vai utilizar o serviço que recepciona um RPS por vez, se o provedor não tem esse serviço será apresentado uma mensagem de erro acusando que o serviço não foi implementado pelo provedor; meTeste = alguns provedores possuem um serviço exclusivo para realização de teste de envio de lote de RPS, para esses casos devemos usar esse modo de envio. aImprimir do tipo Boolean (True é o valor padrão), se for True imprimir automaticamente o DANFSE. Foi acrescentado os métodos GravarINI e LerINI, visando gravar e ler o arquivo INI de configuração do componente, esse arquivo INI de configuração será utilizado pelo ACBrMonitor e ACBrLibNFSe. Foi implementado o método LerArqIni visando a leitura de um arquivo INI com os dados do serviço prestado. Esse método também será utilizado pelo ACBrMonitor e ACBrLibNFSe. 12. Métodos que sofreram alteração em seus parâmetros No método ConsultarLoteRps a ordem dos parâmetros foi alterada, agora é: Protocolo e depois Número do lote, uma vez que o número do lote só é utilizado por alguns provedores e não por todos. Definição do método na unit ACBrNFSeX: function ConsultarLoteRps(const AProtocolo: String; const ANumLote: String = ''): Boolean; No método ConsultarNFSePorRps foi removido o último parâmetro: ACodMunicipioTOM em seu lugar foi incluído: ACodVerificacao, o motivo dessa troca é que nenhum provedor está utilizando o código do município do tomador na consulta e por outro lado temos provedores que se utilizam do código de verificação. Definição do método na unit ACBrNFSeX: function ConsultarNFSeporRps(const ANumRPS, ASerie, ATipo: String; const ANumLote: String = ''; const ACodVerificacao: string = ''): Boolean; No método ConsultarNFSe foram removidos todos os parâmetros e no lugar foi colocado o aInfConsultaNFSe que é do tipo TInfConsultaNFSe. Para entender como devemos informar os dados para efetuar a consulta de uma nota vide o programa exemplo do novo componente. Foram criados vários métodos de Consulta de NFSe: Usado pelos provedores que seguem a versão 1 do layout da ABRASF. function ConsultarNFSePorNumero(const aNumero: string; aPagina: Integer = 1): Boolean; Usados pelos provedores que seguem a versão 2 do layout da ABRASF. Realiza uma consulta por faixa de números de notas: function ConsultarNFSePorFaixa(const aNumeroInicial, aNumeroFinal: string; aPagina: Integer = 1): Boolean; Realiza uma consulta por período: function ConsultarNFSePorPeriodo(aDataInicial, aDataFinal: TDateTime; aPagina: Integer = 1; aNumeroLote: string = ''): Boolean; Realiza uma consulta por numero de uma nota – serviço prestado: function ConsultarNFSeServicoPrestadoPorNumero(const aNumero: string; aPagina: Integer = 1): Boolean; Realiza uma consulta por período – serviço prestado: function ConsultarNFSeServicoPrestadoPorPeriodo(aDataInicial, aDataFinal: TDateTime; aPagina: Integer = 1): Boolean; Realiza uma consulta por tomador – serviço prestado: function ConsultarNFSeServicoPrestadoPorTomador(const aCNPJ, aInscMun: string; aPagina: Integer = 1): Boolean; Realiza uma consulta por intermediário – serviço prestado: function ConsultarNFSeServicoPrestadoPorIntermediario(const aCNPJ, aInscMun: string; aPagina: Integer = 1): Boolean; O autor das consultas acima é o prestador de serviço. Realiza uma consulta por numero de uma nota – serviço tomado: function ConsultarNFSeServicoTomadoPorNumero(const aNumero: string; aPagina: Integer = 1): Boolean; Realiza uma consulta por período – serviço tomado: function ConsultarNFSeServicoTomadoPorPeriodo(aDataInicial, aDataFinal: TDateTime; aPagina: Integer = 1): Boolean; Realiza uma consulta por prestador – serviço tomado: function ConsultarNFSeServicoTomadoPorPrestador(const aCNPJ, aInscMun: string; aPagina: Integer = 1): Boolean; Realiza uma consulta por tomador – serviço tomado: function ConsultarNFSeServicoTomadoPorTomador(const aCNPJ, aInscMun: string; aPagina: Integer = 1): Boolean; Realiza uma consulta por intermediário – serviço tomado: function ConsultarNFSeServicoTomadoPorIntermediario(const aCNPJ, aInscMun: string; aPagina: Integer = 1): Boolean; O autor das consultas acima é o consulente, que pode ser o tomador do serviço ou outra pessoa como por exemplo o contador. Caso o provedor não tenha disponibilizado esses serviços de consultas em seu WebService, uma mensagem de erro será apresentada acusando que o serviço não foi implementado pelo provedor. No método CancelarNFSe foram removidos todos os parâmetros e no lugar foi colocado o aInfCancelamento que é do tipo TInfCancelamento. Para entender como devemos informar os dados para efetuar o cancelamento de uma nota vide o programa exemplo do novo componente. O primeiro parâmetro do método LinkNFSe no novo componente obrigatoriamente tem que ser uma string. 13. Arquivos INI O novo componente não se utiliza mais dos arquivos INI dos provedores e nem do Cidades.ini Agora temos uma unit para cada provedor e o conteúdo do arquivo Cidades.ini migrou para o arquivo ACBrNFSeXServicos.ini que é convertido em um arquivo RES através do BAT chamado Compila_RES. O arquivo ACBrNFSeXServicos.res é incorporado ao executável ao compilar a aplicação, desta forma não se faz necessário disponibilizar junto com o executável nenhum arquivo INI. Layout de uma seção no arquivo ACBrNFSeXServicos.ini [9999999] Código IBGE da cidade. Nome= Nome da cidade de preferência sem cedilha e vogal acentuada. UF= Sigla da UF da referida cidade. Provedor= Nome do provedor, deve-se respeitar a grafia levando em consideração letras maiúsculas e minúsculas. Os 2 campos abaixo são utilizados pelo provedor Governa Params1= Informar a versão do layout do Arquivo que é usado no elemento: tsVrsArq Params2= Informar a versão do layout de Impressão que é usado no elemento: tsVrsImp Os 2 campos abaixo são utilizados pelo provedor DataSmart Params1= O provedor defini uma abreviação do nome da cidade, por exemplo B_SJOSE é utilizado para a cidade de São Jose do Ouro. Params2= Por padrão o valor BANCO_DEMOSTRACAO. O campo abaixo defini o código da Entidade definida pelo provedor Equiplano para cada cidade. Params1= Informar o código da Entidade que usado no elemento: IdEntidade. Os 2 campos abaixo são utilizados para definir a URL do Link para se ter acesso ao DANFSE via navegador. ProLinkURL= Informar a URL do ambiente de Produção. HomLinkURL= Informar a URL do ambiente de Homologação. Os 2 campos abaixo são utilizados para definir a URL do NameSpace, o provedor ISSDSF tem um NameSpace diferente para cada cidade. ProNameSpace= Informar a URL do NameSpace para o ambiente de Produção. HomNameSpace= Informar a URL do NameSpace para o ambiente de Homologação Os 2 campos abaixo são utilizados para definir a URL do NameSpace do XML, o provedor Actcon tem um NameSpace do XML diferente para cada cidade. ProXMLNameSpace= Informar a URL do NameSpace do XML para o ambiente de Produção. HomXMLNameSpace= Informar a URL do NameSpace do XML para o ambiente de Homologação Os 2 campos abaixo são utilizados para definir a URL do SoapAction, o provedor Actcon tem um SoapAction diferente para cada cidade. ProSoapAction= Informar a URL do SoapAction para o ambiente de Produção. HomSoapAction= Informar a URL do SoapAction para o ambiente de Homologação Se o provedor não tem uma URL de serviço padronizada de produção, ou seja, uma para cada cidade devemos utilizar os campos abaixo: ProRecepcaoLoteRPS= Informar a URL para o ambiente de Produção. Os campos abaixo só devem ser incluídos caso a URL seja diferente para cada serviço. ProConsultaSitLoteRPS= ProConsultaLoteRPS= ProConsultaNFSeRPS= ProConsultaNFSe= ProCancelaNFSe= ProGerarNFSe= ProRecepcaoSincrono= ProSubstituiNFSe= ProAbrirSessao= ProFecharSessao= Se o provedor não tem uma URL de serviço padronizada de homologação, ou seja, uma para cada cidade devemos utilizar os campos abaixo: HomRecepcaoLoteRPS= Informar a URL para o ambiente de Homologação. Os campos abaixo só devem ser incluídos caso a URL seja diferente para cada serviço. HomConsultaSitLoteRPS= HomConsultaLoteRPS= HomConsultaNFSeRPS= HomConsultaNFSe= HomCancelaNFSe= HomGerarNFSe= HomRecepcaoSincrono= HomSubstituiNFSe= HomAbrirSessao= HomFecharSessao= 14. Roteiro para migrar do componente atual ACBrNFSe para o novo ACBrNFSeX 1. Fazer uma cópia dos fontes do projeto; 2. Carregar o Delphi; 3. Abrir o projeto; 4. Remover os componentes (ACBrNFSe e ACBrNFSeDANFSeRL); 5. Remover do uses as units: ACBrNFSeDANFSeClass, ACBrNFSeDANFSeRLClass e ACBrNFSe; 6. Remover do uses (implementação) as units: ACBrNFSeNotasFiscais, ACBrNFSeConfiguracoes, pnfsConversao e pnfsNFSe; 7. Comentar as procedures: ACBrNFSe1GerarLote e ACBrNFSe1StatusChange tanto a sua declaração quanto a sua implementação; 8. Salvar o projeto; 9. Incluir os novos componentes: ACBrNFSeX e ACBrNFSeXDANFSeRL; 10. Salvar novamente o projeto; 11. Relacionar o ACBrNFSeX com o ACBrNFSeXDANFSeRL e com o ACBrMail; 12. Criar novamente os eventos GerarLote e StatusChange do componente ACBrNFSeX e inserir o seu código (tome como base o que está comentado); 13. Executar o Replace (ACBrNFSe1 para ACBrNFSeX1); 14. Trocar o NotasFiscais.Add.NFSe por NotasFiscais.New.NFSe; 15. Incluir no uses (implementação) a unit: ACBrNFSeXConversao; 16. Remover as linhas referentes as propriedades de configuração que não existe mais, conforme mencionado no início deste Manual; 17. Alterar o nome de algumas propriedades de configuração conforme mencionado no início deste Manual. 18. Alterar o conteúdo da procedure AtualizarCidades conforme apresentado neste Manual; 19. Alterar a ordem dos parâmetros do Consultar Lote; 20. Alterar o método Enviar(vNumLote) para Emitir(vNumLote, meLoteAssincrono); 21. Alterar o método Gerar(StrToint(vNumRPS)) para Emitir(vNumRPS, meUnitario); 22. Alterar o método EnviarSincrono(vNumLote) para Emitir(vNumLote, meLoteSincrono); 23. Alterar conforme acima os métodos CancelarNFSe e ConsultarNFSe e LinkNFSe; 24. Alterar conforme o programa exemplo do componente ACBrNFSeX a forma de realizar a Consulta a NFSe e o Cancelamento de NFSe; 25. Salvar, compilar (Build) e executar o projeto. 15. Alterar o código da procedure AtualizarCidades Como o novo componente não busca mais no arquivo Cidades.ini as cidades, se faz necessário alterar o código. Como o código deve ficar: procedure TfrmACBrNFSe.AtualizarCidades; var IniCidades: TMemIniFile; Cidades: TStringList; I: Integer; sNome, sCod, sUF: String; begin IniCidades := TMemIniFile.Create(''); Cidades := TStringList.Create; ACBrNFSeX1.LerCidades; IniCidades.SetStrings(ACBrNFSeX1.Configuracoes.WebServices.Params); try IniCidades.ReadSections(Cidades); cbCidades.Items.Clear; for I := 0 to Pred(Cidades.Count) do begin if (StrToIntdef(Cidades[I], 0) > 0) then begin //Exemplo: Alfenas/3101607/MG sCod := Cidades[I]; sNome := IniCidades.ReadString(sCod, 'Nome', ''); sUF := IniCidades.ReadString(sCod, 'UF', ''); cbCidades.Items.Add(Format('%s/%s/%s', [sNome, sCod, sUF])); end; end; //Sort cbCidades.Sorted := false; cbCidades.Sorted := true; edtTotalCidades.Text := IntToStr(cbCidades.Items.Count); finally FreeAndNil(Cidades); IniCidades.Free; end; end; 16. Tabela de mensagens geradas pelo componente Código Descrição X001 Serviço não implementado pelo Provedor. X002 Nenhum RPS adicionado ao componente. X003 Conjunto de RPS transmitidos (máximo de xxx RPS) excedido. Quantidade atual: yyy X101 Número do Protocolo não informado. X102 Número do RPS não informado. X103 Série do Rps não informado. X104 Tipo do Rps não informado. X105 Número Inicial da NFSe não informado. X106 Número Final da NFSe não informado. X107 Pedido de Cancelamento não informado. X108 Número da NFSe não informado. X109 Código de cancelamento não informado. X110 Motivo do Cancelamento não informado. X111 Número do Lote não informado. X112 Série da NFSe não informada. X113 Valor da NFSe não informado. X114 Tipo da NFSe não informado. X115 Data Inicial não informada. X116 Data Final não informada. X117 Código de Verificação/Validação não informado. X118 Chave da NFSe não informada. X201 WebService retornou um XML vazio. X202 Lista de NFSe não encontrada! (ListaNfse) X203 Não foi retornado nenhuma NFSe. X204 Confirmação do cancelamento não encontrada. X205 Retorno da Substituição não encontrada. X206 NFSe Substituída não encontrada. X207 NFSe Substituidora não encontrada. X208 Não foi retornado nenhum Rps. X999 E.Message
    1 ponto
  18. Acredito que este projeto do DTe vai cair por terra. https://comsefaz.org.br/?p=1948
    1 ponto
  19. Bom dia Matheus, Já enviei para o repositório.
    1 ponto
  20. Olá Pessoal, Vejo muitos XML de CT-e que contem as informações sobre o Expedidor e o Recebedor. Quando devemos informa-los e em quais situações? Em um transporte de carga normal, ou seja, a transportadora pega a carga do Remetente e leva até o Destinatário não devemos informar o Expedidor e o Recebedor. O Expedidor e ou Recebedor só aparecem quando existe uma outra transportadora envolvida no transporte da carga e é essa transportadora que é informada como Expedidor ou como Recebedor. Vamos a um exemplo onde temos o transporte Normal, Redespacho e Redespacho Intermediário. Exemplo: Transportadoras envolvidas: A, B e C Remetente -> A -> B -> C -> Destinatário A transportadora A emite um CT-e Normal informando: Remetente: o remetente da mercadoria (quem vendeu) Destinatário: o destinatário da mercadoria (quem comprou) Recebedor: Transportadora B (o Recebedor foi informado pois a transportadora A não vai levar a carga até o Destinatário. o Expedidor não foi informado pois quem expediu a carga foi o Remetente que já esta informado) A transportadora B emite um CT-e de Redespacho Intermediário Remetente: o remetente da mercadoria (quem vendeu) - Opcional Destinatário: o destinatário da mercadoria (quem comprou) - Opcional Expedidor: Transportadora A (o Expedidor foi informado pois a carga não foi expedida pelo Remetente e sim pela Transportadora A) Recebedor: Transportadora C (o Recebedor foi informado pois a transportadora B não vai levar a carga até o Destinatário) A transportadora C emite um CT-e de Redespacho Remetente: o remetente da mercadoria (quem vendeu) Destinatário: o destinatário da mercadoria (quem comprou) Expedidor: Transportadora B (o Expedidor foi informado pois a carga não foi expedida pelo Remetente e sim pela Transportadora B. o Recebedor não foi informado pois quem vai receber a carga é o Destinatário que já esta informado) Note que a transportadora A pegou a carga do Remetente e levou até a transportadora B, esta por sua vez levou até a transportadora C, e esta por sua vez levou a carga até o destinatário.
    1 ponto
  21. Olá pessoal, boa tarde. Estou implementando a rotina de envio de email da NFSe, utilizando o método EnviarEmail da classe NotaFiscal da unit ACBrNFSeNotasFiscais. Ai me deparei com a necessidade de incluir uma imagem de assinatura do email, sendo que a imagem tem que ser enviada junto (embedded). Vi que isto pode ser feito no componente ACBrMail por meio do método AddAttachement(arquivo, referencia) e incluindo a tag <img src="cdi:referencia"> no corpo da mensagem. Porém, não achei como fazer isso utilizando o método EnviarEmail mencionado no início. A solução que eu achei, e que sugiro como alteração, foi utilizar o formato name=value no parâmetro Anexos do método EnviarEmail, alterando o método na classe TACBrDFe como segue: Linha 308 De: if Assigned(Anexos) then begin for i := 0 to Anexos.Count - 1 do MAIL.AddAttachment(Anexos[i]); end; Para: if Assigned(Anexos) then begin for i := 0 to Anexos.Count - 1 do if Anexos.Names[i] <> '' then MAIL.AddAttachment(Anexos.ValueFromIndex[i], Anexos.Names[i]) else MAIL.AddAttachment(Anexos[i]); end; A utilização ficaria assim: procedure TDMNFSe.EnviaEmailNFSe(aNotaFiscal: NotaFiscal; aCliente: TCliente); var Anexos, Mensagem: TStringList; begin Mensagem := TStringList.Create; try Anexos := TStringList.Create; // Anexa a assinatura Anexos.Add('Assinatura=C:\Sistema\Imagens\Assinatura.jpg'); Mensagem.Add('À <strong>' + aCliente.RazaoSocial + ',</strong><br/>'); Mensagem.Add('<br/>'); Mensagem.Add('Segue em anexo a Nota Fiscal eletrônica, referente ao mês ' + FormatDateTime('mm/yyyy', aNotaFiscal.NFSe.DataEmissaoRps) + '.<br/>'); Mensagem.Add('<br/>'); Mensagem.Add('<br/>'); Mensagem.Add('Atte,<br/>'); Mensagem.Add('<img src="cid:Assinatura">'); aNotaFiscal.EnviarEmail(aCliente.EmailFinanceiro, 'Nota Fiscal Eletrônica - RPS/' + aNotaFiscal.NFSe.IdentificacaoRps.Numero, Mensagem, True, //Enviar PDF junto nil, //Lista com emails que serão enviado cópias - TStrings Anexos // Lista de anexos - TStrings ); finally Mensagem.Free; end; end; Não sei se existe alguma outra forma de fazer isto pelo componente, mas de qualquer forma é uma alteração bem simples. Sintam-se a vontade para utilizar. Abraço...
    1 ponto
×
×
  • 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...