Árvore de páginas

Carregando...

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