Árvore de páginas

CONTEÚDO

  1. Descrição
  2. Localização
  3. Programa Fonte
  4. Parâmetros
  5. Retorno
  6. Exemplo de utilização

01. DESCRIÇÃO

Este Ponto de Entrada permite customizar uma ação após a gravação dos dados (aCols) no SD3.

02. LOCALIZAÇÃO

Localizado na função A241GRAVA (Gravação do movimento)

03. PROGRAMA FONTE

MATA241.PRX

04. Parâmetros

ParâmetroDescriçãoConteúdo Padrão
ParamIXB[1]Número do DocumentoCaractere D3_NUMDOC
ParamIXB[2]Vetor bidimensional com nome campo/valor do campo de usuario (somente será enviado se o Ponto de Entrada MT241CAB for utilizado).Array


05. RETORNO

Retorno: Nil (Nulo)


06. EXEMPLO DE UTILIZAÇÃO

Exemplo
#include "protheus.ch"
#include "rwmake.ch"



User Function MT241GRV()  

Local cNumDOc  := PARAMIXB[1]      
Local cCampos  := PARAMIXB[2] 
Local aArea    := Getarea()
// o Ponto de entrada MT241GRV tem em seu nome GRV devido o local que se encontra A241GRAVA e
// não tem funcionalidades de gravação. Ele somente é acionado APOS a gravação da SD3.
// Se for usado em conjunto com o MT241CAB pode permitir a customização relativos aos campos
// de usuario, Lembrando que os campos do MT241CAB são customizados na area do cabeçalho da tela e não 
// nos itens e um documento pode ter varias linhas de itens.
// Caso não seja usado em conjunto com o MT241CAB, qualquer outro tratamento pode ser feito apos a 
// gravação da SD3.
// Ainda podem ser usados os dois metodos combinados.

//Exemplo se for usado em conjunto com MT241CAB
IF MSGYESNO ('Usa o MT241CAB com campos de usuario ?')
    If  len(cCampos) > 0  // Proteção para validar que existem campos de usuario em uso
        DbSelectarea ('SD3')
        DbSetOrder(8)  //"D3_FILIAL+D3_DOC+D3_NUMSEQ"

        If Dbseek(xFilial('SD3')+cNumDOc)
            while !EOF() .and. D3_DOC = cNumDOc // Loop para varrer os itens
                Reclock ('SD3',.f.)
                D3_CP1 := cCampos[1,2]  //ccampos x,1 = Nome do campo; x,2 = Conteudo  
                D3_CP2 := cCampos[2,2]
                MsUnlock()
                Dbskip()
            EndDo
        EndIf
    EndIf
EndIf
// Exemplo sem o uso do MT241CAB
IF MSGYESNO ('Usa o tratamento APOS a atualização da SD3 ?')
    DbSelectarea ('SD3')
    DbSetOrder(8)  //"D3_FILIAL+D3_DOC+D3_NUMSEQ"

    If SD3->(Dbseek(xFilial('SD3')+cNumDOc))
        while !EOF() .and. SD3->D3_DOC = cNumDOc  // Loop para varrer os itens
            dbselectarea ('SB1')
            dbsetorder(1)
            Dbseek (xfilial('SB1')+SD3->D3_COD)
            If B1_RASTRO == 'N'
                Alert ('O produto '+B1_DESC+' não usa lote')
            EndIf
            SD3->(Dbskip())
        EndDo
    EndIf
EndIf 

restarea(aArea)
return