PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Sefaz Monitor Faixa
Versão:
.
Plataforma:
.
Complemento:
DB:
.
Complemento:
LinkedIn
Mensagem do Enviar e-mail Abrir o Perfil do usuário LEXX LEXX em 21/03/2018, 18:10 h
Local: MG  Registro: 01/07/2015  Postagens: 87
Galera, tenho uma rotina que monitora se a nota fiscal foi autorizada ou não na Sefaz.

Quando eu rodo ela, para as notas de saída, ele verifica se a nota foi autorizada, e a nota fica com a legenda (verde) de autorizada, e ele grava a chave de acesso da nota no campo F2_CHVNFE e também o F2_FIMP

Para as notas de saída (SF2) funciona direito, mas para as notas de entradas (SF1) não funciona, eu tenho que acessar manualmente a rotina de monitor pra ver se foi ou não autorizada para poder gravar os campos de F1_CHVNFE.

Veja abaixo a rotina, alguém tem alguma versão mais atualizada, ou usa outro método que funcione?



user function MonitNFe(cAlias)
//--------------------------------------------------------------------------------------------------------------------------

local cIdEnt := ""
local cMensagem := ""
local oWS
local cProg := "MonitNFe.prw"

cURL := PadR(GetNewPar("MV_SPEDURL","http://"),250)

If CTIsReady() // Verifica se a conexao com o TSS pode ser estabelecida
     cIdEnt := u_GetIdEnt(.T.)
     If !Empty(cIdEnt)
          oWs:= WsNFeSBra():New()
          oWs:cUserToken   := "TOTVS"
          oWs:cID_ENT      := cIdEnt
          oWs:_URL        := AllTrim(cURL)+"/NFeSBRA.apw"
          oWs:cNFECONSULTAPROTOCOLOID := IIF(cAlias=="SF1",SF1->F1_SERIE+SF1->F1_DOC,SF2->F2_SERIE+SF2->F2_DOC)

          If oWs:ConsultaProtocoloNfe()
               cMensagem := ""
               If !Empty(oWs:oWSCONSULTAPROTOCOLONFERESULT:cVERSAO)
                    cMensagem += oWs:oWSCONSULTAPROTOCOLONFERESULT:cVERSAO+CRLF
               EndIf

               cMensagem += IIf(oWs:oWSCONSULTAPROTOCOLONFERESULT:nAMBIENTE==1,"Produção","Homologação")+CRLF //"Produção"###"Homologação"
               cMensagem += oWs:oWSCONSULTAPROTOCOLONFERESULT:cCODRETNFE+CRLF
               cMensagem += oWs:oWSCONSULTAPROTOCOLONFERESULT:cMSGRETNFE+CRLF

               If !Empty(oWs:oWSCONSULTAPROTOCOLONFERESULT:cPROTOCOLO)
                    cMensagem+= oWs:oWSCONSULTAPROTOCOLONFERESULT:cPROTOCOLO+CRLF
               EndIf

               If !Empty(oWs:oWSCONSULTAPROTOCOLONFERESULT:cPROTOCOLO)
                    Do Case
                         Case cAlias == "SF1" .And. SF1->(FieldPos("F1_FIMP"))<>0
                              RecLock("SF1")
                                   SF1->F1_FIMP := "S"
                              MsUnlock()
                         Case cAlias == "SF2"
                              RecLock("SF2")
                                   SF2->F2_FIMP := "S"
                              MsUnlock()
                    EndCase
               EndIf
                    
               If oWs:oWSCONSULTAPROTOCOLONFERESULT:cCODRETNFE $ RetCodDene() // Uso Denegado
                    Do Case
                         Case cAlias == "SF1" .And. SF1->(FieldPos("F1_FIMP"))<>0
                         RecLock("SF1")
                              SF1->F1_FIMP := "D"
                         MsUnlock()
                    Case cAlias == "SF2"
                         RecLock("SF2")
                              SF2->F2_FIMP := "D"
                         MsUnlock()
                    EndCase
               EndIf
          else
               u_MsgLog(cProg,IIf(Empty(GetWscError(3)),GetWscError(1),GetWscError(3)))
          endif
     else
          u_MsgLog(cProg,"Erro ao buscar o GetIdEnt no TSS.")
     endif
else
     u_MsgLog(cProg,"Execute o módulo de configuração do TSS, antes de utilizar esta opção!!!")
endif

return

Mensagem do Enviar e-mail Abrir o Perfil do usuário LEXX LEXX em 21/03/2018, 18:16 h
Local: MG  Registro: 01/07/2015  Postagens: 87
Caso alguém tenha o programa: SPEDNFE.PRX mais recente e puder me enviar agradeço, pois daí consigo ver como é a chamada da rotina padrão que a Totvs usa no (Monitor - Faixa)

Obrigado

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 22/03/2018, 12:27 h
Local: SP  Registro: 20/08/2010  Postagens: 670
Melhor usar a função padrão procMonitorDoc()
procMonitorDoc (
     cIdEnt          Entidade do TSS para processamento
     cUrl          endereço do Web Wervice no TSS
     aParam          Parametro para a busca dos documetnos, de acordo com o tipo nTpMonitor
     nTpMonitor     tipo do monitor (1=por intervalo de notas, 2=por lote de IDs,3=por tempo)
     cModelo          modelo do documento (se não for passado, será assumido ‘55‘)
     lCte          indica se o modelo é Cte
     cAviso          variavel que receberá uma possível mensagem de erro (deve ser passada por referência)
     lUsaColab     indica se usa TOTVS colaboração
)

se nTpMonitor=1 -> aParam := { SerieNF, NotaINI, NotaFIM, DataDe, DataAte }
se nTpMonitor=2 -> aParam := { {IDLote}, {IDLote}, {IDLote}, {IDLote} }
se nTpMonitor=3 -> aParam := { Tempo }

a função retorna um array, com a seguinte estrutura:
{ cId,
cSerie,
cNota,
cProtocolo,
cRetCodNfe,
cMsgRetNfe,
nAmbiente,
nModalidade,
cRecomendacao,
cTempoDeEspera,
nTempomedioSef,
aLote,
lUpd,
.F.
}          
onde:
nAmbiente -> 1=Produção, 2=Homologação
nModalidade ->     se lUsaColab: 1=Normal, n=Contingencia
          se lUsaColab=.F.: 1,4 ou 6=Normal, n=Contingência




exemplo de uso numa função de usuário:

#include "totvs.ch"

user function MonitNFE( Serie, NotaIni, NotaFim )
local cURL          := alltrim(PadR(GetNewPar("MV_SPEDURL","http://"),250))
local aParam          := { Serie, NotaIni, NotaFim }
local nTpMonitor     := 1 // por intervalo de notas
local cModelo          := "55" // NFe
local lCte          := .F.
local cAviso          := ""
local lUsaColab          := .F.
local aRetorno
local cIdEnt, cError

     If CTIsReady(,,,lUsaColab)
          //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
          //³Obtem o codigo da entidade                                              ³
          //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
          cIdEnt := getCfgEntidade(@cError)
          
          if !empty(cError)
               Alert(cError)
               return
          endif
     Endif

     aRetorno := procMonitorDoc(cIdEnt, cUrl, aParam, nTpMonitor, cModelo, lCte, @cAviso, lUsaColab)

     if empty(cAviso) // tudo certo
          // faz a varredura no aRetorno

     else // ocorreu alguma falha
          Alert(cAviso)
     endif
return

é importante notar que a única função de usuário é a própria MonitNFE; todas as outras são funções padrão.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal