Ir para conteúdo
  • Cadastre-se

chico_lopes

Membros
  • Total de ítens

    50
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

chico_lopes's Achievements

Contributor

Contributor (5/14)

  • Dedicated Rare
  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done

Recent Badges

7

Reputação

1

Community Answers

  1. 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?
  2. 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.
  3. 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.
  4. 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;
  5. 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
  6. 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
  7. 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;
  8. 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;
  9. 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.
  10. 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.
  11. 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;
  12. 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.
  13. 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;
  14. 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.
  15. 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.
×
×
  • 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.