Árvore de páginas


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


Finalização de Documento / Carga
#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