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

Cross Segmentos - Backoffice Protheus - SIGAFAT - Rotina Automática de Pedido de venda (ExecAuto MATA410)

time.png Tempo aproximado para leitura: 00:03:00 min

Dúvida
Qual é o exemplo de utilização do Execauto MATA410 - Pedidos de Venda?

Ambiente
Cross Segmentos - Backoffice Protheus - SIGAFAT - A partir da release 12.

Solução
Função utilizada para geração de Pedidos de Venda via rotina automática (ExecAuto).

 

OBS: O campo "Bloqueado? (C5_BLQ)" não pode ser alimentado pelo ExecAuto, somente pelo sistema via fonte.


Exemplo

#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH" 

User Function MyMata410()

    Local nOpcX      := 5            //Seleciona o tipo da operacao (3-Inclusao / 4-Alteracao / 5-Exclusao)
    Local cDoc       := ""           //Numero do Pedido de Vendas (alteracao ou exclusao)
    Local cA1Cod     := "000001"     //Codigo do Cliente
    Local cA1Loja    := "01"         //Loja do Cliente
    Local cB1Cod     := "000001"     //Codigo do Produto
    Local cF4TES     := "501"        //Codigo do TES
    Local cE4Codigo  := "001"        //Codigo da Condicao de Pagamento
    Local cFilSA1    := ""
    Local cFilSB1    := ""
    Local cFilSE4    := ""
    Local cFilSF4    := ""
    Local nX         := 0
    Local nY         := 0
    Local aCabec     := {}
    Local aItens     := {}
    Local aLinha     := {}
    Local lOk        := .T.
    Local nPed       := 0   

    Private lMsErroAuto    := .F.
    Private lAutoErrNoFile := .F.  

    //****************************************************************
    //* ABERTURA DO AMBIENTE
    //****************************************************************  

    ConOut(Repl("-",80))
    ConOut(PadC("Teste de Inclusao / Alteracao / Exclusao de Pedido de Venda", 80))   

    PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "FAT" TABLES "SC5","SC6","SA1","SA2","SB1","SB2","SF4"

     
SA1->(dbSetOrder(1))
        SB1->(dbSetOrder(1))
        SE4->(dbSetOrder(1))
        SF4->(dbSetOrder(1))       

        cFilAGG := xFilial("AGG")
        cFilSA1 := xFilial("SA1")
        cFilSB1 := xFilial("SB1")
        cFilSE4 := xFilial("SE4")
        cFilSF4 := xFilial("SF4")      

        //****************************************************************
        //* VERIFICACAO DO AMBIENTE PARA TESTE
        //****************************************************************

        ConOut("Verificando o ambiente")

        //VERIFICAR PRODUTO
        If SB1->(! MsSeek(cFilSB1 + cB1Cod))
            lOk     := .F.
            ConOut("Cadastrar Produto: " + cB1Cod)
        EndIf       

        //VERIFICAR TES
            If SF4->(! MsSeek(cFilSF4 + cF4TES))
            lOk     := .F.
            ConOut("Cadastrar TES: " + cF4TES)
        EndIf
   
      //VERIFICAR CONDICAO DE PAGAMENTO
        If SE4->(! MsSeek(cFilSE4 + cE4Codigo))
            lOk     := .F.
            ConOut("Cadastrar Condicao de Pagamento: " + cE4Codigo)
        EndIf       

        //VERIFICAR CLIENTE
        If SA1->(! MsSeek(cFilSA1 + cA1Cod + cA1Loja))
            lOk     := .F.
            ConOut("Cadastrar Cliente: " + cA1Cod + " - " + cA1Loja)
        EndIf       

        If lOk       

            //****************************************************************
            //* INCLUSAO - INICIO
            //****************************************************************

            IF nOpcX = 3 //Inclusao
                ConOut("Teste de Inclusao")
                ConOut("Inicio: " + Time())

                For nY := 1 To 1  //Quantidade de Pedidos
                    cDoc := GetSxeNum("SC5", "C5_NUM")
                    RollBAckSx8()
                    aCabec   := {}
                    aItens   := {}
                    aLinha   := {}
                    aadd(aCabec, {"C5_NUM"    , cDoc     , Nil})
                    aadd(aCabec, {"C5_TIPO"   , "N"      , Nil})
                    aadd(aCabec, {"C5_CLIENTE", cA1Cod   , Nil})
                    aadd(aCabec, {"C5_LOJACLI", cA1Loja  , Nil})
                    aadd(aCabec, {"C5_LOJAENT", cA1Loja  , Nil})
                    aadd(aCabec, {"C5_CONDPAG", cE4Codigo, Nil})               

                    If cPaisLoc == "PTG"
                        aadd(aCabec, {"C5_DECLEXP", "TESTE", Nil})
                    Endif

                    CONOUT("Passou pelo Array do Cabecalho")               

                    For nX := 1 To 1  //Quantidade de Itens
                        aLinha := {}
                        aadd(aLinha,{"C6_ITEM"   , StrZero(nX,2), Nil})
                        aadd(aLinha,{"C6_PRODUTO", cB1Cod       , Nil})
                        aadd(aLinha,{"C6_QTDVEN" , 1            , Nil})
                        aadd(aLinha,{"C6_PRCVEN" , 1000         , Nil})
                        aadd(aLinha,{"C6_PRUNIT" , 1000         , Nil})
                        aadd(aLinha,{"C6_VALOR"  , 1000         , Nil})
                        aadd(aLinha,{"C6_TES"    , cF4TES       , Nil})
                        aadd(aItens, aLinha)
                        CONOUT("Passou pelo Array dos itens")
                    Next nX

                    CONOUT("Iniciando a gravacao")
                    MSExecAuto({|a, b, c, d| MATA410(a, b, c, d)}, aCabec, aItens, nOpcX, .F.)

                    If !lMsErroAuto
                        nPed := nPed + 1
                        ConOut("Incluido com sucesso! Pedido " + AllTrim(str(nPed)) + ": " + cDoc)
                  Else
                        ConOut("Erro na inclusao!")
                        MOSTRAERRO()
                    EndIf
                Next nY

                ConOut("Fim: " + Time())             

             //****************************************************************
             //* ALTERACAO - INICIO
             //****************************************************************           

            ELSEIF nOpcX = 4 //Alteracao
                ConOut("Teste de Alteracao")
                ConOut("Inicio: " + Time())
                aCabec         := {}
                aItens         := {}
                aLinha         := {}
                lMsErroAuto    := .F.
              lAutoErrNoFile := .F.               

                aadd(aCabec,{"C5_NUM"    , cDoc     , Nil})
                aadd(aCabec,{"C5_TIPO"   , "N"      , Nil})
                aadd(aCabec,{"C5_CLIENTE", cA1Cod   , Nil})
                aadd(aCabec,{"C5_LOJACLI", cA1Loja  , Nil})
                aadd(aCabec,{"C5_LOJAENT", cA1Loja  , Nil})
                aadd(aCabec,{"C5_CONDPAG", cE4Codigo, Nil})               

                If cPaisLoc == "PTG"
                    aadd(aCabec, {"C5_DECLEXP", "TESTE", Nil})
                Endif               

                //ALTERACAO NO ITEM
                For nX := 1 To 1
                    aLinha := {}
                    aadd(aLinha,{"LINPOS"    , "C6_ITEM", StrZero(nX,2)})
                    aadd(aLinha,{"AUTDELETA" , "N"      , Nil          })
                    aadd(aLinha,{"C6_PRODUTO", cB1Cod   , Nil          })
                    aadd(aLinha,{"C6_QTDVEN" , 2        , Nil          })
                    aadd(aLinha,{"C6_PRCVEN" , 2000     , Nil          })
                    aadd(aLinha,{"C6_PRUNIT" , 2000     , Nil          })
                  aadd(aLinha,{"C6_VALOR"  , 4000     , Nil          })
                  aadd(aLinha,{"C6_TES"    , cF4TES   , Nil          })
                    aadd(aItens, aLinha)
                Next nX               

                MSExecAuto({|a, b, c, d| MATA410(a, b, c, d)}, aCabec, aItens, nOpcX, .F.)         

                If !lMsErroAuto
                    ConOut("Alterado com sucesso! Pedido: " + cDoc)
                Else
                    ConOut("Erro na alteracao!")
                    MOSTRAERRO()
                EndIf

                ConOut("Fim: " + Time())               

             //****************************************************************
             //* EXCLUSAO - INICIO
             //****************************************************************

            ELSEIF nOpcX = 5 //Exclusao
                ConOut("Teste de Exclusao")
                ConOut("Inicio: " + Time())
                aCabec         := {}
                aItens         := {}
                aLinha         := {}
                lMsErroAuto    := .F.
                lAutoErrNoFile := .F.               

                aadd(aCabec, {"C5_NUM",     cDoc,      Nil})
                aadd(aCabec, {"C5_TIPO",    "N",       Nil})
                aadd(aCabec, {"C5_CLIENTE", cA1Cod,    Nil})
                aadd(aCabec, {"C5_LOJACLI", cA1Loja,   Nil})
                aadd(aCabec, {"C5_LOJAENT", cA1Loja,   Nil})
                aadd(aCabec, {"C5_CONDPAG", cE4Codigo, Nil})               

                If cPaisLoc == "PTG"
                    aadd(aCabec, {"C5_DECLEXP", "TESTE", Nil})
                Endif                           

                MSExecAuto({|a, b, c| MATA410(a, b, c)}, aCabec, aItens, 5)               

                If !lMsErroAuto
                    ConOut("Excluido com sucesso! Pedido: " + cDoc)
                Else
                    ConOut("Erro na exclusao!")
                EndIf

                ConOut("Fim: " + Time())
                ConOut(Repl("-",80))            
          EndIf
        EndIf 

    RESET ENVIRONMENT

Return(.T.)

Saiba mais:

 

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

0 Comentários

Artigo fechado para comentários.
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 _