Histórico da Página
...
Índice | ||||||
---|---|---|---|---|---|---|
|
01. VISÃO GERAL
A nova rotina de Registro de Viagem Modelo 3Pendências, permite a inclusão de viagens (entrega / transporte), permitindo selecionar as rotas e os documentos em aberto vinculados a ela pela consulta padrão.
...
o gerenciamento das pendências de forma automática, selecionando-se a operação desejada e também os campos que devem ser complementados no registro.
02. OBJETIVO DE UTILIZAÇÃO
Realizar processamento da rotina (inclusão de registro) de Viagem Mod. 3 de gerenciamento das pendências de forma automática.
03. PARÂMETROS
O conteúdo das variáveis deverão ser enviados no instante da execução da rotina. Vide exemplo abaixo:
- cFilPnd - Filial de origem da pendência.
- cNumPnd - Número da pendência.
- aDados - Campos que devem ser alterados.
- nOpcao - Opção de execução do fonte.
- cTMSCOSB - Deverá ser informada Identificação Produto na Conciliação Sobras/Faltas 0=Não Utiliza,1=Obrigatório,2=Não Obrigatório
Variáveis estáticas que devem ser carregadas via função TMSAF89Set:
- nRotExt - Carrega rotina que deverá ser executada (10 - Indenizar / 11 - Encerrar / 12 - Estornar)
- nRadio - Carrega opção no encerramento da pendência, quando nRotExt for igual a 11 (1 - Somente Encerrar / 2 - Re-entregar / 3 - Devolver)
- lConAut - Carrega o fechamento automático da conciliação (.F. - Não / .T. - Sim)
- lPergUsu - Carrega a exibição das perguntas ao usuário (.F. - Não exibe / .T. - Exibe)
04. EXEMPLO DE EXECUÇÃO DE PROGRAMA
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE "TOTVSPROTHEUS.CH" #INCLUDE "protheus.ch" #INCLUDE 'FWMVCDEF.ch' User Function IncVgeMod3() Local cCodVei := "TMS001" // Código do veículo Local cCodRb1 := "" // Código do primeiro Reboque Local cCodRb2 := "" // Código do segundo Reboque Local cCodMot := "TMS001" // Código do motorista /*{Protheus.doc} AutoPend Exemplo de Rotina Automática da Pendência @type Static Function @author Totvs @since 31/01/2025 @version P12 R12.1.29 @param nOpcao @return return, return_type, return_description @example EncPende() (examples) @see (links_or_references) */ User Function AutoPend(cFilPnd,cNumPnd,aDados,nOpcao) Local aDadosDUU := {} Local aAreas := {DUU->(GetArea()),GetArea()} Local aCamposDUU := {} Local lRet := .T. Local cRotanCntFor1 := "ENTSP3" //Código da rota oModel := FwLoadModel("TMSAF60") oModel:SetOperation(MODEL_OPERATION_INSERT) oModel:Activate() //---- DTQ oModel:SetValue( "MdFieldDTQ", "DTQ_SERTMS" , StrZero( 3, Len( DTQ->DTQ_SERTMS )) ) oModel:SetValue( "MdFieldDTQ", "DTQ_TIPTRA" , StrZero( 1, Len( DTQ->DTQ_TIPTRA )) ) oModel:SetValue( "MdFieldDTQ", "DTQ_TIPVIA" , StrZero( 3, Len( DTQ->DTQ_TIPVIA )) ) //Planejada oModel:SetValue( "MdFieldDTQ", "DTQ_ROTA" , AllTrim(cRota) ) //---- DTR oModel:SetValue( "MdGridDTR", "DTR_ITEM" , StrZero( 1, Len( DTR->DTR_ITEM ) )) oModel:SetValue( "MdGridDTR", "DTR_CODVEI" , cCodVei) If !Empty( cCodRb1 ) oModel:SetValue( "MdGridDTR", "DTR_CODRB1" , cCodRb1) EndIf If !Empty( cCodRb2 ) oModel:SetValue( "MdGridDTR", "DTR_CODRB2" , cCodRb2) EndIf //--- DUP oModel:SetValue( "MdGridDUP", "DUP_CODMOT" , cCodMot) oModel:SetValue( "MdGridDUP", "DUP_CONDUT" , '1') If !oModel:VldData() .Or. !oModel:CommitData() AAdd(aMsgErr,{"Falha ao Incluir Viagem"+oModel:GetErrorMessage()[6],'00','ExecAuto()'}) //"Falha ao Incluir Viagem - " lRet:= .F. Else cRet := oModel:GetValue( "MdFieldDTQ", "DTQ_VIAGEM") EndIf oModel:DeActivate() oModel:= Nil Return lRet 0 Local oMdlPnd Local oMdlFldDUU Local oStruDUU Default cFilPnd := "M SP 01 " Default cNumPnd := "000044" Default aDados := {{"DUU_MOTIVO","TESTE"},{"DUU_OBSENC","TESTE"},{"DUU_CODMTC","0001"}} Default nOpcao := 4 If !Empty(cNumPnd) .And. nOpcao != 0 DUU->(DbSetOrder(1)) If DUU->(DbSeek(xFilial("DUU") + cFilPnd + cNumPnd)) Aadd(aDadosDUU,{"DUU_FILPND",cFilPnd}) Aadd(aDadosDUU,{"DUU_NUMPND",cNumPnd}) For nCntFor1 := 1 To Len(aDados) Aadd(aDadosDUU,{aDados[nCntFor1,1],aDados[nCntFor1,2]}) Next nCntFor1 //-- Carrega Rotina Extra TMSAF89Set("nRotExt",11) //-- Encerrar //-- Carrega Opção no Encerramento da Pendência TMSAF89Set("nRadio",1) //-- Somente Encerra //-- Carrega Fechamento Automático da Conciliação TMSAF89Set("lConAut",.T.) //-- Fecha Automaticamente //-- Exibe Perguntas ao Usuário TMSAF89Set("lPergUsu",.F.) //-- Não Exibe Perguntas // Permite mudar o informe da Identificação Produto na Conciliação Sobras/Faltas 0=Não Utiliza,1=Obrigatório,2=Não Obrigatório TMSAF89Set("cTMSCOSB","0") //-- Carrega o Model da Pendência oMdlPnd := FWLoadModel("TMSAF89") oMdlPnd:SetOperation(nOpcao) //-- Ativa o Model da Pendência oMdlPnd:Activate() //-- Carrega o Modelo da Pendência oMdlFldDUU := oMdlPnd:GetModel("MdFieldDUU") oStruDUU := oMdlFldDUU:GetStruct() aCamposDUU := oStruDUU:GetFields() oMdlFldDUU:Activate() //-- Registro de Pendências For nCntFor1 := 1 To Len(aDadosDUU) If AScan(aCamposDUU,{|x| AllTrim(x[3]) == AllTrim(aDadosDUU[nCntFor1,1])}) > 0 If !oMdlFldDUU:SetValue(aDadosDUU[nCntFor1,1],aDadosDUU[nCntFor1,2]) lRet := .F. Exit EndIf EndIf Next nCntFor1 //-- Grava os Dados If lRet If (lRet := oMdlPnd:VldData()) oMdlPnd:CommitData() EndIf EndIf //-- Se Ocorreu Algum Erro Exibe Mensagem If !lRet MostraErro() EndIf //-- Desativa o Model do Planejamento oMdlPnd:DeActivate() EndIf EndIf AEval(aAreas,{|x,y| RestArea(x),FwFreeArray(x)}) FwFreeArray(aAreas) Return lRet |
05. ASSUNTOS RELACIONADOS
...
...
...
...
06. TABELAS UTILIZADAS
DTQ - Viagem
- DTR - Veículos da Viagem
- DUA - Ocorrências
- DUP - Motoristas da Viagem
DUU - Registro de Pendências
HTML |
---|
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |
Import HTML Content
Visão Geral
Conteúdo das Ferramentas