Simulação Gestão de Frete Embarcador (GFE)

Já faz um tempo que resolvemos essa questão, mas esqueci de postar aqui. Não lembro exatamente como chegamos na solução, mas ela ficou da seguinte forma:

Utilizamos o modelo da GFEX010 através da FWLoadModel().


oModelSim     := FWLoadModel("GFEX010")
oModelNeg      := oModelSim:GetModel("GFEX010_01")
oModelAgr      := oModelSim:GetModel("DETAIL_01")  
oModelDC       := oModelSim:GetModel("DETAIL_02") 
oModelIt       := oModelSim:GetModel("DETAIL_03") 
oModelTr       := oModelSim:GetModel("DETAIL_04") 
oModelInt      := oModelSim:GetModel("SIMULA")
oModelCal1     := oModelSim:GetModel("DETAIL_05")
oModelCal2     := oModelSim:GetModel("DETAIL_06")    
oModelSim:SetOperation(3)

O preenchimento dos dados obrigatórios via LoadValue()


oModelNeg:LoadValue('CONSNEG' ,"1" )

//Agrupadores
oModelAgr:LoadValue('GWN_NRROM' ,"01" )
oModelAgr:LoadValue('GWN_CDCLFR','0002')                                   
oModelAgr:LoadValue('GWN_CDTPOP','0000000001')
oModelAgr:LoadValue('GWN_DOC'   ,"ROMANEIO")           
//Documento de Carga
oModelDC:LoadValue('GW1_EMISDC', '000001215     ')
oModelDC:LoadValue('GW1_NRDC'  , "00001")
oModelDC:LoadValue('GW1_CDTPDC', 'NFE  ')
oModelDC:LoadValue('GW1_CDREM' , '000001215     ')
oModelDC:LoadValue('GW1_CDDEST', cCodDest)
oModelDC:LoadValue('GW1_TPFRET', "1")
oModelDC:LoadValue('GW1_ICMSDC', "2")
oModelDC:LoadValue('GW1_USO'   , "1")
oModelDC:LoadValue('GW1_NRROM' , "01")
oModelDC:LoadValue('GW1_QTUNI' , 1)   
//Trechos
oModelTr:LoadValue('GWU_EMISDC' ,'000001215     ')
oModelTr:LoadValue('GWU_NRDC'   ,"00001")
oModelTr:LoadValue('GWU_CDTPDC' ,'NFE  ')
oModelTr:LoadValue('GWU_NRCIDD' ,alltrim(cCodRedes))
oModelTr:LoadValue('GWU_SEQ'    ,"01")
//Itens                                
oModelIt:LoadValue('GW8_EMISDC','000001215     ')
oModelIt:LoadValue('GW8_NRDC'  ,"00001")
oModelIt:LoadValue('GW8_CDTPDC','NFE  ')
oModelIt:LoadValue('GW8_ITEM'  ,"ItemA"  )
oModelIt:LoadValue('GW8_DSITEM',"Item Generico")
oModelIt:LoadValue('GW8_CDCLFR','0002')
oModelIt:LoadValue('GW8_PESOR' ,nPeso)
oModelIt:LoadValue('GW8_VALOR' ,nVal)    
oModelIt:LoadValue('GW8_TRIBP' ,"1")

E o disparo da simulação feito atraves de um SetValue


// Dispara a simulação
oModelInt:SetValue("INTEGRA" ,"A")

Na sequencia um for para varrer os resultados da simulação no modelo:


If oModelCal1:GetQtdLine() > 1 .Or. !Empty( oModelCal1:GetValue('C1_NRCALC'  ,1) )
    For nCont := 1 to oModelCal1:GetQtdLine()
        oModelCal1:GoLine(nCont) 
        aRetAux := {}
        aAdd(aRetAux,oModelCal2:GetValue('C2_CDEMIT'  ,1))
        aAdd(aRetAux,POSICIONE("GU3",1,xFilial("GU3")+oModelCal2:GetValue('C2_CDEMIT'  ,1 ),"GU3_NMEMIT"))
        aAdd(aRetAux,oModelCal1:GetValue('C1_VALFRT'  ,nCont))
        aAdd(aRetAux,oModelCal1:GetValue('C1_DTPREN'  ,nCont))
        aAdd(aRet, aRetAux)
    Next nCont     
EndIf

1 curtida