Jump to content
Fivewin Brasil

HERGON

Membros
  • Posts

    270
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by HERGON

  1. Olá

    Implementamos no nosso PDV utilizando SHIPAY.

    Nessa integração vc consegue disponibilizar para vários bancos e carteiras digitais sem ter que fazer um a um, compensa dar uma olhada.

    Att.

    Herberson Gontijo

  2. Bom dia

    Eu faço assim, talvez ajude:

     

    Function fAcertarDtHr(lMostraOk)
       Local oWeb, cWeb, cProcura, cExtrai, cHora, cData, lAjusta:=.f.
        Default lMostraOk:=.t.
       If !VerificaNet()
            If lMostraOk
             fMsgStop("Computador não está conectado na internet.", "Sem Acesso à Internet")
          Endif
          Return .f.
       Endif
       MsgAguarde("Verificando data/hora pela internet.", "Aguarde...")
       SysRefresh()
       CursorWait()
       oWeb    := WebConnect():New()
       cWeb    := oWeb:Open( "http://www.horacerta.com.br/index.php?city=sao_paulo" )
       cProcura:= '<input name="mostrador" type="text" size="25" value="'
       cExtrai := Subs(cWeb, At(cProcura,cWeb)+53,24)
       cData   := Alltrim(Left(alltrim(cExtrai),10))
       cHora   := Alltrim(StrZero(If(Right(cExtrai,2)=="PM" .and. Val(subs(cExtrai,14,2))<=11, 12, 0)+Val(subs(cExtrai,14,2)),2)+":"+subs(cExtrai,17,5))
       If Val(GetPvProfString("Diversos", "Ajuste da Hora", "", CurDrive()+":\"+CurDir()+"\"+cNomeTerm+".ini"))==0
          // Não alterar a hora
       Elseif Val(GetPvProfString("Diversos", "Ajuste da Hora", "", CurDrive()+":\"+CurDir()+"\"+cNomeTerm+".ini"))==1
          cHora := TsTring(Secs(cHora)-3600)
       Else
          cHora := TsTring(Secs(cHora)+3600)
       Endif

        MsgFechaAguarde()
       If Ctod(cData)<>Date() .and. Val(cData)<>0 .and. Subs(cHora,1,5)<>Subs(Time(),1,5) .and. Val(cHora)<>0
          If MsgYesNo("Data e hora da Internet:"+CRLF+;
                      cData+"  -  "+cHora+CRLF+CRLF+;
                      "Data e hora do computador:"+CRLF+;
                      Dtoc(Date())+"  -  "+Time()+CRLF+CRLF+;
                      "Deseja ajustar a data e hora?", "Data e hora do computador parecem desatualizadas.")
             lAjusta:=.t.
          Endif
       Elseif Ctod(cData)==Date() .and. Val(cData)<>0 .and. Subs(cHora,1,5)<>Subs(Time(),1,5) .and. Val(cHora)<>0
          If MsgYesNo("Hora da Internet:"+CRLF+;
                      cHora+CRLF+CRLF+;
                      "Hora do computador:"+CRLF+;
                      Time()+CRLF+CRLF+;
                      "Deseja ajustar a hora?", "A hora do computador está desatualizada")
             lAjusta:=.t.
          Endif
       Elseif Ctod(cData)<>Date() .and. Val(cData)<>0 .and. Subs(cHora,1,5)==Subs(Time(),1,5) .and. Val(cHora)<>0
          If MsgYesNo("Data da Internet:"+CRLF+;
                      cData+CRLF+CRLF+;
                      "Data do computador:"+CRLF+;
                      Dtoc(Date())+CRLF+CRLF+;
                      "Deseja ajustar a data?", "A data do computador está desatualizada")
             lAjusta:=.t.
          Endif
       Else
            If lMostraOk
             MsgInfo("A data/hora do seu computador conferem com as informações da internet."+CRLF+CRLF+;
                     "Data: "+cData+"  -  Hora: "+cHora, "Informações da Internet")
              Endif
       Endif
       If lAjusta
          MsgRun( "Ajustando data e hora.", "Aguarde...", { || fAjustaDataHora(cData, cHora) } )
          MsgInfo("Ajuste realizado com sucesso.", "Ajuste")
       Endif
    Return Nil

    Static Function fAjustaDataHora(cData, cHora)
       MyRun( "date "+cData )
       MyRun( "time "+cHora )
       If Ctod(cData) <> date()
          MyRun("timedate.cpl") //abre tela data e hora windows
       Endif
    Return .t.
     

    Tem algumas funções próprias, mas comente e teste.

    Herberson Gontijo

  3. Realmente, acho que tive que mexer na classe, só agora estou lembrando... vou colar aqui.

    // Consulta NF-e destinadas
    Method distNSU(cSiglaUFDestinado,cCNPJDestinatario,cUltNSURecebido,cVerAplic,cUltNsu,cMaxNsu,nQtdeDocto,uRetorno,lRetArray) Class TVoNFeUtil2G
        Local nStat:=0
        Local cMsgResultado:="",nIndContinuacao:=1
        local cMsgDados:="", cMsgRetWS:="",cRetTxt:="",aRegistro:={},oTxt
       Default cSiglaUFDestinado:=::SiglaUF,cUltNSURecebido:="0",cUltNsu:="0",lRetArray:=.t.
        Default cVerAplic:="",cMaxNsu:="",nQtdeDocto:=1
       ::Limpa()
       If ::CertificadoSelecionado()
           If ::ConsultaStatus()
                Try
    /*
                    cRetTxt+=::oNFEUtil:distNSU("AN",::Ambiente, ::cCertificado,;
                                      "4.00", @cMsgDados, @cMsgRetWS,@nStat,;
                                      @cMsgResultado,cCNPJDestinatario,cSiglaUFDestinado,;
                                      cUltNSURecebido,@cVerAplic,@::Recebimento,@cUltNsu,;
                                      @cMaxNsu,@nQtdeDocto,;
                                      ::proxy,::usuario,::senha,::Licenca)
    */
                    cRetTxt+=::oNFEUtil:distNSU("AN",::Ambiente, ::cCertificado,;
                                      "4.00", @cMsgDados, cMsgRetWS,@nStat,;
                                      cMsgResultado,cCNPJDestinatario,cSiglaUFDestinado,;
                                      cUltNSURecebido,cVerAplic,::Recebimento,@cUltNsu,;
                                      @cMaxNsu,@nQtdeDocto,;
                                      ::proxy,::usuario,::senha,::Licenca)

                Memowrit("manifest.txt", cRetTxt, .f.)
              Catch oError
                  fMsgStop("Erro! oNFeUtil:DistNSU."+CRLF+;
                          "Error: " + cValToChar( oError:GenCode) + CRLF + ;
                          "SubC: " + cValToChar( oError:SubCode ) + CRLF + ;
                          "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ;
                          "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + ;
                          "Operação: " + cValToChar( oError:Operation ) + CRLF + ;
                          "Mensagem: " + oError:Description, CAPTION_MSG)
                    Return(.f.)
                End Try
                ::cStsNFe     := Alltrim(Str(nStat))
                ::cStsNFeMsg  := cMsgResultado
                ::Protocolo   := cUltNsu
           Else
                  //Tratar erro para servidor fora
           Endif
           If !Empty(cRetTxt)
                ::lAutorizada:=.t.
                If lRetArray
                    While .t.
                       nPos:=At(CHR(13), cRetTxt)
                       If nPos>0
                            AAdd(uRetorno, {Subs(cRetTxt,1,15), Subs(cRetTxt,17,35), Subs(cRetTxt,53,nPos-53)})
                            cRetTxt:=Subs(cRetTxt,nPos+1)
                        Else
                           Exit
                        Endif
                    Enddo 
                 Else
                      uRetorno:=cRetTxt
               Endif
            Endif
       Endif
    Return( ::lAutorizada )
     

     

    Att.

    Herberson Gontijo

     

     

  4. Empresoft

    Você está fazendo o teste com o certificado do cliente e está configurado para PRODUCAO? Porque se tiver para HOMOLOGAÇÃO, não mostrará as NF-e's que foram emitidas contra o CNPJ dele em produção não.

    Tente passar o cUltNsuRec :="0" para processar desde o começo.

    Att.

    Herberson Gontijo

     

  5. Faça assim:

       oNfeUtil:distNSU(cUfManif,cCnpjManif,cUltNsuRec,"",@cUltNsu,@cMaxNsu,1,@aRegistros)
       If oNfeUtil:cStsNFe=="7001" .or. oNfeUtil:cStsNFe=="7003"
          fMsgStop("Licença da dll da FlexDocs não confere, contacte o suporte.", "Atenção")
          cChaveDll:=" "
          Return .f.
       Endif
       If Len(aRegistros)==0
          MsgAlert("Não existe nenhum documento pendente.","Consulta")
       Else

         xbrowse(aRegistros)

       Endif

     

    Att.

    Herberson Gontijo

  6. Olá

    Já tem um bom tempo que fiz, mas pelo que me lembro há problemas ao se passar as variáveis por referencia... Estou utilizando assim e dá certo:

     oNfeUtil:distNSU(cUfManif,cCnpjManif,cUltNsuRec,"",@cUltNsu,@cMaxNsu,1,@aRegistros)

    Passe por referência apenas as variáveis estritamente necessárias e retire "@" das demais, conforme acima.

    Att.

    Herberson Gontijo
     

  7. Bom dia

    Vitor, fiquei na sexta-feira o dia inteiro tentando resolver esse problema, inclusive abri ticket na Flexdocs... no final do dia com a resposta da Flexdocs e a interpretaão/ajuda do Gilmer conseguimos resolver (ele, rsrsrs).

    Teve que mudar a classe... se o trecho...

            ElseIf CSOSN=="500"
                AAdd( axArray, {"ICMSSN500" , {}, 1  } ); nPos := len(axArray)
                AAdd( axArray[nPos][2], {"orig"                 , TVoNFeItem():New("N", 1, 1, 1  ,,,oItem:orig )  }  )
                AAdd( axArray[nPos][2], {"CSOSN"             , TVoNFeItem():New("N", 1, 1, 3  ,,,oItem:CSOSN )  }  )
                AAdd( axArray[nPos][2], {"vBCSTRet"         , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vBCSTRet   )  }  )
                AAdd( axArray[nPos][2], {"pST"            , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:pST         )  }  )
                AAdd( axArray[nPos][2], {"vICMSSTRet"      , TVoNFeItem():New("N", 0, 1, 15,2,,oItem:vICMSSTRet  )  }  )
             AAdd( axArray[nPos][2], {"vBCFCPSTRet"    , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vBCFCPSTRET )  }  )
             AAdd( axArray[nPos][2], {"pFCPSTRet"      , TVoNFeItem():New("N", 0, 1, 6 ,2 ,,oItem:pFCPSTRET   )  }  )
             AAdd( axArray[nPos][2], {"vFCPSTRet"      , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vFCPSTRET   )  }  )
     

    Att.

    Herberson Gontijo

     

  8. Bom dia

    Tentei rodar o exemplo mas deu o erro abaixo:

    Error: Unresolved external '_hb_partdt' referenced from H:\FWH1608\LIB\FIVEHX.LIB|VALTOSTR

    Esse exemplo é para xHarbour ou Harbour? Se for para Harbour como passo para funcionar com xHarbour?

    Herberson Gontijo

×
×
  • Create New...