Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Linha de Produto:Microsiga Protheus®
Segmento:Serviços
Módulo:SIGAFAT - Faturamento
Função:MATA410 - Pedido de VendasVenda
Abrangências:Microsiga Protheus 12, Protheus 11, Protheus 10
Versões:Microsiga Protheus 12, Protheus 11, Protheus 10
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível às com as Bases de Dados:Todos
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Todos

...

MSExecAuto({|a, b, c, d, e, f| MATA410(a, b, c, d, , , , e, )}, aCabec, aItens, nOpcX, .F., [aItemRat])

04. PARÂMETROS

NomeTipoDescriçãoDefaultObrigatórioReferência
aCabecArray de registrosArray contendo os campos do cabeçalho (SC5)
Sim
aItensArray de registrosArray contendo os campos dos itens (SC6)
Sim
nOpcXNumérico (opção de execução)3 = Inclusão; 4 = Alteração; 5 = Exclusão
Sim
aItemRatArray de registrosArray contendo os rateios dos itens do Pedido de Venda por Centros de Custo (AGG){}Não

05. RETORNO

{}

06. 

...

EXEMPLOS

Escolha o exemplo modelo desejado abaixo que deseja utilizar de acordo com a sua necessidade de execução:

...

Totvs custom tabs box
tabsExemplo 01, Exemplo 02, Exemplo 03, Exemplo 04
idsExemplo1Exemplo01,Exemplo2Exemplo02
Totvs custom tabs box items
defaultyes
referenciaExemplo1Exemplo01

Este é o exemplo básico para a execução da Rotina Automática do Pedido de VendaUtilize esse exemplo para os Pedidos de Venda que não necessitam das informações de rateio por Centros de Custo:

Bloco de código
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function MyMata410()

Local cDoc       := ""                                                                 // Número do Pedido de Vendas
Local cA1Cod     := "000001"                                                           // Código do Cliente
Local cA1Loja    := "01"                                                               // Loja do Cliente
Local cB1Cod     := "000000000000000000000000000061"                                   // Código do Produto
Local cF4TES     := "501"                                                              // Código do TES
Local cE4Codigo  := "001"                                                              // Código da Condição de Pagamento
Local cMsgLog    := ""
Local cLogErro   := ""
Local cFilSA1    := ""
Local cFilSB1    := ""
Local cFilSE4    := ""
Local cFilSF4    := ""
Local nOpcX      := 0
Local nX         := 0
Local nCount     := 0
Local aCabec     := {}
Local aItens     := {}
Local aLinha     := {}
Local aErroAuto  := {}
Local lOk        := .T.

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

//****************************************************************
//* Abertura do ambiente
//****************************************************************
ConOut("Inicio: " + Time())

ConOut(Repl("-",80))
ConOut(PadC("Teste de inclusao / alteração / exclusão de 01 pedido de venda com 02 itens", 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
//****************************************************************
If SB1->(! MsSeek(cFilSB1 + cB1Cod))
   cMsgLog += "Cadastrar o Produto: " + cB1Cod + CRLF
   lOk     := .F.
EndIf

If SF4->(! MsSeek(cFilSF4 + cF4TES))
   cMsgLog += "Cadastrar o TES: " + cF4TES + CRLF
   lOk     := .F.
EndIf

If SE4->(! MsSeek(cFilSE4 + cE4Codigo))
   cMsgLog += "Cadastrar a Condição de Pagamento: " + cE4Codigo + CRLF
   lOk     := .F.
EndIf

If SA1->(! MsSeek(cFilSA1 + cA1Cod + cA1Loja))
   cMsgLog += "Cadastrar o Cliente: " + cA1Cod + " Loja: " + cA1Loja + CRLF
   lOk     := .F.
EndIf

If lOk

   // Neste RDMAKE (Exemplo), o mesmo número do Pedido de Venda é utilizado para a Rotina Automática (Modelos INCLUSÃO / ALTERAÇÃO e EXCLUSÃO).
   cDoc := GetSxeNum("SC5", "C5_NUM")

   //****************************************************************
   //* Inclusao - INÍCIO
   //****************************************************************
   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

   For nX := 1 To 02
      //--- Informando os dados do item do Pedido de Venda
      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)
   Next nX

   nOpcX := 3
   MSExecAuto({|a, b, c, d| MATA410(a, b, c, d)}, aCabec, aItens, nOpcX, .F.)
   If !lMsErroAuto
      ConOut("Incluido com sucesso! " + cDoc)
   Else
      ConOut("Erro na inclusao!")
      aErroAuto := GetAutoGRLog()
      For nCount := 1 To Len(aErroAuto)
         cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " "
         ConOut(cLogErro)
      Next nCount
   EndIf
   //****************************************************************
   //* Inclusao - FIM
   //****************************************************************

   //****************************************************************
   //* Alteração - INÍCIO
   //****************************************************************
   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

   For nX := 1 To 02
      //--- Informando os dados do item do Pedido de Venda
      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

   nOpcX := 4 
   MSExecAuto({|a, b, c, d| MATA410(a, b, c, d)}, aCabec, aItens, nOpcX, .F.)
   If !lMsErroAuto
      ConOut("Alterado com sucesso! " + cDoc)
   Else
      ConOut("Erro na alteração!")
      aErroAuto := GetAutoGRLog()
      For nCount := 1 To Len(aErroAuto)
         cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " "
         ConOut(cLogErro)
      Next nCount
   EndIf
   //****************************************************************
   //* Alteração - FIM
   //****************************************************************

   //****************************************************************
   //* Exclusão - INÍCIO
   //****************************************************************
   ConOut(PadC("Teste de exclusão",80))

   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

   For nX := 1 To 02
      //--- Informando os dados do item do Pedido de Venda
      aLinha := {}
      aadd(aLinha,{"C6_ITEM",    StrZero(nX,2), 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| MATA410(a, b, c)}, aCabec, aItens, 5)
   If !lMsErroAuto
      ConOut("Excluído com sucesso! " + cDoc)
   Else
      ConOut("Erro na exclusão!")
   EndIf
   //****************************************************************
   //* Exclusão - FIM
   //****************************************************************

Else

   ConOut(cMsgLog)

EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT
Return(.T.)
Totvs custom tabs box items
defaultno
referenciaExemplo2Exemplo02

Utilize esse exemplo para os Pedidos de Venda que necessitam das informações de rateio dos itens do Pedido de Venda por Centros de Custo:

Bloco de código
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function MyMata410()

Local cDoc       := ""                                                                 // Número do Pedido de Vendas
Local cA1Cod     := "000001"                                                           // Código do Cliente
Local cA1Loja    := "01"                                                               // Loja do Cliente
Local cB1Cod     := "000000000000000000000000000061"                                   // Código do Produto
Local cF4TES     := "501"                                                              // Código do TES
Local cE4Codigo  := "001"                                                              // Código da Condição de Pagamento
Local aAGGCC     := {"FAT000001", "FAT000002", "FAT000003", "FAT000004", "FAT000005"}  // Códigos dos Centros de Custo
Local cMsgLog    := ""
Local cLogErro   := ""
Local cFilAGG    := ""
Local cFilSA1    := ""
Local cFilSB1    := ""
Local cFilSE4    := ""
Local cFilSF4    := ""
Local nTmAGGItPd := TamSx3("AGG_ITEMPD")[1]
Local nTmAGGItem := TamSx3("AGG_ITEM")[1]
Local nOpcX      := 0
Local nX         := 0
Local nY         := 0
Local nCount     := 0
Local aCabec     := {}
Local aItens     := {}
Local aLinha     := {}
Local aRatAGG    := {}
Local aItemRat   := {}
Local aAuxRat    := {}
Local aErroAuto  := {}
Local lOk        := .T.

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

//****************************************************************
//* Abertura do ambiente
//****************************************************************
ConOut("Inicio: " + Time())

ConOut(Repl("-",80))
ConOut(PadC("Teste de inclusao / alteração / exclusão de 01 pedido de venda com 02 itens e com rateios por Centros de Custo", 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
//****************************************************************
If SB1->(! MsSeek(cFilSB1 + cB1Cod))
   cMsgLog += "Cadastrar o Produto: " + cB1Cod + CRLF
   lOk     := .F.
EndIf

If SF4->(! MsSeek(cFilSF4 + cF4TES))
   cMsgLog += "Cadastrar o TES: " + cF4TES + CRLF
   lOk     := .F.
EndIf

If SE4->(! MsSeek(cFilSE4 + cE4Codigo))
   cMsgLog += "Cadastrar a Condição de Pagamento: " + cE4Codigo + CRLF
   lOk     := .F.
EndIf

If SA1->(! MsSeek(cFilSA1 + cA1Cod + cA1Loja))
   cMsgLog += "Cadastrar o Cliente: " + cA1Cod + " Loja: " + cA1Loja + CRLF
   lOk     := .F.
EndIf

If lOk

   // Neste RDMAKE (Exemplo), o mesmo número do Pedido de Venda é utilizado para a Rotina Automática (Modelos INCLUSÃO / ALTERAÇÃO e EXCLUSÃO).
   cDoc := GetSxeNum("SC5", "C5_NUM")

   //****************************************************************
   //* Inclusao - INÍCIO
   //****************************************************************
   aCabec   := {}
   aItens   := {}
   aLinha   := {}
   aRatAGG  := {}
   aItemRat := {}
   aAuxRat  := {}
   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

   For nX := 1 To 02
      //--- Informando os dados do item do Pedido de Venda
      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(aLinha,{"C6_RATEIO",  "1",           Nil})
      aadd(aItens, aLinha)

      //--- Informando os dados do rateio por Centro de Custo do item do Pedido de Venda
      //    Montando o Array do Rateio (AGG) conforme o XML MATI410, TOP x PROTHEUS
      //    No exemplo abaixo, os itens estão sendo rateados em 04 Centros de Custos, assumindo 25% para cada
      aAuxRat     := {}
      For nY := 1 to 04
         aRatAGG := {}
         aAdd(aRatAGG, {"AGG_FILIAL",  cFilAGG,                Nil})
         aAdd(aRatAGG, {"AGG_PEDIDO",  cDoc,                   Nil})
         aAdd(aRatAGG, {"AGG_FORNECE", cA1Cod,                 Nil})
         aAdd(aRatAGG, {"AGG_LOJA",    cA1Loja,                Nil})
         aAdd(aRatAGG, {"AGG_ITEMPD",  StrZero(nX,nTmAGGItPd), Nil})
         aAdd(aRatAGG, {"AGG_ITEM",    Strzero(nY,nTmAGGItem), Nil})
         aAdd(aRatAGG, {"AGG_PERC",    25,                     Nil})
         aAdd(aRatAGG, {"AGG_CC",      aAGGCC[nY],             Nil})
         aAdd(aRatAGG, {"AGG_CONTA",   "",                     Nil})
         aAdd(aRatAGG, {"AGG_ITEMCT",  "",                     Nil})
         aAdd(aRatAGG, {"AGG_CLVL",    "",                     Nil})
         aAdd(aAuxRat, aRatAGG)
      Next nY
      aAdd(aItemRat, {StrZero(nX,2), aAuxRat})

   Next nX

   nOpcX := 3
   MSExecAuto({|a, b, c, d, e, f| MATA410(a, b, c, d, , , , e, )}, aCabec, aItens, nOpcX, .F., aItemRat)
   If !lMsErroAuto
      ConOut("Incluido com sucesso! " + cDoc)
   Else
      ConOut("Erro na inclusao!")
      aErroAuto := GetAutoGRLog()
      For nCount := 1 To Len(aErroAuto)
         cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " "
         ConOut(cLogErro)
      Next nCount
   EndIf
   //****************************************************************
   //* Inclusao - FIM
   //****************************************************************

   //****************************************************************
   //* Alteração - INÍCIO
   //****************************************************************
   aCabec         := {}
   aItens         := {}
   aLinha         := {}
   aRatAGG        := {}
   aItemRat       := {}
   aAuxRat        := {}
   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

   For nX := 1 To 02
      //--- Informando os dados do item do Pedido de Venda
      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(aLinha,{"C6_RATEIO",  "1",           Nil})
      aadd(aItens, aLinha)

      //--- Informando os dados do rateio por Centro de Custo do item do Pedido de Venda
      //    Montando o Array do Rateio (AGG) conforme o XML MATI410, TOP x PROTHEUS
      //    No exemplo abaixo, os itens estão sendo rateados em 05 Centros de Custos, assumindo 25% para cada
      aAuxRat     := {}
      For nY := 1 to 05
         aRatAGG := {}
         aAdd(aRatAGG, {"AGG_FILIAL",  cFilAGG,                Nil})
         aAdd(aRatAGG, {"AGG_PEDIDO",  cDoc,                   Nil})
         aAdd(aRatAGG, {"AGG_FORNECE", cA1Cod,                 Nil})
         aAdd(aRatAGG, {"AGG_LOJA",    cA1Loja,                Nil})
         aAdd(aRatAGG, {"AGG_ITEMPD",  StrZero(nX,nTmAGGItPd), Nil})
         aAdd(aRatAGG, {"AGG_ITEM",    Strzero(nY,nTmAGGItem), Nil})
         aAdd(aRatAGG, {"AGG_PERC",    20,                     Nil})
         aAdd(aRatAGG, {"AGG_CC",      aAGGCC[nY],             Nil})
         aAdd(aRatAGG, {"AGG_CONTA",   "",                     Nil})
         aAdd(aRatAGG, {"AGG_ITEMCT",  "",                     Nil})
         aAdd(aRatAGG, {"AGG_CLVL",    "",                     Nil})
         aAdd(aAuxRat, aRatAGG)
      Next nY
      aAdd(aItemRat, {StrZero(nX,2), aAuxRat})
   Next nX

   nOpcX := 4 
   MSExecAuto({|a, b, c, d, e, f| MATA410(a, b, c, d, , , , e, )}, aCabec, aItens, nOpcX, .F., aItemRat)
   If !lMsErroAuto
      ConOut("Alterado com sucesso! " + cDoc)
   Else
      ConOut("Erro na alteração!")
      aErroAuto := GetAutoGRLog()
      For nCount := 1 To Len(aErroAuto)
         cLogErro += StrTran(StrTran(aErroAuto[nCount], "<", ""), "-", "") + " "
         ConOut(cLogErro)
      Next nCount
   EndIf
   //****************************************************************
   //* Alteração - FIM
   //****************************************************************

   //****************************************************************
   //* Exclusão - INÍCIO
   //****************************************************************
   ConOut(PadC("Teste de exclusão",80))

   aCabec         := {}
   aItens         := {}
   aLinha         := {}
   aRatAGG        := {}
   aItemRat       := {}
   aAuxRat        := {}
   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

   For nX := 1 To 02
      //--- Informando os dados do item do Pedido de Venda
      aLinha := {}
      aadd(aLinha,{"C6_ITEM",    StrZero(nX,2), 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(aLinha,{"C6_RATEIO",  "1",           Nil})
      aadd(aItens, aLinha)
   Next nX

   MSExecAuto({|a, b, c| MATA410(a, b, c)}, aCabec, aItens, 5)
   If !lMsErroAuto
      ConOut("Excluído com sucesso! " + cDoc)
   Else
      ConOut("Erro na exclusão!")
   EndIf
   //****************************************************************
   //* Exclusão - FIM
   //****************************************************************

Else

   ConOut(cMsgLog)

EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT
Return(.T.)

...

07.

...

DEMAIS INFORMAÇÕES

Não há.

05. ASSUNTOS RELACIONADOS

  • Não há.

Templatedocumentos

HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>
Composition Setup
import.css=/download/attachments/327912/newLayout.css


Aviso

Para utilização de produtos com grade é necessário utilizar os campos C6_GRADE com "S" e o campo C6_ITEMGRD com o item da grade que se utiliza, junto com o item do pedido de venda.

Exemplo: São utilizados dois produtos da grade independente da quantidade, sendo assim, o primeiro receberá o campo C6_ITEMGRD com "001" e o segundo "002".

Informações
titleRegras de desconto

Para que as Regras de Desconto sejam consideradas, não deve ser informado o campo C6_PRCVEN (Preço Unitário) para a variável aItens.

O parâmetro MV_REGDPRI tem como definição Indicar a ordem de busca a ser considerada para avaliação da regra de desconto. Para que seja aplicada a regra de desconto do cabeçalho e item é necessário definir o índice 1 no parâmetro conforme a documentação (FAT0093 Regras de Desconto (FATA080))


08. ASSUNTOS RELACIONADOS

  • Não há.


Templatedocumentos


Função: MATA410 - Geração automática de Pedido de Vendas (ExecAuto)

Descrição

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

Programa Fonte:

MATA410.PRX

Sintaxe:

MSExecAuto({|a, b, c, d, e, f| MATA410(a, b, c, d, , , , e, )}, aCabec, aItens, nOpcX, .F., [aItemRat])

Retorno:
{}

Exemplos:

HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>
Portuguese
Pagetitle
MATA410 - Geração automática de Pedido de Vendas ExecAutoMATA410 - Geração automática de Pedido de Vendas ExecAuto
Abrangências:Microsiga Protheus 12, Protheus 11, Protheus 10
Versões:Microsiga Protheus 12, Protheus 11, Protheus 10
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível às Bases de Dados:Todos
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Português (Brasil)
Show Card
deckDECK 1
cardCARD 1
Show Card
deckDECK 2
cardCARD 2
Bloco de código
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
 
Function MyMata410()

Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local nX     := 0
Local nY     := 0
Local cDoc   := ""
Local lOk    := .T.

PRIVATE lMsErroAuto := .F.
//****************************************************************
//* Abertura do ambiente
//****************************************************************
ConOut(Repl("-",80))
ConOut(PadC("Teste de Inclusao de 10 pedidos de venda  com 30 itens cada",80))
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "FAT" TABLES "SC5","SC6","SA1","SA2","SB1","SB2","SF4"
//****************************************************************
//* Verificacao do ambiente para teste 
//****************************************************************
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"PA001"))
	lOk := .F.
	ConOut("Cadastrar produto: PA001")
EndIf
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"501"))
	lOk := .F.
	ConOut("Cadastrar TES: 501")
EndIf
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001"))
	lOk := .F.
	ConOut("Cadastrar condicao de pagamento: 001")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"PA002"))
	lOk := .F.
	ConOut("Cadastrar produto: PA002")
EndIf
dbSelectArea("SA1")
dbSetOrder(1)
If !SA1->(MsSeek(xFilial("SA1")+"CL000101"))
	lOk := .F.
	ConOut("Cadastrar cliente: CL000101")
EndIf
If lOk
	ConOut("Inicio: "+Time())
		
		// Obs: Caso não exista controle de numeração automática no inicializador padrão no número do pedido de venda (campo C5_NUM), poderá 
		// ser utilizada a função GetSxeNum(), conforme exemplo abaixo utilizando na atribuição da variável cDoc. As regras de controle de numeração
		// devem ser testadas, e validadas pela empresa.
		
		cDoc := GetSxeNum("SC5","C5_NUM")

		aCabec := {}
		aItens := {}
		aadd(aCabec,{"C5_NUM"   ,cDoc,Nil})
		aadd(aCabec,{"C5_TIPO" ,"N",Nil})
		aadd(aCabec,{"C5_CLIENTE",SA1->A1_COD,Nil})
		aadd(aCabec,{"C5_LOJACLI",SA1->A1_LOJA,Nil})
		aadd(aCabec,{"C5_LOJAENT",SA1->A1_LOJA,Nil})
		aadd(aCabec,{"C5_CONDPAG",SE4->E4_CODIGO,Nil})
		If cPaisLoc == "PTG"
			aadd(aCabec,{"C5_DECLEXP","TESTE",Nil})
		Endif
		For nX := 1 To 30
			aLinha := {}
			aadd(aLinha,{"C6_ITEM",StrZero(nX,2),Nil})
			aadd(aLinha,{"C6_PRODUTO",SB1->B1_COD,Nil})
			aadd(aLinha,{"C6_QTDVEN",1,Nil})
			aadd(aLinha,{"C6_PRCVEN",100,Nil})
			aadd(aLinha,{"C6_PRUNIT",100,Nil})
			aadd(aLinha,{"C6_VALOR",100,Nil})
			aadd(aLinha,{"C6_TES","501",Nil})
			aadd(aItens,aLinha)
		Next nX
		//****************************************************************
		//* Teste de Inclusao              
		//****************************************************************

		MSExecAuto({|x,y,z|mata410(x,y,z)},aCabec,aItens,3)
		If !lMsErroAuto
			ConOut("Incluido com sucesso! "+cDoc)
		Else
			ConOut("Erro na inclusao!")
		EndIf

	ConOut("Fim  : "+Time())
	//****************************************************************
	//* Teste de alteracao                                      
	//****************************************************************
	aCabec := {}
	aItens := {}
	aadd(aCabec,{"C5_NUM",cDoc,Nil})
	aadd(aCabec,{"C5_TIPO","N",Nil})
	aadd(aCabec,{"C5_CLIENTE",SA1->A1_COD,Nil})
	aadd(aCabec,{"C5_LOJACLI",SA1->A1_LOJA,Nil})
	aadd(aCabec,{"C5_LOJAENT",SA1->A1_LOJA,Nil})
	aadd(aCabec,{"C5_CONDPAG",SE4->E4_CODIGO,Nil})
	If cPaisLoc == "PTG"
		aadd(aCabec,{"C5_DECLEXP","TESTE",Nil})
	Endif
	For nX := 1 To 30
		aLinha := {}
		aadd(aLinha,{"LINPOS","C6_ITEM",StrZero(nX,2)})
		aadd(aLinha,{"AUTDELETA","N",Nil})
		aadd(aLinha,{"C6_PRODUTO",SB1->B1_COD,Nil})
		aadd(aLinha,{"C6_QTDVEN",2,Nil})
		aadd(aLinha,{"C6_PRCVEN",100,Nil})
		aadd(aLinha,{"C6_PRUNIT",100,Nil})
		aadd(aLinha,{"C6_VALOR",200,Nil})
		aadd(aLinha,{"C6_TES","501",Nil})
		aadd(aItens,aLinha)
	Next nX	
	ConOut(PadC("Teste de alteracao",80))
	ConOut("Inicio: "+Time())
	MSExecAuto({|x,y,z|mata410(x,y,z)},aCabec,aItens,4)
	ConOut("Fim  : "+Time())
	ConOut(Repl("-",80))	
	//****************************************************************
	//* Teste de Exclusao                                           
	//****************************************************************
	ConOut(PadC("Teste de exclusao",80))
	ConOut("Inicio: "+Time())
	MSExecAuto({|x,y,z|mata410(x,y,z)},aCabec,aItens,5)
	If !lMsErroAuto
		ConOut("Exclusao com sucesso! "+cDoc)
	Else
		ConOut("Erro na exclusao!")
	EndIf
	ConOut("Fim  : "+Time())
	ConOut(Repl("-",80))
EndIf
RESET ENVIRONMENT
Return(.T.)
Parâmetros:
NomeTipoDescriçãoDefaultObrigatórioReferênciaaCabecArray of RecordArray contendo os campos do cabeçalho (SC5).aItensArray of RecordArray contendo os campos dos itens (SC6).nOpcArray of Record3- Inclusão
4- Alteração
5- Exclusão Spanishenglish