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. 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 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