Histórico da Página
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): |
|
| 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 INDEX e AUTRECNO 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. |
| Programa Fonte: | MATA681.PRW |
| Sintaxe: | MATA681 - Apontamento de Produção baseado no Roteiro de Operações ( < aVetor>, < nOpc> ) --> nil |
| Retorno: | nil(nulo) |
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
//--------------------------- 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
|