Histórico da Página
CONTEÚDO
- Visão Geral
- Fluxo do Processo
- Legenda
- Procedimentos
- Exemplo de utilização
- Operações
- Principais Campos
- Pré condições para utilização da rotina
- Parâmetros do sistema
- Pontos de entrada
- Adapter EAI
- M-messengerParâmetros
- Tabelas utilizadas
- Rotina Automática
- Pontos de Entrada
- Assuntos Relacionados
- Processos relacionados
- 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.
...
- 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 Controle Solicitação de Transferência de Materiais contempla as seguintes etapas:
...
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.
03. LEGENDA
Um documento de solicitação de transferência pode apresentar os seguintes status:
...
1 Liberado
...
- Pode ser alterado.
- Pode ser excluído. Ao realizar este procedimento, os empenhos e previsões de entrada são estornados.
- Pode ser visualizado.
- Com alçada de aprovação: quando for alterado, é enviado novamente para o controle de alçadas voltando para o status Em aprovação.
- Sem alçada de aprovação: quando for alterado, mantem seu status como Liberado.
- Quando for efetivado, muda seu status para Transferido.
...
2 Transferido
...
- Não pode ser alterado.
- Não pode ser excluído.
- Não pode ser efetivado.
- Pode ser visualizado.
...
3 Em Aprovação
...
- Não pode ser alterado.
- Não pode ser excluído.
- Não pode ser efetivado.
- Pode ser visualizado.
- Com alçada de aprovação: no status Em aprovação pode ser rejeitado ou aprovado pelo controle de alçadas.
...
4 Rejeitado
...
- Pode ser alterado.
- Pode ser excluído. Ao realizar este procedimento, os empenhos e previsões de entrada são estornados.
- Pode ser visualizado.
- A solicitação não poderá ser efetivada.
- Com alçada de aprovação: quando for alterado, é enviado novamente para o controle de alçadas voltando para o status de Em aprovação.
04. PROCEDIMENTOS
Antes de realizar a solicitação de transferência é importante considerar alguns critérios:
- Para transferência de produtos entre filiais, o produto em questão deve estar cadastrado na filial de origem e na filial de destino, além disso, o preço do produto não pode ser zerado.
- Os saldos iniciais dos produtos que serão movimentados entre as filiais (origem e destino) devem estar cadastrados, mesmo que sejam informados como zero.
- Cadastrar TES de saída na filial origem para geração de documentos fiscais. É necessário preencher o campo Trans filial com o conteúdo igual a Sim, indicando que o TES é utilizado para o processo de transferência entre filiais.
- Cadastrar TES de entrada na filial destino para geração de documentos fiscais. É necessário preencher o campo Trans filial com o conteúdo igual a Sim, indicando que o TES é utilizada para o processo de transferência entre filiais.
- Cadastrar a condição de pagamento na filial de origem e na filial de destino.
Ao acionar a rotina Controle de Transferência clique em Incluir.
É exibida a tela de Filiais para seleção. Escolha a opção desejada e confirme.
Preencha os campos apresentados:
- 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).
- Produto: informe o código do produto de origem.
- Armaz. Orig.: informe o código do armazém de origem.
- Endereço: informe o código do endereço de origem.
- N. Série: informe o número de série do produto de origem.
- Lote: informe o número do lote do produto de origem.
- Sub-lote: informe o número do sub-lote do produto de origem.
- Dt. Validade: informe a data de validade do lote 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.
- End. Destino: informe o código do endereço de destino.
- Lote Destino: informe o número do lote de destino. Se não informado, são utilizados os mesmos dados do lote de origem
- Dt. Vld Des.: informe a data de validade do lote de destino. Se não informada, são utilizados os mesmos dados da data de origem.
- 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.
O sistema realiza as validações e gera os empenhos dos saldos dos materiais na origem e a previsão de entrada deles no destino. Se o controle de alçadas de aprovação de documentos estiver habilitado, imediatamente é gerada uma alçada para o documento de solicitação de transferência atual e sua condição é alterada pra Em Aprovação. Caso contrário, a condição da solicitação é alterada para Liberado permitindo a transferência.
...
Observação
A opção Alterar não pode ser utilizada para solicitação de transferência finalizada.
Ao confirmar a alteração, o Sistema estorna os empenhos e previsões de entrada feitos antes da alteração e realiza novos empenhos e previsões de entrada com as quantidade atuais.
Caso o registro possua controle de alçadas de aprovação de documentos, a alçada é gerada novamente com os novos valores e a condição da solicitação é alterada pra Em Aprovação. Se o controle de alçadas de aprovação de documentos estiver desabilitado, a condição da solicitação é alterada para Liberado.
05. PARÂMETROS
Para realização do processo de controle de transferência, é importante considerar a configuração de alguns parâmetros:
Obrigatórios
- 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.
Opcionais
- 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_CUSFIL: indica 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_AGCUSTO: indica 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_MTNLOTE: manté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_ESTNEG: indica se o Sistema permite que os saldos em estoque dos produtos fiquem negativos por meio de movimentações. A opção padrão é S.
06. TABELAS UTILIZADAS
- NNS - Transferência de Produtos
- NNT - Solicit. Transf. Produtos
07. ROTINA AUTOMÁTICA
Exemplo de inclusão:
#include 'protheus.ch'
#include 'parmtype.ch'
#INCLUDE "TBICONN.CH"
#INCLUDE "FWMVCDEF.CH"
user function M311RAUT()
Local oModel
Local aLog
Local cLog := ''
Local nX
Local lRet := .T.
PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 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 do contrato
oModel:SetValue( 'NNSMASTER' , 'NNS_FILIAL' , 'D MG 01' )
oModel:SetValue( 'NNSMASTER' , 'NNS_COD' , '0000000141' )
oModel:SetValue( 'NNSMASTER' , 'NNS_DATA' , CTOD('13/01/2020') )
oModel:SetValue( 'NNSMASTER' , 'NNS_SOLICT' , '000000' )
oModel:SetValue( 'NNSMASTER' , 'NNS_CLASS' , '1' )
oModel:SetValue( 'NNSMASTER' , 'NNS_ESPECI' , ' ' )
...
02. EXEMPLO DE UTILIZAÇÃO
A rotina Produtos permite onde as operações podem ser utilizadas em suas customizações conforme exemplos abaixo:
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"
/*
Exemplo de inclusão de ums solicitacao de transferencia 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' )
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
|
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"
/*
Exemplo de Copia de ums solicitacao de transferencia 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 transferencia 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 transferencia não encontrado")
ENDIF
Return NIL
|
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"
/*
Exemplo de alteracao de ums solicitacao de transferencia 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 transferencia 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 transferencia nгo encontrado")
ENDIF
Return NIL |
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"
/*
Exemplo de Efetivar uma solicitacao de transferencia via rotina automatica
*/
User Function m311efet()
Local oModel
Local nX
Local cCodDoc
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 transferencia 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" )
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 transferencia não encontrado")
ENDIF
Return NIL
|
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "TBICONN.CH"
/*
Exemplo de Excluir uma solicitacao de transferencia 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 transferencia 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 transferencia n?o encontrado")
ENDIF
Return NIL |
03. OPERAÇÕES
Na página principal da rotina, estão disponíveis as opções:
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
04. Principais Campos
Âncora #principaiscampos #principaiscampos
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||
|
05. PRÉ CONDIÇÕES PARA UTILIZAÇÃO DA ROTINA
- Processo de transferencia entre Armzazéns
- Processo de transferencia entre filiais Armzazéns
- Unidade de medida
- Local de Estoque
- Produtos
- Saldos Iniciais
- Condição de Pagamento
- Tipo de Entrada Saída
- Fornecedor
- Cliente
06. PARÂMETROS DO SISTEMA
Nome | Propósito | Link 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_CUSFIL | indica 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_AGCUSTO | indica 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_MTNLOTE | manté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_ESTNEG | indica se o Sistema permite que os saldos em estoque dos produtos fiquem negativos por meio de movimentações. A opção padrão é S. |
07. PONTOS DE ENTRADA
Nome | Propósito | Equivalente em MVC | Link da documentação |
---|---|---|---|
MT311ROT | possa manipular os botões existentes e adicionar novos botões na rotina Solicitação de Transferência. | Não alterado | PEST07671_PONTO_DE_ENTRADA_MT311ROT |
M311FILIAL | Validação para inclusão ou alteração do Produto | Não alterado | DT 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 produto | Não alterado | PEST07666_MT311LEG_ADICIONA_LEGENDA |
08. ADAPTER EAI
Não se aplica a esta rotina
Saiba mais em: A camada do EAI
09. MILE
Não se aplica a esta rotina.
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)
If oModel:VldData()
oModel:CommitData()
Else
aLog := oModel:GetErrorMessage() //Recupera o erro do model quando nao passou no VldData
//laco para gravar em string cLog conteudo do array aLog
For nX := 1 to Len(aLog)
If !Empty(aLog[nX])
cLog += Alltrim(aLog[nX]) + CHR(13)+CHR(10)
EndIf
Next nX
lMsErroAuto := .T. //seta variavel private como erro
AutoGRLog(cLog) //grava log para exibir com funcao mostraerro
mostraerro()
lRet := .F. //retorna false
EndIf
oModel:DeActivate() //desativa modelo
Return( lRet )
08. PONTOS DE ENTRADA
M311FILIAL: https://tdn.totvs.com/x/8HMPIQ
MT311LEG: https://tdn.totvs.com/x/UYIjDw
MT311ROT: https://tdn.totvs.com/x/qIB4Dw
09. ASSUNTOS RELACIONADOS
...
No momento não há FAQs referente a esta rotina.
HTML |
---|
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |