Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Informações
titleImportante

Esta rotina contempla apenas solicitações do Protheus. As viagens integradas com o Reserve não geram solicitação, pois são compradas e emitidas diretamente pela agência.

Aviso
titleAtenção


Nos itens da viagem será possível selecionar e justificar/detalhar os seguintes serviços:

...

Aviso
titleAtenção
  • Estes itens de serviço são parametrizáveis e estão no Assistente de Configuração. Caso a empresa não ofereça algum destes itens em sua política, será possível oculta-lo(s).
  • O item Outros é o único em que não é necessário a compra de serviço, logo solicitações somente com este serviço não passam pela etapa de conferência da solicitação, por essa razão o email informando que a solicitação de viagem finalizada não é disparado. Esta é necessária quando um colaborador deseja solicitar somente um adiantamento, pois irá fazer, por exemplo, uma visita a um cliente com veículo próprio e deseja somente o adiantamento.

...

Ou então pode ser que apenas uma das aprovações seja necessária, neste caso temos:


Aviso
titleImportante
Quando não existir a etapa de aprovação de viagens, para que a solicitação de viagens (FW3), se torne uma viagem (FL5) e possa dar continuidade ao fluxo, a solicitação passará obrigatoriamente pelo conferencia do departamento de viagens, na rotina de solicitação de viagens (FINA666) vá em OUTRAS AÇÕES → Enc. p/ Dpto Viagens (Gerando a viagem na rotina FINA665)


02. EXEMPLO DE UTILIZAÇÃO

Acesso à rotina pelo caminho: Atualizações > Viagens > Solicitação de Viagem

O viajante deve informar os dados básicos da viagem no cabeçalho da sua solicitação, como origem e destino, datas de partida e chegada, cliente para atendimento (se houver), etc.
Para cada serviço deve ser informado o(s) Participante(s) e a(s) sua(s) respectiva(s) Entidade(s) de Custo.



Além disso, na aba Adiantamentos é possível marcar quais participantes receberão adiantamento.

Informações
iconfalse
titleImportante

Se a opção "Bloqueia Adiantamento" estiver com "1=Sim", o sistema passará a não permitir a geração do adiantamento, caso exista alguma prestação de contas em aberto para o participante na filial no qual está sendo incluída a solicitação, conforme parametrização das configurações "Dias (max.)" e "Quantidade (max.)".


O valor calculado é uma previsão e é exibido somente quando estiver parametrizado:

...

Para execução da rotina automática, ilustramos algumas funcionalidades como Inclusão (MyFA666Inc), Alteração (MyFA666Alt) e Exclusão (MyFA666Del), nos seguintes exemplos:

...

Bloco de código
languagejava
themeMidnight
titleExemplo de execução da rotina automática
collapsetrue
#INCLUDE "PROTHEUS.CH"

...


#INCLUDE "FWMVCDEF.CH"

...



//---------- Inclusao da solicitacao de viagem ----------//

...


User Function MyFA666Inc()

...



Local oModel := Nil

...


Local oModelFW3 := Nil

...


Local oModelFW4 := Nil

...


Local oModelFW5 := Nil

...


Local oModelFW6 := Nil

...


Local cFilAtu := ""

...



RpcSetEnv("T1","D MG 01 ","

...

claudio.ribeiro","1") // Inicializa ambiente com usuario solicitante

...



oModel := FWLoadModel("FINA666")

...


oModelFW3 := oModel:GetModel("FW3MASTER") // Cabecalho da viagem

...


oModelFW4 := oModel:GetModel("FW4DETAIL") // Servicos

...

 
oModelFW5 := oModel:GetModel("FW5DETAIL") // Participantes

...


oModelFW6 := oModel:GetModel("FW6DETAIL") // Centro de custo

...


cFilAtu := xFilial("FW3")

...



oModel:SetOperation(MODEL_OPERATION_INSERT)

...


oModel:Activate()

...


// Preenche cabecalho da solicitacao de viagem

...


oModelFW3:SetValue("FW3_FILIAL",cFilAtu)

...


oModelFW3:SetValue("FW3_NACION","1")

...


oModelFW3:SetValue("FW3_CODORI","SP")

...


oModelFW3:SetValue("FW3_CODDES","RJ")

...


oModelFW3:SetValue("FW3_DTINI",StoD("20190702"))

...


oModelFW3:SetValue("FW3_DTFIM",StoD("20190705"))

...


oModelFW3:SetValue("FW3_CLIENT","001 ")

...


oModelFW3:SetValue("FW3_LOJA","01")

...


oModelFW3:SetValue("FW3_STATUS","0") // Em Aberto, status inicial

...


// Preenche grid do servico incluso na solicitacao da viagem

...


oModelFW4:SetValue("FW4_ITEM",StrZero(1,TamSX3("FW4_ITEM")[1]))

...


oModelFW4:SetValue("FW4_TIPO","1") // Aereo

...


oModelFW4:SetValue("FW4_OBS", "Visita ao cliente")

...


// Preenche grid dos participantes viajantes

...


oModelFW5:SetValue("FW5_ITEM",StrZero(1,TamSX3("FW4_ITEM")[1]))

...


oModelFW5:SetValue("FW5_PARTIC","000001")

...


oModelFW5:SetValue("FW5_ADIANT",.T.) // Adiciona adiantamento ao participante

...


oModelFW5:AddLine() // Adiciona linha para um segundo viajante

...


oModelFW5:SetValue("FW5_ITEM",StrZero(2,TamSX3("FW4_ITEM")[1]))

...


oModelFW5:SetValue("FW5_PARTIC","000002")

...


oModelFW5:SetValue("FW5_ADIANT",.T.) // Adiciona adiantamento ao participante

...


// Preenche grid do centro de custo

...


oModelFW6:SetValue("FW6_ITEM",StrZero(1,TamSX3("FW4_ITEM")[1]))

...


oModelFW6:SetValue("FW6_CC","002 ")

...


oModelFW6:SetValue("FW6_PORCEN",100)

...


oModelFW5:GoLine(1)

...


// Validacao e gravacao dos dados se consistentes

...


If oModel:VldData()

...

 
     oModel:CommitData()

...


     Conout("Inclusao da solicitacao de viagem concluida com sucesso.")

...


Else 
     VarInfo("",oModel:GetErrorMessage())

...


     Conout("Erro na validacao, solicitacao de viagem nao foi incluida.")

...


EndIf

...



oModel:DeActivate()

...


oModel:Destroy()

...


RpcClearEnv()

...



Return


//---------- Alteracao da solicitacao de viagem ----------//

...


User Function MyFA666Alt()

...



Local aKeyFW4 := {}

...


Local oModel := Nil

...


Local oModelFW5 := Nil

...


Local oModelFW6 := Nil

...


Local cSolic := "0000000010"

...



RpcSetEnv("T1","D MG 01 ","

...

richard.santos","1") // Inicializa ambiente com usuario solicitante

...



dbSelectArea("FW3")

...


dbSetOrder(1)

...


dbSeek(xFilial("FW3")+cSolic)

...


// Carrega modelo de dados com a solicitacao de viagem posicionada

...


oModel := FWLoadModel("FINA666")

...


oModelFW5 := oModel:GetModel("FW5DETAIL") // Participantes

...


oModelFW6 := oModel:GetModel("FW6DETAIL") // Centro de custo

...


// Chave de busca do participante dentro da sol. da viagem

...


aKeyFW4 := { {"FW5_FILIAL",xFilial("FW5")},{"FW5_SOLICI",cSolic},{"FW5_ITEM","01"},{"FW5_PARTIC","000002"} }

...



oModel:SetOperation(MODEL_OPERATION_UPDATE)

...


oModel:Activate()

...


// Remove um dos viajantes, no caso o participante 000002

...


If oModelFW5:SeekLine(aKeyFLE)

...


     oModelFW5:DeleteLine()

...


Else
     Conout("Viajante nao encontrado nesta solicitacao de viagem.")

...


EndIf

...


// Altera o centro de custo (posicionado automaticamente no primeiro grid)

...


oModelFW6:SetValue("FW6_CC","003 ")

...



// Validacao e gravacao dos dados se consistentes

...


If oModel:VldData()

...

 
     oModel:CommitData()

...


     Conout("Alteracao da solicitacao de viagem efetuada com sucesso.")

...


Else 
     VarInfo("",oModel:GetErrorMessage())

...


     Conout("Erro na validacao, solicitacao de viagem nao foi alterada.")

...


EndIf

...



oModel:DeActivate()

...


oModel:Destroy()

...


RpcClearEnv()

...



Return


//---------- Exclusao da solicitacao de viagem ----------//

...


User Function MyFA666Del()

...



Local oModel := Nil

...


Local cSolic := "0000000010"

...



RpcSetEnv("T1","D MG 01 ","

...

claudio.ribeiro","1") // Inicializa ambiente com usuario solicitante

...



dbSelectArea("FW3")

...


dbSetOrder(1)

...


dbSeek(xFilial("FW3")+cSolic)

...


// Carrega modelo de dados com a solicitacao de viagem posicionada

...


oModel:= FWLoadModel("FINA666")

...


oModel:SetOperation(MODEL_OPERATION_DELETE)

...


oModel:Activate()

...



// Validacao e gravacao da exclusao

...


If oModel:VldData()

...

 
     oModel:CommitData()

...


     Conout("Solicitacao de viagem excluida com sucesso.")

...


Else 
     VarInfo("",oModel:GetErrorMessage())

...


     Conout("Erro na validacao, solicitacao de viagem nao foi excluida.")

...


EndIf

...



oModel:DeActivate()

...


oModel:Destroy()

...


RpcClearEnv()

...



Return



...

04. TABELAS UTILIZADAS

  • FW3 - Cabeçalho da Solicitação
  • FW4 - Serviços (itens)
  • FW5 - Participantes
  • FW6 - Entidades de Custos

...