Árvore de páginas

MATA681 - Apontamento de Produção baseado no Roteiro de Operações

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGAPCP - Planejamento e Controle da Produção

Parâmetro(s):


Nome
Tipo
Descrição
Obrigatório
Referência

aVetor
Array of Record
Array contendo os valores para o Apontamento de Produção
X



nOpc
Numérico

Opção escolhida:

3) Inclusão

4) Horas Retrabalhadas

5) Estorno

7) Encerramento


X



Descrição:

Esta rotina possibilita a inclusão do apontamento de produção, estorno do apontamento de produção e encerramento da ordem de produção,  na rotina Produção baseado no Roteiro de Operações, de forma automática.

Observações:

O parâmetro AUTREFUGO pode ser preenchido na execução da rotina automática de Apontamento, quando o MV_DIGIPER estiver configurado como S.

Para apontamentos manuais, ao informar uma quantidade de perda é aberta uma tela para que sejam informadas as perdas.

Na rotina automática, para informar as perdas, deve ser informado o parâmetro AUTREFUGO e um array com as informações das perdas. Este array corresponde as informações da tela que é aberta de forma manual.

Para mais detalhes sobre este parâmetro, verificar o EXEMPLO 2.


Os parâmetros INDEXAUTRECNO podem ser preenchidos na execução da rotina automática de Apontamento, quando informada a opção 5 - Estorno.

Na rotina automática, para indicar qual registro deve ser estornado, deve ser informado o parâmetro INDEX ou AUTRECNO.

O parâmetro INDEX indica qual o índice da SH6 (Movimentos da Produção) deverá ser usado pela rotina automática para selecionar o registro a ser estornado. Os campos do índice devem estar no array enviado no EXECAUTO.

O parâmetro AUTRECNO indica qual o R_E_C_N_O_ do registro que a rotina automática deve estornar.

Para mais detalhes sobre estes parâmetros, verificar o EXEMPLO 3.


O parâmetro AUTRECNO pode ser preenchido na execução da rotina automática de Apontamento, quando informada a opção 7 - Encerramento.

Na rotina automática, para indicar qual registro deve ser encerrado, deve ser informado o parâmetro AUTRECNO.

O parâmetro AUTRECNO indica qual o R_E_C_N_O_ do registro que a rotina automática deve encerrar.

Para mais detalhes sobre este parâmetro, verificar o EXEMPLO 4.


O parâmetro AUTRECNO pode ser preenchido na execução da rotina automática de Apontamento, quando informada a opção 4 - Horas Retrabalhadas.

Na rotina automática, para indicar qual registro deve ser retrabalhado, deve ser informado o parâmetro AUTRECNO.

O parâmetro AUTRECNO indica qual o R_E_C_N_O_ do registro que a rotina automática deve retrabalhar.

Para mais detalhes sobre este parâmetro, verificar o EXEMPLO 5.

Programa Fonte:MATA681.PRW
Sintaxe:

MATA681 - Apontamento de Produção baseado no Roteiro de Operações ( < aVetor>, < nOpc> ) --> nil

Retorno: nil(nulo)
Exemplo:
//--------------------------- EXEMPLO 1  ----------------------------------------------------------------------------------//
#INCLUDE "RWMAKE.CH" 
#INCLUDE "TBICONN.CH" 

User Function RMATA681() 
Local aVetor := {} 
Local dData
Local nOpc   := 3

lMsErroAuto := .F. 

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SH6"

dData:=dDataBase
aVetor := {;
           {"H6_OP"	     ,"00000101001 " ,NIL},;
           {"H6_PRODUTO" ,"PA01 "        ,NIL},;
           {"H6_OPERAC"  ,"01"           ,NIL},;
           {"H6_RECURSO" ,"1"            ,NIL},;
           {"H6_DTAPONT" ,dData          ,NIL},;
           {"H6_DATAINI" ,dData          ,NIL},;
           {"H6_HORAINI" ,"19:11"        ,NIL},;
           {"H6_DATAFIN" ,dData          ,NIL},;
           {"H6_HORAFIN" ,"19:20"        ,NIL},;
           {"H6_PT"      ,'P'            ,NIL},;
           {"H6_LOCAL"   ,"01"           ,NIL},;
           {"H6_QTDPROD" ,7              ,NIL}} 

MSExecAuto({|x| mata681(x)},aVetor, nOpc) 

If lMsErroAuto 
    Mostraerro()
Else 
    Alert("ok")
EndIf

Return

//--------------------------- EXEMPLO 2  ----------------------------------------------------------------------------------//
//--------------------------- Exemplo de Perda ----------------------------------------------------------------------------//

#Include 'Protheus.ch'
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TOTVS.CH"

User Function rmata681()

Local xRotAuto := {}
Local aRefugos := {}
Local nI

PRIVATE lMsErroAuto := .F.

OpenSm0()
RPCSetType(3)
RPCSetEnv("99" , "01",,,"PCP",,,,,,)

dData := dDataBase 

cOp         := PadR('Y0216101001',TamSX3("H6_OP")[1])
cProd       := PadR('4054-PA2'   ,TamSX3("H6_PRODUTO")[1])
cOperac     := PadR('10'         ,TamSX3("H6_OPERAC")[1])
cRec        := PadR('REC1'       ,TamSX3("H6_RECURSO")[1])
cDtIni      := dData
cHrIni      := '08:00:00'
cDtFim      := dData
cHrFim      := '08:10:00'
cPt         := PadR('P'          ,TamSX3("H6_PT")[1])
cLocal      := PadR('01'         ,TamSX3("H6_LOCAL")[1])
cQtdProd    := 1
cQtdPerd    := 1

xRotAuto := {;
            {"H6_FILIAL" 	, xFilial("SH6")  ,Nil},;
			{"H6_OP" 		, cOp	          ,Nil},;
			{"H6_PRODUTO"   , cProd  		  ,Nil},;
			{"H6_OPERAC" 	, cOperac 		  ,Nil},;
			{"H6_RECURSO"	, cRec	     	  ,Nil},;
			{"H6_DATAINI"	, cDtIni   	 	  ,Nil},;
			{"H6_HORAINI"	, cHrIni	 	  ,Nil},;
			{"H6_DATAFIN"	, cDtFim  	 	  ,Nil},;
			{"H6_HORAFIN"	, cHrFim	 	  ,Nil},;
			{"H6_PT"	    , cPt	   		  ,Nil},;
			{"H6_LOCAL"	    , cLocal	 	  ,Nil},;
			{"H6_QTDPROD"	, cQtdProd		  ,Nil},;
			{"H6_QTDPERD"	, cQtdPerd	 	  ,Nil};
            }

For nI := 1 To 2
                    
    If nI == 1
        cRfProd         := PadR('4054-MP3'   ,TamSX3("BC_PRODUTO")[1])
    Else
        cRfProd         := PadR('4054-MP4'   ,TamSX3("BC_PRODUTO")[1])
    EndIf

    cRfLocOrig      := PadR('01'         ,TamSX3("BC_LOCORIG")[1])
    cRfTipo         := PadR('R'          ,TamSX3("BC_TIPO")[1])
    cRfMotivo       := PadR('FH'         ,TamSX3("BC_MOTIVO")[1])
    cRfQuant        := 1
    
    aAdd(aRefugos, {;
                   {"BC_PRODUTO"  , cRfProd       ,Nil},;
                   {"BC_LOCORIG"  , cRfLocOrig    ,Nil},;
                   {"BC_TIPO"     , cRfTipo       ,Nil},;
                   {"BC_MOTIVO"   , cRfMotivo     ,Nil},;
                   {"BC_QUANT"    , cRfQuant      ,Nil};
                   })                
Next nI
            
If Len(aRefugos) > 0
    aAdd(xRotAuto, {"AUTREFUGO", aRefugos, Nil})
EndIf

msExecAuto({|x,y| MATA681(x,y)},xRotAuto,3)

If lMsErroAuto
	ALERT("ERRO NA INCLUSAO")
	Mostraerro()
Else
	ALERT("PROCESSAMENTO EFETUADO COM SUCESSO")
Endif

Return

//--------------------------- EXEMPLO 3.1----------------------------------------------------------------------------------//
//--------------------------- Exemplo de Estorno AUTRECNO------------------------------------------------------------------//

#Include 'Protheus.ch'
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TOTVS.CH"

User Function rEst681()

Local xRotAuto := {}

PRIVATE lMsErroAuto := .F.

OpenSm0()
RPCSetType(3)
RPCSetEnv("99" , "01",,,"PCP",,,,,,)

dData := dDataBase 

cOp         := PadR('Y0226201001',TamSX3("H6_OP")[1])
cProd       := PadR('19579-PA'   ,TamSX3("H6_PRODUTO")[1])
cOperac     := PadR('10'         ,TamSX3("H6_OPERAC")[1])
cRecno      := 140 //R_E_C_N_O_ que deseja estornar da SH6


xRotAuto := {;
            {"H6_FILIAL" 	, xFilial("SH6")  ,Nil},;
			{"H6_OP" 		, cOp	          ,Nil},;
			{"H6_PRODUTO"   , cProd  		  ,Nil},;
			{"H6_OPERAC" 	, cOperac 		  ,Nil},;
			{"AUTRECNO" 	, cRecno 		  ,Nil};
            }

msExecAuto({|x,y| MATA681(x,y)},xRotAuto,5)

If lMsErroAuto
	ALERT("ERRO NO ESTORNO")
	Mostraerro()
Else
	ALERT("ESTORNO EFETUADO COM SUCESSO")
Endif

Return

//--------------------------- EXEMPLO 3.1----------------------------------------------------------------------------------//
//--------------------------- Exemplo de Estorno INDEX---------------------------------------------------------------------//

#Include 'Protheus.ch'
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TOTVS.CH"

User Function rEst681()

Local xRotAuto := {}

PRIVATE lMsErroAuto := .F.

OpenSm0()
RPCSetType(3)
RPCSetEnv("99" , "01",,,"PCP",,,,,,)

dData := dDataBase 

nIndice     := 1 //Indice da SH6 que será utilizado

//Campos do índice 1
//H6_FILIAL+H6_OP+H6_PRODUTO+H6_OPERAC+H6_SEQ+DTOS(H6_DATAINI)+H6_HORAINI+DTOS(H6_DATAFIN)+H6_HORAFIN

cOp         := PadR('Y0226201001',TamSX3("H6_OP")[1])
cProd       := PadR('19579-PA'   ,TamSX3("H6_PRODUTO")[1])
cOperac     := PadR('10'         ,TamSX3("H6_OPERAC")[1])
cSeq        := PadR(' '          ,TamSX3("H6_SEQ")[1])
cDtIni      := dData
cHrIni      := '08:00:00'
cDtFim      := dData
cHrFim      := '08:10:00'

xRotAuto := {;
            {"H6_FILIAL" 	, xFilial("SH6")  ,Nil},;
			{"H6_OP" 		, cOp	          ,Nil},;
			{"H6_PRODUTO"   , cProd  		  ,Nil},;
			{"H6_OPERAC" 	, cOperac 		  ,Nil},;
			{"H6_SEQ"	    , cSeq	     	  ,Nil},;
			{"H6_DATAINI"	, cDtIni   	 	  ,Nil},;
			{"H6_HORAINI"	, cHrIni	 	  ,Nil},;
			{"H6_DATAFIN"	, cDtFim  	 	  ,Nil},;
			{"H6_HORAFIN"	, cHrFim	 	  ,Nil},;
            {"INDEX"	    , nIndice	 	  ,Nil};
            }

msExecAuto({|x,y| MATA681(x,y)},xRotAuto,5)

If lMsErroAuto
	ALERT("ERRO NO ESTORNO")
	Mostraerro()
Else
	ALERT("ESTORNO EFETUADO COM SUCESSO")
Endif

Return

//--------------------------- EXEMPLO 4  ----------------------------------------------------------------------------------//
//--------------------------- Exemplo de Encerramento----------------------------------------------------------------------//

#Include 'Protheus.ch'
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TOTVS.CH"

User Function rEnc681()

Local xRotAuto := {}

PRIVATE lMsErroAuto := .F.

OpenSm0()
RPCSetType(3)
RPCSetEnv("99" , "01",,,"PCP",,,,,,)

dData := dDataBase 

cOp         := PadR('Y0226201001',TamSX3("H6_OP")[1])
cProd       := PadR('19579-PA'   ,TamSX3("H6_PRODUTO")[1])
cOperac     := PadR('10'         ,TamSX3("H6_OPERAC")[1])
cRecno      := 142 //R_E_C_N_O_ que deseja encerrar da SH6


xRotAuto := {;
            {"H6_FILIAL" 	, xFilial("SH6")  ,Nil},;
			{"H6_OP" 		, cOp	          ,Nil},;
			{"H6_PRODUTO"   , cProd  		  ,Nil},;
			{"H6_OPERAC" 	, cOperac 		  ,Nil},;
			{"AUTRECNO" 	, cRecno 		  ,Nil};
            }

msExecAuto({|x,y| MATA681(x,y)},xRotAuto,7)

If lMsErroAuto
	ALERT("ERRO NO ENCERRAMENTO")
	Mostraerro()
Else
	ALERT("ENCERRAMENTO EFETUADO COM SUCESSO")
Endif

Return

//--------------------------- EXEMPLO 5  ----------------------------------------------------------------------------------//
//--------------------------- Exemplo de Horas Retrabalhadas---------------------------------------------------------------//
#Include 'Protheus.ch'
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "TOTVS.CH"

User Function MT681Ret()
Local xRotAuto := {}

PRIVATE lMsErroAuto := .F.

OpenSm0()
RPCSetType(3)
RPCSetEnv("99" , "01",,,"PCP",,,,,,)

dData := dDataBase 

cOp         := PadR('00002201001',TamSX3("H6_OP")[1])
cProd       := PadR('681-PA'     ,TamSX3("H6_PRODUTO")[1])
cOperac     := PadR('10'         ,TamSX3("H6_OPERAC")[1])

cDtIni      := dData
cHrIni      := '09:00:00'
cDtFim      := dData
cHrFim      := '10:00:00'

cRecno      := 140 //R_E_C_N_O_ que deseja retrabalhar da SH6


xRotAuto := {;
				{"H6_FILIAL" 	, xFilial("SH6")  ,Nil},;
				{"H6_OP" 		, cOp	          ,Nil},;
				{"H6_PRODUTO"   , cProd  		  ,Nil},;
				{"H6_OPERAC" 	, cOperac 		  ,Nil},;
				{"H6_DATAINI"	, cDtIni   	 	  ,Nil},;
				{"H6_HORAINI"	, cHrIni	 	  ,Nil},;
				{"H6_DATAFIN"	, cDtFim  	 	  ,Nil},;
				{"H6_HORAFIN"	, cHrFim	 	  ,Nil},;
				{"H6_DTAPONT"	, cDtFim  	 	  ,Nil},;
				{"H6_DTPROD"	, cDtFim  	 	  ,Nil},;
				{"AUTRECNO" 	, cRecno 		  ,Nil};
			}

msExecAuto({|x,y| MATA681(x,y)},xRotAuto,4)

If lMsErroAuto
	ALERT("ERRO NAS HORAS RETRABALHAS")
	Mostraerro()
Else
	ALERT("HORAS RETRABALHAS EFETUADO COM SUCESSO")
Endif

Return