william
Membros-
Posts
551 -
Joined
-
Last visited
-
Days Won
9
Everything posted by william
-
muito interessante Giovany, poderia me enviar a classe para eu testar esse demo no email: williamdebritoadami@gmail.com Vou testar essa solução outra coisa , ela permite varias assinaturas no pdf ? o pdfpowertool só permite 1 assinatura. Muito obrigado William
-
boa tarde, estou testando o programa pdfpowertool.exe que faz a assinatura digital , via linha de comando passando parametros. Aparentemente está dando certo e vai dar para ser usado dentro do sistema. Fora isso , creio que deva existir algum componente activex que possa assinar o pdf diretamente, porem ainda nao encontrei. E deve ser isso que o Giovany faz com o Chilkat, que é um activex que trabalha com HTTP. Em Java encontrei varios codigos no github que fazem a assinatura do pdf. Me corrija se eu estiver errado Giovany, mas deve ser assim que vc faz. Comunica seu programa com um script web atraves do Chilkat. Todas a opinioes e sugestoes sao bem vindas ! William
-
Bom dia, estou trabalhando num sistema de acervo digital e os documentos em PDF devem ser digitalizados e assinados digitalmente por um certificado digital. Manualmente consigo fazer isso usando o adobe acrobat , porem queria fazer automaticamente via programação. Alguem saberia dizer se isso é possivel? tem algum exemplo? Obrigado William
-
bom dia tive este problema porque usava o cNF com o mesmo numero da nota fiscal. A mudança necessária é fazer o cNF com um numero randomico. Att. William
-
pode até dar certo, mas quem vai ficar responsável pelas atualizações ? o acbr tem atualizações constantes de versões, ou seja a DLL vai ter que ser atualizada toda vez que sair uma nova versão do acbr... lembro que em 2010 fizeram uma AcbrEcfDll e parou justamente por causa da falta de atualização.
-
Fastreport matricial sem eject ??? Alguem sabe como?
william replied to william's topic in Programação
ok, mandei no seu email -
Fastreport matricial sem eject ??? Alguem sabe como?
william replied to william's topic in Programação
boa noite, obrigado pela resposta, isso de marcar como altura infinita eu já tinha feito. Descobri que o problema estava na quebra de pagina, na hora de imprimir se desmarcar esta opção , o cupom sai direitinho , sem perder papel. Porem nas propriedades do relatorio nao tem esta opção. O que fazer ? Exportar o relatorio como objeto DotMatrixExport, este sim, possui a propriedade PageBreaks, podendo ser ajustada como .F. , via codigo do programa. Fica aí a dica: FrPrn:PrintOptions:SetShowDialog(.f.) FrPrn:Print(.f.) FrPrn:PrintOptions:ClearOptions() FrPrn:SetProperty("DotMatrixExport","PageBreaks", .F.) FrPrn:PrepareReport() FrPrn:DoExport("DotMatrixExport") -
Boa noite amigos , estou fazendo um cupom de venda para imprimir em impressora matricial usando a fastreport. Só que no final da impressao está perdendo muita folha. Alguem saberia me dizer como fazer imprimir e parar ? Já marquei a opção EndlessHeight para TRUE melhorou mas ainda continua pulando muita folha... Será que tem solução ? Obrigado William Adami
-
Triste notícia, ele era das antigas , registrado aqui no forum desde 2002. Que Deus o tenha, descanse em paz !
-
beleza Wellington ! Nao conhecia esse uninfe. Pelo que eu vi parece ser bastante funcional. Vou estuda-lo mais um pouco e se me poupar tempo de desenvolvimento, vou por esse caminho. Só o fato dele trabalhar com o webservice BETHA já é meio caminho andado pra mim. Valeu mesmo !
-
Putz mais essa ainda , onde vc viu isso HASA? Agora vc me assustou ! Vou perder um tempão nessa porcaria e depois vai mudar de novo ? Nós programadores tamos fudidos mesmo ! PQP
-
isso mesmo amigo HASA, o AcbrMonitorPlus não trabalha com NFSe. Queria fazer isso direto do meu programa em fivewin, então resolvi transformar o DEMO_acbrNFSe que tem os fontes em DELPHI em um sistema monitor, conforme disse nosso amigo FLADIMIR ( eu também programo em DELPHI, entre outras linguagens). Estou fazendo um sistema para ficar em tray lendo um arquivo texto de uma pasta de 5 em 5 segundos. Este texto conterá as informações dos serviços prestados pela empresa e será processado pelo sisteminha em Delphi no tray. William
-
boa noite amigos ! Êta negocinho confuso. Dando uma estudada verifiquei que o acbrMonitorPlus que eu trabalho para enviar NFe realmente não trabalha com notas fiscais de serviço de prefeituras. O que existe é o Demo_ACBrNFSe.exe que é um programa que faz esse serviço de comunicar com o webservice da prefeitura e transmitir os XMLs referentes as RPS. O sistema gerenciador da prefeitura de Tijucas do Sul - PR é o sistema de nome "BETHA". O Demo_ACBrNFSe.exe pelo que eu vi até agora já trabalha com o BETHA. Estou tentando configurar (atraves) de arquivos .INI mas não tem muita informação a respeito. Assim que tiver mais informações vou postando aqui. Obrigado a todos. William Adami
-
obrigado pela resposta Dorneles. Pelo que entendi o sistema deve apenas gerar o XML do RPS para ser lido pelo site da prefeitura, correto ? Alguem tem um xml exemplo para ver como estáo preenchendo as tags ? Ainda estou apanhando no assunto... obrigado
-
Boa noite , estou com um problema e peço a ajuda dos amigos. Tenho um cliente que emite NFe utilizando AcbrNfe. Tudo beleza. Agora ele me pediu para emitir a notas de serviços pelo sistema. Minha dúvida é : O cliente sempre emitiu essas notas pelo site da prefeitura de Tijucas do Sul - PR. Notei que no layout do acbrNfe tem os campos para Serviços, será que utilizando estes campos esta nota substitui a nota da prefeitura? Alguem poderia me esclarecer isso? Tem algum exemplo ? Obrigado William Adami
-
blz kleyber muito obrigado. Com o seu exemplo e do Alessandro entendi como fazer . Abraço .
-
boa noite , ressucitando este tópico , será que o Kleyber ou o Alessandro poderiam me enviar a solução ? estou com esse problema para imprimir dividindo a folha em duas e gostaria de ver como vcs fizeram. Obrigado William
-
ok , disponha !
-
vamos lá: 1 - De que se trata o inventário? Seria o estoque da farmácia no banco de dados do SNGPC? R- Sim é o cadastro de produtos controlados contendo quantidade, codigo de barras , numero do lote , numero da Anvisa do medicamento, etc... 2 - Os medicamentos e insumos movimentados (enviados) são incluídos e baixados do inventário? R- Sim devem ser incluidos as quantidades e numeros de lote de tudo que é comprado. E tudo que se vende tambem deve ser baixado. Sendo assim , na Anvisa fica uma cópia do estoque da farmacia. Os envios diarios dos xmls que atualizam o estoque na Anvisa. Diariamente é transmitido um xml com o resumo de tudo que entrou e saiu dos medic e insumos controlados, 3 - Quais as limitações ou requisitos para envio de inventários? R- Nao me lembro bem, mas acredito que o inventario deva ser entregue no inicio das operacoes da farmacia. Ou com a troca do responsavel , ou para acerto de estoque. Tem diversos motivos pra isso. No site do SNGPC tem um item "Finalizar Inventario" e lá mostra a lista de motivos existentes. Att. William
-
blz boa sorte !
-
agora se quizer tem uma maneira mais fácil, que é o comunicador bitshop sngpc. Funciona em tray , e comunica via arquivo txt , igual o acbr . Já usei e funciona mesmo. veja no link: http://www.bitshop.com.br/index.php?option=com_content&task=view&id=15&Itemid=34 Tambem tem para farmacia popular.
-
e finalmente o ultimo exemplo: Exemplo - Validando Usuário Estou usando o seguinte código para validar o usuário/senha : #define CR_LF chr(13) + chr(10) *************** FUNCTION MAIN() *************** if !InternetOK() Alert("Conexao com a internet falhou !") else Alert("Conexao OK") endif // // Abertura das funcoes para WebService do xHarbour // try doc := CreateObject( "MSXML2.DOMDocument" ) catch try doc := CreateObject( "MSXML2.DOMDocument" ) catch Alert("Erro na criacao do objeto MSXML2.DOMDocument : " + Ole2TxtError()) return NIL end end try http := CreateObject( "MSXML2.XMLHTTP" ) catch try http := CreateObject( "MSXML2.XMLHTTP" ) catch Alert("Erro na criacao do objeto MSXML2.XMLHTTP : " + Ole2TxtError()) end end // // Criar o XML request // cXml := "" cXml += '<?xml version="1.0" encoding="utf-8"?>' + CR_LF cXml += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' + CR_LF cXml += ' <soapenv:Header/>' + CR_LF cXml += ' <soapenv:Body>' + CR_LF cXml += ' <tem:ValidarUsuario>' + CR_LF cXml += ' <tem:Email>SEU_EMAIL_AQUI</tem:Email>' + CR_LF cXml += ' <tem:Senha>SUA_SENHA_AQUI</tem:Senha>' + CR_LF cXml += ' </tem:ValidarUsuario>' + CR_LF cXml += ' </soapenv:Body> ' + CR_LF cXml += '</soapenv:Envelope>' + CR_LF // // ENDERECO DE HOMOLOGACAO // http:Open( "POST", "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) http:SetRequestHeader( "Content-Type" , "text/xml;charset=UTF-8" ) http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ValidarUsuario" ) http:SetRequestHeader( "Host" , "homologacao.anvisa.gov.br" ) // // ENDERECO DE PRODUCAO // // http:Open( "POST", "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) // http:SetRequestHeader( "Content-Type" , "text/xml;charset=UTF-8" ) // http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ValidarUsuario" ) // http:SetRequestHeader( "Host" , "sngpc.anvisa.gov.br" ) Alert("Carrega o request...") doc:LoadXML( cXml ) // Carrega o request de string Alert("Envia o xml...") http:send( doc:xml ) // Envia o request Alert("Ler a resposta...") response := http:responseText // Recebe a resposta Alert("Apresentando a resposta") oXmlDoc := TXmlDocument():new() oXMlDoc:read( response ) oXmlNode := oXmlDoc:findFirst( "ValidarUsuarioResult" ) Alert(oXmlNode:cName + " = " + oXmlNode:cData ) RETURN NIL ********************* FUNCTION InternetOK() ********************* local aHosts, cName, cAddress := "www.google.com.br" InetInit() aHosts := InetGetHosts( cAddress ) if aHosts == NIL .or. len(aHosts) == 0 InetCleanup() return .F. endif InetCleanup() RETURN .T.
-
Exemplo - Testando status do arquivo XML enviado Nesse terceiro exemplo, testamos o recebimento do arquivo XML ou podemos obter a relação de erros de validação e gerar um relatório de erros. A parte do exemplo que trata dos erros deve ser melhor estudada e/ou melhorada. #define CR_LF chr(13) + chr(10) *************** FUNCTION MAIN() *************** local lRet := .T. if !InternetOK() Alert("Sem conexão com a Internet. Verifique...") return .F. endif // // ABERTURA DAS FUNCOES PARA WEBSERVICE DO XHARBOUR - OBJETO HTTP // try http := CreateObject( "MSXML2.XMLHTTP" ) catch try http := CreateObject( "MSXML2.XMLHTTP" ) catch Alert("Erro na criação do objeto MSXML2.XMLHTTP : " + Ole2TxtError()) end end // // CRIA OBJETO XML // try doc := CreateObject( "MSXML2.DOMDocument" ) catch try doc := CreateObject( "MSXML2.DOMDocument" ) catch Alert("Erro na criacao do objeto MSXML2.DOMDocument : " + Ole2TxtError()) return .F. end end cXml := "" cXml += '<?xml version="1.0" encoding="ISO-8859-1" ?>' + CR_LF cXml += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' + CR_LF cXml += ' <soapenv:Header/>' + CR_LF cXml += ' <soapenv:Body>' + CR_LF cXml += ' <tem:ConsultaDadosArquivoSNGPC>' + CR_LF cXml += ' <tem:Email>' + SEU_EMAIL_AQUI + '</tem:Email>' + CR_LF cXml += ' <tem:Senha>' + SUA_SENHA_AQUI + '</tem:Senha>' + CR_LF cXml += ' <tem:CNPJ>' + CNPJ_DA_EMPRESA + '</tem:CNPJ>' + CR_LF cXml += ' <tem:Hash>' + HASH_DO_ARQUIVO + '</tem:Hash>' + CR_LF cXml += ' </tem:ConsultaDadosArquivoSNGPC>' + CR_LF cXml += ' </soapenv:Body> ' + CR_LF cXml += '</soapenv:Envelope>' + CR_LF // // ENDERECO HOMOLOGACAO // http:Open( "POST", "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" ) http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ConsultaDadosArquivoSNGPC" ) http:SetRequestHeader( "Host" , "homologacao.anvisa.gov.br" ) // // ENDERECO PRODUCAO // // http:Open( "POST", "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) // http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" ) // http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ConsultaDadosArquivoSNGPC" ) // http:SetRequestHeader( "Host" , "sngpc.anvisa.gov.br" ) doc:LoadXML( cXml ) http:send( doc:xml ) response := http:responseText oXmlDoc := TXmlDocument():new() oXMlDoc:read( response ) oXmlNode := oXmlDoc:findFirst( "ConsultaDadosArquivoSNGPCResult" ) cDados := oXmlNode:cData oXMlDoc:read( cDados ) oXmlNode := oXmlDoc:findFirst( "DATAVALIDACAO" ) if oXmlNode == NIL .or. oXmlNode:cData == NIL .or. empty( oXmlNode:cData ) Alert("Arquivo ainda nao foi validado...") lRet := .F. else cMens := oXmlNode:cData oXmlNode := oXmlDoc:findFirst( "MENSAGEMVALIDACAO" ) if oXmlNode == NIL Alert("Arquivo validado em : " + cMens ) else nHandle := fcreate( "temp.txt" ) fwrite( nHandle, oXmlNode:cData ) fclose( nHandle ) nHandle := fopen( "temp.txt" ) aLinhas := {} cLinha := "" while HB_FReadLine( nHandle, @cLinha, "[NOVA_LINHA]" ) == 0 aadd( aLinhas, cLinha ) enddo aadd( aLinhas, cLinha ) fclose( nHandle ) if Alert("Arquivo enviado n„o foi recebido. Emite relat¢rio com erros ?", { "SIM", "NAO" } ) == 1 // IMPRIME RELATORIO COM ERROS DE VALIDACAO DO XML endif lRet := .F. endif endif RETURN lRet ********************* FUNCTION InternetOK() ********************* local aHosts, cName, cAddress := "www.google.com.br" InetInit() aHosts := InetGetHosts( cAddress ) if aHosts == NIL .or. len(aHosts) == 0 InetCleanup() return .F. endif InetCleanup() RETURN .T.
-
aos que precisarem, segue o restante : Exemplo - Enviando arquivo XML Nesse segundo exemplo, vamos enviar o arquivo XML para ANVISA. Note que no XML as tags < e > devem ser trocadas por & l t ; e & g t ;. Claro que esse hash calculado deve ser gravado em algum lugar para depois testar se o arquivo foi recebido, se está com erros, etc. Vamos ver o uso desse código no próximo exemplo. #define CR_LF chr(13) + chr(10) *************** FUNCTION MAIN() *************** if !InternetOK() Alert("Sem conexão com a Internet. Verifique...") return .F. endif // // ABERTURA DAS FUNCOES PARA WEBSERVICE DO XHARBOUR - OBJETO HTTP // try http := CreateObject( "MSXML2.XMLHTTP" ) catch try http := CreateObject( "MSXML2.XMLHTTP" ) catch Alert("Erro na criação do objeto MSXML2.XMLHTTP : " + Ole2TxtError()) end end // // CRIA OBJETO XML // try doc := CreateObject( "MSXML2.DOMDocument" ) catch try doc := CreateObject( "MSXML2.DOMDocument" ) catch Alert("Erro na criacao do objeto MSXML2.DOMDocument : " + Ole2TxtError()) return NIL end end cFile := memoread( seu_arquivo_xml ) cHash := HB_MD5File( seu_arquivo_xml ) cXml := "" cXml += '<?xml version="1.0" encoding="ISO-8859-1" ?>' + CR_LF cXml += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' + CR_LF cXml += ' <soapenv:Header/>' + CR_LF cXml += ' <soapenv:Body>' + CR_LF cXml += ' <tem:EnviaArquivoSNGPC>' + CR_LF cXml += ' <tem:Email>' + SEU_EMAIL_AQUI + '</tem:Email>' + CR_LF cXml += ' <tem:Senha>' + SUA_SENHA_AQUI + '</tem:Senha>' + CR_LF cXml += ' <tem:Arquivo>' + cFile + '</tem:Arquivo>' + CR_LF cXml += ' <tem:HashIdentificacao>' + cHash + '</tem:HashIdentificacao>' + CR_LF cXml += ' </tem:EnviaArquivoSNGPC>' + CR_LF cXml += ' </soapenv:Body> ' + CR_LF cXml += '</soapenv:Envelope>' + CR_LF // // ENDERECO HOMOLOGACAO // http:Open( "POST", "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" ) http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/EnviaArquivoSNGPC" ) http:SetRequestHeader( "Host" , "homologacao.anvisa.gov.br" ) // // ENDERECO PRODUCAO // // http:Open( "POST", "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) // http:SetRequestHeader( "Content-Type" , "text/xml;charset=ISO-8859-1" ) // http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/EnviaArquivoSNGPC" ) // http:SetRequestHeader( "Host" , "sngpc.anvisa.gov.br" ) doc:LoadXML( cXml ) http:send( doc:xml ) response := http:responseText oXmlDoc := TXmlDocument():new() oXMlDoc:read( response ) oXmlNode := oXmlDoc:findFirst( "EnviaArquivoSNGPCResult" ) if empty( oXmlNode:cData ) Alert("Erro no envio do arquivo para ANVISA. Tente outra vez.") elseif upper( left( oXmlNode:cData, 28 ) ) == "ARQUIVO RECEBIDO COM SUCESSO" Alert(oXmlNode:cData) else Alert(oXmlNode:cData) Alert("Erro no envio do arquivo para ANVISA. Tente outra vez.") endif RETURN NIL ********************* FUNCTION InternetOK() ********************* local aHosts, cName, cAddress := "www.google.com.br" InetInit() aHosts := InetGetHosts( cAddress ) if aHosts == NIL .or. len(aHosts) == 0 InetCleanup() return .F. endif InetCleanup() RETURN .T.
-
Olá, Depois de muito tempo gerando o XML e usando o próprio site do SNGPC para enviar meus arquivos, decidi que já era hora de enviar esses arquivos do meu sistema. Criei os tres serviços oficiais do SNGPC ( validar usuário, enviar arquivo XML e testar arquivo enviado ) mais a importação do inventário direto da ANVISA. Essa primeira rotina, valida um email/senha para ver se esta cadastrado no SNGPC da ANVISA. No código estão os endereços de homologação e produção. // // WebService com xHarbour // // Nesse exemplo estamos testando se o email/senha do usuario // esta cadastrado no SNGPC da ANVISA. // // Existem ainda mais 2 servicos : // // a) enviar arquivo XML. // b) verificar se arquivo XML enviado foi validado. // // Manoel Angeiras // #define CR_LF chr(13) + chr(10) *************** FUNCTION MAIN() *************** if !InternetOK() Alert("Conexao com a internet falhou !") else Alert("Conexao OK") endif // // Abertura das funcoes para WebService do xHarbour // try doc := CreateObject( "MSXML2.DOMDocument" ) catch try doc := CreateObject( "MSXML2.DOMDocument" ) catch Alert("Erro na criacao do objeto MSXML2.DOMDocument : " + Ole2TxtError()) return NIL end end try http := CreateObject( "MSXML2.XMLHTTP" ) catch try http := CreateObject( "MSXML2.XMLHTTP" ) catch Alert("Erro na criacao do objeto MSXML2.XMLHTTP : " + Ole2TxtError()) end end // // Criar o XML request // cXml := "" cXml += '<?xml version="1.0" encoding="utf-8"?>' + CR_LF cXml += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' + CR_LF cXml += ' <soapenv:Header/>' + CR_LF cXml += ' <soapenv:Body>' + CR_LF cXml += ' <tem:ValidarUsuario>' + CR_LF cXml += ' <tem:Email>seu_email_aqui</tem:Email>' + CR_LF // SEU EMAIL AQUI cXml += ' <tem:Senha>sua_senha_aqui</tem:Senha>' + CR_LF // SUA SENHA AQUI cXml += ' </tem:ValidarUsuario>' + CR_LF cXml += ' </soapenv:Body> ' + CR_LF cXml += '</soapenv:Envelope>' + CR_LF // // ENDERECO DE HOMOLOGACAO // http:Open( "POST", "http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) http:SetRequestHeader( "Content-Type" , "text/xml;charset=UTF-8" ) http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ValidarUsuario" ) http:SetRequestHeader( "Host" , "homologacao.anvisa.gov.br" ) // // ENDERECO DE PRODUCAO // // http:Open( "POST", "http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1", .F. ) // http:SetRequestHeader( "Content-Type" , "text/xml;charset=UTF-8" ) // http:SetRequestHeader( "SOAPAction" , "http://tempuri.org/ConsultaDadosArquivoSNGPC" ) // http:SetRequestHeader( "Host" , "sngpc.anvisa.gov.br" ) Alert("Carrega o request...") doc:LoadXML( cXml ) // Carrega o request de string Alert("Envia o xml...") http:send( doc:xml ) // Envia o request Alert("Ler a resposta...") response := http:responseText // Recebe a resposta Alert("Apresentando a resposta") oXmlDoc := TXmlDocument():new() oXMlDoc:read( response ) oXmlNode := oXmlDoc:findFirst( "ValidarUsuarioResult" ) Alert(oXmlNode:cName + " = " + oXmlNode:cData ) RETURN NIL ********************* FUNCTION InternetOK() ********************* local aHosts, cName, cAddress := "www.google.com.br" InetInit() aHosts := InetGetHosts( cAddress ) if aHosts == NIL .or. len(aHosts) == 0 InetCleanup() return .F. endif InetCleanup() RETURN .T.