Eventos: | nPosPeca := aScan(aPecas,{ |x| x[17] == aPecasAlt[iP,18] }) If aPecasAlt[iP,4] # M->VO3_TIPTEM ; .and. aPecasAlt[iP,3] <> "0" ; // Requisição .And. (nPosPeca#0 .And. aPecas[nPosPeca,1] .And. !Empty(aPecas[nPosPeca,10]) )
dbSelectArea("SF4") dbSetOrder(1) MsSeek(xFilial("SF4")+M->VO3_CODTES)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Movimentacao interna do Item ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ if SF4->F4_ESTOQUE == "S" aItensNew:={}
DbSelectArea("SB1") DbSetOrder(7) DbSeek( xFilial("SB1") + VO3->VO3_GRUITE + VO3->VO3_CODITE ) DbSetOrder(1)
_cAlmOrig := Posicione("VOI",1,xFilial("VOI")+aPecasAlt[iP,4],"VOI_CODALM") _cAlmDest := Posicione("VOI",1,xFilial("VOI")+VO3->VO3_TIPTEM,"VOI_CODALM")
If _cAlmOrig # _cAlmDest
If lSEMAF261 // Utiliza semáforo na Movimentação de Pecas da rotina Requisição de Pecas If !LockByName("OFIOM020"+VO1->VO1_NUMOSV+"MOVPEC",.t.,.t.) Help(" ",1,"ROTINA_EM_USO",,STR0285,4,1 ) // "Impossivel continuar! Semáforo está sendo utilizado para trazer o Número do Documento da Movimentação de Peças (MATA261)" Return .f. Endif Endif
dbSelectArea("VO3")
RecLock("VO3",.F.) VO3->VO3_NUMDOC := FS_D3NUMDOC() MsUnLock()
// // Adiciona cabecalho com numero do documento e data da transferencia modelo II // aadd (aItensNew,{ VO3->VO3_NUMDOC , ddatabase})
nQtdTrans := aPecas[nPosPeca,10]
cLocOri := Posicione("VOI",1,xFilial("VOI")+aPecasAlt[iP,4],"VOI_LOCALI") cLocDes := Posicione("VOI",1,xFilial("VOI")+VO3->VO3_TIPTEM,"VOI_LOCALI")
aItemMov := oEst:SetItemSD3(SB1->B1_COD ,; //Código do Produto _cAlmOrig ,; // Armazém de Origem _cAlmDest ,; // Armazém de Destino cLocOri ,; // Localização Origem cLocDes ,; // Localização Destino nQtdTrans ,; // Qtd a transferir VO3->VO3_LOTECT ,; // Nro de lote VO3->VO3_NUMLOT ,; // Nro de Sub-Lote VO3->VO3_NUMSER ) // Nro de Série
aAdd(aItensNew, aClone(aItemMov))
If Localiza(SB1->B1_COD)
If Empty( Posicione("VOI",1,xFilial("VOI")+aPecasAlt[iP,4],"VOI_LOCALI") ) ; .Or. Empty( Posicione("VOI",1,xFilial("VOI")+VO3->VO3_TIPTEM,"VOI_LOCALI") )
// Cancela Gravacao Help(" ",1,"SALDOLOCLZ") lRet := .f. DisarmTransaction() Break
EndIf
//Executa RdMake da Ordem de Busca if ExistBlock("RDLOCALIZ") ExecBlock("RDLOCALIZ",.f.,.f.,{@aItensNew}) Endif Else // Ponto de Entrada para alterar informações das peças que serão transferidas // de estoque e que não tem a localização da peça informada If (ExistBlock("OM020APEC")) aItensNew := ExecBlock("OM020APEC", .f., .f., {aItensNew}) EndIf EndIf
MSExecAuto({|x| MATA261(x)},aItensNew)
If lSEMAF261 // Destrava semáforo na Movimentação de Pecas da rotina Requisição de Pecas UnLockByName("OFIOM020"+VO1->VO1_NUMOSV+"MOVPEC",.t.,.t.) Endif
If lMsErroAuto // Cancela Gravacao lRet := .f. DisarmTransaction() Break EndIf EndIf
Endif
aPecas[nPosPeca,1] := .f.
EndIf
If !Empty( M->VO3_FORMUL ) .AND. VO3->VO3_FORMUL <> M->VO3_FORMUL If ( aPecasAlt[iP,4] # M->VO3_TIPTEM .Or. VOI->VOI_VLPCAC <> "1" ) // CONSIDERA O PRECO ATUAL DA PECA RecLock("VO3",.F.) VO3->VO3_FORMUL := M->VO3_FORMUL VO3->VO3_VALPEC := FG_VALPEC(M->VO3_TIPTEM,"M->VO3_FORMUL",aPecasAlt[iP,7],aPecasAlt[iP,8],,.f.,.t.) // Se for alterada a formula, deve ZERAR valor de desconto ... If lCpoDesconto VO3->VO3_VALLIQ := VO3->VO3_VALPEC VO3->VO3_VALDES := 0 VO3->VO3_PERDES := 0 EndIf // MsUnLock() Else MsgStop(STR0120,STR0075) // "Impossivel alterar a Formula. Para este Tipo de Tempo somente o preco de requisicao é valido!" / Atenção EndIf EndIf
// Valida se o valor esta correto If !FS_VALVLR160(VO3->VO3_GRUITE,VO3->VO3_CODITE,VO3->VO3_VALPEC) lRet := .f. DisarmTransaction() Break EndIf //Ponto de entrada que será executado na alteração da requisição de peças. //Ele é disparado a cada registro alterado e possibilita o usuário customizar ações à cada registro do VO3 if ExistBlock("OM20AVO3") ExecBlock("OM20AVO3",.f.,.f.,) Endif
nPosPeca := aScan(aPecas,{ |x| x[17] == aPecasAlt[iP,18] }) If nPosPeca # 0 aPecasAlt[iP,1] := aPecas[nPosPeca,1] := .F. aPecasAlt[iP,4] := aPecas[nPosPeca,2] := M->VO3_TIPTEM aPecasAlt[iP,5] := aPecas[nPosPeca,3] := M->VO3_FATPAR aPecasAlt[iP,6] := aPecas[nPosPeca,4] := M->VO3_LOJA aPecasAlt[iP,15] := aPecas[nPosPeca,15] := M->VO3_CODTES aPecasAlt[iP,16] := aPecas[nPosPeca,16] := VO3->VO3_FORMUL aPecas[nPosPeca,8] := M->VO3_DEPINT aPecas[nPosPeca,9] := M->VO3_DEPGAR EndIf
Next
// Estorna requisicoes do tipo de tempo alterado dbSelectArea("VO3") For iP := 1 to Len(aPecasAlt) If aPecasAlt[iP,04] == M->VO3_TIPTEM .and. aPecasAlt[iP,17] == TT_STATUS_CANCELADO VO3->(dbGoTo(aPecasAlt[iP,14])) If !RecLock("VO3",.F.) Help(" ",1,"REGNLOCK") lRet := .f. DisarmTransaction() Break EndIf VO3->VO3_DATCAN := CtoD(" ") VO3->(MsUnLock()) EndIf Next iP
|