Boa tarde galera, estou com um processo de geração de pedido que leva mais de 1 hora, sao 340 itens, é aceitavel levar um determinado tempo, porem mais de 1 hora ? Alguem tem alguma sugestao, abaixo o codigo que eu uso
static function bPed(oSay)
Local aArea := FWGetArea()
local cQry:= ‘’
local _aItens := {}
local _aAutoSC5 := {}
local _aAutoSC6 := {}
local _citem := ‘00’
local cTipProd := ‘’
local cDesPrd := ‘’
local cProdBKP := ‘’
local lcont := .t.
if Alltrim(ZD1_COND) <> '' .and. Alltrim(ZD1_NATURE) <> '' .and. Alltrim(ZD1_VEND) <> '' .and. Alltrim(ZD1_TES) <> ''
oSay:SetText("Consultando dados...")
cQry := " SELECT ZD1_ORCAME, ZD1_CLIENT, ZD1_LOJA,ZD2_ITEM, ZD1_TES,ZD1_VEND,ZD1_COND, ZD1_NATURE,ZD2_PRODUT,ZD3_ITEM,ZD3_QUANT, B1_UM,B1_DESC, ZD3_PBRUNI, ZD3_COD,ZD3_VLITEM FROM ZD1010 ZD1 "
cQry += " INNER JOIN ZD2010 ZD2 ON ZD2_ORCAME = '"+ ZD1->ZD1_ORCAME +"' AND ZD1_FILIAL = ZD2_FILIAL AND ZD2.D_E_L_E_T_ = '' "
cQry += " INNER JOIN ZD3010 ZD3 ON ZD3_ORCAME = '"+ ZD1->ZD1_ORCAME +"' AND ZD2_FILIAL = ZD3_FILIAL AND ZD2_PRODUT = ZD3_PRODUT "
cQry += " INNER JOIN SB1010 SB1 ON ZD2.ZD2_PRODUT = SB1.B1_COD AND SB1.D_E_L_E_T_ = '' "
cQry += " AND ZD3.D_E_L_E_T_ = '' "
cQry += " WHERE ZD1.D_E_L_E_T_ = '' AND ZD1.ZD1_ORCAME = '"+ZD1->ZD1_ORCAME+"' ORDER BY ZD2_ITEM,ZD3_ITEM"
TCQUERY cQry NEW ALIAS "TRBC"
If FWIsAdmin()
ShowLog(cQry)
EndIf
cTipProd:=POSICIONE("SA1",1,XFILIAL("SA1")+TRBC->ZD1_CLIENT+TRBC->ZD1_LOJA,"A1_TIPFPRO")
dbSelectArea('TRBC')
dbgotop()
AADD( _aAutoSC5, { "C5_TIPO" , "N" , Nil } )
AADD( _aAutoSC5, { "C5_EMISSAO" , dDataBase , Nil } )
AADD( _aAutoSC5, { "C5_CLIENTE" , TRBC->ZD1_CLIENT , Nil } )
AADD( _aAutoSC5, { "C5_LOJACLI" , TRBC->ZD1_LOJA , Nil } )
AADD( _aAutoSC5, { "C5_TIPOCLI" , "F" , Nil } )
AADD( _aAutoSC5, { "C5_VEND1" , TRBC->ZD1_VEND , Nil } )
AADD( _aAutoSC5, { "C5_CONDPAG" , TRBC->ZD1_COND , Nil } )
AADD( _aAutoSC5, { "C5_NATUREZ" , TRBC->ZD1_NATURE , Nil } )
While !eof()
_citem := soma1(_citem)
if lcont
AADD(_aItens , {"C6_ITEM" , _citem , Nil } )
if cTipProd == '1'
cDesPrd:= veEst(TRBC->ZD2_PRODUT)
IF cDesPrd == TRBC->ZD2_PRODUT .and. cProdBKP <> cDesPrd
if FWAlertYesNo("O cliente possui configuração para usar estrutura.<br> Nao encontrei a mesma para o produto <b>"+TRBC->ZD2_PRODUT+".<b><br>Deseja continuar e usar este codigo de produto ?", "Estrutura nao encontrada")
lcont := .t.
else
lcont := .f.
endif
Endif
cProdBKP:=cDesPrd
else
cDesPrd := TRBC->ZD2_PRODUT
endif
dbSelectArea('TRBC')
AADD(_aItens , {"C6_PRODUTO" , cDesPrd, Nil } )
AADD(_aItens , {"C6_PRODCLI" , TRBC->ZD3_COD, Nil } )
AADD(_aItens , {"C6_DESCRI" , alltrim(TRBC->B1_DESC), Nil } )
AADD(_aItens , {"C6_UM" , TRBC->B1_UM, Nil } )
AADD(_aItens , {"C6_QTDVEN" , TRBC->ZD3_PBRUNI , Nil } )
AADD(_aItens , {"C6_PRCVEN" , TRBC->ZD3_VLITEM / TRBC->ZD3_PBRUNI , Nil } )
AADD(_aItens , {"C6_QTDLIB" , TRBC->ZD3_PBRUNI , Nil } )
AADD(_aItens , {"C6_ENTREG" , dDatabase , Nil } )
AADD(_aItens , {"C6_TES" , TRBC->ZD1_TES, Nil } )
AADD(_aItens , {"C6_UNSVEN" , TRBC->ZD3_QUANT, Nil } )
AADD( _aAutoSC6, AClone( _aItens ) )
endif
dbskip()
Enddo
TRBC->(DbCloseArea())
IF lcont
oSay:SetText("Gerando pedido...")
ProcessMessages()
Begin Transaction
MsExecAuto({|x,y,z|MATA410(x,y,z)},_aAutoSC5,_aAutoSC6,3)
If lMsErroAuto
_lErroArq := .T.
//If (!IsBlind()) // com interface gráfica
MostraErro()
else
FWAlertSuccess('Pedido gerado <b>'+SC5->C5_NUM+'</b> com sucesso', 'Pedido gerado')
RecLock('ZD1', .f.)
ZD1->ZD1_PEDIDO := SC5->C5_NUM
ZD1->(MsUnlock())
endif
End Transaction
endif
FWRestArea(aArea)
else
FWAlertWarning("Verifique os campos <b><TES, Condição de pagamento, Natureza e vendedor>'</b> na aba Faturamento", "Campos faltantes")
endif
return