Árvore de páginas

Execauto MATA261 - Transferências Múltiplas.

Produto:

Protheus

Versões:

Todas

Ocorrência:

MATA261 - Rotina Automática (Execauto)

Ambiente:

SIGAEST - Estoque e Custos

Descrição:

Rotina automática que permite a inclusão de movimentos de transferências múltiplas.

Objetivo: 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, possui os mesmos parâmetros relacionados, campos, e tem 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", no qual pode ocorrer "Devolução para o Controle de Qualidade".

Parâmetros:
NomeTipoDescriçãoConteúdo Default
ExpA1ArrayArray contendo os valores a serem cadastradas, alteradas ou excluídas.Obrigatório
ExpA2

Array

Informa qual ação a rotina automática irá tomar Inclusão : 3 ou Nill Estorno: 6 3

Passo a passo:

#INCLUDE "PROTHEUS.CH"
#include "rwmake.ch"
#include "TbiConn.ch"

User Function MyMata261()
Local cProd := "PA001"
Local cUM := ""
Local cLocal := ""
Local cDoc := ""
Local cLote := "8888888888"
Local dDatVal := ""
Local nQuant := 0
Local lOk := .T.
Local aItem := {}
Local nOpcAuto:= 3 // Indica qual tipo de ação será tomada (Inclusão/Exclusão)

PRIVATE lMsHelpAuto := .T.
PRIVATE lMsErroAuto := .F.

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Abertura do ambiente |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
PREPARE ENVIRONMENT EMPRESA "YY" FILIAL "01" MODULO "EST"

DbSelectArea("SB1")
DbSetOrder(1)

If !SB1->(MsSeek(xFilial("SB1")+cProd))
    lOk := .F.
    ConOut(OemToAnsi("Cadastrar produto: " + cProd))
Else
    cProd := B1_COD
    cDescri := B1_DESC
    cUM := B1_UM
    cLocal := B1_LOCPAD
EndIf

DbSelectArea("SD5")
DbSetOrder(1)
If !SD5->(MsSeek(xFilial("SD5")+ " " + cProd ))
    lOk := .F.
    ConOut(OemToAnsi("Cadastrar lote: " + cLote ))
Else
    cLote := D5_LOTECTL
    dDataVl := D5_DTVALID
    nQuant := D5_QUANT
EndIf
If lOk
    cDoc := GetSxENum("SD3","D3_DOC",1)
    ConOut(Repl("-",80))
    ConOut(PadC("Teste de Transf. Mod2",80))
    ConOut("Inicio: "+Time())
    //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
    //| Teste de Inclusao |
    //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    Begin Transaction
    //Cabecalho a Incluir
    aAuto := {}
    aadd(aAuto,{cDoc,dDataBase}) //Cabecalho
    
    //Itens a Incluir    
    aAdd(aItem[Len(aItem)],{"D3_COD"         , cProd            ,NIL})// 01.Produto Origem
    aAdd(aItem[Len(aItem)],{"D3_DESCRI"     , cDescri        ,NIL})// 02.Descricao
    aAdd(aItem[Len(aItem)],{"D3_UM"         , cUM            ,NIL})// 03.Unidade de Medida
    aAdd(aItem[Len(aItem)],{"D3_LOCAL"      , cLocal        ,NIL})// 04.Armazem Origem
    aAdd(aItem[Len(aItem)],{"D3_LOCALIZ"    , ""            ,NIL})// 05.Endereco Origem
    aAdd(aItem[Len(aItem)],{"D3_COD"        , cProd            ,NIL})// 06.Produto Destino
    aAdd(aItem[Len(aItem)],{"D3_DESCRI"     , cDescri        ,NIL})// 07.Descricao
    aAdd(aItem[Len(aItem)],{"D3_UM"         , cUM            ,NIL})// 08.Unidade de Medida
    aAdd(aItem[Len(aItem)],{"D3_LOCAL"      , cLocal        ,NIL})// 09.Armazem Destino
    aAdd(aItem[Len(aItem)],{"D3_LOCALIZ"    , ""            ,NIL})// 10.Endereco Destino
    aAdd(aItem[Len(aItem)],{"D3_NUMSERI"    , ""            ,NIL})// 11.Numero de Serie
    aAdd(aItem[Len(aItem)],{"D3_LOTECTL"    , cLote            ,NIL})// 12.Lote Origem
    aAdd(aItem[Len(aItem)],{"D3_NUMLOTE"    , ""            ,NIL})// 13.Sub-Lote
    aAdd(aItem[Len(aItem)],{"D3_DTVALID"    , dDataVl        ,NIL})// 14.Data de Validade
    aAdd(aItem[Len(aItem)],{"D3_POTENCI"    , 0                ,NIL})// 15.Potencia do Lote
    aAdd(aItem[Len(aItem)],{"D3_QUANT"      , nQuant        ,NIL})// 16.Quantidade
    aAdd(aItem[Len(aItem)],{"D3_QTSEGUM"    , 0                ,NIL})// 17.Quantidade na 2 UM
    aAdd(aItem[Len(aItem)],{"D3_ESTORNO"    , ""            ,NIL})// 18.Estorno
    aAdd(aItem[Len(aItem)],{"D3_NUMSEQ"     , ""            ,NIL})// 19.NumSeq
    aAdd(aItem[Len(aItem)],{"D3_LOTECTL"    , cLote            ,NIL})// 20.Lote Destino
    aAdd(aItem[Len(aItem)],{"D3_DTVALID"    , dDataVl        ,NIL})// 21.Data de Validade Destino

    aadd(aAuto,aItem)

    MSExecAuto({|x,y| mata261(x,y)},aAuto,nOpcAuto)
    If !lMsErroAuto
        ConOut("Incluido com sucesso! " + cDoc)
    Else
        ConOut("Erro na inclusao!")
        MostraErro()
    EndIf
    ConOut("Fim : "+Time())
    End Transaction
EndIf
RESET ENVIRONMENT
Return Nil


//===================================================================================
// Exemplo Estorno:
//===================================================================================
User Function Tmata261()
Local aAUTO := {}
Local cDoc := "000113001"
Local cProd := "TESTE "

Private lMsErroAuto := .F.

RpcSetEnv("99","01",,,,,,,,,)
DbSelectArea("SD3")
DbSetOrder(2)
DbSeek(xFilial("SD3")+cDoc+cProd)
aAuto := {}
MSExecAuto({|x,y| mata261(x,y)},aAuto,6)
If !lMsErroAuto
ALERT("Incluido com sucesso! ")
ALERT(CVALTOCHAR(LMSERROAUTO))
Else
ALERT("Erro na inclusao!")
MostraErro()
EndIf
Return


Importante:

O Modelo acima está baseado em campos padrões sem nenhuma integração ativa ou campos adicionais. Sugere-se que o desenvolvedor efetue uma simulação manual, com as integrações ativas, e observe todos os campos que poderão ser obrigatórios e deverão ser adicionados em suas respectivas posições para evitar erro no momento da execução pela falta de campos. O modelo acima não necessariamente é funcional e trata-se apenas de um exemplo orientativo de utilização.

  • Sem rótulos