Árvore de páginas

EXECUÇÃO AUTOMÁTICA DA ROTINA DE ENTRADA DE DOCUMENTOS DE CLIENTES (TMSA050)

Características do Requisito

Linha de Produto:

Microsiga Protheus®

Segmento:

Supply Chain - Logística

Módulo:

SIGATMS - Gestão de Transportes

Rotina:

Rotina

Nome Técnico

TMSA050

Entrada de Documentos de Clientes

Observação:

A rotina automática TMSA050 tem como objetivo incluir ou excluir registros de recebimento das notas fiscais dos clientes.

MSExecAuto({|u,v,x,y,z| TMSA050(u,v,x,y,z)},xAutoCab,xAutoItens,xItensPesM3,xItensEnder,nOpcAuto )

// xAutoCab - Cabecalho da nota fiscal
// xAutoItens - Itens da nota fiscal
// xItensPesM3 - acols de Peso Cubado
// xItensEnder - acols de Enderecamento
// nOpcAuto - Opcao rotina automática

País(es):

Todos

Banco(s) de Dados:

Todos

Tabelas Utilizadas:

DTC - Documento de Cliente para Transporte

DUH - Endereçamento de Notas Fiscais

DTE - Cubagem de Mercadorias

Sistema(s) Operacional(is):

Windows® / Linux®


MSExecAuto

Descrição:

MSExecAuto de Entrada de Documentos de Clientes.

Localização:

TMSA050.PRW

Evento:

 3 = "Incluir"

Exemplo:

#Include 'Protheus.ch'

User Function ExAut050()

Local aCabDTC := {}
Local aItemDTC := {}
Local aItemEnd := {}
Local aItem := {}
Local cLoteAuto:= " "

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

cLoteAuto := U_ExAut170() //Chama MSExecAuto do TMSA170 para criar o lote automaticamente

// Dados da Nota Fiscal
aCabDTC:= {{"DTC_FILORI" ,"04" , Nil},; //Filial de Origem
{"DTC_LOTNFC" ,cLoteAuto , Nil},; //Número Lote
{"DTC_DATENT" ,dDataBase , Nil},; //Data da Entrada
{"DTC_CLIREM" ,"SP0001" , Nil},; //Cod. Remetente
{"DTC_LOJREM" ,"01" , Nil},; //Loja Remetente
{"DTC_CLIDES" ,"SP0002" , Nil},; //Cod. Destinatário
{"DTC_LOJDES" ,"01" , Nil},; //Loja Destinatário
{"DTC_DEVFRE" ,"1" , Nil},; //Devedor do Frete - 1=Remetente;2=Destinatario;3=Consignatario;4=Despachante
{"DTC_CLIDEV" ,"SP0001" , Nil},; //Devedor - Cliente Devedor do Frete
{"DTC_LOJDEV" ,"01" , Nil},; //Loja Devedor - Loja Cliente Devedor do Frete
{"DTC_CLICAL" ,"SP0001" , Nil},; //Cliente para Calculo
{"DTC_LOJCAL" ,"01" , Nil},; //Loja Cliente para Calculo
{"DTC_TIPFRE" ,"1" , Nil},; //Tipo do Frete - 1=CIF;2=FOB
{"DTC_SERTMS" ,"3" , Nil},; //Servico de Transporte - 1=Rodoviario / 2=Aereo / 3=Fluvial.
{"DTC_TIPTRA" ,"1" , Nil},; //Tipo Transporte
{"DTC_SERVIC" ,"015" , Nil},; //Serviço
{"DTC_TIPNFC" ,"0" , Nil},; //Tipo Nf Cli. - 0=Normal;1=Devolucao;2=SubContratacao;3=Nao Fiscal;4=Exportacao;5=Redesp;6=Nao Fiscal 1;7=Nao Fiscal 2;8=Serv Vincul.Multimodal
{"DTC_CDRORI" ,"2GUARU" , Nil},; //Cod.Regiao Origem
{"DTC_CDRDES" ,"2RGUA" , Nil},; //Cod.Regiao Destino
{"DTC_CDRCAL" ,"2RGUA " , Nil},; //Cod.Regiao Calculo
{"DTC_NCONTR" ,"000000000000014" , Nil},; //Número do Contrato do Cliente.
{"DTC_CODNEG" ,"01" , Nil},; //Código da Negociação do Contrato do Cliente.
{"DTC_DOCTMS" ,"2" , Nil},; //Documento de Transporte
{"DTC_SELORI" ,"1" , Nil}} //Seleciona Origem - 1=Transportadora;2=Cliente Remetente;3=Local Coleta

// Itens da NF
Aadd(aItemDTC,{ {"DTC_FILORI" ,"04" , Nil},; //Filial de Origem
{"DTC_LOTNFC" ,cLoteAuto , Nil},; //Número Lote
{"DTC_NUMNFC" ,cLoteAuto , Nil},; //Doc.Cliente
{"DTC_SERNFC" ,"329" , Nil},; //Serie Docto. Cliente
{"DTC_CODPRO" ,"P01 " , Nil},; //Codigo do Produto
{"DTC_CODEMB" ,"CX" , Nil},; //Codigo da Embalagem
{"DTC_EMINFC" ,dDataBase , Nil},; //Dt.Emissao Nf Cliente
{"DTC_QTDVOL" ,2 , Nil},; //Quantidade de Volumes da Nota Fiscal do Cliente
{"DTC_PESO" ,1 , Nil},; //Peso da Nota Fiscal do Cliente.
{"DTC_VALOR" ,1 , Nil},; //Valor da Nota Fiscal do Cliente
{"DTC_CF" ,5932 , Nil},; //CFOP
{"DTC_USUAGD" ,__cUserID , Nil},; //Codigo do Usuario Responsável pelo Agendamento de Entrega
{"DTC_DOCREE" ,"2" , Nil},; //Documento de Transporte
{"DTC_PRVENT" ,dDataBase+1, Nil},; //Hora Previsao de Entrega
{"DTC_NFENTR" ,"2" , Nil},; //Nome Expedidor
{"DTC_EDI" ,'2' , Nil}}) //Nota Fiscal do EDI Indica se a Nota Fiscal é de EDI (Electronic Data Interchange).

//Endereçamento de Notas Fiscais - DUH (Caso não utilizar Endereçamento, esta parte pode ser comentada no programa e a variável "aItemEnd" apagada do MSExecAuto().
Aadd(aItemEnd,{cLoteAuto+" 329P01 ",; //Numero da Nota + Serie + Produto
{{"01","END01 ",1,"000001","012345","1",,,},; //1 Array contendo o endereçamento (Local + Armazém + Quantidade + Unitizador Sintético + Cod Analitico Unitizador + Versao de Inclusao)
{"01","END02 ",1,"000001","012345","1",,,}}})//2 Array contendo o endereçamento (Local + Armazém + Quantidade + Unitizador Sintético + Cod Analitico Unitizador + Versao de Inclusao)

//Peso Cubado - DTE (Caso não utilizar Peso Cubado, esta parte pode ser comentada no programa e a variável "aItemCub" apagada do MSExecAuto().
Aadd(aItemCub,{cLoteAuto+" 329P01 ",; //Numero da Nota + Serie + Produto
{{2,2,3,4,"DTE",,}}}) //1 Array contendo o Peso Cubado(Quantidade de Volumes + Altura + Largura + Comprimento )

// Executa rotina TMSA050

MSExecAuto({|u,v,x,y,z| TMSA050(u,v,x,y,z)},aCabDTC,aItemDTC,,aItemEnd,3)

// Retorna Resultado do Processo
If lMsErroAuto
MostraErro()
Else
MsgInfo("Nota gravada com sucesso!")
EndIf

Return

//--------------------------------------------------------------------------------

User Function ExAut170()  // Função de MSExecAuto do Lote
Local cRet
Local lMsErroAuto
Local aCab := {}
lMsErroAuto := .F. //Como variável já foi declarada acima, aqui ela foi foi declarada novamente. Caso contrario deve ser declarada com private

//Executa ExecAuto do Lote
AAdd(aCab,{'DTP_QTDLOT',1,Nil})
AAdd(aCab,{'DTP_QTDDIG',0,Nil})
AAdd(aCab,{'DTP_STATUS','1',Nil}) //-- Em aberto
AAdd(aCab,{'DTP_TIPLOT','3',Nil}) //-- Lote Eletronico

// Executa rotina TMSA170
MSExecAuto({|x,y| cRet := TMSA170(x,y)},aCab,3)

// Retorna Resultado do Processo
If lMsErroAuto
MostraErro()
cRet := Space(TamSX3('DTP_LOTNFC')[1])
Return cRet
EndIf

cRet := DTP->DTP_LOTNFC

Return cRet


Descrição:

MSExecAuto de Exclusão de Documentos de Clientes.

Localização:

TMSA050.PRW

Evento:

 5 = "Excluir"

#Include 'Protheus.ch'

User Function ExAux050()

//Esta rotina tem o objetivo de excluir o documento de entrada de cliente.

Local aCabDTC := {}
Local aItem := {}
Local aItemDTC := {}

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

// Dados da Nota Fiscal
aCabDTC :={{"DTC_FILIAL" ," ", Nil},;
{"DTC_FILORI" ,'04', Nil},;
{"DTC_LOTNFC" ,"136822", Nil},;
{"DTC_CLIREM" ,"SP0001", Nil},;
{"DTC_LOJREM" ,"01", Nil},;
{"DTC_DATENT" ,dDatabase, Nil},;
{"DTC_CLIDES" ,"SP0002", Nil},;
{"DTC_LOJDES" ,"01", Nil},;
{"DTC_CLIDEV" ,"SP0001", Nil},;
{"DTC_LOJDEV" ,"01", Nil},;
{"DTC_CLICAL" ,"SP0001", Nil},;
{"DTC_LOJCAL" ,"01", Nil},;
{"DTC_DEVFRE" ,"1", Nil},;
{"DTC_SERTMS" ,"3", Nil},;
{"DTC_TIPTRA" ,"1", Nil},;
{"DTC_SERVIC" ,"015", Nil},;
{"DTC_TIPNFC" ,"0", Nil},;
{"DTC_TIPFRE" ,"1", Nil},;
{"DTC_SELORI" ,"1", Nil},;
{"DTC_CDRORI" ,"2GUARU", Nil},;
{"DTC_CDRDES" ,"2RGUA", Nil}}

// Itens da Nota Fiscal
aItem := {{"DTC_NUMNFC" ,"136822", Nil},;
{"DTC_SERNFC" ,"329", Nil},;
{"DTC_CODPRO" ,"P01", Nil},;
{"DTC_CODEMB" ,"CX", Nil},;
{"DTC_EMINFC" ,dDataBase, Nil},;
{"DTC_QTDVOL" ,1, Nil},;
{"DTC_PESO" ,1, Nil},;
{"DTC_PESOM3" ,"0", Nil},;
{"DTC_VALOR" ,1, Nil},;
{"DTC_BASSEG" ,"0", Nil},;
{"DTC_QTDUNI" ,"0", Nil},;
{"DTC_EDI" ,"2", Nil},;
{"DTC_ESTORN" ,"1", Nil}}

AAdd(aItemDTC,aClone(aItem))


// Executa rotina TMSA050 com o nOpcAuto 5 (Exclui)
MSExecAuto({|u,v,x,y,z| TMSA050(u,v,x,y,z)},aCabDTC,aItemDTC,,,5)

// Retorna Resultado do Processo
If lMsErroAuto
MostraErro()
Else
MsgAlert("Nota Fiscal Excluida.")
EndIf

Return