Árvore de páginas


01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:Backoffice
Módulo:Estoque/Custos (SIGAEST)
Função:MATA185 - Baixa de Pré-Requisição
Ticket:9011865
Issue:DMANMAT01-27731


02. SITUAÇÃO/REQUISITO

Ao executar o processo de inclusão de um local de estoque, via rotina automática, o sistema apresenta inconsistência devido as informações de permissão de usuários e produtos.

03. SOLUÇÃO

Efetuado o ajuste no processo de manutenção do cadastro de local de estoque via rotina automática.

04. DEMAIS INFORMAÇÕES

Abaixo, segue o exemplo de inclusão no cadastro de Local de Estoque (AGRA045) via rotina automática (MsExecAuto) e Modelo de Dados (MVC):

Local de Estoque - AGRA045
#Include 'protheus.ch'
#Include 'parmtype.ch'
#Include 'FwMvcDef.ch'
 
User Function StartEnv( uEmp, uFil )
Local lRet := .T.
 
Default uEmp  := 'T1'
Default uFil  := 'D MG 01'
 
RpcClearEnv()
RpcSetType( 3 )
RpcSetEnv( uEmp, uFil )
 
lRet := U_Agr45Mvc( .T. )
 
RpcClearEnv()
Return lRet
 
 
User Function Agr45Mvc( lMvc )
Local lRet      := .T.
Local lItens    := .F.
Local nInd      := 0
Local cLocCod   := '10'
Local cLocDesc  := 'ARMAZEM 10'
Local cLogError := ''
Local oModel    := Nil
Local oModUSER  := Nil
Local oModPROD  := Nil
Local aUser     := { { 'GQ_USER', '000000' } } //Usuários|Grupo de Usuários - SGQ
Local aProd     := { { 'GQ_PRODUTO', '0000001000' }, { 'GQ_PRODUTO', '0000001001' }, { 'GQ_PRODUTO', '0000001002' } } //Produtos | Grupo de Produtos - SGQ
Local aEstoque  := { { 'NNR_FILIAL', FWxFilial( 'NNR' ), Nil  },{ 'NNR_CODIGO', cLocCod, Nil }, { 'NNR_DESCRI', cLocDesc, Nil }, { 'NNR_MSBLQL', '2', Nil } } //Cabeçalho - NNR
 
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Default lMvc        := .T.
 
dbSelectArea( 'NNR' )
NNR->( dbSetOrder( 1 ) )
 
dbSelectArea( 'SGQ' )
SGQ->( dbSetOrder( 1 ) )
 
If !( lMvc )
    MsExecAuto( { | x,y | AGRA045( x,y ) }, aEstoque, 3 )
    If lMsErroAuto
        lRet := .F.
        If ( IsBlind() )
            cDirErr  := '\ERROTMP\'
            cFileLog := NomeAutoLog()
            lDir     := IIf( !( lIsDir( cDirErr ) ), MakeDir( cDirErr ) == 0 , .T. )
            If lDir
                MostraErro( cDirErr, cFileLog )
                ConOut( 'ERRO AO INCLUIR O LOCAL DE ESTOQUE -> '+ MemoRead( cDirErr + cFileLog, .T. ) )
            Endif
        Else
            MostraErro()
        EndIf
    EndIf
 
Else
    oModel := FwLoadModel( 'AGRA045' )
    oModel:SetOperation( MODEL_OPERATION_INSERT )
 
    oModel:Activate()
    oModUSER  := oModel:GetModel( 'SGQUSER' )
    oModPROD  := oModel:GetModel( 'SGQPROD' )
    lItens    := ( ValType( oModUSER ) == 'O' .And. ValType( oModPROD ) == 'O' )
 
    For nInd := 1 To Len( aEstoque )
        If !( oModel:GetModel( 'NNRMASTER' ):SetValue( aEstoque[ nInd ][ 01 ], aEstoque[ nInd ][ 02 ] ) )
            AEval( oModel:GetErrorMessage(), { | x |  cLogError += cValToChar( x ) + CRLF   } )
            Help(" ",1,"LOCAL-EST",, 'ERRO AO PREENCHER O CABECALHO' + CRLF + cLogError ,1,0)
            ConOut( 'LOCAL-EST -> ERRO AO PREENCHER O CABECALHO' + CRLF + cLogError )
            lRet := .F.
            Exit
        EndIf
    Next nInd
 
    If lRet .And. lItens
        For nInd := 1 To Len( aUser )
        nLinAtu := oModUSER:GetLine()
            Do Case
            Case nInd == 1 .And. nLinAtu == nInd
                    nNewLin := nLinAtu
                    lRet := .T.
            Case nInd > 1
                    nNewLin := oModUSER:AddLine()
                    lRet := ( nNewLin == nInd )
            EndCase
 
            If !( lRet )
                AEval( oModel:GetErrorMessage(), { | x |  cLogError += cValToChar( x ) + CRLF   } )
                Help(" ",1,"USER",, 'ERRO AO ADICIONAR NOVA LINHA NA GRID' + CRLF + cLogError ,1,0)
                ConOut( 'USER -> ERRO AO ADICIONAR NOVA LINHA NA GRID' + CRLF + cLogError )
                Exit
            Else
                oModUSER:GoLine( nNewLin )
                If !( oModUSER:SetValue( aUser[ nInd ][ 01 ], aUser[ nInd ][ 02 ] ) )
                    AEval( oModel:GetErrorMessage(), { | x |  cLogError += cValToChar( x ) + CRLF   } )
                    Help(" ",1,"USER",, 'ERRO AO PREENCHER A LINHA NA GRID' + CRLF + cLogError ,1,0)
                    ConOut( 'USER -> ERRO AO PREENCHER A LINHA NA GRID' + CRLF + cLogError )
                    lRet := .F.
                    Exit
                EndIf
            EndIf
        Next nInd
         
        If lRet
            For nInd := 1 To Len( aProd )
                nLinAtu := oModPROD:GetLine()
                Do Case
                Case nInd == 1 .And. nLinAtu == nInd
                        nNewLin := nLinAtu
                        lRet := .T.
                Case nInd > 1
                        nNewLin := oModPROD:AddLine()
                        lRet := ( nNewLin == nInd )
                EndCase
 
                If !( lRet )
                    AEval( oModel:GetErrorMessage(), { | x |  cLogError += cValToChar( x ) + CRLF   } )
                    Help(" ",1,"PRODUTO",, 'ERRO AO ADICIONAR NOVA LINHA NA GRID' + CRLF + cLogError ,1,0)
                    ConOut( 'PRODUTO -> ERRO AO ADICIONAR NOVA LINHA NA GRID' + CRLF + cLogError )
                    Exit
                Else
                    oModPROD:GoLine( nNewLin )
                    If !( oModPROD:SetValue( aProd[ nInd ][ 01 ], aProd[ nInd ][ 02 ] ) )
                        AEval( oModel:GetErrorMessage(), { | x |  cLogError += cValToChar( x ) + CRLF   } )
                        Help(" ",1,"PRODUTO",, 'ERRO AO PREENCHER LINHA NA GRID' + CRLF + cLogError ,1,0)
                        ConOut( 'PRODUTO -> ERRO AO PREENCHER LINHA NA GRID' + CRLF + cLogError )
                        lRet := .F.
                        Exit
                    EndIf
                EndIf
            Next nInd
        EndIf
    EndIf
 
    If lRet
        lRet:= oModel:VldData()
        If !( lRet )
            AEval( oModel:GetErrorMessage(), { | x |  cLogError += cValToChar( x ) + CRLF   } )
            Help(" ",1,"ERRO",, 'ERRO NA VALIDACAO DO MODELO' + CRLF + cLogError ,1,0)
            ConOut( 'ERRO NA VALIDACAO DO MODELO' + CRLF + cLogError )
        Else
            lRet := oModel:CommitData( oModel )
            If !( lRet )
                AEval( oModel:GetErrorMessage(), { | x |  cLogError += cValToChar( x ) + CRLF   } )
                Help(" ",1,"ERRO",, 'ERRO NA GRAVACAO DO MODELO' + CRLF + cLogError ,1,0)
                ConOut( 'ERRO NA GRAVACAO DO MODELO' + CRLF + cLogError )
            EndIf
        EndIf
    EndIf
 
EndIf
 
If lRet
    ApMsgInfo( 'PROCESSO REALIZADO COM SUCESSO', 'ATENCAO' )
EndIf
 
Return lRet


05. ASSUNTOS RELACIONADOS

  • Não há.