Histórico da Página
Ponto de entrada que permite bloquear uma ferramenta relacionada à um Bem ao se gerar uma OS.
Características do Requisito
Linha de Produto: | Microsiga Protheus | ||||||||||
Segmento: | Manufatura | ||||||||||
Módulo: | SIGAMNT - Manutenção de Ativos e Gestão de Frotas | ||||||||||
Rotina: |
| ||||||||||
País(es): | Todos | ||||||||||
Banco(s) de Dados: | Todos | ||||||||||
Sistema(s) Operacional(is): | Todos |
Ponto de Entrada
Descrição: | Ponto de Entrada chamado ao gerar uma OS a partir de uma SS. | ||||||||
Localização: | SIGAMNT: Atualizações/Ordens de Serviço/Corretiva | ||||||||
Programa Fonte: | MNTA295.PRX | ||||||||
Função: | MNTA295D() | ||||||||
Retorno: |
|
Exemplo:
#Include 'Protheus.ch'
User Function MNTA295D()
Local lRet := .T.
//Efetua o bloqueio da Ferramenta se o Bem (ST9) estiver indicando uma ferramenta (T9_FERRAME)
If ! MsgYesNo("Será gerado um bloqueio para Ferramenta, Confirma?")
cCodFer := NGSEEK("ST9",STJ->TJ_CODBEM,1,"T9_RECFERR") //Código da Ferramenta
aFER := {}
aAdd(aFER,{"0",cCodFer,1,STJ->TJ_DTMPINI,STJ->TJ_HOMPINI,STJ->TJ_DTMPFIM,STJ->TJ_HOMPFIM,STJ->TJ_ORDEM,STJ->TJ_PLANO,STJ->TJ_CCUSTO})
a330FER(aFER[1],STJ->TJ_CODBEM)
Else
lRet := .F.
EndIf
Return lRet
Static Function A330FER(aFER,cCBEM)
Local dDATA,cFER,nFER
Local lBEMFERR := .F.
dDATA := aFER[4]
cFER := Left(aFER[2],Len(SH9->H9_FERRAM))
NGIFDBSEEK('SH4',cFER,1,.F.)
If SH4->H4_QUANT < aFER[3]
NGDBAREAORDE("STA",1)
cCHASTA := "FALTAM "+STR(aFER[3]-SH4->H4_QUANT,3)+" FERRAMENTAS"
cCHARET := Alltrim(cCHASTA)+Space(len(STA->TA_DESCRIC)-Len(cCHASTA))
cCODSTA := Alltrim(aFER[2])+Space(Len(STA->TA_CODIGO) - Len(Alltrim(aFER[2])))
cCODTAR := Alltrim(aFER[1])+Space(Len(STA->TA_TAREFA) - Len(Alltrim(aFER[1])))
cCHASTA := aFER[8]+aFER[9]+cCODTAR+"F"+cCODSTA+cCHARET
If !dbSeek(xFILIAL("STA")+cCHASTA)
MNTGRAVSTA(aFER[8],aFER[9],aFER[1],"F",aFER[2],;
"FALTAM "+STR(aFER[3]-SH4->H4_QUANT,3)+" FERRAMENTAS")
EndIf
EndIf
nFER := 0
NGDBAREAORDE("SH9",3)
dbSeek( xFilial("SH9") + "F" + cFER + DtoS(aFER[4]) , .T. )
If Eof() .or. xFilial("SH9") != SH9->H9_FILIAL .or. SH9->H9_TIPO != "F" .or. cFER != SH9->H9_FERRAM .or. SH9->H9_DTINI > aFER[4]
dbSkip(-1)
If Eof() .or. Bof() .or. xFilial("SH9") != SH9->H9_FILIAL .or. SH9->H9_TIPO != "F" .or. cFER != SH9->H9_FERRAM
dbSkip()
EndIf
EndIf
While !Eof() .And. SH9->H9_FILIAL == xFilial("SH9") .And. SH9->H9_TIPO == "F" .And. SH9->H9_FERRAM == cFER .And. SH9->H9_DTINI <= aFER[6]
If DtoS(aFER[4])+aFER[5] < DtoS(SH9->H9_DTFIM)+SH9->H9_HRFIM .and.;
DtoS(aFER[6])+aFER[7] > DtoS(SH9->H9_DTINI)+SH9->H9_HRINI
nFER += SH9->H9_QUANT
EndIf
NGDBSELSKIP("SH9")
End
If (SH4->H4_QUANT < (nFER+aFER[3]))
NGDBAREAORDE("STA",1)
cCHASTA := "FERRAMENTA NAO DISPONIVEL"
cCHARET := Alltrim(cCHASTA)+Space(len(STA->TA_DESCRIC)-Len(cCHASTA))
cCODSTA := Alltrim(aFER[2])+Space(Len(STA->TA_CODIGO)-Len(Alltrim(aFER[2])))
cCODTAR := Alltrim(aFER[1])+Space(Len(STA->TA_TAREFA)-Len(Alltrim(aFER[1])))
cCHASTA := aFER[8]+aFER[9]+cCODTAR+"F"+cCODSTA+cCHARET
If !dbSeek(xFILIAL("STA")+cCHASTA)
MNTGRAVSTA(aFER[8],aFER[9],aFER[1],"F",aFER[2],"FERRAMENTA NAO DISPONIVEL")
EndIf
EndIf
cALIASO := ALIAS()
If cCBEM <> Nil
If NGIFDBSEEK('ST9',cCBEM,1,.F.)
If !Empty(ST9->T9_RECFERR)
If ST9->T9_FERRAME == "F"
lBEMFERR := .T.
EndIf
EndIf
EndIf
EndIf
If lBEMFERR .Or. cCBEM = Nil
cMOTIVO := "OS.MANUT."+aFER[8]+" PLANO "
If Type("M->TI_PLANO") = "C"
cMOTIVO += M->TI_PLANO
ElseIf Type("M->TJ_PLANO") = "C"
cMOTIVO += M->TJ_PLANO
EndIf
MNTGRAVSH9(,,cMOTIVO,aFER[4],aFER[6],aFER[5],aFER[7],"F","1",aFER[2],aFER[3])
EndIf
SH9->(dbSetOrder(1))
Return Nil