Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - Backoffice (Linha Protheus) - SIGAEST - Execauto rotina MATA261 Transferencia Multipla

O artigo apresenta um exemplo ADVPL de ExecAuto para a Transferência Múltipla (MATA261), demonstrando inclusão e estorno, com preenchimento dos campos conforme a tela e requisitos de endereçamento.


relogio_tempo_leitura_2.png Tempo aproximado para leitura: 00:02:00 min

Dúvida
Qual o exemplo de Execauto utilizado para executar automaticamente a rotina de Transferencia Multiplica, como fazer essa customização para processo automatico, de inclusao e estorno?

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - SIGAEST - Todas as versões

Solução

As transferências no segundo modelo, oferecido pelo Protheus, permite que vários produtos possam ser transferidos num único documento.

Importante:
Este modelo de transferência é semelhante à transferência normal, possuindo os mesmos parâmetros relacionados, tendo como única diferença o fato de que a data de emissão e o documento se aplicam a todas as transferências.

As transferências realizadas podem tratar casos particulares apresentados no "Ambiente de Inspeção de Entrada", onde pode ocorrer "Devolução para o Controle de Qualidade".

Dada a utilização de campos com mesmo nome (Origem e destino)  é extremamente recomendado o uso da sequencia de campos de acordo com a tela. No exemplo abaixo foi usado a referencia da disposição dos campos na tela padrão. Os campos devem ser informados mesmo que não usado, assim como é seu preenchimento em tela.

#Include "protheus.ch"
#Include "rwmake.ch"
#Include "tbiconn.ch"
 
 
User Function MyMata261()
Local aAuto := {}
Local aItem := {}
Local aLinha := {}
/*
É necessario que:
O parametro MV_LOCALIZ = S
O produto com codigo PA001 tenha controle de endereco ativo
O armazem padrao definido no produto deve ter 2 endereços: ENDER01 e ENDER02
Saldo inicial igual ou superior a 1
E este saldo deve ser enderecçado ao ENDER01
*/
Local aLista := {'PA001','PA001'} //Os produtos a serem utilizados
Local nX
Local nOpcAuto := 0
Local cDocumen := ""
Local lContinua := .T.
 
Private lMsErroAuto := .F.
 
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "EST" TABLES "SB1", "SD3"
 
//
conout("Exemplo de inclusão de movimentação multipla")
 
//Cabecalho a Incluir
cDocumen := GetSxeNum("SD3","D3_DOC")
aadd(aAuto,{cDocumen,dDataBase}) //Cabecalho
 
//Itens a Incluir
aItem := {}
 
for nX := 1 to len(aLista) step 2
    aLinha := {}
    //Origem
    SB1->(DbSeek(xFilial("SB1")+PadR(aLista[nX], tamsx3('D3_COD') [1])))
    aadd(aLinha,{"ITEM",'00'+cvaltochar(nX),Nil})
    aadd(aLinha,{"D3_COD", SB1->B1_COD, Nil}) //Cod Produto origem
    aadd(aLinha,{"D3_DESCRI", SB1->B1_DESC, Nil}) //descr produto origem
    aadd(aLinha,{"D3_UM", SB1->B1_UM, Nil}) //unidade medida origem
    aadd(aLinha,{"D3_LOCAL", SB1->B1_LOCPAD, Nil}) //armazem origem
    aadd(aLinha,{"D3_LOCALIZ", PadR("ENDER01", tamsx3('D3_LOCALIZ') [1]),Nil}) //Informar endereço origem
     
    //Destino
    SB1->(DbSeek(xFilial("SB1")+PadR(aLista[nX+1], tamsx3('D3_COD') [1])))
    aadd(aLinha,{"D3_COD", SB1->B1_COD, Nil}) //cod produto destino
    aadd(aLinha,{"D3_DESCRI", SB1->B1_DESC, Nil}) //descr produto destino
    aadd(aLinha,{"D3_UM", SB1->B1_UM, Nil}) //unidade medida destino
    aadd(aLinha,{"D3_LOCAL", SB1->B1_LOCPAD, Nil}) //armazem destino
    aadd(aLinha,{"D3_LOCALIZ", PadR("ENDER02", tamsx3('D3_LOCALIZ') [1]),Nil}) //Informar endereço destino
     
    aadd(aLinha,{"D3_NUMSERI", "", Nil}) //Numero serie
    aadd(aLinha,{"D3_LOTECTL", "", Nil}) //Lote Origem
    aadd(aLinha,{"D3_NUMLOTE", "", Nil}) //sublote origem
    aadd(aLinha,{"D3_DTVALID", '', Nil}) //data validade
    aadd(aLinha,{"D3_POTENCI", 0, Nil}) // Potencia
    aadd(aLinha,{"D3_QUANT", 1, Nil}) //Quantidade
    aadd(aLinha,{"D3_QTSEGUM", 0, Nil}) //Seg unidade medida
    aadd(aLinha,{"D3_ESTORNO", "", Nil}) //Estorno
    aadd(aLinha,{"D3_NUMSEQ", "", Nil}) // Numero sequencia D3_NUMSEQ
     
    aadd(aLinha,{"D3_LOTECTL", "", Nil}) //Lote destino
    aadd(aLinha,{"D3_NUMLOTE", "", Nil}) //sublote destino
    aadd(aLinha,{"D3_DTVALID", '', Nil}) //validade lote destino
    aadd(aLinha,{"D3_ITEMGRD", "", Nil}) //Item Grade
     
    aadd(aLinha,{"D3_CODLAN", "", Nil}) //cat83 prod origem
    aadd(aLinha,{"D3_CODLAN", "", Nil}) //cat83 prod destino
     
    aAdd(aAuto,aLinha)
 
Next nX
nOpcAuto := 3 // Inclusao
MSExecAuto({|x,y| mata261(x,y)},aAuto,nOpcAuto)
 
if lMsErroAuto
    MostraErro()
    lContinua := .F.
else
    //
    conout("Inclusão de movimentação multipla efetuada com sucesso")
    lContinua := .T.
EndIf
 
conout("Finalizado a inclusão de movimentação multipla")
 
If lContinua
 
    //
    conout("Exemplo de estorno de movimentação multipla baseado na inclusão do movimentação multipla anterior")
 
    lMsErroAuto := .F.
    for nX := 1 to len(aLista) step 2
     
        //-- Preenchimento dos campos
        aAuto := {}
        aadd(aAuto,{"D3_DOC", cDocumen, Nil})
        aadd(aAuto,{"D3_COD", aLista[nX], Nil})
         
        DbSelectArea("SD3")
        DbSetOrder(2)
        DbSeek(xFilial("SD3")+cDocumen+aLista[nX])
     
        //-- Teste de Estorno
        nOpcAuto := 6 // Estornar
        MSExecAuto({|x,y| mata261(x,y)},aAuto,nOpcAuto)
         
        If lMsErroAuto
            MostraErro()
        Else
            conout("Estorno de movimentação multipla efetuada com sucesso")
        EndIf
 
    Next nX
    conout("Finalizado a estorno de movimentação multipla")
EndIf
RESET ENVIRONMENT
 
Return

 

PEs da rotina:

Cross Segmento - Backoffice (Linha Protheus) - SIGAEST - MATA261 - Pontos de Entrada da rotina Transferência Múltipla

DT MATA261 - ExecAuto Transferência Múltipla

 

Saiba mais:

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _