Ir para conteúdo
  • Cadastre-se

chico_lopes

Membros
  • Total de ítens

    54
  • Registro em

  • Última visita

Tudo que chico_lopes postou

  1. Bom dia @Victor H. Gonzales - Panda eu estou vendo que no else do LerNossoNumeroCompleto coloquei um valor não tamanho do manual do retorno. e se usarmos esse parâmetro LerNossoNumeroCompleto para ter as duas opções o completo que é igual do manual de retorno e não completo ficar igual do manual de remessa?
  2. por nada, estamos para nos ajudarmos. Depois haverá um feedback para eu saber se foi aprovado?
  3. Boa noite fiz os ajustes abaixo para adaptar ao limite do máximo do nosso numero conforme manual de arquivo de remessa, sendo 10 dígitos e mais o digito verificador. 1º LerRetorno240 - colocado para verificar se LerNossoNumeroCompleto if ACBrBanco.ACBrBoleto.LerNossoNumeroCompleto then fpTamanhoMaximoNossoNum := 11 else fpTamanhoMaximoNossoNum := 10; 2º DefinePosicaoNossoNumeroRetorno - corrigido o inicio da leitura para retornar os 11 digitos padrão do boleto if ACBrBanco.ACBrBoleto.LayoutRemessa = c240 then Result := 47 //39 else Result := 71; 3º LerRetorno400 - colocado para nosso numero retornar 11 ou 10 dígitos conforme LerNossoNumeroCompleto var nossonumero_tmp :string; begin ... //fpTamanhoMaximoNossoNum := 17; .... if ACBrBanco.ACBrBoleto.LerNossoNumeroCompleto then nossonumero_tmp := Copy(Linha,46, 17) else nossonumero_tmp := Copy(Linha,46, 16); nossonumero := copy(nossonumero_tmp, 1+length(nossonumero_tmp)-fpTamanhoMaximoNossoNum,fpTamanhoMaximoNossoNum); .... end; ACBrBancoUnicredES.pas
  4. Já tinha visto que o Firedac tem esses recursos, queríamos continuar a usar o Zeos por ser free e estar em nossos ERP. Sobre o mORMot nunca tinha visto, ele é semelhante ao Zeos?
  5. Bom dia @Márcio Baroni você conseguiu realizar teste com ele ou já usa ele em threads ? pois tinha realizados teste e não consegui isolar as transações, pode ser algum parâmetro que setei errado.
  6. Boa tarde pessoal estou usando Delphi + Zeoslib + firebird e preciso criar várias transações para a mesma conexão, porém nas minhas pesquisas não achei nada concreto que consiga fazer algo que o Ibexpert faz, que você pode ter dois selects em telas diferentes e fazer commit em um e dar roolback em outro. alguém teria algum material sobre o assunto, ou dicas de como começar.
  7. Boa noite @Italo Giurizzato Junior sim faço um teste de tentativa e erro, pois cai em um local especifico todos xml, o sistema lê e verificar o tipo se algum é de interesse para empresa e se é valido; até a versão anterior do ACBr que tínhamos funcionava, como houve atualizações perdeu-se essas verificações, porém como falei segue uma sugestão. Alteramos de uma outra forma nossa leitura dos XML, não igual a sua ideia mas que atendeu nossas necessidades. Agradeço esse ideia vamos avalia-la aqui internamente. somente um ponto sobre essa ideia, caso algum outro leitor pegue somente uma "fração" desse código do Italo, tomar cuidado como o exemplo abaixo, essa verificação abaixo dá positiva para XML de NF-e e CT-e pois o CT-e tem uma TAG assim tbm. if pos('<infNFe', ArquivoXML.Text) > 0 then TipoDFE := 1;
  8. bom dia @Juliomar Marchetti desculpa a demora, mas fiquei doente e dai enrolou tudo os processos. Mas segue a sugestão de alteração, feitas alterações nas linhas 370, 376, 382 e 388.ACBrNFe.RetEnvEvento.pas
  9. Boa tarde @Juliomar Marchetti Sim alterando o para passar o Result := True; para dentros dos IF sim Até a versão anterior que eu tinha do ACBR, ele retornava True somente quando era um XML de evento, agora ele retorna True quando lê um XML, que pelo meu ponto de vista não seria o correto, pois é um componente de evento. em anexo um xml de CT-e, mas como o "Result := True" está somente dentro de try ele só vai virar false se houver algum erro 41240887548038000424570010000469321349349112.xml
  10. Bom dia eu utilizo a função ACBrNFe1.EventoNFe.LerXML para chegar se um XML para verificar qual tipo de XML ele é, porém após atualização do ACBR, essa função parou retornar false ao ler um XML de CT-e. Analisando o código do acbrnfe.retenvevento, vemos que o "result := true" está fora de um IF de verificação, o correto o "result := true" estar atrelado a cada clausulas de IF. function TRetEventoNFe.LerXml: Boolean; var Document: TACBrXmlDocument; ANode: TACBrXmlNode; begin Document := TACBrXmlDocument.Create; try try Result := False; if XmlRetorno = '' then Exit; Document.LoadFromXml(XmlRetorno); ANode := Document.Root; if ANode <> nil then begin if (ANode.LocalName = 'procEventoNFe') or (ANode.LocalName = 'envEvento') then begin versao := ObterConteudoTag(ANode.Attributes.Items['versao']); Ler_InfEvento(ANode.Childrens.FindAnyNs('evento').Childrens.FindAnyNs('infEvento')); Ler_RetEvento(ANode); end; if ANode.LocalName = 'retEnvEvento' then Ler_RetEvento(ANode); if ANode.LocalName = 'evento' then Ler_InfEvento(ANode.Childrens.FindAnyNs('infEvento')); LerSignature(ANode.Childrens.Find('Signature'), signature); end; Result := True; except Result := False; end; finally FreeAndNil(Document); end; end;
  11. Boa tarde temos uma função que o cliente importa o XML de NFS-e e guardo o mesmo dentro do banco de dados da seguinte forma ACBrNFSeX1.NotasFiscais.Clear; ACBrNFSeX1.NotasFiscais.LoadFromFile(OpenDialog1.FileName); QCADASTROAXMLRECEB.AsString := ACBrNFSeX1.NotasFiscais.Items[0].XmlNfse; e verifiquei que ele gerou uma Tag de xml a mais <?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="ISO-8859-1" ?> - <nfse> - <rps> <nro_recibo_provisorio>118</nro_recibo_provisorio> <serie_recibo_provisorio>RPS</serie_recibo_provisorio> <data_emissao_recibo_provisorio>19/08/2024</data_emissao_recibo_provisorio> <hora_emissao_recibo_provisorio>00:00:00-03</hora_emissao_recibo_provisorio> </rps> e ao carregar o XML pelo comando ACBrNFSeX1.NotasFiscais.LoadFromString(qry.FieldByName('AXMLRECEB').AsString); apresenta o erro abaixo XML declaration allowed only at the start of the document se retirar uma das Tags ele não apresenta o problema. verifiquei q é nesse ponto da unit ACBrNFSeXNotasFiscais, porém não sei se pode ser alterado essa regra. function TNotaFiscal.GetXmlNfse: String; begin Result := FXmlNfse; if Result = '' then Exit; if not XmlEhUTF8(Result) then Result := '<?xml version="1.0" encoding="UTF-8"?>' + Result; end;
  12. Boa tarde o método de impressão usa o GAP da impressora, com isso faça a calibragem da impressora conforme o manual, dai vc não precisa configurar o tamanho da etiqueta. Obs.: se a etiqueta tiver 5 linhas e vc mandar impressão de 7 linhas ou quantidade maior que o GAP a impressora vai entender que não quer respeitar o GAP, veja se vc não está estourando o tamanho da linha.
  13. Eu tenho q procurar o manual desse EscLabel mas pelo visto ele está fazendo o cálculo do tamanho da etiqueta? Vou tentar replicar ele dentro do ACBrETQPpla e sobre o TACBrETQPpla.ComandosFinalizarEtiqueta você consegue dar uma analisada.
  14. Bom dia eu li já no fórum que o ACBrETQ não é compatível com etiqueta contínua (sem o gap), porém estou conseguindo imprimir em uma Argox com linguagem PPLA. Somente tive que fazer duas alteração, uma adição de comando <STX>cxxxx<CR> dizendo o tamanho da etiqueta e retirar o comando <STX>fxxx<CR> que informa o backfeed. Estive lendo o componente TACBrETQPpla.ComandosFinalizarEtiqueta que diz que é obrigatório passar o comando <STX>fxxx<CR> e vi em tópico no forum que outros usuários tiveram problemas sem esse comando <STX>fxxx<CR>. function TACBrETQPpla.ComandosFinalizarEtiqueta(NumCopias: Integer; aAvancoEtq: Integer): AnsiString; var wAvanco: Integer; begin if (aAvancoEtq < 0) or (aAvancoEtq > 779) then raise Exception.Create('Avanço de Etiquetas deve ser de 0 a 779'); // Valor mínimo para Back-feed é 220 (Manual "PPLA&PPLB.pdf" ... pág. 18) wAvanco := aAvancoEtq + 220; Result := Inherited ComandosFinalizarEtiqueta(NumCopias, wAvanco); end; Mas sobre esse assunto tem dois pontos 1º pelo manual no avanço o mínimo é 220 e não o avanço mais 220 2º no componente tem o campo backfeed e pelo que eu vi não está sendo usando em nenhum momento e o correto não seria ser usado com o seguir ? function TACBrETQPpla.ComandosFinalizarEtiqueta(NumCopias: Integer; aAvancoEtq: Integer): AnsiString; var wAvanco: Integer; begin if (aAvancoEtq < 0) or (aAvancoEtq > 779) then raise Exception.Create('Avanço de Etiquetas deve ser de 0 a 779'); // Valor mínimo para Back-feed é 220 (Manual "PPLA&PPLB.pdf" ... pág. 18) if BackFeed = bfOn then if aAvancoEtq < 220 then wAvanco := 220 else wAvanco := aAvancoEtq; Result := Inherited ComandosFinalizarEtiqueta(NumCopias, wAvanco); end;
  15. Estou conseguindo revolver parcialmente a minha conexão com o Lazarus + RESTRequest4D (https://github.com/viniciussanchez/RESTRequest4Delphi). Porém ainda estou procurando uma solução para usar no Delphi7 aonde aplicação foi feita. mas pelo visto vc está usando o Delphi 10 dai RESTRequest4D acho que vai funcionar corretamente.
  16. Sim estou usando Delphi 7 estou tentando consumir uma API da qualp.com.br que é para cálculo rodoviários, tenho q passar o json com as requisições que eu preciso e ele irá retornar um json com as informações. nos parâmetros tenho q passar o Json dos parâmetros da consulta Desculpa mas queryparams seria um parâmetro do Get, porém tentei passar o Json por lá mas dá erro, não sei se é eu q não estou sabendo interpretar o Get. Pois pelo componente delphi-rest-client-api tem esses três tipo de get function Get: string;overload; procedure Get(AHandler: TRestResponseHandler);overload; function Get(EntityClass: TClass): TObject;overload; tentei usar o 3º Get conforme no exemplo, porem no exemplo ele usa uma Type mas preciso passar um Json, porém dá seguinte erro >> [Error] API.pas(285): There is no overloaded version of 'Get' that can be called with these arguments Jsonretorno := Tjson(RestClient.Resource('http://api.qualp.com.br/rotas/v4') .ContentType(RestUtils.MediaType_Json) .Accept(RestUtils.MediaType_Json) //.GetContentTypes(); .Header('Access-Token', 'kCSSeyXsjXutqKzs3y5f2SevzGe1h4No') .get(TJson, Json)); exemplo do Get type TPerson = class(TObject) {$IFDEF DELPHI_7} private FId: Integer; FEmail: String; FName: String; FCreateDate: TDateTime; published property id: Integer read FId write FId; property name: String read FName write FName; property email: String read FEmail write FEmail; property createDate: TDateTime read FCreateDate write FCreateDate; {$ELSE} public id: Integer; name: String; email: String; createDate: TDateTime; {$ENDIF} class function NewFrom(Id: Integer; Name, EMail: String): TPerson; end; procedure TFrm_PersonList.btnUpdateClick(Sender: TObject); var vPerson: TPerson; begin if ListView1.ItemIndex >= 0 then begin vPerson := TPerson(ListView1.Items[ListView1.ItemIndex].Data); if TFrm_Person.Modify(vPerson) then begin DM.RestClient.Resource(CONTEXT_PATH + 'person') .Accept(RestUtils.MediaType_Json) .ContentType(RestUtils.MediaType_Json) .Put(vPerson) .Free; RefreshList; end; end; end;
  17. Boa noite @Juliomar Marchetti eu vi um post seu que você faz uso do delphi-rest-client-api para consumir API. estou precisando fazer um consumo conforme a imagem abaixo o Json já consegui criar usando o json4delphi, porém não sei se não estou sabendo como inserir isso no componente ou se estou inserido corretamente. retorno := RestClient.Resource('http://api.qualp.com.br/rotas/v4' + ',params: {json: '+Json.Stringify+'}') .ContentType(RestUtils.MediaType_Json) .Accept(RestUtils.MediaType_Json) .Header('Access-Token', 'kCSSafswrwerwerwe2341h4No') .get; se puder me dar uma luz para onde deve ir agradeço. pois pelo erro acho que estou montando o comando errado.
  18. Boa tarde, Ítalo nenhum consumo desnecessário é visto como bom, porém é o que está no manual não seria o correto a ser adotado ? Levando em ponto de consumo, como as caixas são tons estilo marca d'agua eu vejo que o consumo seria quase igual as linhas já impressas, pois as linhas irá dar lugar as caixa. Mas não tenho um conhecimento suficiente para apontar de qual seria o consumo entre os dois layouts.
  19. Boa noite fizemos atualização no do DACTe para o Fortes conforme layout contido no MOC 3.00a, tentamos chegar o mais próximo que possível do manual. Favor validarem se o mesmo está correto. ACBrCTeDACTeRLRetrato.pas ACBrCTeDACTeRLRetrato.dfm
  20. Boa tarde Marcos, infelizmente não conseguimos resolver, deixamos como o pessoal que cuida do servidor, pois pelo q vimos é uma incompatibilidade de drive. Mas no seu caso vc está imprimindo o MDF-e em impressora termica? Você está usando código direto para impressão (zpl/PPla/PPlb)?
  21. Boa noite hoje passei a tarde com o suporte do servidor in loco no cliente e não conseguimos resolver o problema, desinstalamos os drivers e instalamos novamente e toda a vez q imprimimos diretamente do programa sai borrado o QrCode, já testamos com versão do delphi 7 e delphi 2010 ambos com FortesReport. Porém ao savar em PDF e mandar imprimir o mesmo sai corretamente, estamos desconfiando se pode ser uma falha do Fortes + winserver2012 + brother se alguém puder me enviar o programa exemplo do AcbrMdf-e em FastReport (o qual não possuo) compilado, agradeço para eu realizar mais um teste.
  22. Boa tarde Italo, mas o estranho é que é a mesma impressora q já era utilizada quando o sistema estava instalada na estação de trabalho. Já instalei os drive da impressora no servidor e mesmo assim continua embaçado. Pedi para o pessoal, que dá manutenção no servidor, se há alguma coisa q pode ser feita por eles mas ate o momento não me responderam. agradeço pela atenção.
  23. Bom dia em um cliente nosso eles já utilizavam o MDF-e com o sistema instalado na estação de trabalho e jogamos o sistema de MDF-e em um servidor 2012 R2, para logar por TS, e ao imprimir o MDF-e está saindo com o Qr Code embaçado impossibilitando a leitura, na impressora Brother HL 1210W SERIES e na impressora Brother DCP-8157DN saiu embaçado conforme imagem abaixo e fizemos o teste imprimindo em duas outras HP saiu correto. Salvamos em PDF o MDF-e e imprimimos nas impressoras impressoras borther e saíram normais. Estamos deduzindo que uma relação TS+Brother+sistema pois antes funcionava quando era instalada na estação de trabalho. Alguém já passou por isso ? ou tem alguma ideia do que pode ser ?
  24. Bom dia fizemos a atualização para o Fortes / Delphi no Layout do MDF-e, tentamos deixar o mais próximo do manual. Somente o Código de barras que não conseguimos aumentar para deixar a disposição igual esta no manual, alguém saberia como fazer essa mudança ? Pois toda mudança que realizávamos ao tentar fazer a leitura da impressão não reconhecia. Poderiam validar se está totalmente correto, fazendo um favor segue os fontesACBrMDFeDAMDFeRLRetrato.dfmACBrMDFeDAMDFeRLRetrato.pas
  25. Bom dia Pessoal, conseguir resolver o problemas, segue as soluções: - o primeiro caso foi que a linguagem da zebra TLP 2844 deve ser etqEpl2 - e segundo a Origem tive que deixar como ogTop, e após isso fazer as rotações necessárias - sobre o tamanho da etiqueta, pelo que eu entendi, ele vai pegar a horizontal, do ponto zero definido pela origem acima até o máximo da etiqueta, e a vertical vai pegar do ponto zero ate o gap(que eu entendi é o final da etiqueta) , se for superior a isso a impressora nem aceita o comando do texto.
×
×
  • 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.