Árvore de páginas

CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
  3. Operações
  4. Principais Campos
  5. Pré condições para utilização da rotina
  6. Parâmetros do sistema
  7. Pontos de entrada
  8. Adapter EAI
  9. MILE
  10. M-messenger
  11. Tabelas utilizadas
  12. Processos relacionados
  13. Perguntas e respostas mais frequentes (FAQ)


01. VISÃO GERAL

Permite que a empresa gerencie de forma mais organizada e estruturada as solicitações e efetivações de transferência de materiais, seja entre locais de estoque da mesma filial ou entre filiais distintas.

As principais vantagens desta funcionalidade são:

  • Histórico das transferências.
  • Alçada de aprovação de documentos.
  • transferência entre filiais e armazéns em um mesmo documento.


O processo que envolve o Solicitação de transferência de Materiais contempla as seguintes etapas:

  • Solicitação: o solicitante identifica os materiais e locais envolvidos no processo de transferência.
  • Aprovação: os gestores de estoque (ou outros responsáveis) podem analisar a solicitação e decidir por sua aprovação ou rejeição.
  • Efetivação: o operador do estoque pode efetivar a solicitação de transferência gerando movimentações de estoque nos locais envolvidos e a respectiva atualização de saldos.

O registro da transferência de diversos materiais no mesmo documento viabiliza o saldo empenhado no armazém de origem e a previsão de entrada no armazém de destino.

Esta rotina pode ser utilizada com a alçada de aprovação de documentos, assim, o documento de solicitação de transferência passa por um controle de aprovação antes de ser efetivado, proporcionando mais controle e o registro do seu histórico.

Após o registro e aprovação (caso o controle de alçadas de aprovação esteja habilitado), é possível efetivar a transferência que fará o estorno dos empenhos e previsões de entrada. Ao término do processo, o documento de transferência fica disponível para consulta e o número gerado pode ser visualizado, mantendo assim, o histórico da transação realizada, sendo: Movimento Interno para transferência de armazéns e Documento de Saída para transferência entre filiais.

02. EXEMPLO DE UTILIZAÇÃO

A rotina Produtos permite onde as operações podem ser utilizadas em suas customizações conforme exemplos abaixo:


Incluir uma solicitação de transferência
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"

/*
Exemplo de inclusão de ums solicitacao de transferência via rotina automatica
*/
User Function M311Inc()

Local oModel
Local aLog
Local cMensLog
Local nX

PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'admin' PASSWORD '' MODULO "EST"

oModel := FWLoadModel("MATA311") //Carrega o modelo

oModel:SetOperation(MODEL_OPERATION_INSERT) // Seta operação de inclusão
oModel:Activate() // Ativa o Modelo

//Cabeçalho da solicitacao
oModel:SetValue( 'NNSMASTER', 'NNS_CLASS', '1' )
oModel:SetValue( 'NNSMASTER', 'NNS_ESPECI', ' ' )

//Itens da solicitacao

// produto e local de origem
oModel:SetValue( 'NNTDETAIL', 'NNT_FILORI', '01' )
oModel:SetValue( 'NNTDETAIL', 'NNT_PROD', 'PRO001' )
oModel:SetValue( 'NNTDETAIL', 'NNT_LOCAL', '0A' )

oModel:SetValue( 'NNTDETAIL', 'NNT_QUANT', 1 )

// produto e local de destino
oModel:SetValue( 'NNTDETAIL', 'NNT_FILDES', '01' )
oModel:SetValue( 'NNTDETAIL', 'NNT_PRODD', 'PRO001' )
oModel:SetValue( 'NNTDETAIL', 'NNT_LOCLD', '0B' )

// Caso seja transferencia de filiais os campos de TES de entrada e saida são obrigatorios
//oModel:SetValue( 'NNTDETAIL', 'NNT_TS', '549' )
//oModel:SetValue( 'NNTDETAIL', 'NNT_TE', '072' )

If oModel:VldData() //Validação do modelo
oModel:CommitData() // Gravação do Modelo
Else
aLog := oModel:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
cMensLog := ''
//laco para gravar em string cLog conteudo do array aLog
For nX := 1 to Len(aLog)
If !Empty(aLog[nX])
cMensLog += Alltrim(aLog[nX]) + CHR(13)+CHR(10)
EndIf
Next nX

lMsErroAuto := .T. //seta variavel private como erro
AutoGRLog(cMensLog) //grava log para exibir com funcao mostraerro
MostraErro()
EndIf

oModel:DeActivate() //desativa modelo

Return NIL

Copiar uma solicitação de transfência
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"

/*
Exemplo de Copia de ums solicitacao de transferência via rotina automatica
*/
User Function m311Copy()
Local oModel
Local nX
Local cCodDoc

Private cOpId311		:= "004" // DECLARACAO PARA O REALIZAR A COPIA DA SOLICITACAO

PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'admin' PASSWORD '' MODULO "EST"

cCodDoc := "0000000001" // codigo do documento de solicitação de transferência a ser copiado

//Posiciona registro
dbSelectArea("NNS")
NNS->(DbSetOrder(1))
If NNS->(DbSeek(xFilial("NNS") + cCodDoc))

   //carrega o model
   oModel	:= FWLoadModel( "MATA311" )

   //Define operação do modelo
   oModel:SetOperation( MODEL_OPERATION_INSERT )

   //Ativação do modelo
   oModel:Activate( .T. )

  	//-- Preenchimento dos campos da NNT da 1a linha
   oModel:SetValue( "NNTDETAIL","NNT_QUANT",3)

   If oModel:VldData() //Validação do modelo
      oModel:CommitData() // Gravação do Modelo
   Else
      aLog := oModel:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
      cMensLog := ''
      //laco para gravar em string cLog conteudo do array aLog
      For nX := 1 to Len(aLog)
         If !Empty(aLog[nX])
            cMensLog += Alltrim(aLog[nX]) + CHR(13)+CHR(10)
         EndIf
      Next nX

      lMsErroAuto := .T. //seta variavel private como erro
      AutoGRLog(cMensLog) //grava log para exibir com funcao mostraerro
      MostraErro()
   EndIf

ELSE
   conout("Documento de Solicitação de transferência não encontrado")
ENDIF

Return NIL

Alterar uma solicitação de transferencia
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"

/*
Exemplo de alteracao de ums solicitacao de transferência via rotina automatica
*/
User Function m311Alt()
Local oModel
Local nX
Local cCodDoc

Private cOpId311		:= "004" // DECLARACAO PARA O REALIZAR A ALTERACAO DA SOLICITACAO

PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'admin' PASSWORD '' MODULO "EST"

cCodDoc := "0000000001" // codigo do documento de solicitaзгo de transferência a ser alterado

//Posiciona registro
dbSelectArea("NNS")
NNS->(DbSetOrder(1))
If NNS->(DbSeek(xFilial("NNS") + cCodDoc))

   //carrega o model
   oModel	:= FWLoadModel( "MATA311" )

   //Define operaзгo do modelo
   oModel:SetOperation( MODEL_OPERATION_UPDATE )

   //Ativaзгo do modelo
   oModel:Activate()

  	//-- Preenchimento dos campos da NNT da 1a linha
   oModel:SetValue( "NNTDETAIL","NNT_QUANT",4)

   If oModel:VldData() //Validaзгo do modelo
      oModel:CommitData() // Gravaзгo do Modelo
   Else
      aLog := oModel:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
      cMensLog := ''
      //laco para gravar em string cLog conteudo do array aLog
      For nX := 1 to Len(aLog)
         If !Empty(aLog[nX])
            cMensLog += Alltrim(aLog[nX]) + CHR(13)+CHR(10)
         EndIf
      Next nX

      lMsErroAuto := .T. //seta variavel private como erro
      AutoGRLog(cMensLog) //grava log para exibir com funcao mostraerro
      MostraErro()
   EndIf

ELSE
   conout("Documento de Solicitaзгo de transferência nгo encontrado")
ENDIF

Return NIL
Efetivar uma solicitação de transferencia
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"
 
/*
Exemplo de Efetivar uma solicitacao de transferência via rotina automatica
*/
User Function m311efet()
Local oModel
Local nX
Local cCodDoc
 
Local oModelNNT  
Private cOpId311        := "011" // DECLARACAO PARA O REALIZAR A EFETIVACAO DA SOLICITACAO
 
PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'admin' PASSWORD '' MODULO "EST"
 
    cCodDoc := "0000000001" // codigo do documento de solicitaçãoo de transferência a ser efetivado
 
    //Posiciona registro
    dbSelectArea("NNS")
    NNS->(DbSetOrder(1))
    If NNS->(DbSeek(xFilial("NNS") + cCodDoc))
 
        //carrega o model
        oModel    := FWLoadModel( "MATA311" )
        //Define operação do modelo
        oModel:SetOperation( MODEL_OPERATION_UPDATE )
 
        //Ativação do modelo
        oModel:Activate()
 
        //-- Preenchimento dos campos da NNS
        oModel:SetValue( 'NNSMASTER' , 'NNS_STATUS' , '2' )
        oModel:SetValue( 'NNSMASTER' , 'NNS_ESPECI' , "NF" )
 
        oModelNNT := oModel:GetModel("NNTDETAIL")
        For nX := 1 To oModelNNT:Length()
            oModelNNT:GoLine( nX )
            oModel:SetValue( 'NNTDETAIL' , 'NNT_SERIE' , "001" )// Informe a série desejada
        Next nx
        If oModel:VldData() //Valida??o do modelo
            oModel:CommitData() // Grava??o do Modelo
        Else
            aLog := oModel:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
            cMensLog := ''
            //laco para gravar em string cLog conteudo do array aLog
            For nX := 1 to Len(aLog)
                If !Empty(aLog[nX])
                    cMensLog += Alltrim(aLog[nX]) + CHR(13)+CHR(10)
                EndIf
            Next nX
 
            lMsErroAuto := .T. //seta variavel private como erro
            AutoGRLog(cMensLog) //grava log para exibir com funcao mostraerro
            MostraErro()
        EndIf
 
        oModel:DeActivate() //desativa modelo
    ELSE
       conout("Documento de Solicitação de transferência não encontrado")
    ENDIF
 
Return NIL


Excluir uma solicitação de transferencia
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"

/*
Exemplo de Excluir uma solicitacao de transferência via rotina automatica
*/
User Function m311Exc()
Local oModel
Local nX
Local cCodDoc

PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'admin' PASSWORD '' MODULO "EST"

	cCodDoc := "0000000002" // codigo do documento de solicitação de transferência a ser excluida

	//Posiciona registro
	dbSelectArea("NNS")
	NNS->(DbSetOrder(1))
	If NNS->(DbSeek(xFilial("NNS") + cCodDoc))

		//carrega o model
		oModel    := FWLoadModel( "MATA311" )
		//Define operação do modelo
		oModel:SetOperation( MODEL_OPERATION_DELETE )

		//Ativação do modelo
		oModel:Activate()

		If oModel:VldData() //Validação do modelo
			oModel:CommitData() // Gravação do Modelo
		Else
			aLog := oModel:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
			cMensLog := ''
			//laco para gravar em string cLog conteudo do array aLog
			For nX := 1 to Len(aLog)
				If !Empty(aLog[nX])
					cMensLog += Alltrim(aLog[nX]) + CHR(13)+CHR(10)
				EndIf
			Next nX

			lMsErroAuto := .T. //seta variavel private como erro
			AutoGRLog(cMensLog) //grava log para exibir com funcao mostraerro
			MostraErro()
		EndIf

		oModel:DeActivate() //desativa modelo
	ELSE
	   conout("Documento de Solicitaão de transferência n?o encontrado")
	ENDIF

Return NIL

Observações

Na execução automatica da rotina, não devem ser informados os campos:

  • NNT_FILIAL, NNS_FILIAL e NNS_FILORI, pois estes são preenchidos de acordo com a filial logada
  • NNT_COD e NNS_COD, pois são preenchidos automaticamente pela rotina


03. OPERAÇÕES

Na página principal da rotina, estão disponíveis as opções:


    Permite a inclusão de informações da solicitação de transferência.

    As informações devem ser preenchidas de acordo com as orientações descritas em Principais Campos.

    Após preencher as informações desejadas e clique em Confirmar.

    Bloqueio de Campos

    Não é permitida a alteração dos campos código, data e solicitante em Documento de transferência, sendo gerado automaticamente, conforme usuario logado e ddatabase.

    Permite a alteração de informações da solicitação selecionado.

    As informações devem ser ajustadas de acordo com as orientações descritas em Principais Campos.

    Após alterar as informações desejadas e clique em Confirmar.


    Bloqueio de Campos

    Não é permitida a alteração dos campos código, data e solicitante em Documento de transferência.

    Permite a visualização de informações da solicitação.

    Após visualizar as informações desejadas e clique em Confirmar.


    Permite a exclusão da solicitação de transferência.

    Confira as informações disponíveis e clique em Confirmar.


    Permite a visualização de informações da solicitação e somente editando dos campos Tp.Doc Entr, Especie NF e Just. Rejeic em Documento de transferência. Em Dados de transferência será somente possivel navegar nas informações.

    Após visualizar as informações desejadas e clique em Confirmar.


    Facilita a inclusão de solicitação de transferência de materiais. O sistema faz uma copia da solicitação selecionada atualizando o codigo, data e solicitante , possibilitando a edição e a gravação do o cadastro de um novo produto.



    Procedimentos

    Para cadastrar uma solicitação de transferência utilizando a opção Copiar:

    1. Em Solicitação de transferência de Materiais, posicione o cursor sobre o solicitação a ser copiado.
    2. Clique em Copiar.
    3. É exibida a tela de inclusão apresentando todos os campos preenchidos da mesma forma como foram preenchidos para a solicitação selecionado.
    4. Se necessário altere/preencha os campos que desejar.
    5. Confira os dados e confirme a inclusão.

    Nas operações de Inclusão, Alteração e Cópia é disponibilizada a opção Replicar TES no botão Outras Ações da Rotina. A rotina facilita o preenchimento da solicitação de transferência, pois permite alterar a TES de entrada e de saída de uma ou mais linhas do documento por vez.

    Para utilizar a função, informe os campos:

    • 01 - Filial Destino ?: Permite filtrar quais linhas serão alteradas na solicitação de transferência. Por exemplo, ao informar filial "02", somente as linhas com o campo Filial Destino "02" serão alteradas. Caso o campo seja deixado em branco, todas as linhas serão alteradas.
    • 02 - TES de Saída ?: Informe a TES que será usada no documento de saída
    • 03 - TES de Entrada ?: Informe a TES que será usada no documento de entrada. As opções de TES apresentadas dependem de qual Filial Destino foi informada na pergunta 01, exceto para o caso em que a Filial Destino seja deixada em branco, onde será apresentado o cadastro de TES da filial corrente.

    Após informar os parâmetros, confirme a execução. Será atribuida a TES de entrada e saída nas linhas conforme configurado. Caso alguma linha não possa ser gravada (por exemplo, a TES de entrada informada não existe na filial de destino), o processo será interrompido e uma mensagem será apresentada.


    04. Principais Campos


      Nessa pasta são informados os dados de identificação do produto como código, tipo de produto, unidade de medida primária e secundária, uso de controles específicos por produto como uso de rastreabilidade, alçada, endereçamento e outras.


      Campo:

      Descrição

      Tp. Doc Entr

      Selecione a opção desejada:

      1=A Classificar: o Documento de Entrada será gerado na filial destino com pendência das informações fiscais (TES não definido), ou seja, trata-se de um Pré Documento de Entrada.

      2=Classificado: o Documento de Entrada será gerado na filial destino com as informações fiscais (TES definido).

      Nessa pasta são informados os dados de identificação do produto como código, tipo de produto, unidade de medida primária e secundária, uso de controles específicos por produto como uso de rastreabilidade, alçada, endereçamento e outras.


      Campo:

      Descrição

      Produto  informe o código do produto de origem.
      Armaz. Orig.  informe o código do armazém de origem.
      Quantidade  informe a quantidade do produto que será transferido.
      Filial Dest.  informe a filial destino desejada.
      Prod. Destino  informe o código do produto de destino.
      Armaz. Destino  informe o código do armazém de destino.
      TES Saída  informe o tipo de Saída. No cadastro de TES, os campos Atu. Estoque e Trans. Filial devem estar com o conteúdo igual a Sim; ambos estão localizados na pasta Adm/Fin/Cust.       
      TES Entrada  informe o tipo de Entrada. No cadastro de TES, os campos Atu. Estoque e Trans. Filial devem estar com o conteúdo igual a Sim; ambos estão localizados na pasta Adm/Fin/Cust.


      05. PRÉ CONDIÇÕES PARA UTILIZAÇÃO DA ROTINA


      06. PARÂMETROS DO SISTEMA

      NomePropósitoLink da documentação

      MV_TPCUSST 

      define o custo do produto que deve ser considerado no registro de transferência. Apresenta as opções 1=Lista de Preço; 2=Custo Standard; 3=Último preço de Compra e 4=Custo Unitário.


      MV_APROVTR

      indica se o controle de transferência de produto deve ser submetido para alçada de aprovação. A opção padrão é F.


      MV_STAPROV

      Com o parametro MV_APROVTR ativo, que submete para alçada de aprovação configurada, este parametro fixa qual grupo de aprovação será submetido.  A opção padrão é vazio, em branco.


      MV_CUSFILindica se o recalculo do custo médio deverá calcular o custo aglutinando por Filial (F), por Empresa (E) ou por Armazém (A). A opção padrão é A.  
      MV_AGCUSTOindica se deve aglutinar o custo on-line (por Filial ou Empresa). Respeita a definição do parâmetro MV_CUSFIL. A opção padrão é F.
      MV_MTNLOTEmantém o número do sub-lote para as transferências entre o mesmo produto e o mesmo lote. A opção padrão é N.
      MV_ESTNEGindica se o Sistema permite que os saldos em estoque dos produtos fiquem negativos por meio de movimentações. A opção padrão é S.
      MV_LIBTRFindica se o sistema assume a liberação de credito nos pedidos de transferência de filiais. A opção padrão é desativado .F. 

      07. PONTOS DE ENTRADA


      NomePropósitoEquivalente em MVCLink da documentação

      MT311ROT

      possa manipular os botões existentes e adicionar novos botões na rotina Solicitação de transferência.Não alteradoPEST07671_PONTO_DE_ENTRADA_MT311ROT

      M311FILIAL

      Validação para inclusão ou alteração do ProdutoNão alteradoDT PE M311FILIAL - Permite definição de filiais destino na solicitação de transferência

      MT311Leg

      Permite limpar o conteúdo dos campos de complemento de produtoNão alteradoPEST07666_MT311LEG_ADICIONA_LEGENDA


      08. ADAPTER EAI

      Não se aplica a esta rotina

      Saiba mais em: A camada do EAI

      09. MILE

      Configurar o layout conforme necessidade da importação dos dados. Pontos de atenção:

      • Tipo Adapter: MVC
      • Adapter: MATA311
      • Criar dois canais:
        1. Principal com ID saída NNTMASTER e ocorrência 1-Única
        2. Secundário com ID saída NNSDETAIL com ocorrência N-Várias
      • Não informar os campos:

      NNT_FILIAL

      NNS_FILIAL

      NNS_FILORI

      NNT_COD

      e NNS_COD.

      Vide observações no item 02.

      • A rotina utiliza a configuração padrão de máximo permitido para linhas na grid de um modelo MVC (990) 

      Saiba mais: MILE - Model Integrator Layout Engine

      10. M-MESSENGER

      Não se aplica a esta rotina.

      Saiba mais: M-Messenger - MATA045

      11. TABELAS UTILIZADAS

      • NNS - Cabeçalho Solicitação de transferência de produtos.
      • NNT - Itens Solicitação de transferência de produtos.
      • SB1 - Cadastro de Produto.
      • SB2 - Saldo por Armazém.
      • SB8 - Saldo por Lote.
      • SBF - Saldo por Endereço.
      • SD1 - Itens do Documento de Entrada.
      • SD2 - Itens do Documento de Saída.
      • SD3 - Movimentação Interna.
      • SF1 - Cabeçalho do Documento de Entrada.
      • SF2 - Cabeçalho do Documento de Saída.

      12. PROCESSOS RELACIONADOS

      13. PERGUNTAS E RESPOSTAS MAIS FREQUENTES(FAQ)