Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by oribeiro

  1. Vamos juntos. Estou com dificuldade na consulta do lote enviado. Se precisar de ajuda, conte comigo.
  2. Pessoal, Algum de vocês já está trabalhando com a NFS-e utilizando a ACBrNFSe32.DLL ?
  3. Também fiquei com essa dúvida. O que é compilar no modo MT? Como se faz isso no xHarbour? Por favor, desculpem a minha ignorância e me ajudem a entender essa expressão.
  4. Pessoal, Eu estou programando a consulta no WebService para obtenção de informações do GTIN mas não estou acertando. Por favor, vejam o código abaixo e, se possível, me informem onde eu estou errando. Obrigado. /////// // CONSULTA WEBSERVICE: GTIN // #include "FiveWin.ch" function Main() local oWnd, oBar, oWebServer DEFINE WINDOW oWnd TITLE "Web Service" DEFINE BUTTONBAR oBar BUTTONSIZE 60,30 OF oWnd _3D DEFINE BUTTON OF oBar PROMPT "&Execute" ACTION ConectarSOAP() DEFINE BUTTON OF oBar PROMPT "&Sair" ACTION oWnd:End() ACTIVATE WINDOW oWnd return nil //----------------------------------------------------------------------------// Static Function ConectarSOAP() // Função para consumir WebService #Include "Common.ch" // fwh\include #Include "winapi.ch" // fwh\include #Include "objects.ch" // fwh\include #include "hbXml.ch" // fwh\include // Variáveis utilizadas // Local doc, http, cXmlBody, cFilename, oText, hFile, xmldoc, xmlnote, cnome, cxmlretorno, xmlnode, response CursorWait() // Abertura das funções para WebService do xHarbour // doc = CreateObject( "MSXML2.DOMDocument" ) http = CreateObject( "MSXML2.XMLHTTP" ) // Funciona também -> "Microsoft.XMLHTTP" /////////////////////////////////////////////////////////////////// ** // 1 - Aqui você coloca o endereço do WebService a ser consumido // /////////////////////////////////////////////////////////////////// // Exemplo: // http:Open( "POST" , "http://www.conectapdv.com.br/concentrador/concentrador.asmx?wsdl" , .f. ) http:Open( "POST" , "https://dfe-servico.svrs.rs.gov.br/ws/ccgConsGTIN/ccgConsGTIN.asmx" , .f. ) /////////////////////////////////////////////////////////////////// ** // 2 - Aqui você coloca o seu XML com a requisição = request // /////////////////////////////////////////////////////////////////// // Exemplo: // cXMlBody = '<?xml version="1.0" encoding="UTF-8"?>' + ; // '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://dfe-servico.svrs.rs.gov.br/">'+; // ' <SOAP-ENV:Body>'+ ; // ' <WS_Busc_Projetos xmlns="http://tempuri.org/">'+; // ' <cIdentifica>&lt;identifica&gt;&lt;cnpj&gt;11222333000181&lt;/cnpj&gt;&lt;terminal&gt;020012&lt;/terminal&gt;&lt;autentica&gt;51131212&lt;/autentica&gt;&lt;/identifica&gt;</cIdentifica>'+; // ' </WS_Busc_Projetos>'+; // ' </SOAP-ENV:Body>'+; // '</SOAP-ENV:Envelope>' cXMlBody = ''+; '<?xml version="1.0" encoding="UTF-8"?>'+; '<xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">'+; ' <xs:include schemaLocation="tiposBasicosCcgConsGTIN_v1.00.xsd"/>'+; ' <xs:complexType name="TConsGTIN">'+ ; ' <xs:annotation>'+; ' <xs:documentation>Tipo Consulta pública Cadastro Centralizado de GTIN</xs:documentation>'+; ' <xs:annotation>'+; ' <xs:sequence>'+; ' <xs:element name="GTIN" type="TCodGTIN">'+; ' <xs:GTIN>7894900019896</xs:GTIN>'+ ; ' </xs:element>'+; ' </xs:sequence>'+; ' <xs:attribute name="versao" type="TVerConsGTIN" use="required"/>'+; ' </xs:complexType>'+; '</xs:schema>' /* cXMlBody = ''+; '<?xml version="1.0" encoding="UTF-8"?>'+; '<xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.portalfiscal.inf.br/nfe" elementFormDefault="qualified" attributeFormDefault="unqualified">'+; ' <xs:include schemaLocation="tiposBasicosCcgConsGTIN_v1.00.xsd"/>'+; ' <xs:complexType name="TConsGTIN">'+; ' <xs:annotation>'+; ' <xs:documentation>Tipo Consulta pública Cadastro Centralizado de GTIN</xs:documentation>'+; ' </xs:annotation>'+; ' <xs:sequence>'+; ' <xs:element name="GTIN" type="TCodGTIN">'+; ' <xs:annotation>'+; ' <xs:documentation>Informar o código GTIN a ser consultado.</xs:documentation>'+; ' </xs:annotation>'+; ' </xs:element>'+; ' </xs:sequence>'+; ' <xs:attribute name="versao" type="TVerConsGTIN" use="required"/>'+; ' </xs:complexType>'+; ' <xs:complexType name="TRetConsGTIN">'+; ' <xs:annotation>'+; ' <xs:documentation>Tipo Retorno da Consulta pública Cadastro Centralizado de GTIN</xs:documentation>'+; ' </xs:annotation>'+; ' <xs:sequence>'+; ' <xs:element name="verAplic" type="TVerAplic">'+; ' <xs:annotation>'+; ' <xs:documentation>Versão da aplicação da SVRS.</xs:documentation>'+; ' </xs:annotation>'+; ' </xs:element>'+; ' <xs:element name="cStat" type="TStat">'+; ' <xs:annotation>'+; ' <xs:documentation>Código do Status da resposta (resultado do processamento do lote).</xs:documentation>'+; ' </xs:annotation>'+; ' </xs:element>'+; ' <xs:element name="xMotivo" type="TMotivo">'+; ' <xs:annotation>'+; ' <xs:documentation>Descrição literal do Status da resposta (resultado do processamento do lote).</xs:documentation>'+; ' </xs:annotation>'+; ' </xs:element>'+; ' <xs:element name="dhResp" type="TDateTimeUTC">'+; ' <xs:annotation>'+; ' <xs:documentation>Data e hora da resposta, no formato AAAA-MM-DDThh:mm:ssTZD (UTC - Universal Coordinated Time).</xs:documentation>'+; ' </xs:annotation>'+; ' </xs:element>'+; ' <xs:element name="GTIN" type="TCodGTIN" minOccurs="0">'+; ' <xs:annotation>'+; ' <xs:documentation>(idem mensagem de entrada) Código GTIN.</xs:documentation>'+; ' </xs:annotation>'+; ' </xs:element>'+; ' <xs:element name="tpGTIN" type="TTpGTIN" minOccurs="0">'+; ' <xs:annotation>'+; ' <xs:documentation>Tipo do GTIN, quantidade de dígitos (8, 12, 13 ou 14).</xs:documentation>'+; ' </xs:annotation>'+; ' </xs:element>'+; ' <xs:element name="xProd" minOccurs="0">'+; ' <xs:annotation>'+; ' <xs:documentation>Descrição do produto.</xs:documentation>'+; ' </xs:annotation>'+; ' <xs:simpleType>'+; ' <xs:restriction base="TString">'+; ' <xs:minLength value="2"/>'+; ' <xs:maxLength value="500"/>'+; ' </xs:restriction>'+; ' </xs:simpleType>'+; ' </xs:element>'+; ' <xs:element name="NCM" minOccurs="0">'+; ' <xs:annotation>'+; ' <xs:documentation>Código do NCM (8 posições).</xs:documentation>'+; ' </xs:annotation>'+; ' <xs:simpleType>'+; ' <xs:restriction base="TString">'+; ' <xs:pattern value="[0-9]{8}"/>'+; ' </xs:restriction>'+; ' </xs:simpleType>'+; ' </xs:element>'+; ' <xs:element name="CEST" minOccurs="0" maxOccurs="3">'+; ' <xs:annotation>'+; ' <xs:documentation>Código Especificador da Substituição Tributária - CEST, que identifica a mercadoria sujeita aos regimes de substituição tributária e de antecipação do recolhimento do imposto.</xs:documentation>'+; ' </xs:annotation>'+; ' <xs:simpleType>'+; ' <xs:restriction base="TString">'+; ' <xs:pattern value="[0-9]{7}"/>'+; ' </xs:restriction>'+; ' </xs:simpleType>'+; ' </xs:element>'+; ' </xs:sequence>'+; ' <xs:attribute name="versao" type="TVerConsGTIN" use="required"/>'+; ' </xs:complexType>'+; ' <xs:simpleType name="TVerConsGTIN">'+; ' <xs:annotation>'+; ' <xs:documentation>Tipo Versão do Leiaute para Consulta Pública GTIN</xs:documentation>'+; ' </xs:annotation>'+; ' <xs:restriction base="xs:token">'+; ' <xs:pattern value="1\.00"/>'+; ' </xs:restriction>'+; ' </xs:simpleType>'+; '</xs:schema>' */ /////////////////////////////////////////////////////////////////// ** // 3 - Aqui você coloca a ação que o WebService deve executar // /////////////////////////////////////////////////////////////////// // Exemplo: // http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/WS_Busc_Projetos" ) // http:SetRequestHeader( "Content-Type" , "text/xml" ) // Funções do WebService // doc:LoadXML( cXmlBody ) // Carrega o request http:Send( doc:xml ) // Envia o request response = http:responseText // Recebe o response cFilename:="texto.xml" // Nome do arquivo temporário FErase(cfilename) // Apaga o arquivo, caso exista //Cria o arquivo temporário e armazena o XML retornado oText:= TTxtFile():New( cfilename ) if oText:Open() oText:add(alltrim(response)) endif oText:close() // Mostra o XML retornado // ? "XML RETORNADO:",,response // Abre o arquivo temporário hFile := FOpen( cFileName ) IF hFile == -1 MsgStop("Erro ao abrir arquivo:"+cFileName) Return Nil ENDIF // Pega o conteudo do arquivo temporário pela classe TxmlDocument() // xmlDoc := TXmlDocument():New( hFile ) /////////////////////////////////////////////////////////////////// ** // 4 - Captura os dados do nó principal "WS_Busc_ProjetosResult" // // que deverá ser substituído pelo seu. // /////////////////////////////////////////////////////////////////// xmlNode := xmlDoc:oRoot:oChild DO WHILE xmlNode != NIL cNome:=xmlNode:cName if cNome=='WS_Busc_ProjetosResult' cXMLRetorno:=xmlNode:cData endif xmlNode := xmlNode:NextInTree() ENDDO fclose(hFile) // Fecha o arquivo temporário // Mostra o conteudo do nó principal // ? "RETORNO DA CONSULTA:",,cXMLRetorno Return nil
  5. Pessoal, Estou ressuscitando esse tópico para perguntar se alguém já conseguiu consultar/validar o GTIN via WebService.
  6. Pessoal, Vejam esse site https://win11.blueedge.me Se o Windows for para a web os nossos problemas estarão resolvidos e poderemos continuar com o fivewin Windows e rodar num navegador.
  7. Tentei Alexandre, mas quando eu dou Ctrl+V numa pasta ele não cola o arquivo. Eu tentei também usar o Ctrl+V numa planilha Excel em branco mas ele retorna apenas alguns caracteres estranhos. Alguma outra sugestão para eu colocar uma planilha Excel na área de transferêcia?
  8. O problema é que o arquivo que eu estou tentando colocar na área de transferência é uma planilha Excel gerada dentro do meu sistema. Como faço para colocá-la numa memoread?
  9. Eu estou planejando algo que atenderia exatamente o que o cliente quer. Sem seleção de arquivos. O que eu preciso é que o sistema coloque um arquivo na área de transferência, como se eu tivesse clicado sobre ele no explorer e escolhido copiar. Alguém já fez isso? Vi um post onde se tentou colocar uma planilha excel no ClipBoard mas não tem a solução lá.
  10. Pessoal, É possível copiar um arquivo para o ClipBoard do mesmo modo como copiamos um texto? Eu quero copiar um arquivo gerado no sistema para o usuário ir na pasta onde ele deseja e colar com Ctrl + V. Já viram isso? Obrigado.
  11. Boa tarde amigos, Desculpe reabrir esse tópico, mas é possível copiar um arquivo para o ClipBoard? O objetivo é o usuário ir depois na pasta que ele desejar e dar um Ctrl+V
  12. João, Se eu tiver certeza de que há um problema na DLL do MySql e que a versão nova corrige eu atualizo a minha versão. Mas como eu posso saber disso?
  13. A minha LibMySql.dll é de 2018. Vocês tem uma mais recente para eu testá-la e ver se o problema está na minha DLL?
  14. Agora eu estou com outro problema: Com esse comando no oQry:Query() WHERE cases.date BETWEEN '2022-01-01 00:00:00' AND '2022-01-12 23:59:59'; Retornam 31 registros, sendo os dois últimos com data '2022-01-13 00:47:50' Usando a mesma Select no HeidiSql, retornam 29 registros corretamente dentro do período 01 a 12 de janeiro. Alguém teve esse mesmo problema com a classe nativa?
  15. Consegui, tinha um comando na aplicação que não deixava pesquisar. Era esse aqui: FW_SetUnicode( .T. ) // Essa função não deixa pesquisar acentos no MySQL (não usar) Obrigado a todos.
  16. Boa tarde João, Obrigado pela dica. Testei dos dois modos, mas não deu. Quando tem acento ele não encontra no banco. Sem acento acha. alguma outra sugestão?
  17. Outra questão: Quando eu vou pesquisar filtrar com oQry:Filter := cFilter o filtro não está respeitando os acentos do BD, por exemplo: Não cncontra "São Paulo" por causa do til. Como resolvo isso?
  18. Muito obrigado Aferra. Eu estava aguardando essa resposta com ansiedade. Procurei muito nos exemplos e não tinha encontrado. Não reconheceu o ReQuery(), mas usando um novo Query() deu certo. Qual é a classe que mostra os comandos nativos do SQL? Mais uma vez, muito obrigado.
  19. Pessoal, Depois de fazer uma nova consulta usando SQL nativo, como faço para que o xBrowse recarrege com os novos dados obtidos? Tentei oBrw:Refresh() mas não funcionou, ele continua mostrando os dados do oQry anterior ao novo select. Obrigado.
  20. oribeiro

    xBrowse

    Pessoal, Onde o xBrowse guarda o nome do campo que foi passado para a função oCol:bEditValue := { || cDbf->code } ? Eu quero pegar exatamente essa expressão cDbf->code em algum objeto do xBrowse.
  21. Boa tarde amigo, Para obter o certificado eu faço assim: oDll:=ACBrNFe():New(pDado+"ACBrLib.ini") oDll:ConfigGravarValor("DFe", "SSLCryptLib", "3") // Default=1 -> 0=cryNone 1=cryOpenSSL "3=cryWinCrypt" oDll:ConfigGravarValor("DFe", "SSLHttpLib", "2") // Default=3 -> 0=httpNone 1=httpWinINet "2=httpWinHttp" 3=httpOpenSSL oDll:ConfigGravarValor("DFe", "SSLXmlSignLib", "4") // Defailt=4 -> 0=xsNone "4=xsLibXml2" ret:=oDll:ObterCertificados()
  22. Certo João, Estou estudando esse assunto. Assim que eu conseguir resolver eu te aviso.
  23. Grande Ariston, Vou investigar esse assunto que é a minha maior preocupação nesse momento. Obrigado.
  24. Eu preciso de uma função que baixe o XML do próprio cliente. Estou com um problema que, nas internets com instabilidade, as vezes é gerado o XML na SEFAZ mas não cria o arquivo no disco e daí o cliente precisa fazer o download do XML no site da SEFAZ e salvar na pasta do sistema. É muito chato isso! Você tem alguma ideia para resolver esse problema?
×
×
  • Create New...