Eventos: | Function OXA011(cAlias,nReg,nOpc) Local lRet := .f. Local lVS1NUMLIS := .f. Local lProbDes := .f. Local lNewRes := GetNewPar("MV_MIL0181",.f.) // Controla nova reserva no ambiente? Local lMovDiverg:= GetNewPar("MV_MIL0037","S") == "S" // Movimenta em divergencia de estoque? (S/N) Local aBkpRot := {}
Private lRejLib := .f.
If FindFunction("OA4820295_ValidaAtivacaoReservaRastreavel") If !OA4820295_ValidaAtivacaoReservaRastreavel() Return .f. EndIf EndIf
// regras de permissao if nOpc == 6 // FATURAR // Faturar orcamento: if VS1->VS1_TIPORC == "1" .AND. VS1->VS1_STATUS $ "F/G" .AND. !Empty(VS1->VS1_NUMNFI) dbSelectArea("SF2") dbSetOrder(1) if dbSeek(xFilial("SF2")+VS1->VS1_NUMNFI+VS1->VS1_SERNFI) If MsgYesNo(STR0073+ VS1->VS1_NUMNFI+"/"+VS1->VS1_SERNFI+". "+STR0074) dbSelectArea("VS1") Reclock("VS1",.f.) VS1->VS1_STATUS := "X" MsUnlock() If ExistFunc("OA3700011_Grava_DTHR_Status_Orcamento") OA3700011_Grava_DTHR_Status_Orcamento( VS1->VS1_NUMORC , VS1->VS1_STATUS , STR0108 ) // Grava Data/Hora na Mudança de Status do Orçamento / Orçamento por Fases EndIf return .f. Else return .f. Endif Else MsgInfo(STR0073+ VS1->VS1_NUMNFI+"/"+VS1->VS1_SERNFI+". "+STR0075,STR0037) return .f. Endif Endif if VS1->VS1_STATUS == "X" .or. VS1->VS1_STATUS == "C" .or. VS1->VS1_STATUS == "I" // Sempre, a menos que esteja cancelado ou ja faturado MsgInfo(STR0020,STR0018) return .f. endif lVS1NUMLIS := VS1->(FieldPos("VS1_NUMLIS")) > 0 if !Empty(VS1->VS1_NUMLIB) dbSelectArea("VS6") dbSetOrder(1) dbSeek(xFilial("VS6")+VS1->VS1_NUMLIB) If Empty(VS6->VS6_DATAUT) // OI001ATU(cNumOrc,cFaseAtu) If VS6->(FieldPos("VS6_DATREJ")) > 0 If !Empty(VS6->VS6_DATREJ) MsgInfo(STR0092+VS6->VS6_MOTREJ+" - "+POSICIONE("VS0",1,xFilial("VS0")+"000016"+VS6->VS6_MOTREJ,"VS0_DESMOT") +". "+Chr(13) + Chr(10) +STR0093+ IIF( (GetNewPar("MV_GLIBVEN","N") == "S") .AND. lVS1NUMLIS , Chr(13) + Chr(10) + Chr(13) + Chr(10) + STR0031 , "" ) ,STR0018) lRejLib := .t. OXI001REVF(VS1->VS1_NUMORC,"0") lProbDes := .t. Else MsgInfo(STR0021 + IIF( (GetNewPar("MV_GLIBVEN","N") == "S") .AND. lVS1NUMLIS , Chr(13) + Chr(10) + Chr(13) + Chr(10) + STR0031 , "" ) ,STR0018) lProbDes := .t. EndIf Else MsgInfo(STR0021 + IIF( (GetNewPar("MV_GLIBVEN","N") == "S") .AND. lVS1NUMLIS , Chr(13) + Chr(10) + Chr(13) + Chr(10) + STR0031 , "" ) ,STR0018) lProbDes := .t. EndIf Endif Endif If lVS1NUMLIS .and. !Empty(VS1->VS1_NUMLIS) dbSelectArea("VS6") dbSetOrder(1) dbSeek(xFilial("VS6")+VS1->VS1_NUMLIS) If Empty(VS6->VS6_DATAUT) If VS6->(FieldPos("VS6_DATREJ")) > 0 If !Empty(VS6->VS6_DATREJ) MsgInfo(STR0092+VS6->VS6_MOTREJ+" - "+POSICIONE("VS0",1,xFilial("VS0")+"000016"+VS6->VS6_MOTREJ,"VS0_DESMOT")+". "+Chr(13) + Chr(10) +STR0093+ Chr(13) + Chr(10) + Chr(13) + Chr(10) + STR0032 ,STR0018) lRejLib := .t. OXI001REVF(VS1->VS1_NUMORC,"0") lProbDes := .t. Else MsgInfo(STR0021 + Chr(13) + Chr(10) + Chr(13) + Chr(10) + STR0032 ,STR0018) lProbDes := .t. EndIf Else MsgInfo(STR0021 + Chr(13) + Chr(10) + Chr(13) + Chr(10) + STR0032 ,STR0018) lProbDes := .t. EndIf Endif EndIf If lProbDes Return .f. EndIf DBSelectArea("VAI") DBSetOrder(4) DBSeek(xFilial("VAI")+__cUserId) If VS1->VS1_TIPORC == "2" .and. VAI->(FieldPos("VAI_EXPOOS")) > 0 if VAI->VAI_EXPOOS == "0" MsgInfo(STR0077,STR0018) return .f. endif Else if VAI->VAI_FATBAL == "0" MsgInfo(STR0022,STR0018) return .f. endif Endif endif if !VS1->VS1_STARES $ "1.2" // Orçamento nao reservado if VS1->VS1_DATVAL < ddatabase .and. nOpc <> 2 .and. nOpc <> 3 .and. nOpc <> 5 MsgInfo(STR0017,STR0018) return .f. endif Endif if nOpc == 4 // Alterar orcamento: if VS1->VS1_STATUS != "0" // Somente quando estiver apenas digitado MsgInfo(STR0019,STR0018) return .f. endif endif if nOpc == 5 // CANCELAR if VS1->VS1_STATUS == "X" .or. VS1->VS1_STATUS == "C" .or. VS1->VS1_STATUS == "I" // Sempre, a menos que esteja cancelado ou ja faturado MsgInfo(STR0023,STR0018) return .f. endif If ( VAI->(ColumnPos("VAI_CANCPR")) > 0 ) // Campo de Permissao do Usuario para Cancelar/Deletar Pecas ja Reservadas? If VS1->VS1_STARES $ "12" .or. FM_SQL("SELECT SUM(VS3_QTDRES) FROM " + retsqlname('VS3') + " WHERE VS3_FILIAL='"+xFilial('VS3')+"' AND VS3_NUMORC='"+VS1->VS1_NUMORC+"' AND D_E_L_E_T_=' '") > 0 //Verificar se o usuario pode cancelar/deletar uma Peca ja Reservada VAI->(DbSetOrder(4)) VAI->(DbSeek( xFilial("VAI") + __CUSERID )) If VAI->VAI_CANCPR == '0' // Sem permissão para Cancelar MsgStop(STR0104,STR0018) // Usuário sem permissão para Cancelar Orçamento com Peças já Reservadas. Impossivel continuar. / Atencao return .f. EndIf EndIf EndIf endif // if nOpc == 6 DBSelectArea("VS1") if !Empty(VS1->VS1_NUMAGE) .and. VS1->VS1_VTOTNF == 0 MsgInfo(STR0033,STR0034) return .f. endif
IF lNewRes .and. lMovDiverg .and. VS1->VS1_STATUS == "5" If MsgYesNo("Este orçamento teve divergência na conferência dos itens e o mesmo já foi atualizado, deseja visualizar?") aBkpRot := aClone(aRotina) aRotina := {} OFIC131(VS1->VS1_NUMORC) aRotina := aClone(aBkpRot) EndIf EndIf
IF lNewRes .and. VS1->VS1_STATUS == "A" OXA0110035_ValidaSolicitacaoTransferencia() EndIf
endif if nOpc == 4 .or. nOpc == 6 .or. nOpc == 5 DBSelectArea("VS1") if !Softlock("VS1") return .f. endif endif // if ExistBlock("OA011APRO") if !ExecBlock("OA011APRO",.f.,.f.,{nOpc}) MsUnlockAll() Return(.f.) Endif Endif // lRet = OFIXX001(NIL,NIL,NIL,nOpc) // MsUnlockAll() // SA1->(MsUnlock()) // Nao remover, pois quando integrado com o Venda Direta o registro permanecia bloqueado // If ExistBlock("OA011FIM") // Ponto de Entrada no Final da chamada de Menu do Orçamento fases ExecBlock("OA011FIM",.f.,.f.) EndIf // VS1->(dbSetOrder(1)) // Return .t.
|