Árvore de páginas

Versões comparadas

Chave

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

Como desenvolver a "User Function" para execução automática

...

na rotina de Abastecimento Manual. 

Produto:

Manutenção de Ativos e Gestão de Frotas (SIGAMNT).

Versões:

Todas

Ocorrência:

Desenvolvimento de função para execução automática(ExecAuto) e inclusão de registros na rotina de Abastecimento Manual.

Ambiente:

Todos

Passo a passo:

Para o desenvolvimento da rotina de execução automática , para inclusão a fim de realizar a inclusão, alteração ou exclusão de dados na rotina de Abastecimento Manual (MNTA655), favor utilizar o exemplo abaixo.

Função:MNTA655( Reservado, aAbast, Operação )
Parâmetros:
NomeTipoDescriçãoObrigatório
aAbastArray
NomeDescriçãoObrigatório
aAbast[ 1, 1 ]Nome do CampoSim
aAbast[ 1, 2 ]Conteúdo do CampoSim
aAbast[ 1, 3 ]Parâmetro reservadoSim
Sim
OperaçãoNuméricoIndica a operação a ser realizada, sendo 3-Inclusão, 4-alteração e 5-Exclusão.Sim
Observação:Para inclusão de abastecimento manual para algum posto externo, deve ser retirado as posições de Tanque e Bomba.
Nota
titleAtenção

A funcionalidade ExecAuto estará presente nas versões do fonte MNTA655.prx com a data a partir de XX/12/2019 09/01/2020.

  • Ao utilizar o ExecAuto o parâmetro MV_NGGERPR utilizará o parâmetro como 'S' para que não seja apresentada mensagem em tela referente à geração de OS Automática.
  • Ao utilizar o ExecAuto a chamada da função RPCSetEnv faz com que não sejam apresentadas mensagens em tela. Para verificar as mensagens em tela esta função deve ser retirada/comentada.
  • Ao utilizar o ExecAuto os campos numéricos Quantidade (TQN_QUANT), Valor Unitário (TQN_VALUNI) e Valor Total (TQN_VALTOT) devem utilizar ponto "." para separar as casas decimais.
Bloco de código
languagejava
themeEclipse
titleExemplo fonte ExecAuto
linenumberstrue
#Include 'Totvs.ch'

//-------------------------------------------------------------------
/*/{Protheus.doc} MNT655EXEC
ExecAuto MNTA655
/*/
//-------------------------------------------------------------------
User Function MNT655EXEC()

	//------------------------------------------
	// Processo de Inclusão
	//------------------------------------------
	Local aItemaAbast := {}

	//Abre empresa/filial/módulo/arquivos - deve ser comentada a função RPCSetEnv se quiser verificar as mensagens de erro em tela
	RPCSetEnv('Código da empresa','Código da filial','','','Código do módulo')

	// Itens obrgitóriosobrigatórios para inclusão do abastecimento para posto interno
	aItemaAbast := {  {"'TQN_PLACA"' , PadR( 'CGZ-1500'		  , TAMSX3("TQN_PLACA")[1] )    , Nil },;
				{"                {'TQN_FROTA"' , PadR( 'CG150'  		  , TAMSX3("TQN_FROTA")[1] )     ', Nil },;
				{"                {'TQN_CNPJ"'  , PadR( '47467235000151' , TAMSX3("TQN_CNPJ")[1] )  , Nil },;
                {'TQN_CODCOM', PadR( 'GAS'				{  , TAMSX3("TQN_CODCOM")[1] ), Nil },;
 'GAS'             , Nil },;
				{"{'TQN_DTABAS"', StoD( '20191210' )     							 , Nil },;
				{"                {'TQN_HRABAS"', '15:05'                							 , Nil },;
                {'TQN_TANQUE', PadR( '01'				{  , TAMSX3("TQN_QUANTTANQUE")[1] ), 10 Nil },;
                {'TQN_BOMBA' , PadR( '01'			  , TAMSX3("TQN_BOMBA")[1] ) , Nil },;
                {'TQN_QUANT' , 10                     							{" , Nil },;
                {'TQN_VALUNI"', 3.57  4                 							 , Nil },;
				{"                {'TQN_VALTOT"', 35.70 40                							 , Nil },;
				{"                {'TQN_HODOM"' , 130                   							 , Nil },;
				{"TQN_CODMOT", '000001'                {'TQN_CODMOT', Nil },;
				{PadR( '000001'		  , TAMSX3("TQN_POSTOCODMOT")[1] ), '099 Nil },;
                {'TQN_POSTO' , Nil },;
PadR( '099'				{  , TAMSX3("TQN_LOJAPOSTO")[1] ) , '01  'Nil },;
                {'TQN_LOJA'  , Nil },;
PadR( '01'				{  , TAMSX3("TQN_NOTFIS", '8875137'LOJA")[1] )  , Nil },;
                {'TQN_NOTFIS', PadR( '8875137'		  , TAMSX3("TQN_NOTFIS")[1] ), Nil }}

	lMSHelpAuto := .T. // Não apresenta erro em tela
	lMSErroAuto := .F. // Caso a variável torne-se .T. aposapós MsExecAuto, apresenta erro em tela 
	//(se não possuir a função RPCSetEnv, com esta função não será apresentada mensagem em tela)
	lMSErroAuto := .F. 
	
	MSExecAuto( { | v, x, y, z | MNTA655( v, x, y, z ) }, , aItemaAbast, 3 )
	If lMsErroAuto
		If !IsBlind() //Apresentará mensagem com o MostraErro se não utilizar RPCSetEnv. 
			MostraErro()
		Else		  //Não apresentará mensagem, pois utiliza a função RPCSetEnv.
			cError := MostraErro(GetSrvProfString("Startpath", ""), "MNTA655EXEC_"+DTOS(DATE())+"_"+;
					  Left(Time(),2)+SubStr(Time(),4,2)+".LOG") // Armazena mensagem de erro na raiz (StartPath).
			ConOut( cError)
		EndIf
	EndIf
	
	If !lMsErroAuto
		//------------------------------------------
		// Processo de Alteração
	aItem
		//------------------------------------------
		aAbast := {}

		// Para alteração será necessário informar os campos TQN_FROTA, TQN_DTABAS, TQN_HRABAS para encontrar o abastecimento, 
		//os demais campos informados serão referentes as alterações solicitadas
	aItem	aAbast := {  { 'TQN_FROTA' , PadR( 'CG150'  		  ,       'TAMSX3("TQN_FROTA")[1] ) , Nil },;
				{         {'TQN_DTABAS', StoD( '2019121020191012' )     							 , Nil },;
					{ 'TQN_HRABAS', '15:05'           								 , Nil },;
					{ 'TQN_QUANT' , 5                 								 , Nil },;
					{ 'TQN_VALUNI', 43.88                 								 , Nil },;
					{ 'TQN_VALTOT', 2019.40               								 , Nil }}


		lMSHelpAuto := .T. // Não apresenta erro em tela
	lMSErroAuto := .F. 	// Caso a variável torne-se .T. aposapós MsExecAuto, apresenta erro em tela
		//(se não possuir a função RPCSetEnv, com esta função não será apresentada mensagem em tela)
		lMSErroAuto := .F. 
		
		MSExecAuto( { | v, x, y, z | MNTA655( v, x, y, z ) }, , aItemaAbast, 4 )
		If lMsErroAuto
			If !IsBlind() //Apresentará mensagem com o MostraErro se não utilizar RPCSetEnv.
				MostraErro()
			Else		  //Não apresentará mensagem, pois utiliza a função RPCSetEnv.
				cError := MostraErro(GetSrvProfString("Startpath", ""), "MNTA655EXEC_"+DTOS(DATE())+"_"+;
						  Left(Time(),2)+SubStr(Time(),4,2)+".LOG") // Armazena mensagem de erro na raiz (StartPath).
				ConOut( cError)
			EndIf
		EndIf
	EndIf
	
	If !lMsErroAuto
		//------------------------------------------
		// Processo de Exclusão
	aItem
		//------------------------------------------
		aAbast := {}

		// Para alteração o processo de Exclusão será necessário informar os campos TQN_FROTA, TQN_DTABAS, TQN_HRABAS para encontrar o abastecimento.
		aItemaAbast := {   { 'TQN_FROTA' , PadR( 'CG150'  		  , TAMSX3("TQN_FROTA")[1] )     ', Nil },; 
				      { 'TQN_DTABAS', StoD( '2019121020191012' )     							 , Nil },;
					  { 'TQN_HRABAS', '15:05'           								 , Nil }}

		lMSHelpAuto := .T. // Não apresenta erro em tela
	lMSErroAuto := .F. 		// Caso a variável torne-se .T. aposapós MsExecAuto, apresenta erro em tela
		// (se não possuir a função RPCSetEnv, com esta função não será apresentada mensagem em tela)
		lMSErroAuto := .F. 
		
		MSExecAuto( { | v, x, y, z | MNTA655( v, x, y, z ) }, , aItemaAbast, 5 )

		If lMsErroAuto
			If !IsBlind() //Apresentará mensagem com o MostraErro se não utilizar RPCSetEnv.
				MostraErro()
			Else		  //Não apresentará mensagem, pois utiliza a função RPCSetEnv.
				cError := MostraErro(GetSrvProfString("Startpath", ""), "MNTA655EXEC_"+DTOS(DATE())+"_"+;
					      Left(Time(),2)+SubStr(Time(),4,2)+".LOG") // Armazena mensagem de erro na raiz (StartPath).
				ConOut( cError)
			EndIf
		EndIf
	EndIf

Return