Exemplo do Ponto de Entrada M460NUM.
Exemplo do Ponto de Entrada:
//Bibliotecas
#Include "Protheus.ch"
/*-----------------------------------------------------------------------------*
| P.E.: M460NUM |
| Desc: Função para alterar a sequencia de documentos antes da transmissão |
| Link: http://tdn.totvs.com/pages/releaseview.action?pageId=6784193 |
*-----------------------------------------------------------------------------*/
User Function M460NUM()
Local aArea := GetArea()
Local cQrySped := ""
Local lAmbOfic := IIf(Alltrim(Upper(GetEnvServer())) $ Alltrim(Upper(GetNewPar("MV_X_AMBIE",""))),.T.,.F.) //Verifica se esta usando ambiente oficial
Local cBaseTSS := Iif(lAmbOfic, "TOTVSTSS.dbo.", "TSS_TST.dbo.")
Local lExist := .T.
Local cNumNovo := cNumero
Local cFilSped := cFilAnt
//Se vier do cálculo de documentos do TMS
If Alltrim(FunName()) $ "TMSA200;"
While lExist
cQrySped := " SELECT "+CRLF
cQrySped += " SP50.NFE_ID "+CRLF
cQrySped += " FROM "+CRLF
cQrySped += " "+cBaseTSS+"SPED050 SP50 "+CRLF
cQrySped += " WHERE "+CRLF
cQrySped += " SP50.NFE_ID = '"+cSerie+cNumNovo+"' "+CRLF
cQrySped += " AND SP50.ID_ENT = '"+RetIdEnti()+"' "
TCQuery cQrySped New Alias "QRY_SPED"
//Se não tiver registro, finaliza o laço, senão, soma 1 ao número
If QRY_SPED->(EoF())
lExist := .F.
Else
cNumNovo := Soma1(cNumNovo)
EndIf
QRY_SPED->(DbCloseArea())
EndDo
//Se os números tiverem divergentes, atualiza a SX5
If cNumNovo != cNumero
cLog := "Filial: "+cFilAnt+CRLF
cLog += "Série: "+cSerie+CRLF
cLog += "Número Original: "+cNumero+CRLF
cLog += "Número Novo: "+cNumNovo+CRLF
cLog += "Usuário: "+RetCodUsr()//+" - "+UsrRetName(RetCodUsr())
//Se conseguir posicionar no registro, atualiza colocando sempre o próximo número disponível
DbSelectArea("SX5")
SX5->(DbSetOrder(1))
If SX5->(DbSeek(cFilSped + '01' + cSerie ))
RecLock("SX5", .F.)
X5_DESCRI := Soma1(cNumNovo)
X5_DESCENG := Soma1(cNumNovo)
X5_DESCSPA := Soma1(cNumNovo)
MsUnlock()
Endif
//Atualizando a numeração atual
cNumero := cNumNovo
EndIf
EndIf
RestArea(aArea)
Return .T.
Observações:
– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;