Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by oribeiro

  1. oribeiro

    NFe 4.00

    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.
  2. Vocês repararam que o comando SR_AddConnection( CONNECT_MYSQL, cConString1 ) cria DUAS conexões no banco de dados? É uma falha do SQLRDD?
  3. Consegui pegar, mas para cada usuário conectado ele retorna duas conexões. Isso é normal?
  4. oribeiro

    NFe 4.00

    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.
  5. 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
  6. oribeiro

    NFe 4.00

    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.
  7. 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?
  8. Como posso criar um banco de dados POSTGRES automaticamente por dentro do programa usando o SQLRDD?
  9. Alain, Se você fizer alguma melhoria nessa função, por favor, poste aqui para que todos tirem proveito.
  10. 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.
  11. ********************************************************************************************* 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")
  12. oribeiro

    NFe 4.00

    Estou usando NF 4.0 com ACBr, ficou show de bola. Recomendo.
  13. 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" //----------------------------------------------------------------------------------------------------------------------//
  14. Consegui baixar a NFe com a Classe disponível nessa discussão: http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=16972
  15. 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 {}
  16. 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
  17. Não entendi nada como consultar via WebService usando o certificado digital. É muito complicado!
  18. 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.
  19. 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.
  20. 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.
  21. Depois que eles mudaram para httpS eu não consegui mais importar os dados do sintegra para o meu cadastro de clientes.
  22. 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?
  23. 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?
  24. 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.
×
×
  • Create New...