-
Posts
1,291 -
Joined
-
Last visited
-
Days Won
35
Posts posted by oribeiro
-
-
Pessoal,
Algum de vocês já está trabalhando com a NFS-e utilizando a ACBrNFSe32.DLL ?
-
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. -
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><identifica><cnpj>11222333000181</cnpj><terminal>020012</terminal><autentica>51131212</autentica></identifica></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
-
Pessoal,
Estou ressuscitando esse tópico para perguntar se alguém já conseguiu consultar/validar o GTIN via WebService. -
Pessoal,
Vejam esse site
Se o Windows for para a web os nossos problemas estarão resolvidos e poderemos continuar com o fivewin Windows e rodar num navegador.
-
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?
-
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?
-
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á.
-
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.
-
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
-
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?
-
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? -
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?
-
-
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?
-
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?
-
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. -
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.
-
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.
-
Salvou minha vida! Risos.
Obrigado.
-
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()
-
Certo João,
Estou estudando esse assunto. Assim que eu conseguir resolver eu te aviso.
-
Grande Ariston,
Vou investigar esse assunto que é a minha maior preocupação nesse momento.
Obrigado.
-
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?
NFS-e com ACBrNFSe32.DLL
in Programação
Posted
Vamos juntos.
Estou com dificuldade na consulta do lote enviado. Se precisar de ajuda, conte comigo.