Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 25-06-2021 em todas as áreas

  1. Olá Pessoal, Uma empresa que vende e realiza o transporte de sua mercadoria normalmente fazem seguro da carga que esta sendo transportada. A averbação é a declaração das mercadorias em estado de risco. O que vai ser apresentado abaixo é como averbar uma NF-e se utilizando do componente ACBrANe e a empresa responsável pela averbação será a AT&M. A averbação de uma NF-e é muito simples, os passos são: 1. Emitir a NF-e utilizando o componente ACBrNFe; 2. Averbar a NF-e utilizando o componente ACBrANe; O programa exemplo do componente ACBrANe é bastante simples e de fácil compreensão. Abaixo a rotina que alimenta o componente ACBrANe para realizar a averbação de uma NF-e: procedure TfrmACBrANe.AlimentarComponente(ANomeArq: String); begin ACBrANe1.Documentos.Clear; with ACBrANe1.Documentos.Add.ANe do begin // ATM Usuario := ACBrANe1.Configuracoes.Geral.Usuario; Senha := ACBrANe1.Configuracoes.Geral.Senha; codatm := ACBrANe1.Configuracoes.Geral.CodATM; // ELT NomeArq := ExtractFileName(ANomeArq); CNPJ := ACBrANe1.Configuracoes.Geral.CNPJEmitente; // ATM e ELT xmlDFe := DocNFeCTe; end; end; O componente permite averbar documentos com a AT&M e ELT, como dito estamos exemplificando o processo com base na AT&M. Para a AT&M precisamos informar o Usuário, Senha e o Código AT&M gerado para cada usuário. A variável DocNFeCTe é do tipo string e ela contem o conteúdo do XML. Detalhe importante: podemos averbar uma NF-e ou CT-e, nessa postagem estarei mostrando a averbação de uma NF-e, logo o conteúdo da variável DocNFeCTe do programa exemplo vai conter o XML de uma NF-e. Após alimentar o componente com os dados necessários, basta executar o método Enviar, como é mostrado pela codificação do botão [Criar e Enviar] do programa exemplo. A questão maior é quando o segurado possui coberturas adicionais em sua apólice tais como: Operação de carga e descarga, içamento de carga, contêiner, acessórios, entre outros. No Manual da AT&M (WebService 2.0 - REST 1.1) temos no item 21.0 e subitens uma relação das coberturas adicionais e os seus valores padrões. A titulo de exemplo vamos pegar a cobertura: Operação de Carga e Descarga. O valor padrão é "N" ou seja o segurado não tem essa cobertura. Caso o segurado venha a ter se faz necessário constar no XML da NF-e a informação que ele tem a cobertura para a Operação de Carga e Descarga. Como fazer isso? Vamos utilizar (conforme consta no manual da AT&M) o grupo de observação do contribuinte. Exemplo genérico: with InfAdic.ObsCont.New do begin xCampo := 'Nome do Campo'; xTexto := 'Valor do Campo'; end; Informando que o segurado tem cobertura para a Operação de Carga e Descarga na rotina que alimenta o componente ACBrNFe: with InfAdic.ObsCont.New do begin xCampo := 'OCD'; xTexto := 'S'; end; Isso vai fazer com que ao gerar o XML da NF-e ele vai conter as tags: <infAdic> <obsCont xCampo =“OCD”> <xTexto>S</xTexto> </obsCont> </infAdic> Vamos supor que o segurando além de ter a cobertura de Operação de Carga e Descarga tenha também a cobertura para içamento de carga da mercadoria. with InfAdic.ObsCont.New do begin xCampo := 'OCD'; xTexto := 'S'; end; with InfAdic.ObsCont.New do begin xCampo := 'IC'; xTexto := 'S'; end; No XML teremos: <infAdic> <obsCont xCampo =“OCD”> <xTexto>S</xTexto> </obsCont> <obsCont xCampo =“IC”> <xTexto>S</xTexto> </obsCont> </infAdic> Um XML com esses dados vai ser autorizado pela SEFAZ sem nenhum problema, uma vez que essas informações são observações do contribuinte informadas no XML de forma estruturada. Ao enviar o XML da NF-e com essas tag para o webservice da AT&M ela identifica essas informações no XML e averba a NF-e levando em consideração as coberturas informadas. Detalhe Importante: O grupo obsCont só pode ocorrer no XML no máximo 10 vezes (no exemplo acima temos 2 ocorrências), logo não informe uma cobertura que você não tenha ou com o seu valor padrão. Exemplo: Se o segurado tenha uma cobertura para uma mercadoria especifica deverá constar no XML, caso contrario não informe. <infAdic> <obsCont xCampo =“MERCESPECIFICA”> <xTexto>S</xTexto> </obsCont> </infAdic> Espero ter ajudado.
    3 pontos
  2. Olá Pessoal, Normalmente as transportadora fazem seguro da carga que esta sendo transportada. A averbação é a declaração das mercadorias em estado de risco. O que vai ser apresentado abaixo é como averbar um CT-e se utilizando do componente ACBrANe e a empresa responsável pela averbação será a AT&M. A averbação de um CT-e é muito simples, os passos são: 1. Emitir o CT-e utilizando o componente ACBrCTe; 2. Averbar o CT-e utilizando o componente ACBrANe; O programa exemplo do componente ACBrANe é bastante simples e de fácil compreensão. Abaixo a rotina que alimenta o componente ACBrANe para realizar a averbação de um CT-e: procedure TfrmACBrANe.AlimentarComponente(ANomeArq: String); begin ACBrANe1.Documentos.Clear; with ACBrANe1.Documentos.Add.ANe do begin // ATM Usuario := ACBrANe1.Configuracoes.Geral.Usuario; Senha := ACBrANe1.Configuracoes.Geral.Senha; codatm := ACBrANe1.Configuracoes.Geral.CodATM; // ELT NomeArq := ExtractFileName(ANomeArq); CNPJ := ACBrANe1.Configuracoes.Geral.CNPJEmitente; // ATM e ELT xmlDFe := DocNFeCTe; end; end; O componente permite averbar documentos com a AT&M e ELT, como dito estamos exemplificando o processo com base na AT&M. Para a AT&M precisamos informar o Usuário, Senha e o Código AT&M gerado para cada usuário. A variável DocNFeCTe é do tipo string e ela contem o conteúdo do XML. Detalhe importante: podemos averbar uma NF-e ou CT-e, nessa postagem estarei mostrando a averbação de um CT-e, logo o conteúdo da variável DocNFeCTe do programa exemplo vai conter o XML de um CT-e. Após alimentar o componente com os dados necessários, basta executar o método Enviar, como é mostrado pela codificação do botão [Criar e Enviar] do programa exemplo. A questão maior é quando o segurado possui coberturas adicionais em sua apólice tais como: Operação de carga e descarga, içamento de carga, contêiner, acessórios, entre outros. No Manual da AT&M (WebService 2.0 - REST 1.1) temos no item 16.0 e subitens uma relação das coberturas adicionais e os seus valores padrões. A titulo de exemplo vamos pegar a cobertura: Operação de Carga e Descarga. O valor padrão é "N" ou seja o segurado não tem essa cobertura. Caso o segurado venha a ter se faz necessário constar no XML do CT-e a informação que ele tem a cobertura para a Operação de Carga e Descarga. Como fazer isso? Vamos utilizar (conforme consta no manual da AT&M) o grupo de observação do contribuinte. Exemplo genérico: with compl.ObsCont.New do begin xCampo := 'Nome do Campo'; xTexto := 'Valor do Campo'; end; Informando que o segurado tem cobertura para a Operação de Carga e Descarga na rotina que alimenta o componente ACBrCTe: with compl.ObsCont.New do begin xCampo := 'OCD'; xTexto := 'S'; end; Isso vai fazer com que ao gerar o XML do CT-e ele vai conter as tags: <compl> <ObsCont xCampo =“OCD”> <xTexto>S</xTexto> </ObsCont> </compl> Vamos supor que o segurando além de ter a cobertura de Operação de Carga e Descarga tenha também a cobertura para içamento de carga da mercadoria. with compl.ObsCont.New do begin xCampo := 'OCD'; xTexto := 'S'; end; with compl.ObsCont.New do begin xCampo := 'IC'; xTexto := 'S'; end; No XML teremos: <compl> <ObsCont xCampo =“OCD”> <xTexto>S</xTexto> </ObsCont> <ObsCont xCampo =“IC”> <xTexto>S</xTexto> </ObsCont> </compl> Um XML com esses dados vai ser autorizado pela SEFAZ sem nenhum problema, uma vez que essas informações são observações do contribuinte informadas no XML de forma estruturada. Ao enviar o XML do CT-e com essas tag para o webservice da AT&M ela identifica essas informações no XML e averba o CT-e levando em consideração as coberturas informadas. Detalhe Importante: O grupo ObsCont só pode ocorrer no XML no máximo 10 vezes (no exemplo acima temos 2 ocorrências), logo não informe uma cobertura que você não tenha ou com o seu valor padrão. Exemplo: Se o segurado tenha uma cobertura para uma mercadoria especifica deverá constar no XML, caso contrario não informe. <compl> <ObsCont xCampo =“MERCESPECIFICA”> <xTexto>S</xTexto> </ObsCont> </compl> Espero ter ajudado.
    2 pontos
  3. As margens agora são em milímetros... veja esse tópico:
    1 ponto
  4. Thiago, Faça outro teste mas na discriminação não coloque vogais acentuadas e cedilha. Em vez de: Testando a geração de nfse. Nota apenas para testes informe assim: Testando a geracao de nfse. Nota apenas para testes
    1 ponto
  5. Não, não existe a tag para o CSOSN 900. Precisa ver com a contabilidade outra forma de destacar esse imposto. Que me lembre isso é pra impressão no DANFE, certo? Não tenho certeza se vai ser possível creditar apenas usando a informação complementar... mas se a orientação da contabilidade foi essa, a responsabilidade é deles.
    1 ponto
  6. Boa tarde Eraldo, Fizemos uma correção na leitura do campo: categCombVeic. A geração do arquivo INI deverá ser da seguinte forma: [valePed] categCombVeic=06 [valePed001] CNPJForn=00000000000000 CNPJPg=000000000000000 nCompra=00000000 vValePed=0.00 ou [valePed] categCombVeic=06 [disp001] CNPJForn=00000000000000 CNPJPg=000000000000000 nCompra=00000000 vValePed=0.00 uma vez que os campos: CNPJForn, CNPJPg, ... se referem as informações dos dispositivos do vale-pedágio. Por favor aguarde a liberação de uma nova versão do ACBrMonitor Plus.
    1 ponto
  7. Boa tarde. Você deve comparar os layouts e ver se trata-se das mesmas informações, caso contrário teria que ser implementado uma nova classe. Att.
    1 ponto
  8. Thiago, Acredito ter descoberto o problema. Não estava sendo informado a Insc. Municipal do Tomador. Deixei essa tag como opcional. Favor atualizar os fontes e faça novos testes.
    1 ponto
  9. nesse local tu informa o path onde está os arquivos de logo e ele se vira com a configuração do banco que tu passou pra gerar
    1 ponto
  10. Nosso componente ACBrBoleto já faz parte do futuro dos boletos, o que significa que além das diversas alterações realizadas para a integração via web-service, agora também já está apto para a emissão dos chamados Boletos Híbridos, ou seja, aqueles que além do Código de Barra, também contam com um QRCode para pagamentos via PIX. Esta alteração vem de encontro a muitos pedidos que temos recebido para incluir o QRCode no boleto, porém vale ressaltar que o Banco do Brasil foi pioneiro em promover uma integração completa com o PIX por meio de sua API, fazendo com que sua aplicação receba a baixa do título junto com as informações de retorno do banco, diferente do que ocorre quando esta integração não existe, tornando este processo manual e passível de uma série de erros. Atualmente os Bancos que suportam este tipo de emissão de boleto híbrido e estão implementados no ACBr são os seguintes (clique no nome do banco para acessar o tópico com a explicação detalhada dele): CNAB - por transferência de arquivos: Santander Sicredi Itau Bradesco (CNAB400) API - on-line: BB Caixa Econômica PenseBem Sicredi V2 Sicoob Inter (veja particularidades para NossoNumeroCorrespondente) Santander Itau (necessita que o banco forneça outra credencial para endpoint PIX) Para entender melhor como implementar esta solução e modernizar ainda mais sua aplicação, veja este artigo em nossa Base de Conhecimento. Att.
    1 ponto
  11. Oi Julio, vc me pediu para postar o arquivo de configuracao, entao dei uma olhada no arquivo e vi que a pasta das logos estava errada, corrigi o caminho e ficou ok. Muito obrigado e td de bom p/vc
    1 ponto
  12. Boa Noite José M.S Junior Muito Obrigado pela ajuda era justamente o campo modalidade, a gerente passou que tinha que ser informado 0(zero) ae Graças sua dica pus o 1 pra testar e gerou corretamente. Vou enviar novamente par a Sicredi mas acho que agora válida pois faltava só isso. Mais uma vez Muito Obrigado pela Ajuda! Dúvida solucionada! Obrigado á Todos!
    1 ponto
  13. É a impressora Epson TM20 mesmo. Deu certo alterar a configuração do tamanho do papel no driver da impressora. Obrigado!
    1 ponto
  14. Só uma sugestão tente deixar compatível com Delphi 7 e Lazarus seu código só roda em versões mais novas do Delphi
    1 ponto
  15. Bom dia @José M. S. Junior Procurando por outros fóruns relacionados a este problema, encontrei este: Então observei que eu tinha uma cópia desta função RoundTo5 da NFSe em meus fontes. Após refatorar ela, não tem mais ocorrido o problema. Acredito que esteja solucionado este problema. Agradeço pela atenção.
    1 ponto
  16. 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
  17. Olá, Para quem pretende iniciar a utilização das bibliotecas do pacote ACBrLib mas ficava em dúvida por não ter uma forma de testar se de fato as soluções atenderiam suas expectativas , temos novidades... Disponibilizamos a versão Demo de todas as Bibliotecas, as quais são compiladas semanalmente !! Por que criamos as versões Demo? Anteriormente para se realizar os testes era preciso de utilizar das bibliotecas em produção, as quais eram obtidas somente ao assinar nossos planos SAC, ou ao se realizar um pedido de trial, o qual levava tempo para ser analisado e mesmo após a liberação o acesso aos downloads era por um período muito curto, fazendo com que vc não tivesse acesso as versões mais atualizadas, já com as versões demo, você poderá testar as últimas versões a qualquer momento, sem precisar aguardar qualquer validação! Como as versões Demo Funcionam? Estas versões mantém todos os recursos atualizados de cada um das bibliotecas, porém com algumas limitações...Os Documentos Fiscais Eletrônicos serão emitidos apenas em homologação e as bibliotecas ficarão disponíveis para uso por 30 minutos, após esse tempo será necessário reiniciar as mesmas. Como todo aplicativo Demo essa versão é exclusiva para testes e homologação da ferramenta. A vantagem é que você pode baixar livremente a versão demo atualizada através do fórum do ACBr. Onde posso obter as bibliotecas na versão Demo? Para baixar a versão Demos das Bibliotecas do ACBrLib, acesse o link abaixo https://www.projetoacbr.com.br/forum/files/category/63-acbrlib-demo/ Quais são os passos para iniciar a utilização das bibliotecas ACBrLib? 1. Realizar o Download das bibliotecas que deseja utilizar (Demo ou Produção) 2. Realizar o Download dos demos via svn (para ver os exemplos antes de partir para sua aplicação diretamente) 3. Copiar as bibliotecas para as pastas corretas (Ver os tópicos na sessão links mais abaixo - Este passo é o mesmo para qualquer linguagem) 4. Realizar o deploy da aplicação Como posso obter as bibliotecas de Produção? As bibliotecas na versão PRO permanecem disponíveis para assinantes do ACBr PRO. Ainda com dúvidas ? Para mais informações sobre a modalidade ACBr Pró ou como adquirir somente as bibliotecas fale com nossos consultores pelo fone/whats (15) 2105-0750 ou acesse nosso portal aqui. Para dúvidas sobre o uso das bibliotecas ACBrLib acesse estas sessões no fórum ou os canais dedicados ao assunto em nosso servidor Discord. Link para o Manual OnLine https://acbr.sourceforge.io/ACBrLib/ACBrLib.html
    1 ponto
  18. Corrigindo, o arquivo é o ACBrNFSeXServicos.ini, para o componente ACBrNFSeX. ACBrNFSe.Configuracoes.Arquivos.SepararPorCNPJ ACBrNFSeX.Configuracoes.Arquivos.SepararPorCNPJ
    1 ponto
  19. O que é o ACBrPosPrinter ? O ACBrPosPrinter permite o envio de comandos em EscPos, direto para a porta da Impressora. Ele é excelente para criação de relatórios complexos em impressoras de bobina, executando tarefas como Impressão de QRCode, Cod.Barras, alinhamento, Expandido, Negrito, Invertido, etc... Você pode baixar uma apresentação mais completa do ACBrPosPrinter, abaixo: Apresentação - ACBr - Elgin - ACBrPosPrinter.pdf 724 kB · 0 downloads Se você usa o ACBr no seu Delphi, poderá encontrar o componente ACBrPosPrinter, na Palheta ACBrSerial... Para quem não usa Delphi, o ACBrPosPrinter pode ser acessado pela ACBrLibPosPrinter , uma biblioteca compartilhada (DLL/SO), compilada em 32 e 64 bits ACBrMonitorPLUS, pelo Objeto ESCPOS... veja nesse link, a tela de configuração. Com o ACBrPosPrinter, você pode criar relatórios complexos, usando até mesmo o bloco de notas, bastando para isso, conhecer a sintaxe das Tags que o mesmo suporta... (leia mais abaixo) Características do ACBrPosPrinter Usa linguagem nativa da Impressora “Esc/Pos” Suporta vários protocolos “Esc/Pos”, cobrindo praticamente todas as Impressoras do Mercado Brasileiro Permite o uso de Tags, para geração de relatórios complexos. (Fonte, Alinhamento, Cod.Barras, QRCode, Imagens) Permite acesso aos dispositivos ligados a Impressora (Gaveta, Guilhotina, Sensores de Papel/Tampa) Permite vários tipos de Porta (COM, RAW, TCP, File) (veja essa Post) Como usar o ACBrPosPrinter ? De forma muito resumida, seguem os passos necessários Verifique o protocolo suportado pela Impressora e configure em ACBrPosPrinter.Modelo Verifique a Porta disponível na Impressora e configure em ACBrPosPrinter.Porta Ative a comunicação com a Impressora, chamando: ACBrPosPrinter.Ativar Gere seu relatório usando as Tags suportadas e imprima usando: ACBrPosPrinter.Imprimir(Relatorio: String) Quais impressoras o ACBrPosPrinter suporta ? Praticamente todas, uma vez que a maioria dos equipamentos existentes no mercado, tenta mimetizar o protocolo Epson Esc/Pos... Portanto se a sua impressora não está listada na lista de Protocolos suportados, faça um teste definido: ACBrPosPrinter1.Modelo := ppEscPosEpson; Conheça também os relatórios de equipamentos homologados https://www.projetoacbr.com.br/forum/forum/63-equipamentos-testados/ Conhecendo melhor as Tags O ACBrPosPrinter, usa uma linguagem de Tags, que se assemelha as Tags de HTML. Exemplo, para imprimir um texto em expandido, podemos usar a Tag <e> <e>EXPANDIDO Existem 2 conjuntos de Tag, no ACBrPosPrinter. Tag de Linha São Tags que tem efeito imediato, e não precisam ser fechadas por uma Tag de Fechament. Após a interpretação e envio da Tag, a Impressão será afetada imediatamente, até a Tag ser desligada ou substituída por outra. Alguns comandos entretanto, são desligados automaticamente pela impressora, após uma quebra de Linha. As Tags de Alinhamento e as Tags de formatação de caracteres, são exemplos desse tipo de Tag Tags de Bloco São Tags que necessariamente precisam ser fechadas, ou seja, se não houver um inicio e fim da Tag, o ACBrPosPrinter não será capaz de interpreta-la As tags de Cod.Barras e QRCode, são exemplos desse tipo de Tag A maneira mais simples de conhecer TODAS as tags, é pedir para o próprio ACBrPosPrinter imprimi-las, usando o comando: ACBrPosPrinter1.ImprimirTags; Isso produzirá a saída do seguinte relatório: <e> - Liga Expandido </e> - Desliga Expandido <a> - Liga Altura Dupla </a> - Desliga Altura Dupla <n> - Liga Negrito </n> - Desliga Negrito <s> - Liga Sublinhado </s> - Desliga Sublinhado <c> - Liga Condensado </c> - Desliga Condensado <i> - Liga Italico </i> - Desliga Italico </fn> - Fonte Normal </fa> - Liga Fonte Tipo A (normal) </fb> - Liga Fonte Tipo B (condensada) <in> - Liga Fonte Invertida (Fundo Preto) </in> - Desliga Fonte Invertida </ae> - Liga Alinhamento a Esquerda </ce> - Liga Alinhamento ao Centro </ad> - Liga Alinhamento a Direita </linha_simples> - Imprime Linha Simples </linha_dupla> - Imprime Linha Dupla </pular_linhas> - Pula N Linhas de acordo com propriedade do componente </logo> - Imprime Logotipo já gravado na Impressora (use utilitário do fabricante) </corte> - Efetua Corte, conforme configuração de "TipoCorte" </corte_parcial> - Efetua Corte Parcial no Papel (não disponivel em alguns modelos) </corte_total> - Efetua Corte Total no papel </abre_gaveta> - Aciona a abertura da Gaveta de Dinheiro </beep> - Emite um Beep na Impressora (não disponivel em alguns modelos) </zera> - Reseta as configurações de Fonte Alinhamento.<LF>Ajusta Página de Código e Espaço entre Linhas </lf> - Pula para a própxima linha </cr> - Retorna para o Inicio da Linha </reset> - Reseta as configurações de Fonte Alinhamento <ad> - Bloco - Texto Alinhado a Direita <ae> - Bloco - Texto Alinhado a Esquerda <ce> - Bloco - Texto Centralizado <ean8> - Bloco - Cod.Barras EAN8 - 7 numeros e 1 dig.verificador <ean13> - Bloco - Cod.Barras EAN13 - 12 numeros e 1 dig.verificador <std> - Bloco - Cod.Barras "Standard 2 of 5" - apenas números, tamanho livre <inter> - Bloco - Cod.Barras "Interleaved 2 of 5" - apenas números, tamanho PAR <code11> - Bloco - Cod.Barras Code11 - apenas números, tamanho livre <code39> - Bloco - Cod.Barras Code39 - Aceita: 0..9,A..Z, ,$,%,*,+,-,.,/, tamanho livre <code93> - Bloco - Cod.Barras Code93 - Aceita: 0..9,A..Z,-,., ,$,/,+,%, tamanho livre <code128> - Bloco - Cod.Barras Code128 - Todos os caracteres ASCII, tamanho livre <upca> - Bloco - Cod.Barras UPCA - 11 numeros e 1 dig.verificador <upce> - Bloco - Cod.Barras UPCE - 11 numeros e 1 dig.verificador <codabar> - Bloco - Cod.Barras CodaBar - Aceita: 0..9,A..D,a..d,$,+,-,.,/,:, tamanho livre <msi> - Bloco - Cod.Barra MSI - Apenas números, 1 dígito verificador <code128a> - Bloco - Cod.Barras Code128 - Subtipo A <code128b> - Bloco - Cod.Barras Code128 - Subtipo B (padrão) = <code128> <code128c> - Bloco - Cod.Barras Code128 - Subtipo C (informar valores em BCD) <qrcode> - Bloco - Cod.Barras QrCode <abre_gaveta> - Bloco - Abertura de Gaveta Específica (1 ou 2) <barra_mostrar> - Bloco - Configura se deve exibir conteudo abaixo do Cod.Barras: 0-NAO; 1-SIM <barra_largura> - Bloco - Configura a Largura das Barras do Cod.Barras: 0 a 5. (0=default) <barra_altura> - Bloco - Configura a Altura do Cod.Barras: 0 a 255. (0=default) <qrcode> - Bloco - Imprime QRCode de acordo com "ConfigQRCode" <qrcode_tipo> - Bloco - Configura o Tipo de QRCode: 1,2 <qrcode_largura> - Bloco - Configura a Largura do QRCode: 1 a 16 <qrcode_error> - Bloco - Configura o Error Level do QRCode: 0 a 3 <bmp> - Bloco - Imprime Imagem BMP monocromática. Conteúdo pode ser: Path da Imagem, Stream em Base64 ou AscII Art (0 e 1) <mp> - Liga Modo de Impressão em Página (em memória) </mp> - Desliga Modo de Impressão Página (em memória) </mp_imprimir> - Comanda a Impressão da Página na memória <mp_direcao> - Bloco - Direção Texto no Modo Página: 0-Esquerda/Direta, 1-Topo/Baixo, 2-Direita/Esquerda, 3-Baixo/Topo <mp_esquerda> - Bloco - Posição Inicial Horizontal Modo Página (Esquerda) <mp_topo> - Bloco - Posição Inicial Vertical Modo Página (Topo) <mp_largura> - Bloco - Largura da Região no Modo Página <mp_altura> - Bloco - Altura da Região no Modo Página <mp_espaco> - Bloco - Espaço entre Linhas na Região no Modo Página </mp_configurar> - Envia a configuração de Coordenadas da Região e direção do Modo Página <logo_imprimir> - Bloco - Configura a Impressão ou não do Logo Tipo: 0-NÃO, 1-SIM (default = 1) <logo_kc1> - Bloco - Configura a posição KC1 do Logo a ser impresso. Ex: 0=48 <logo_kc2> - Bloco - Configura a posição KC2 do Logo a ser impresso. Ex: 1=49 <logo_fatorx> - Bloco - Configura o aumento Horizonal do Logo, de 1 a 4 <logo_fatory> - Bloco - Configura o aumento Vertical do Logo, de 1 a 4 <ignorar_tags> - Bloco - Ignora todas as Tags contidas no Bloco Printing like a Pro Para aprender de forma profissional, como usar o ACBrPosPrinter, e gerar relatórios complexos, como o Extrato do SAT ou o DANFCe da NFCe, é fundamental estudar os Fontes e exemplos disponíveis no Demo. Você pode encontrar os fontes do Demo na pasta \ACBr\Exemplos\ACBrSerial\ACBrPosPrinter Se quiser baixar e testar uma versão já compilada, use o Donwload abaixo: Configurações Úteis do ACBrPosPrinter Propriedade Descrição Exemplo Colunas Define o máximo de Caracteres, em uma linha, usando a Fonte Normal 48, 42, 40 EspacoEntreLinhas Espaço em DPI entre as Linhas. (permite economia de Papel) 0 (default), 10, 40, 50 LinhasEntreCupons Define o Pulo de Linhas para o comando </pular_linhas> 7, 5 ArqLog Arquivo de Log detalhando tradução de Tags e Dump para Porta C:\temp\PosPrinter.log PaginaDeCodigo Define a Página de Código usada pela Impressora, para a impressão correta de acentos pc850, pc852, pcUTF8 ControlePorta Se Ligado, Abre e Fecha a Porta a cada envio de Comandos para a Impressora True, False ConfigQRCode Configurações do QRCode: Tipo, Largura, ErroLevel, etc Exemplo de Tags de Formatação de Caracteres Tags enviadas Relatório Gerado </linha_dupla> FONTE NORMAL: 42 Colunas ....+....1....+....2....+....3....+....4.. <e>EXPANDIDO: 21 Colunas ....+....1....+....2. </e><c>CONDENSADO: 56 Colunas ....+....1....+....2....+....3....+....4....+....5....+. </c><n>FONTE NEGRITO</N> <in>FONTE INVERTIDA</in> <S>FONTE SUBLINHADA</s> <i>FONTE ITALICO</i> FONTE NORMAL </linha_simples> <n>LIGA NEGRITO <i>LIGA ITALICO <S>LIGA SUBLINHADA <c>LIGA CONDENSADA <e>LIGA EXPANDIDA <a>LIGA ALTURA DUPLA </fn>FONTE NORMAL </linha_simples> <e><n>NEGRITO E EXPANDIDA</n></e> <c><n>NEGRITO E CONDENSADA</n></c> <e><a>EXPANDIDA E ALT.DUPLA</a></e> </fn>FONTE NORMAL <in><e>INVERTIDA E EXPANDIDA</e></in> <in><c>INVERTIDA E CONDENSADA</c></in> <in><a>INVERTIDA E ALT.DUPLA</a></in> </fn>FONTE NORMAL </linha_simples> </FB>FONTE TIPO B <n>FONTE NEGRITO</N> <e>FONTE EXPANDIDA</e> <a>FONTE ALT.DUPLA</a> <in>FONTE INVERTIDA</in> <S>FONTE SUBLINHADA</s> <i>FONTE ITALICO</i> </FA>FONTE TIPO A </FN>FONTE NORMAL </corte_total> Reparem que no exemplo acima, o comando Itálico não funcionou. Isso é uma característica do equipamento que usamos nesse teste, (Epson Esc/Pos)... Ou seja, algumas Tags, podem não funcionar em alguns protocolos. O Demo ACBrPosPrinter é indicado para testar a compatibilidade da Impressora, com os protocolos suportados... Exemplo de Tags de Alinhamento Texto em conjunto com Formatação de Caractere Tags enviadas Relatório Gerado </zera> </linha_dupla> TEXTO NORMAL </ae>ALINHADO A ESQUERDA <bmp>C:\ACBrPosPrinter\acbrmono.bmp</bmp> 1 2 3 TESTANDO <n>FONTE NEGRITO</N> <e>FONTE EXPANDIDA</e> <a>FONTE ALT.DUPLA</a> <c>FONTE CONDENSADA</c> <in>FONTE INVERTIDA</in> <S>FONTE SUBLINHADA</s> <i>FONTE ITALICO</i> </fn></ce>ALINHADO NO CENTRO <bmp>C:\ACBrPosPrinter\acbrmono.bmp</bmp> 1 2 3 TESTANDO <n>FONTE NEGRITO</N> <e>FONTE EXPANDIDA</e> <a>FONTE ALT.DUPLA</a> <c>FONTE CONDENSADA</c> <in>FONTE INVERTIDA</in> <S>FONTE SUBLINHADA</s> <i>FONTE ITALICO</i> </fn></ad>ALINHADO A DIREITA <bmp>C:\ACBrPosPrinter\acbrmono.bmp</bmp> 1 2 3 TESTANDO <n>FONTE NEGRITO</N> <e>FONTE EXPANDIDA</e> <a>FONTE ALT.DUPLA</a> <c>FONTE CONDENSADA</c> <in>FONTE INVERTIDA</in> <S>FONTE SUBLINHADA</s> <i>FONTE ITALICO</i> </ae></fn>TEXTO NORMAL </corte_total> Exemplo de Tags de QRCode e Cod.Barras Tags enviadas Relatório Gerado </zera> </linha_dupla><qrcode_tipo>2</qrcode_tipo><qrcode_largura>4</qrcode_largura><qrcode_error>0</qrcode_error><qrcode>http://projetoacbr.com.br</qrcode> </ce><qrcode>http://www.projetoacbr.com.br/</qrcode> <barra_mostrar>0</barra_mostrar><barra_largura>0</barra_largura><barra_altura>0</barra_altura> </Linha_Simples> EAN13: 123456789012 <ean13>123456789012</ean13> </Linha_Simples> CODE128C: 3515071111111111111159 <code128c>3515071111111111111159</code128c> </corte_total> No exemplo acima, demonstramos as tags que permitem configurar algumas características do QRCode e Cod.Barras, essas tags são opcionais, e você também pode configurar o ACBrPosPrinter, pelas propriedades do componente Acionando a Guilhotina e Gaveta de dinheiro: Moleza... basta enviar as Tags... </corte> - Efetua Corte, conforme configuração de "TipoCorte" </corte_parcial> - Efetua Corte Parcial no Papel (não disponivel em alguns modelos) </corte_total> - Efetua Corte Total no papel </abre_gaveta> - Aciona a abertura da Gaveta de Dinheiro Exemplo: ACBrPosPrinter1.Imprimir('</abre_gaveta>'); Lendo as informações da Impressora Alguns tipos de Porta, permite receber informações da Impressora. Os Tipos de Portas que o ACBrPosPrinter consegue ler informações da Impressora são: Serial, USB, TCP, BTH, Hook O exemplo abaixo, imprime em um memo, o Status da Impressora procedure TFrPosPrinterTeste.bLerStatusClick(Sender: TObject); var Status: TACBrPosPrinterStatus; i: TACBrPosTipoStatus; AStr: String; begin Status := ACBrPosPrinter1.LerStatusImpressora; if Status = [] then mImp.Lines.Add('Nennhum Erro encontrado') else begin AStr := ''; For i := Low(TACBrPosTipoStatus) to High(TACBrPosTipoStatus) do begin if i in Status then AStr := AStr + GetEnumName(TypeInfo(TACBrPosTipoStatus), integer(i) )+ ', '; end; mImp.Lines.Add( AStr ); end; end; O Exemplo abaixo, retorna as informações da Impressora procedure TFrPosPrinterTeste.bLerInfoClick(Sender: TObject); begin mImp.Lines.Add( ACBrPosPrinter1.LerInfoImpressora ); end; Exemplo de retorno Como a mágica do ACBrPosPrinter funciona ? As Tags são interpretadas e traduzidas pelo ACBrPosPrinter, para a Linguagem EscPos, que a linguagem nativa do Firmware da Impressora... ou seja, o ACBrPosPrinter enviará comandos no Protocolo EscPos, para que a impressora interprete-os e faça o Trabalho.... então quando enviamos por exemplo, o comando de QRCode, abaixo: <qrcode>http://www.projetoacbr.com.br</qrcode> O ACBrPosPrinter irá traduzir isso para uma sequencia de comandos, em EscPos, que quando interpretados pela Impressora, fará com que a mesma calcule e imprima um QRCode. Então o ACBrPosPrinter não se preocupa com a parte visual da Impressão, isso é tarefa do Firmware da Impressora, que suporta a poderosa linguagem EscPos Complexo não ? melhor deixar o ACBrPosPrinter cuidar dessa tarefa e gerar o EscPos Leia Também
    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...