-
Posts
1,291 -
Joined
-
Last visited
-
Days Won
35
Everything posted by oribeiro
-
Ladnilson, Estou usando a versão: ACBrMonitorPLUS-1.1.0.6-20170420. Veja as mudanças aqui: https://d335luupugsy2.cloudfront.net/cms%2Ffiles%2F9498%2F1512760747NFE400-EBOOK_COMPLETO.pdf Tem um checklist aqui: http://bit.ly/2izumN1 Sucesso.
-
Vocês repararam que o comando SR_AddConnection( CONNECT_MYSQL, cConString1 ) cria DUAS conexões no banco de dados? É uma falha do SQLRDD?
-
Consegui pegar, mas para cada usuário conectado ele retorna duas conexões. Isso é normal?
-
Deixa-me explicar... Até a versão NFE 3.1 eu usava o comando NFE.CriarNfeSEFAZ() do ACBr que processa um arquivo TXT compatível com o usado pelo programa gratuito do SEFAZ, assim, eu criava um único arquivo TXT e os meus clientes optavam, ou pelo ACBr ou pelo programa do SEFAZ e emitiam a nota. Agora, com a versão NFE 4.0 eu passei a utilizar NFE.CriarNFe() que não tem nada a ver com o TXT do SEFAZ, portanto, tive que modificar todo o meu programa, daí, fiz de novo de acordo com o novo manual. Como resultado, a NFE 4.0 está rodando 100% em ACBr.
-
Você me deu exatamente as informações que eu precisava. Agora sei como fazer o backup e também como pegar o número de usuários conectados ao banco para fazer um controle, o motivo é que eu negocio o sistema por número de usuários simultâneos. Muito obrigado. Como eu faço para ler o retorno do comando? oSql:= SR_GetConnection() oSql:Exec("SHOW FULL PROCESSLIST") // usuários conectados no momento
-
Até a 3.1 eu gerava um Txt compatível com o programa do SEFAZ e para a 4.0 eu criei uma rotina nova a partir do manual 100% compatível com o ACBR sem nenhum vínculo com o programa do SEFAZ, então, não focalizei apenas nas mudanças. Desse modo não tenho a informação que você precisa.
-
Pessoal, Estou gostando muito do SQLRDD, algumas rotinas ficaram até mais rápido que o DBFCDX. Dúvidas: 1) Como vocês fazem backup por dentro do sistema com SQLRDD? 2) Como vocês tem feito o controle de usuários conectados ao banco?
-
Como posso criar um banco de dados POSTGRES automaticamente por dentro do programa usando o SQLRDD?
-
Alain, Se você fizer alguma melhoria nessa função, por favor, poste aqui para que todos tirem proveito.
-
Isso eu não consegui fazer, mas eu COPIEI o CNPJ na memória antes de chamara função e oriento o usuário a COLAR no campo. Super simples. Ninguém reclama. // Copia a CHAVE para o ClipBoard oClp:=TClipboard():New() oClp:Clear() oClp:SetText( cCNPJ ) Se alguém conseguir fazer isso na classe, por favor, poste aqui os ajustes. Acho que alguns poderão tirar proveito dessa rotina. Fiz algo muito interessante com ela. Quando o usuário está na inclusão do cadastro de clientes, fornecedores, tranportadora, etc. Se ele chama essa rotina eu já trago os campos preenchidos no cadastro.
-
********************************************************************************************* FUNCTION StrNum(cVar , lPontos, nTam) // Esta funcao retorna apenas os numeros da String ********************************************************************************************* Local cVar1 := "" Local nInd := 0 DEFAULT lPontos := .T. DEFAULT nTam := 0 For nInd=1 To Len(cVar) if Subst(cVar, nInd, 1)$("0123456789"+iif(lPontos,",.","")) cVar1 = cVar1 + Subst(cVar, nInd, 1) endif Next if nTam>0 cVar1 := PadR(cVar1, nTam) endif RETURN cVar1 ******************************************************************************************* function MsgArray(aArray, cMsg, cFile) ******************************************************************************************* Local cText := "" Default cMsg := "" Default cFile := "" Aeval(aArray, {|v| cText += cValToChar(v)+CRLF}) if !Empty(cFile) // Grava a matriz num arquivo TEXTO MemoWrit(cFile, cText) if Empty(cMsg) cMsg := "Arquivo gravado em "+cFile else cText := "Arquivo gravado em "+cFile + chr(13)+chr(13) + cText endif endif MsgInfo(cText, cMsg) return Nil FUNCTION OANETNAME() // Crie uma função para gerar um nome de arquivo randômico para que essa função possa ser utilizada por mais de um usuário simultaneamente. Return ("SINTEGRA.TXT")
-
Estou usando NF 4.0 com ACBr, ficou show de bola. Recomendo.
-
Segue a classe funcionando. Tem apenas uma função que gera um número randômico de arquivo que você deve substituir. Veja aí. Uso-a assim: oSintegra := Sintegra():New( cEstado ) aRetorno := oSintegra:Consulta() If Len(aRetorno) > 0 If cEstado$"CE/ES/MA/PR/RJ/SP" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[3] xNome := aRetorno[3] xEndereco := Alltrim(Alltrim(aRetorno[4])+" "+Alltrim(aRetorno[5])+", "+Alltrim(aRetorno[6])) xCompl := Alltrim(Alltrim(aRetorno[8])+" "+Alltrim(aRetorno[7])) xCidade := aRetorno[9] xEstado := aRetorno[10] xCEP := Subst(aRetorno[11],1,5)+"-"+Subst(aRetorno[11],6,3) ElseIf cEstado$"BA" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[4] xNome := aRetorno[4] xEndereco := Alltrim(aRetorno[5])+" "+Alltrim(aRetorno[6])+", "+Alltrim(aRetorno[7]) xCompl := Alltrim(Alltrim(aRetorno[9])+" "+Alltrim(aRetorno[8])) xCidade := aRetorno[11] xEstado := aRetorno[10] xCEP := Subst(aRetorno[12],1,5)+"-"+Subst(aRetorno[12],6,3) ElseIf cEstado$"MG" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[4] xNome := aRetorno[4] xEndereco := Alltrim(aRetorno[11])+", "+Alltrim(aRetorno[12])+" "+Alltrim(aRetorno[13]) xCompl := Alltrim(aRetorno[9]) xCidade := aRetorno[8] xEstado := aRetorno[3] xCEP := Subst(aRetorno[6],1,5)+"-"+Subst(aRetorno[6],6,3) ElseIf cEstado$"SC" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[3] xNome := aRetorno[3] xEndereco := Alltrim(aRetorno[4])+" "+Alltrim(aRetorno[5])+", "+Alltrim(aRetorno[6]) xCompl := Alltrim(Alltrim(aRetorno[8])+" "+Alltrim(aRetorno[7])) xCidade := aRetorno[10] xEstado := aRetorno[9] xCEP := Subst(aRetorno[11],1,5)+"-"+Subst(aRetorno[11],6,3) EndIf CLASSE: // // INICIO: Rotina para consultar SINTEGRA // /********************************************************* * Função : Classe para abrir uma página da net e pegar os dados * Data : Por : Alain/Rancharia * Revisado em : 25/07/2011 - 08:50:27 Por : Vagner Wirts * Como Usar : oSintegra := Sintegra():New(cUF) - Onde cUF = estado de consulta ex.: "SP" aRetorno := oSintegra:Consulta() If Len(aRetorno) > 0 MsgInfo("Consulta Executada com sucesso !","AVISO DE ALERTA") MsgArray(aRetorno) EndIf Return Nil * Comentário : //"GO" - não consegui abrir na mesma dialog //"MA" - Pega somente pela inscrição, ver como tratar //"MG" - Pega Exige um terceiro link, ver como tratar //"PA" - Pega somente pela inscrição, ver como tratar //"RN" - Pega somente pela inscrição, ver como tratar Ainda estão faltando alguns estados, pois não possuo informações para poder pegar o código fonte das páginas. Quanto aos estados acima, estarei pesquisando para ver como pegar, mas os estados de MA,PA e RN, parecem fácil de recuperar, apesar de possuir um 3º ítem. */ //----------------------------------------------------------------------------------------------------------------------// Static Function GetSintegra(cUF); Retu( Sintegra():New(cUF)) //----------------------------------------------------------------------------------------------------------------------// Static Function PegaSintegra(cHtml) ; Retu (MontaSintegra(cHtml)) //----------------------------------------------------------------------------------------------------------------------// Class Sintegra Data nTimeOut Init 240 // 4 minutos Data lDownload, lError, cError Data cRetorno Data aGru1,aGru2 Data cUrl,cPost,cView Data cUF Method New(cUF) Constructor Method Consulta( cCGCorIE ) Method DownloadComplete( oAct ) Method Clear() INLINE DelUrlCache({::cPost,::cView}) EndClass //----------------------------------------------------------------------------------------------------------------------// Method New(cUF) Class Sintegra Local aUrls Default cUF := "SP" aUrls := PegaUrls(cUF) If Len(aUrls) == 0 MsgStop("Não pude iniciar o portal do Sintegra.","Estado "+cUF+" Inválido.") Retu(.T.) Endif ::cUrl := aUrls[1] ::cPost := ::cUrl+aUrls[2] ::cView := ::cUrl+aUrls[3] ::aGru1 := AClone(aUrls[4]) ::aGru2 := AClone(aUrls[5]) ::cUF := cUF Return Self //----------------------------------------------------------------------------------------------------------------------// Method Consulta() Class Sintegra Local oDlg, oAct Local nTimer Local aRetorno, xIE, xCGC, xNome, xEndereco, xNumero, xCompl, xCidade, xCEP, xEstado Private cSintegra := "" If IsInternet() == .F. MsgStop("Sem conexão com a internet !") Return {} Else ::Clear() EndIf ::cRetorno := "" ::cError := "" ::lDownload := .F. ::lError := .F. Define Dialog oDlg From 0,0 To 600,900 Pixel Title "[ ("+::cUF+") SINTEGRA - Consultando ] -> Você pode colar o <CNPJ> no campo com o botão direito do mouse." // Style WS_CAPTION oDlg:lHelpIcon:=.F. Activate Dialog oDlg NoWait Centered oAct:=TActivex():New(oDlg,"Shell.Explorer",00,0,900,600) oAct:bOnEvent := {|cEv|If(cEv=="DownloadComplete",::DownloadComplete( oAct ),Nil)} oAct:Silent := .T. oAct:Navigate( ::cPost ) oAct:SetFocus() nTimer:=Seconds() While !::lDownload If !IsWindowVisible( oDlg:hWnd ) ::lDownload := .T. ::lError := .T. ::cError := "Consulta Cancelada !" ElseIf !IsInternet() ::lDownload := .T. ::lError := .T. ::cError := "Perda de conexao com a internet !" ElseIf( Seconds()-nTimer ) >= ::nTimeOut ::lDownload := .T. ::lError := .T. ::cError := "Tempo limite esgotado !" EndIf SysRefresh() End Try ::cRetorno := oAct:Document:Body:InnerHtml Catch oE ::lError := .T. ::cError := "Falha no recebimento dos dados!" End oDlg:End() SysRefresh() If ::lDownload .and. !::lError Return MontaSintegra(::cRetorno, ::aGru1, ::aGru2, ::cUF) Elseif "CNPJ:"$cSintegra // OASYS 15/03/2018 aRetorno := {} cSintegra := Subst(cSintegra, At("IE:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xIE := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CNPJ:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCGC := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Empresarial:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xAbrev := xNome := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Logradouro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xEndereco := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Nº:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xNumero := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CEP:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCEP := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Bairro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xCompl := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Município:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCidade := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("UF:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xEstado := Subst(cSintegra, 1, At("<",cSintegra)-1) AAdd(aRetorno, StrNum(xCGC,.F.)) // 1 cnpj AAdd(aRetorno, xIE ) // 2 ie AAdd(aRetorno, xNome ) // 3 razao social AAdd(aRetorno, "" ) // 4 tipo logradouro AAdd(aRetorno, xEndereco ) // 5 logradouro AAdd(aRetorno, xNumero ) // 6 numero AAdd(aRetorno, xCompl ) // 7 bairro AAdd(aRetorno, "" ) // 8 tipo bairro AAdd(aRetorno, xCidade ) // 9 cidade AAdd(aRetorno, xEstado ) // 10 estado AAdd(aRetorno, StrNum(xCEP,.F.)) // 11 cep Return( aRetorno ) Else // MsgStop(::cError,"Atenção") EndIf Return {} //----------------------------------------------------------------------------------------------------------------------// Method DownloadComplete( oAct ) Class Sintegra Local cFile := oaNetName("_","TXT") // 'Sintegra.txt' Local cHTTP := oAct:LocationURL LoGFile(cFile, {cHTTP}) LoGFile(cFile, {::cView}) TRY LoGFile(cFile, { oAct:Document:Body:InnerHtml } ) ::cBody := oAct:Document:Body:InnerHtml Catch End If ( ::cView $ cHTTP ) .OR. ::cView == cHTTP If At( ::aGru1[1], oAct:Document:Body:InnerHtml) != 0 oAct:oWnd:Hide() ::lDownload := .T. Endif ElseIf At( "não+foi+encontrado", cHTTP ) > 0 ::cError := "O CNPJ não foi encontrado na base do Sintegra." ::lError := .T. ::lDownload := .T. ElseIf At( "incorreto", cHTTP ) > 0 ::cError := "O CNPJ não é valido !" ::lError := .T. ::lDownload := .T. EndIf cSintegra := MemoRead( cFile ) FErase( cFile ) Return Nil //----------------------------------------------------------------------------------------------------------------------// Function MontaSintegra(cSintegra ,aGru1, aGru2, cUf) Local cFile := oaNetName("_","TXT") // 'Sintegra.txt' Local cLine, nLine, nTotal Local aReto := {} Local cTexto Local nPos,nPo1 Local nPegou:=0 Default cUF := "" If ValType(cSintegra)=="U" Return Nil Endif While (nPos := At("<!--%",cSintegra)) > 0 nPo1 := At("%-->",cSintegra) cTexto := SubStr(cSintegra,nPos,(nPo1-nPos)+iif( cUF$"BA" , 4, 3)) cSintegra := StrTran(cSintegra,cTexto,"") Enddo cSintegra := StrTran(cSintegra,"INFORMAÇÕES COMPLEMENTARES") cSintegra := StrTran(cSintegra,"ENDEREÇO DA EMPRESA") cSintegra := StripHTML( cSintegra ) cSintegra := GroupBy(aGru1[1],aGru1[2],cSintegra,.F.,.F.) cSintegra := RemoveBlankLineNfe( cSintegra ) nTotal := MLCount( cSintegra) MemoWrit( cFile, cSintegra ) For nLine := 1 To nTotal cLine := Alltrim(MemoLine(cSintegra,,nLine)) If AsCan(aGru2,cLine) != 0 cTexto := Alltrim(MemoLine(cSintegra,,++nLine)) If AsCan(aGru2,cTexto) != 0 //Caso não haja a informação cTexto := " " --nLine Endif If cTexto == "Data da Concessão da Inscrição:" //para o Caso do RJ cTexto := " " --nLine Endif If Left(cLine,10) == "Logradouro" //No Logradouro separa o tipo do endereco nPos := At(" ",cTexto) cNew := AllTrim(Left(cTexto,nPos)) AaDd(aReto,cNew) cTexto := AlLTrim(Right(cTexto,Len(cTexto)-nPos)) Endif AaDd(aReto,RemoveChar(cTexto,{[.],[-],[/],[:]})) Endif Next nLine FErase( cFile ) Retu(aReto) //----------------------------------------------------------------------------------------------------------------------// Static Function StripHTML( cHtml ) Local cString:= RemoveChar( cHTML, {"&","amp;","nbsp;",'<!-- ',' -->','<--','-->','||','\/','<!--%','%-->',[/\]} ) Local aMatch := HB_RegExAll("\<[^\>]*\>", cString) Aeval(aMatch,{|a|cString:=StrTran(cString,a[1])} ) Return cString //----------------------------------------------------------------------------------------------------------------------// Static Function DelUrlCache( aUrl ) Return AEval( aUrl, {|nX,nNum| DeleteUrlCacheEntry( aUrl[nNum] )} ) //----------------------------------------------------------------------------------------------------------------------// Static Function GroupBy( cStart, cEnd, cString, lTags, lBreak ) Local nBegin, nEnd Local cFound, nAT Default lTags:=.F., lBreak:=.F. nBegin := At( cStart, cString ) If(nBegin == 0 ) ; Return "" ; EndIf If(lTags == .F.) ; nBegin += Len(cStart) ; EndIf If( cEnd != Nil ) nEnd := At( cEnd, cString) // nEnd := At( cEnd, cString, nBegin ) -> tirei porque no Harbour não tem esse terceiro parâmetro If nEnd == 0 Return "" Else nEnd := nEnd - nBegin EndIf If( lTags ) nEnd += Len( cEnd ) EndIf Else If lBreak nAt := At(CRLF,Substr(cString,nBegin,Len(cString))) If nAt > 0 nEnd := nAt - 1 If nEnd < Len(cString) ; nEnd := Len(cString)+1 ; Endif Else nEnd := Len( cString ) EndIf Else nEnd := Len( cString ) EndIf EndIf cFound := Substr( cString, nBegin, nEnd ) If lBreak If lTags cFound:=StrTran(cFound,CRLF) Else If cEnd != Nil nAt := At(CRLF,cFound) If nAt > 0 cFound := Left(cFound,nAT) EndIf Endif EndIf EndIf Return cFound //----------------------------------------------------------------------------------------------------------------------// Static Function RemoveBlankLineNfe( cTexto ) Local cTextoNew:="" Local nLines, cLine, nNum nLines := MLCount( cTexto, 400) For nNum := 0 To nLines cLine := Alltrim(MemoLine( cTexto, 400, nNum )) If !Empty(cLine) If cLine == "function ocultarExibir(idDaTabela)" nNum+=14 Loop EndIf if cLine<>"Ativo".and.cLine<>"Baixado".and.cLine<>"Inativo" cTextoNew += cLine + If (nNum<nLines,CRLF,"") endif EndIf Next nNum Return cTextoNew //----------------------------------------------------------------------------------------------------------------------// Static Function RemoveChar(cString,aChar) Aeval(aChar,{|cChar|cString:=StrTran(cString,cChar)}) Return(cString) //----------------------------------------------------------------------------------------------------------------------// Static Func PegaUrls(cUF) // Nem todos os campos do html são iguais então foi colocado em forma de array para que você possa identificá-los Local aRet := {} If cUF == "AC" // http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon aRet := {"http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon",; "",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "AL" // http://www.sefaz.al.gov.br/asp/sintegra/sintegra.asp?estado=AL aRet := {"http://www.sefaz.al.gov.br/asp/sintegra/",; "sintegra.asp?estado=AL",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "AM" // http://www.sefaz.am.gov.br/sintegra/sintegra0.asp aRet := {"http://www.sefaz.am.gov.br/sintegra/",; "sintegra0.asp",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "AP" // http://www.sintegra.ap.gov.br/ aRet := {"http://www.sintegra.ap.gov.br/",; "",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "BA" // (OK)http://www.sefaz.ba.gov.br/Sintegra/sintegra.asp?estado=BA aRet := {"http://www.sefaz.ba.gov.br/Sintegra/",; "sintegra.asp?estado=BA/",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {,; "Data da Consulta:",; "Número da Consulta:",; "CNPJ:",; "Inscrição Estadual:",; "UF:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Endereço Eletrônico:",; "Telefone:",; "Atividade Econômica:",; "Data da Inscrição Estadual:",; "Usuário SEPD :",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Condição:",; "Regime de Apuração de ICMS:"; }; } ElseIf cUF == "CE" // (OK) http://www.sefaz.ce.gov.br/Sintegra/Sintegra.Asp?estado=CE aRet := {"http://www.sefaz.ce.gov.br/content/aplicacao/internet/servicos_online/sintegra/",; "sintegra.asp?estado=ce",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "RazãoSocial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "CNAE Fiscal Primário:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Recolhimento:" ; } ; } ElseIf cUF == "DF" // http://www.fazenda.df.gov.br/area.cfm?id_area=110 aRet := {"http://www.fazenda.df.gov.br/",; "area.cfm?id_area=110",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social :",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "ES" // (OK) http://www.sintegra.es.gov.br/ aRet := {"http://www.sintegra.es.gov.br/",; "",; "resultado.php",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social :",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "FN" ElseIf cUF == "GO" // http://www.sefaz.go.gov.br/sintegra/sintegra.asp aRet := {"http://www.sefaz.go.gov.br/sintegra/",; "sintegra.asp",; "consultar.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CGC/CNPJ:",; "Inscrição Estadual - CCE :",; "Nome / Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "MA" // (OK) http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/consultaSintegraFiltro.jsf aRet := {"http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/",; "consultaSintegraFiltro.jsf",; "",; {"IDENTIFICAÇÃO","Os dados acima estão baseados em"},; {"CGC:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "CNAE Principal:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "MG" // (OK) http://consultasintegra.fazenda.mg.gov.br/ aRet := {"http://consultasintegra.fazenda.mg.gov.br/sintegra/",; "",; "ctrl/SINTEGRA/SINTEGRA/CONSULTA_707",; {"Dados Principais",NIL},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "CNAE-F Principal:",; "Situação Cadastral Atual:",; "Data da Inscrição Estadual:",; "Regime de Apuração de ICMS:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "MS" aRet := {"http://www1.sefaz.ms.gov.br/cadastro/",; "CadastroMsCCI.asp",; "ResultadoCCI.asp?INSCRICAO",; {"SECRETARIA DE ESTADO DE FAZENDA",NIL},; {"CNPJ",; "INSCRIÇÃO ESTADUAL",; "RAZÃO SOCIAL/NOME",; "LOGRADOURO",; "NÚMERO",; "COMPLEMENTO",; "BAIRRO",; "MUNICÍPIO",; "UF",; "CEP",; "Telefone:",; "DESCRIÇÃO DA ATIVIDADE ECONÔMICA",; "MOTIVO DA SITUAÇÃO CADASTRAL",; "DATA DA ÚLTIMA ATUALIZAÇÃO"; } ; } ElseIf cUF == "MT" // http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica aRet := {"http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "RazãoSocial/Nome:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "AtividadeEconômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "PA" // http://app.sefa.pa.gov.br/Sintegra/ aRet := {"https://app.sefa.pa.gov.br/Sintegra/",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PB" // https://saplic.receita.pb.gov.br/sintegra/SINf_ConsultaSintegra.jsp aRet := {"https://saplic.receita.pb.gov.br/sintegra/",; "SINf_ConsultaSintegra.jsp",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PE" // http://www.sintegra.sefaz.pe.gov.br/ aRet := {"http://www.sintegra.sefaz.pe.gov.br/",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PI" // http://web.sintegra.sefaz.pi.gov.br/consulta_empresa_pesquisa.asp // http://www.sintegra.sefaz.pi.gov.br/# aRet := {"http://web.sintegra.sefaz.pi.gov.br/",; "consulta_empresa_pesquisa.asp",; "consulta_empresa_pesquisa.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PR"// (OK) http://www.sintegra.fazenda.pr.gov.br/sintegra/ aRet := {"http://www.sintegra.fazenda.pr.gov.br/",; "sintegra/",; "sintegra/",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "RJ" // (OK) http://www.fazenda.rj.gov.br/projetoCPS/consulta.jsp aRet := {"http://www.fazenda.rj.gov.br/projetoCPS/",; "consulta.jsp;jsessionid=RqRCTtJRZc6Tt0LhXgZnKh1jt8JQLx1Lk2J8HJ7xKqJpGvhQ0W4q!-1007206184",; "cpsServlet",; {"IDENTIFICAÇÃO","Data da Consulta:"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "RN" // http://www.set.rn.gov.br/uvt/consultacontribuinte.aspx aRet := {"http://www.set.rn.gov.br/uvt/",; "consultacontribuinte.aspx",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "CNAE Fiscal Primário:",; "Situação Cadastral Atual:",; "Data da Situação Cadastral:",; "Regime de Pagamento:" ; } ; } ElseIf cUF == "RO" // http://www.sefin.ro.gov.br/sint_consul.asp aRet := {"http://portal.intranet.sefin.ro.gov.br/PortalContribuinte/",; "parametropublica.jsp",; "consultapublica.jsp",; {"IDENTIFICA",Nil},; {"C.P.F/C.N.P.J:",; "Inscrição Estadual:",; "Razão Social:",; "Endereço:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Regime de Pagamento:",; "Situação Cadastral Vigente:",; "Data:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "RR" aRet := {"https://www.sefaz.rr.gov.br/sintegra/",; "servlet/hwsintco",; "servlet/hwsintpe?",; {".::IDENTIFICAÇÃO",nil},; {"CNPJ:",; "Inscrição Estadual",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Ativ. Enonômica:",; "Sit.Cad. Vigente:",; "Dta.Sit.Cadastral:"; } ; } ElseIf cUF == "RS" // http://sintegra.sefaz.rs.gov.br/sef_root/inf/Sintegra_Entrada.asp aRet := {"http://sintegra.sefaz.rs.gov.br/sef_root/inf/",; "Sintegra_Entrada.asp",; "SEF_sintegra_1.asp",; {"IDENTIFICAÇÃO","Os dados acima estão baseados em informações"},; {"CPF/CNPJ:",; "Inscrição Estadual:",; "Nome/Razão Estadual:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "CNAE-Fiscal Principal:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "SC" // http://sistemas.sef.sc.gov.br/sintegra aRet := {"http://sistemas3.sef.sc.gov.br/sintegra/",; "consulta_empresa_pesquisa.aspx",; "consulta_empresa_pesquisa.aspx",; {"IDENTIFICAÇÃO","Os dados acima estão baseados em informações"},; {"CPF/CNPJ:",; "Inscrição Estadual:",; "Nome/Razão Estadual:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "CNAE-Fiscal Principal:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "SE" // https://security.sefaz.se.gov.br/SIC/sintegra/index.jsp aRet := {"https://security.sefaz.se.gov.br/SIC/sintegra/",; "index.jsp",; "",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "SP" // (OK) http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/consultaSintegraServlet aRet := {"http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/",; "consultaSintegraServlet",; "sintegra",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "TO" // http://sintegra.sefaz.to.gov.br/ aRet := {"http://sintegra.sefaz.to.gov.br/",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } Else // SUFRAMA: https://wwws.suframa.gov.br/asp/sintegra_cadastro.asp // https://wwws.suframa.gov.br/asp/sintegra_cadastro_result.asp aRet := {"https://wwws.suframa.gov.br/asp/",; "sintegra_cadastro.asp",; "sintegra_cadastro_result.asp",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CGC:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação da Inscrição SUFRAMA:",; "Situação Cadastral:",; "Tipo(s) de Incentivo(s) para a região de domicílio da empresa :" ; } ; } Endif Retu(aRet) //----------------------------------------------------------------------------------------------------------------------// DLL Static Function DeleteUrlCacheEntry(lpszUrlName AS STRING) AS LONG PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll" //----------------------------------------------------------------------------------------------------------------------//
-
Veja nesse tópico:
-
Consegui baixar a NFe com a Classe disponível nessa discussão: http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=16972
-
Fiz uma manobra ontem no método Consulta() da classe sintegra e está funcionando para São Paulo. //----------------------------------------------------------------------------------------------------------------------// Method Consulta() Class Sintegra Local oDlg, oAct Local nTimer Local aRetorno, xIE, xCGC, xNome, xEndereco, xNumero, xCompl, xCidade, xCEP, xEstado Private cSintegra := "" If IsInternet() == .F. MsgStop("Sem conexão com a internet !") Return {} Else ::Clear() EndIf ::cRetorno := "" ::cError := "" ::lDownload := .F. ::lError := .F. Define Dialog oDlg From 0,0 To 600,900 Pixel Title "[ ("+::cUF+") SINTEGRA - Consultando ] -> Você pode colar o <CNPJ> no campo com o botão direito do mouse." // Style WS_CAPTION oDlg:lHelpIcon:=.F. Activate Dialog oDlg NoWait Centered oAct:=TActivex():New(oDlg,"Shell.Explorer",00,0,900,600) oAct:bOnEvent := {|cEv|If(cEv=="DownloadComplete",::DownloadComplete( oAct ),Nil)} oAct:Silent := .T. oAct:Navigate( ::cPost ) oAct:SetFocus() nTimer:=Seconds() While !::lDownload If !IsWindowVisible( oDlg:hWnd ) ::lDownload := .T. ::lError := .T. ::cError := "Consulta Cancelada !" ElseIf !IsInternet() ::lDownload := .T. ::lError := .T. ::cError := "Perda de conexao com a internet !" ElseIf( Seconds()-nTimer ) >= ::nTimeOut ::lDownload := .T. ::lError := .T. ::cError := "Tempo limite esgotado !" EndIf SysRefresh() End Try ::cRetorno := oAct:Document:Body:InnerHtml Catch oE ::lError := .T. ::cError := "Falha no recebimento dos dados!" End oDlg:End() SysRefresh() If ::lDownload .and. !::lError Return MontaSintegra(::cRetorno, ::aGru1, ::aGru2, ::cUF) Elseif "CNPJ:"$cSintegra // OASYS 15/03/2018 aRetorno := {} cSintegra := Subst(cSintegra, At("IE:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xIE := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CNPJ:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCGC := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Empresarial:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xAbrev := xNome := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Logradouro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xEndereco := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Nº:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xNumero := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CEP:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCEP := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Bairro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xCompl := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Município:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCidade := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("UF:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xEstado := Subst(cSintegra, 1, At("<",cSintegra)-1) AAdd(aRetorno, StrNum(xCGC,.F.)) // 1 cnpj AAdd(aRetorno, xIE ) // 2 ie AAdd(aRetorno, xNome ) // 3 razao social AAdd(aRetorno, "" ) // 4 tipo logradouro AAdd(aRetorno, xEndereco ) // 5 logradouro AAdd(aRetorno, xNumero ) // 6 numero AAdd(aRetorno, xCompl ) // 7 bairro AAdd(aRetorno, "" ) // 8 tipo bairro AAdd(aRetorno, xCidade ) // 9 cidade AAdd(aRetorno, xEstado ) // 10 estado AAdd(aRetorno, StrNum(xCEP,.F.)) // 11 cep Return( aRetorno ) Else // MsgStop(::cError,"Atenção") EndIf Return {}
-
Esse comando captura a tela inteira e grava no arquivo c:\temp\tela.jpg Vou ver se acho uma aplicação disso para o sistema. Risos
- 3 replies
-
- captura de tela
- printscreen
-
(and 1 more)
Tagged with:
-
Não entendi nada como consultar via WebService usando o certificado digital. É muito complicado!
-
Por favor, desconsidere o email anterior. Deu certo sim. Obrigado. É que em vez de colocar .F. na quinta coluna eu havia colocado .T. Excelente. Onde encontro a sintaxe completa desse comando DBCreate para SQLRDD? Não conhecia essa quinta coluna.
-
Eu criei a seguinte rotina para testar .T. na quinta coluna: MatVrf := {{"CAR0","C",015,000,.T.},; {"CAR1","C",015,000,.T.},; {"LOG0","L",001,000,.T.},; {"LOG1","L",001,000,.T.},; {"NUM0","N",015,002,.T.},; {"NUM1","N",015,002,.T.},; {"DAT0","D",008,000,.T.},; {"DAT1","D",008,000,.T.},; {"MEM0","M",010,000,.T.},; {"MEM1","M",010,000,.T.}} DbCreate(Net_Local( pDado + ArqMod ),MatVrf) if net_use("XXXXXX") for i=1 to 10 SR_BeginTransaction() OADbAppend() // só gravei os campos que terminam com ZERO para ver como ficam os que terminam com UM // replace car0 with strzero(i,15) replace log0 with .T. replace num0 with 15 replace dat0 with date() replace mem0 with "teste memo" SR_CommitTransaction() // SR_EndTransaction() next use endif Mas os campos que eu não dei um replace continuam a gravar NULL.
-
João, O site que acesso é: http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/consultaSintegraServlet Mas não consigo mais pegar os dados de lá porque ele muda para (httpS), assim: https://www.cadesp.fazenda.sp.gov.br/(S(edf0jgrankeeph55lttnft45))/Pages/Cadastro/Consultas/ConsultaPublica/ConsultaPublica.aspx Eu vejo os dados na tela mas não consigo fazer o download automático das informações para dentro do meu cadastro.
-
Depois que eles mudaram para httpS eu não consegui mais importar os dados do sintegra para o meu cadastro de clientes.
-
Eu estou tendo problemas com Campos que armazenam valor numérico. Então, se eu colocar .T. na quinta coluna ele irá gravar Zero nesse campo quando não tiver conteúdo como faz o DBF? Em campos caractere ele gravará brancos em vez de null quando não tiver conteúdo?
-
Descobri o problema, só não sei como resolver. Quando importei os dados do DBF para o SQL, os campos numéricos que estavam com ZERO foram para o banco como NULL. Daí, o sistema não consegue comparar um campo que tem um valor numérico com esse que está com NULL e não retorna os registros. Como faço para gravar ZERO no campo em vez de NULL na importação?
-
Esse é o código dentro do programa onde o usuário define se verá todas as contas ou somente as que estão em aberto: REDEFINE CHECKBOX NRTudo[01] VAR NRTudo[02] ID 103 OF oDlgP UPDATE; ON CHANGE (mReg[01]:=(cDbfNR[01])->(RECN()),mReg[02]:=(cDbfNR[01])->(ORDNUMBER()),Filtro_Contas(cDbfNR[01],NRTudo[02],"R"),DBSETORDER(mReg[02]),DBGOTO(mReg[01]),Atualiza_Campos(),oScb:goBottom()) REDEFINE SAY PROMPT "Não &mostra as contas recebidas." ID 119 COLOR CLR_RED OF oDlgP UPDATE Essas são as funções que filtram as contas: ****************************************************************************************** FUNCTION Filtro_Contas() // usada em CCREC, CCPAG ****************************************************************************************** PARAM cDbfCta,lAberto,cTipo,cCL_FO Local cFiltro := [Field->TIPO="] + cTipo + ["] if cCL_FO<>nil // Filtra Cliente/Fornecedor cFiltro = cFiltro + [.and.Field->CL_FO="]+cCL_FO+["] endif if (lAberto) // Filtra contas recebidas/pagas cFiltro = cFiltro + [.and.Field->VRDOCUM>Field->VRPgRc] endif if pFlag="*" // Se ativado o (FLAG="*") cFiltro = cFiltro + [.and.!EMPTY(Field->NR_NF+Field->CUPOM)] endif Select(cDbfCta) OASetFilter( cFiltro ) Return nil ******************************************************************************************** FUNCTION OASetFilter( cFiltro ) // Usa o filtro do SQLRDD ******************************************************************************************** Default cFiltro := "" if BDPAD="SQLRDD" cFiltro := Upper( cFiltro ) cFiltro := StrTran(cFiltro, "FIELD->", "A." ) cFiltro := StrTran(cFiltro, "==", "=" ) cFiltro := StrTran(cFiltro, ".AND.", " AND ") cFiltro := StrTran(cFiltro, ".OR.", " OR " ) SR_SetFilter( cFiltro ) else SET FILTER TO &cFiltro endif Return nil Essa função funciona dom DBFCDX, mas não funciona com SQLRDD.