Jump to content
Fivewin Brasil

william

Membros
  • Posts

    551
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by william

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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.
  6. 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")
  7. 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
  8. Triste notícia, ele era das antigas , registrado aqui no forum desde 2002. Que Deus o tenha, descanse em paz !
  9. 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 !
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. blz kleyber muito obrigado. Com o seu exemplo e do Alessandro entendi como fazer . Abraço .
  16. 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
  17. 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
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
×
×
  • Create New...