Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin

Ponto de Entrada 

Descrição:

Novo Ponto de Entrada OM20AVO3, que será executado na alteração da requisição de peças.

Disparado a cada registro alterado e possibilita o usuário customizar ações a cada registro do VO3.

Localização:

Atualizações/Movimentos Oficina/Requisição Peças

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

Programa Fonte:

OFIOM020.PRW

Função:

FS_ALTREQ()

Retorno:

N/A

Parâmetros

N/A

 

#INCLUDE "PROTHEUS.CH"



/*/{Protheus.doc} OM20AVO3
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

@author Mil Totvs DMS (Vinicius Assi)
@since 08/11/2023
@version undefined
@type function
/*/

User Function OM20AVO3()
 
    Local aArea := sGetArea()

    aArea := sGetArea(aArea,"VO3")

        MsgInfo("O ponto de entrada OM20AVO3 foi executado com sucesso!","")

    sRestArea( aArea )
Return