Árvore de páginas

Tempo aproximado para leitura: superior à 15 minutos

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus
Segmento:Logística
Módulo:SIGATMS - Gestão de Transportes
Função:

TMSDUD2DLH - Migrador da tabela Histórico do MDF-e


Requisito/Story/Issue (informe o requisito relacionado) :


DLOGTMS02-4228



02. DESCRIÇÃO

Funcionalidade que permite migrar os dados da tabela DUD-"Movimento da Viagem" que possuem manifestos vinculados para a tabela DLH - Histórico do MDF-e.

Essa rotina só deverá ser utilizado quando existir a tabela DLH - "Movimento da Viagem" e quando as novas funcionalidades referentes a Automação do MDF-e estiverem disponíveis no sistema.

A migração é realizada por meio da rotina TMSDUD2DLH, que inclui e executa a Stored Procedure responsável por fazer a migração.

No final deste documento há um modelo de User Function caso seja executado via sistema, ou seja, fora da rotina de Atualização do sistema ou via banco de dados. Também há o modelo de Stored Procedure que faz a migração e deve ser executada por um DBA - Data Base Analist.

Outras Informações


Nas mudanças de release ou após a execução do UPDDISTR o RUP é executado automaticamente. Caso não haja a atualização do dicionário (execução do UPDDISTR) o processo pode ser executado manualmente através do migrador. O processo de migração de dados é opcional, caso não seja executado dados anteriores da tabela DUD não serão populados na tabela DLH e não ficarão disponíveis. Somente os dados dos novos manifestos emitidos serão vinculados à nova tabela DLH (Histórico do MDF-e). Optando por utillizar o migrador os dados constantes nas tabelas DUD (Movimento de Viagens) e DLH (Histórico do MDF-e) serão sincronizados, ou seja, os dados antigos constantes na DUD referente aos MDF-es emitidos anteriormente ao processo de automação do MDF-e passarão a estar disponíveis no histórico do MDF-e. Abaixo estará detalhado procedimento para utilização do migrador.

Aviso!

Devido à grande quantidade de registros que serão migrados já que o programa usa a tabela DUD – “Movimentos de Viagens” para o processo de migração.

Aconselha-se rodar o migrador num período em que o sistema esteja livre de acessos, pois a rotina pode durar algumas horas para a sua finalização.

Importante: É necessário atualizar o dicionário para ajustar os campos relacionados ao Expedidor e Recebedor. Link explicando como atualizar o dicionário: Atualizador de dicionário e base de dados - UPDDISTR.


03. FUNCIONALIDADES - MIGRADOR MDF-E

Popula a tabela DLH-Histórico do MDF-e com as informações de documentos de transportes x viagens x manifestos já existentes na tabela DUD - "Movimento da Viagem".


04. PROCEDIMENTO PARA CONFIGURAÇÃO MANUAL

Modelo de Stored Procedure


Aviso!

Substitua o grupo '###' pela empresa que será executado a Stored Procedure.

Por exemplo, se a migração ocorrer na empresa T01 substitua todos os '###' por T01.

CREATE PROCEDURE DUD2DLH_SP_T1 AS 

        DECLARE @IDLHREC INTEGER 
        DECLARE @IMAXENTRIES INTEGER 
        DECLARE @ITOTAL_DUD_REC INTEGER 
        DECLARE @IEXISTDLH INTEGER 
        DECLARE @IPROCESSED INTEGER 
BEGIN

        SET @IMAXENTRIES = 8192 
        SET @IPROCESSED = 0 
        SET @ITOTAL_DUD_REC = (SELECT MAX(R_E_C_N_O_) FROM DUD###) 
        SET @IEXISTDLH = (SELECT COUNT(1) FROM DLH### WHERE D_E_L_E_T_ = ' ' AND DLH_FILIAL = ' ') 
        WHILE (@IPROCESSED < @ITOTAL_DUD_REC) 
        BEGIN 
                SET @IDLHREC = ( SELECT COALESCE(MAX(R_E_C_N_O_),0) FROM DLH###) 
                BEGIN TRANSACTION recdlh 
                INSERT INTO DLH###(DLH_FILIAL,DLH_FILORI,DLH_VIAGEM,DLH_FILMAN,DLH_MANIFE,DLH_SERMAN,DLH_FILDOC,DLH_DOC,DLH_SERIE,R_E_C_N_O_) 
                SELECT 
                        DUD.DUD_FILIAL, 
                        DUD.DUD_FILORI, 
                        DUD.DUD_VIAGEM, 
                        DUD.DUD_FILMAN, 
                        DUD.DUD_MANIFE, 
                        DUD.DUD_SERMAN, 
                        DUD.DUD_FILDOC, 
                        DUD.DUD_DOC, 
                        DUD.DUD_SERIE, 
                        (@IDLHREC + (ROW_NUMBER() over (order by (select NULL)))) AS RECNUM 
                        FROM 
                        DUD### DUD WHERE 
                        DUD.D_E_L_E_T_ = ' ' AND DUD.DUD_FILIAL = ' ' 
                        AND DUD.DUD_FILDOC > ' ' 
                        AND DUD.DUD_DOC > ' ' 
                        AND DUD.DUD_SERIE > ' ' 
                        AND DUD.DUD_FILORI > ' ' 
                        AND DUD.DUD_VIAGEM > ' ' 
                        AND DUD.DUD_FILMAN > ' ' 
                        AND DUD.DUD_MANIFE > ' ' 
                        AND DUD.R_E_C_N_O_ > @IPROCESSED AND DUD.R_E_C_N_O_ <= @IPROCESSED + @IMAXENTRIES 
                        AND (@IEXISTDLH = 0 OR NOT EXISTS(SELECT 1 FROM DLH### DLH WHERE DLH.D_E_L_E_T_ = ' ' 
                                  AND DLH.DLH_FILIAL = ' ' 
                                  AND DLH.DLH_FILORI = DUD.DUD_FILORI 
                                  AND DLH.DLH_VIAGEM = DUD.DUD_VIAGEM 
                                  AND DLH.DLH_FILDOC = DUD.DUD_FILDOC 
                                  AND DLH.DLH_DOC = DUD.DUD_DOC 
                                  AND DLH.DLH_SERIE = DUD.DUD_SERIE 
                                  AND DLH.DLH_FILMAN = DUD.DUD_FILMAN 
                                  AND DLH.DLH_MANIFE = DUD.DUD_MANIFE) )
                        COMMIT TRANSACTION recdlh 
                        SET @IPROCESSED = @IPROCESSED + @IMAXENTRIES 
               END 
END

05. MODELO DE USERFUNCTION

Rodar a rotina de migração via sistema, com apoio de user function.

Criar o fonte <nome_arquivo>.prw com base no modelo abaixo:

Mode de Fonte de usuário :

User Function TMMIGDLH()

#INCLUDE 'PROTHEUS.CH'


#DEFINE CRLF Chr(13) + Chr(10)
#DEFINE STR0001 "Erro encontrado no Script da Procedure SP_DUD2DLH "
#DEFINE STR0002 "Erro encontrado ao instalar a procedure SP_DUD2DLH "
#DEFINE STR0003 "Erro encontrado ao executar a procedure SP_DUD2DLH "
#DEFINE STR0004 "Migração de Histórico do MDF-e"
#DEFINE STR0005 "Está rotina tem o objetivo de realizar a migração de dados para a nova funcionalidade "
#DEFINE STR0006 "do Manifesto Eletrônico, gerando dados para a tabela de Histórico do MDF-e."
#DEFINE STR0007 "Sem esse procedimento os Manifestos mais antigos não serão consultados."
#DEFINE STR0008 "Atenção: Esse processo pode demorar algumas horas para finalizar."


/*/{Protheus.doc} TMSMIGDLH
(Rotina para rodar a rotina TMSDUD2DLH() pela tela de programa inicial)
@type User Function
@author user
@since date
@version version
@param param, param_type, param_descr
@return NIL
@example
(examples)
@see (links_or_references)
/*/
User Function TMMIGDLH()
Local cCadastro := STR0004
Local aButtons := {}
Local aText := {}
Local lConfirma := .T.
//| Chama interface grafica usuario
AADD(aText,STR0005)
AADD(aText,STR0006)
AADD(aText,STR0007)
AADD(aText,"" )
AADD(aText,STR0008)

AADD(aButtons, { 1,.T.,{|| RunDLHPrc(), FechaBatch() }} )
AADD(aButtons, { 2,.T.,{|| FechaBatch() }} )
FormBatch( cCadastro, aText, aButtons )

Return Nil

Static Function RunDLHPrc()
If MsgYesNo("Confirma a execução do processo?") == .T.
MsgRun"Migração de Histórico do MDF-e",;
"Migrando Dados...",;
{|lRet| lRet := TMSDUD2DLH(),MsgInfo("Operação Finalizada."," ")} )
EndIf
Return .T.

Inclua a user function no menu de sua preferência por meio do SIGACFG. No exemplo abaixo, foi incluído no menu sigatms.xnu, caminho "Miscelanea\Simulado\"

Acesse a rotina e siga os passos da tela.

SmartClient_2018-10-30_15-22-32.png


Confirme o processamento quando o programa perguntar, conforme imagem abaixo:


SmartClient_2018-10-30_15-23-16.png


Selecione a opção “SIM” e aguarde o termino do processamento.


SmartClient_2018-10-31_14-37-45.png

No final será apresentada a mensagem "Operação Finalizada".


09. DEMAIS INFORMAÇÕES

DUD - Movimento da Viagem

DLH - Histórico do MDF-e


10. ASSUNTOS RELACIONADOS

Documento técnico MDF-e automático neste link.

Exemplos de cenários para utilização do MDF-e automático neste link.