#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