CONTEÚDO
01. VISÃO GERAL
A rotina WMSA332 (Monitor de Serviços) utiliza do conceito de MVC, portanto, não possui a mesma estrutura de MsExecAuto, conforme o modelo antigo utilizado no Protheus.
No entanto é possível, pelo modelo de dados, realizar a operação de finalização das movimentações da carga/documento, conforme o exemplo abaixo.
02. EXEMPLO
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
//Função que finaliza todas as movimentações pendentes
User Function FinMov()
Local cAliasD12 := GetNextAlias()
Local oModel
Wm332Autom(.T.) //Indica processo automático
WmsMsgExibe(.F.) //Não exibe mensagens em tela
WmsOpc332("4") //Finalizar
WmsAcao332("3") //Docto / Carga
oModel := FWLoadModel("WMSA332A")
BeginSql Alias cAliasD12
SELECT D12_DOC,
D12_SERIE,
D12_CLIFOR,
D12_LOJA,
D12_SERVIC
FROM %Table:D12%
WHERE D12_FILIAL = %xFilial:D12%
AND D12_STATUS = '4'
AND %NotDel%
GROUP BY D12_DOC,
D12_SERIE,
D12_CLIFOR,
D12_LOJA,
D12_SERVIC
EndSql
While (cAliasD12)->(!EoF())
D12->(DbSetOrder(5))
If D12->(DbSeek(xFilial('D12')+(cAliasD12)->D12_DOC+(cAliasD12)->D12_SERIE+(cAliasD12)->D12_CLIFOR+(cAliasD12)->D12_LOJA+(cAliasD12)->D12_SERVIC))
If D12->D12_STATUS != '1'
oModel:Deactivate()
oModel:SetOperation(MODEL_OPERATION_UPDATE)
If oModel:Activate()
If oModel:VldData()
oModel:CommitData()
EndIf
EndIf
EndIf
EndIf
(cAliasD12)->(DbSkip())
EndDo
(cAliasD12)->(DbCloseArea())
oModel:Destroy()
oModel := nil
Return