Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 24-08-2020 em todas as áreas
-
Pessoal já esta disponivel a versão das biblioteca ACBr com suporte a multithread. Inicialmente as dll da ACBrLib foram planejadas para serem simples e de facil uso, mas com o passar do tempo foi percebido que alguns usuário precisavam de algum suporte extra, principalmente para que quer usar as lib para API web. Por isso fizemos esta versão nova das bibliotecas visando atender melhor este tipo de ambiente, com este lançamento já possivel usar as bibliotecas em ambientes multithreads ou se necessario ter 2 instancias da lib com configurações distintas. As vantagens e desvantagens você ve abaixo. Pros Múltiplas instancias da lib, pode ter 2 libs carregada simultaneamente com configurações diferentes. Pode ser usada em thread separada da principal, facilitando assim seu uso em serviços. Contras Precisa que seja usado um ponteiro para controlar a instancia da lib Precisa sempre passar o ponteiro da instancia para executar um metodo. Não iremos descontinuar a versão single thread que já usa assim e te atende bem pode continuar usando, agora quem precisa de multithread pode agora utilizar esta nova versão. Para quem baixa do site basta usar as dll que estão na pasta MT e atualizar sua classe com os novos parâmetros ou se usar as classes disponibilizadas pelo projeto basta atualizar elas para sua variante MT. Para quem compila dos fontes vai ver que tem novos modos de compilação terminados com MT basta compilar com este modo. É recomendado a uso na lib com MT caso você tenha as seguintes necessidades. Precisa imprimir de forma simultanea o pedido na cozinha e no balcão. Tem uma API concentrada de envio de NFe e/ou Boleto que usa varias empresas e de forma simultâneas. Exemplo de alteração das chamadas para usar a versão MT. Os demos também foram atualizados para funcionar com a versão multithread basta utilizar os demos com MT no nome Ainda temos mais modificações para atender melhor vocês, fiquem ligados nas próximas novidades da ACBrLib.6 pontos
-
3 pontos
-
2 pontos
-
Que legal!!! Realmente tem o CD, como eu não uso acabei esquecendo dele, desculpa. Muito obrigado pela atenção e dedicação, acredito que ajudará muitas pessoas, pois nem eu nem os contadores com que trabalho, conhecemos alguém ou alguma empresa que já tenha desenvolvido o ADRCST. Acredito que daqui pra frente não há mais em que eu possa colaborar, pois já está num nível acima do meu conhecimento. sendo assim da minha parte o tópico está concluído. Mas se eu puder ajudar em outras questões estou a disposição em ribasoft.com.br DEUS abençoe a todos, fiquem com DEUS.2 pontos
-
Bom dia, Encontrei um assinador disponibilizado pela própria Sefaz/SP. https://portal.fazenda.sp.gov.br/servicos/cartorios/Downloads/setup.zip Obrigado a todos!2 pontos
-
Pelo que pude verificar segue o mesmo padrão das demais cidades configuradas no ACBr com provedor Centi no caso a principio só especificar "piresdorio" nos dois campos. Vou fazer os testes e estando tudo ok, reporto2 pontos
-
Olá parceiro ACBr e Espon, tudo bem com você? Nesse post eu gostaria de compartilhar uma informação bem legal. Dentre os modelos de impressoras que nós possuímos temos um que é capaz de imprimir cheques, validar CMC7 e até autenticar documentos, isso mesmo todas essas funcionalidades em um único equipamento e com a qualidade Epson que você já conhece. Agora vem a melhor parte, você poderá usufruir desse máquina completíssima e todas as suas funcionalidades através do ACBr ou de nossa InterfaceNf.Dll, sem a necessidade de aprender comandos de baixo nível, muito legal não é mesmo? Acesse o link a seguir e confira a TM-H6000-IV. Link vídeo: https://youtu.be/kKpYOqFZgy0 Esse foi o post de hoje, qualquer dúvida você já sabe, entre em contato conosco que iremos auxilia-lo.2 pontos
-
Subi o componente para testes, ele deve ser instalado manualmente pois não mexi no instalador e o exemplo em delphi preciso ajustar mas o lazarus está funcionando. Existe algo que só percebi quando estava a finalizar que existe na verdade dois layouts de arquivo num mesmo que éo ADRC ST e o CD deixei para mexer mais tarde no CD pois é menor.2 pontos
-
Vendo este cenário gostaria de indicar que use os componentes dentro de sua aplicação. tu terá total controle da emissão o monitor é indicado para quem não programa em delphi e lazarus.2 pontos
-
Prezados, boa tarde! Ao enviar um lote de cancelamento obtive o seguinte erro de schema : Analisando os Fontes fiz uma alteração na unit pnfsNFSeG.pas De : Gerador.wCampo(tcStr, '#1', 'transacao', 01, 05, 0, LowerCase(BooltoStr(Transacao, True)), ''); Para : Gerador.wCampo(tcStr, '#1', 'transacao', 01, 05, 0, iif(Transacao,'true','false'), ''); E passou a cancelar normalmente. Segue em anexo a referida unit. Peço que verifiquem a geração deste campo e o ajuste feito. Se for correto incorporem por favor ao fonte, ou me informem o que posso estar fazendo de errado para ter problema no schema. Agradeço pnfsNFSeG.pas1 ponto
-
Olá pessoal, tudo bem? Estou com um problema na impressão da NFS-e ABACO , aparecendo as tags na impressão, alguém já passou por isso? Desde já agradeço a atenção!1 ponto
-
Boa tarde @willmesquita Fiz a alteração sugerida pelo @Italo Jurisato Junior Consegue testar aí? Pelo que vi, este provedor tem o o campo prestador também, que vai precisar alterar. <Prestador> <CpfCnpj> <Cnpj>02847928000131</Cnpj> </CpfCnpj> <InscricaoMunicipal>59939</InscricaoMunicipal> </Prestador> Hoje no ACbr gera desta forma <DadosPrestador> <IdentificacaoPrestador> <CpfCnpj> <Cnpj>18820709000107</Cnpj> </CpfCnpj> <InscricaoMunicipal>2793</InscricaoMunicipal> </IdentificacaoPrestador> <RazaoSocial/> <Endereco> <CodigoPais>0</CodigoPais> </Endereco> <Contato/> </DadosPrestador> Segue a unit alterada, testa e retorna. pnfsNFSeG.pas1 ponto
-
@Juliomar Marchetti Irei conferir, mas a princípio se encontra atualizado, referente ao aquivo ini não utilizo.1 ponto
-
Juliana eu estou informando as seguintes propriedades do componente: Gerei uma remessa agora após acrescentar na primeira linha da mensagem o CNPJ e nome do Avalista e vamos ver o que o banco diz. Após acrescentar os dados do sacador avalista na primeira linha da mensagem estas informações começaram a constar no arquivo de remessa C400, acredito que agora vai dar tudo certo. Obrigado.1 ponto
-
Boa tarde. Quais propriedade exatamente está informando? Att.1 ponto
-
Pessoal, gostaríamos de contribuir com um ajuste na emissão de MDF-e Aéreo, para o preenchimento correto das tags "nac" (Marca da Nacionalidade) e "matr" (Marca de Matrícula). Atualmente elas estão definidas como Integer, mas na verdade são códigos alfanuméricos, e seguem a expressão regular ER35, igual aos demais campos deste grupo, conforme a página 24 do Layout v3.00a. Um explicação de como funciona na prática estas informações pode ser encontrada na Wikipédia: https://pt.wikipedia.org/wiki/Prefixo_aeronáutico Segue em anexo as modificações necessárias (só não testamos com a impressão em Fortes porque não utilizamos este componente), com os seguintes caminhos a partir do Fontes/ACBrDFe/ACBrMDFe/: ACBrMDFeManifestos.pas DAMDFE/Fast/ACBrMDFeDAMDFEFR.pas PCNMDFe/pmdfeMDFe.pas PCNMDFe/pmdfeMDFeR.pas PCNMDFe/pmdfeMDFeW.pas Obs: incluímos algumas correções de indentação, principalmente na unit pmdfeMDFeW.pas a alteração que interessa é na procedure TMDFeW.GerarAereo; ACBrMDFeDAMDFEFR.pas ACBrMDFeManifestos.pas pmdfeMDFe.pas pmdfeMDFeR.pas pmdfeMDFeW.pas1 ponto
-
1 ponto
-
Bom dia Diego, Já enviei para o repositório a sua correção, mais uma vez muito obrigado.1 ponto
-
Bom dia Valdir, No XML de retorno consta os eventos: 310112 = Encerramento Fisco (que não constava na lista de eventos) e o 510620 = Registro de Passagem Automático. Fiz uma alteração em duas units para que esses dois eventos sejam identificados. O de encerramento recém incluído tem o enumerador: teEncerramentoFisco e o outro teRegistroPassagemBRId. Favor atualizar os fontes e faça novos testes.1 ponto
-
Aqui é a alteração que ficou faltando. Segue em anexo o mesmo arquivo, desfazendo as correções de indentação. ACBrMDFeDAMDFEFR.pas1 ponto
-
Bom dia Mesquita, O problema é simples, veja no Schema a definição do elemento EnviarLoteRpsEnvio: <xsd:element name="EnviarLoteRpsEnvio"> <xsd:complexType> <xsd:sequence> <xsd:element name="IdentificacaoRequerente" maxOccurs="1" minOccurs="1" type="tcIdentificacaoRequerente"/> <xsd:element name="LoteRps" type="tcLoteRps"/> </xsd:sequence> </xsd:complexType> </xsd:element> Note que antes do elemento "LoteRps" foi incluído por esse provedor o elemento "IdentificacaoRequerente". A mensagem de erro de validação deixa claro isso. Vamos simplificar e traduzir a mensagem de erro: mensagem original: Element '{http:\\shad.elotech.com.br\/schemas\/iss\/nfse_v2_03.xsd}LoteRps' is unexpected according to content model of parent element '{http:\\shad.elotech.com.br\schemas\iss\nfse_v2_03.xsd}EnviarLoteRpsEnvio'.Expecting: {http:\\shad.elotech.com.br\/schemas\/iss\/nfse_v2_03.xsd IdentificacaoRequerente} Simplificando: Element LoteRps is unexpected according to content model of parent element 'EnviarLoteRpsEnvio'. Expecting: {IdentificacaoRequerente} Traduzindo: O elemento LoteRps é inesperado de acordo com o modelo de conteúdo do elemento pai 'EnviarLoteRpsEnvio'. Esperando: {IdentificacaoRequerente}. Conforme o fragmento do Schema colocado acima, dentro do elemento EnviarLoteRpsEnvio deve vir primeiro o elemento IdentificacaoRequerente e depois o LoteRps. Sendo assim se faz necessário uma alteração na unit pnfsNFSeG, mais precisamente na função Gera_DadosMsgEnviarLote. Veja esse fragmento dessa função onde foi feita uma alteração semelhante para o provedor SigEp. else begin if Provedor = proSigep then begin Gerador.Prefixo := Prefixo4; Gerador.wGrupo('credenciais'); Gerador.wCampo(tcStr, '#01', 'usuario ', 01, 15, 1, UserWeb); Gerador.wCampo(tcStr, '#02', 'senha ', 01, 05, 1, SenhaWeb); Gerador.wCampo(tcStr, '#03', 'chavePrivada', 01, 01, 1, ChaveAcessoPrefeitura); Gerador.wGrupo('/credenciais'); end; Gerador.Prefixo := Prefixo3; if Provedor in [proCoplan, proSIAPNet] then Gerador.wGrupo('LoteRps' + FaVersao + FaIdentificador) else Gerador.wGrupo('LoteRps' + FaIdentificador + FaVersao + FaNameSpace); (...) No caso do provedor SigEp antes do elemento LoteRps existe o elemento credenciais. Caso queira contribuir com o projeto, faça a alteração e anexe a unit alterada para que possamos analisar.1 ponto
-
Bom dia, Ao emitir um MDF-e onde o responsável pelo transporte é um TAC - Agregado ou equiparado TAC, devemos informar no MDF-e as informações do pagamento do Frete ou enviar o Evento de Pagamento da Operação de Transporte quando o serviço for finalizado. Resumindo: As informações do pagamento do frete devem ser enviadas para a SEFAZ. Se o pagamento ocorrer antes da realização do serviço, devemos gerar o MDF-e com o grupo <infPag>, por outro lado se o pagamento ocorrer após o termino do serviço, devemos enviar o Evento.1 ponto
-
Ótimo saber disso. Meu projeto ainda não está pronto, mas quando estiver com certeza irei contribuir. Não sei se preciso abrir outro tópico, mas se possível responder aqui... Tenho como configurar algum tipo de autenticação no acbrmonitor? Para que o cliente não altere nenhuma configuração?1 ponto
-
Resolvido, entrei em contato com a sefaz gnre e corrigiram o problema. Obrigado.1 ponto
-
Bom dia. Como citado pelo Juliomar, vc pode instalar o ACBrMonitorPlus em quantos clientes desejar, com o SAC vc garante acesso as compilações mais recentes dele e muitas outras vantagens como: Acesso a áreas exclusivas no fórum com resposta em até dia útil, videos, o curso Dominando o ACBrMonitorPlus, downloads e muito mais, e e você optar pelo SAC Anual, ainda ganha acesso ao no chat exclusivo com atendimento ainda mais rápido. Para saber mais acesse nosso portal ou entre em contato conosco pelo fone/whats: (15) 2105-0750. Att.1 ponto
-
1 ponto
-
Favor atualizar. fiz uma pequena mudança e não criei a propriedade no componente1 ponto
-
procedure SetControlUpperCase(MyComponent:TWinControl); Var i:Integer; begin if MyComponent is TCustomComboBox then TCustomComboBox(MyComponent).CharCase:=ecUppercase else if MyComponent is TCustomEdit then TCustomEdit(MyComponent).CharCase:=ecUppercase; for i:=0 to MyComponent.ControlCount-1 do if MyComponent.Controls[i] is TWinControl then SetControlUpperCase(TWinControl(MyComponent.Controls[i])); end; depois é só chamar a procedure uma vez, exemplo: procedure TForm1.FormCreate(Sender: TObject); begin SetControlUpperCase(Self); end; com a vantagem de poder controlar por Tform, por Tpanel, ou qualquer outro TWinControl ou seus descendentes1 ponto
-
@jaques.rocha Desculpe a demora em responder, muito trabalho por aqui. Deu certo agora, segui sua orientação, coloquei as Dll's da pasta DLLs\OpenSSL\1.0.2.21\x86 e consegui obter uma resposta positiva, todas as funsionalizades funcionaram. Obrigado pela ajuda.1 ponto
-
bom dia.. vou falar da minha experiencia aqui com clientes. depois que voce faz o encerramento , indepedente de qual sistema, acbr, ou do emissor da receita, ela estara encerrada e nao ira mais aparecer.1 ponto
-
Ola Michele e Daniel, se estiverem precisando ou para alguém que tenha a mesma dúvida vou postar trechos de códigos que usei para estar conseguindo o token. TParametros = class private FGrantType: String; FClientId: String; FClientSecret: String; FPassword: String; FUsername: String; FMerchant: String; public property Merchant: String read FMerchant write FMerchant; property ClientId: String read FClientId write FClientId; property ClientSecret: String read FClientSecret write FClientSecret; property GrantType: String read FGrantType write FGrantType; property Username: String read FUsername write FUsername; property Password: String read FPassword write FPassword; constructor Create; end; No create desta Classe eu carrego os parâmetros, inicialmente eu coloquei em um arquivo ini constructor TParametros.Create; var oIni: TIniFile; begin oIni := TIniFile.Create(TNjFunc.GetIniFileName); try FMerchant := TNjFunc.Decrypt(oIni.ReadString('iFood','Merchant','')); FClientId := TNjFunc.Decrypt(oIni.ReadString('iFood','ClientId','')); FClientSecret := TNjFunc.Decrypt(oIni.ReadString('iFood','ClientSecret','')); FGrantType := TNjFunc.Decrypt(oIni.ReadString('iFood','GrantType','')); FUsername := TNjFunc.Decrypt(oIni.ReadString('iFood','Username','')); FPassword := TNjFunc.Decrypt(oIni.ReadString('iFood','Password','')); finally FreeAndNil(oIni); end; end; Após eu tenho uma outra classe que faz as requisições dos outros EndPoints, mas está faz requisição do Token function TResquestIFOOD.GetToken: Boolean; var slParams: TStringList; ssResponse: TStringStream; soResponse: ISuperObject; sURL: String; {$REGION 'CARREGA CREDENCIAIS'} procedure LoadParams; begin with slParams do begin Add('client_id=' + FParams.ClientId); Add('client_secret=' + FParams.ClientSecret); Add('grant_type=' + FParams.GrantType); Add('username=' + FParams.Username); Add('password=' + FParams.Password); end; end; {$ENDREGION} begin Result := False; //Montando URL sURL := FURL; sURL := sURL + '/oauth/token'; slParams := TStringList.Create; ssResponse := TStringStream.Create; LoadParams; try if TMethodUtils.POST(sURL, slParams, ssResponse, True, FToken, FAPI) then begin soResponse := SO(ssResponse.DataString); FToken := soResponse.S['access_token']; Result := True end; finally FreeAndNil(ssResponse); FreeAndNil(slParams); end; end; Na época eu estava com erro ao fazer o Polling, a URL estavá correta e o token também. Porém o header que eu estava mandando que estava errado. Então quando é para conseguir pegar o Token eu uso um tipo de Header e para os demais endspoints eu uso outro. Segue abaixo: if pIsGetToken then begin Request.Accept := 'application/json'; end else begin Request.Clear; Request.ContentType := 'application/json'; Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + pToken); end; Obs: Usamos Delphi 10.3 Para Parse e criação de objetos Json: https://github.com/onryldz/x-superobject1 ponto
-
Boa tarde Douglas, Já enviei para o repositório a sua contribuição, muito obrigado.1 ponto
-
Prezados , Descobri o Motivo! Tem um clear no HTTPSEND no metódo HTTPGET; Substitui por ConsultaCNPJ.HTTPMethod('GET',sURL); E foi um sucesso ! Desculpe o incomodo;1 ponto
-
Bom dia, Muito obrigado pela colaboração, já enviei para o repositório. Observação: os seus fontes estão bem desatualizados.1 ponto
-
Boa tarde, Muito obrigado pela colaboração, já inclui na minha lista de tarefas, assim que possível vou analisar a sua alteração, estando tudo OK vou enviar para o repositório.1 ponto
-
Realmente não parece haver um método público, no ACBr que faça exatamente essa função... mas lendo os fontes... temos: function CalcularDV(ACodigoGTIN: String): String; var Dig, I, DV: Integer; begin DV := 0; Result := '' ; // adicionar os zeros a esquerda, se não fizer isso o cálculo não bate // limite = tamanho maior codigo (gtin14) - 1 (digito) ACodigoGTIN := PadLeft(ACodigoGTIN, 13, '0'); for I := Length(ACodigoGTIN) downto 1 do begin Dig := StrToInt(ACodigoGTIN[I]); DV := DV + (Dig * IfThen(odd(I), 3, 1)); end; DV := (Ceil(DV / 10) * 10) - DV ; Result := IntToStr(DV); end;1 ponto
-
Boa tarde para fechar o tópico e dar a solução certa e correta deve-se fazer o seguinte: no FDConnection associar um FDTransaction somente ao UpdateTransaction para a versão 2.5 e 3.0 do firebird ele fará correto a gravação dos dados sem precisar mexer em mais nada em sua aplicação ou alterar FDQuery. certeza absoluta da solução.1 ponto