Este exemplo de pedido de venda foi elaborado pela própria equipe de desenvolvimento de produto, através da documentação: MATA410 - Geração automática de Pedido de Vendas ExecAuto
Expandir |
---|
title | Exemplo 1- Pedido de venda |
---|
| #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.)
|
Expandir |
---|
title | Exemplo 2- Pedido de venda (com rateio) |
---|
| #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.)
|
Expandir |
---|
title | Exemplo 3- Pedido de venda (Base Grande) |
---|
| #INCLUDE "RWMAKE.CH" #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" User Function GeraPV() 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.000 pedidos de venda com 2 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")+"502")) lOk := .F. ConOut("Cadastrar TES: 502") 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()) For nY := 1 To 10000 cDoc := GetSxeNum("SC5","C5_NUM") RollBAckSx8() 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}) For nX := 1 To 2 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" ,"502" ,Nil}) aadd(aItens,aLinha) Next nX //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Inclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ MATA410(aCabec,aItens,3) If !lMsErroAuto ConOut("Incluido com sucesso! "+cDoc) Else ConOut("Erro na inclusao!") EndIf Next nY ConOut("Fim : "+Time()) ConOut(Repl("-",80)) EndIf Return(.T.) |
Exemplo para popular pedido de compras Expandir |
---|
title | Exemplo 1- Pedido de Compra |
---|
| #Include "Protheus.ch" #Include "RwMake.ch" #Include "TbiConn.ch" User FUnction EXEC121() Local aCabec := {} Local aItens := {} Local aLinha := {} Local aRatCC := {} Local aRatPrj := {} Local aItemPrj := {{"01","02"},{"02","01"}} //Projeto, Tarefa Local aCCusto := {{40,"01","101010","333330","CL0001"},{60,"02","101011","333330","CL0001"}} //Porcentagem,Centro de Custo, Conta Contabil, Item Conta, CLVL Local nX := 0 Local cDoc := "" Local nOpc := 3 PRIVATE lMsErroAuto := .F. PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" dbSelectArea("SC7") //Teste de Inclusão cDoc := GetSXENum("SC7","C7_NUM") SC7->(dbSetOrder(1)) While SC7->(dbSeek(xFilial("SC7")+cDoc)) ConfirmSX8() cDoc := GetSXENum("SC7","C7_NUM") EndDo aadd(aCabec,{"C7_NUM" ,cDoc}) aadd(aCabec,{"C7_EMISSAO" ,dDataBase}) aadd(aCabec,{"C7_FORNECE" ,"001 "}) aadd(aCabec,{"C7_LOJA" ,"01"}) aadd(aCabec,{"C7_COND" ,"001"}) aadd(aCabec,{"C7_CONTATO" ,"AUTO"}) aadd(aCabec,{"C7_FILENT" ,cFilAnt}) For nX := 1 To 1 aLinha := {} aadd(aLinha,{"C7_PRODUTO" ,"0001",Nil}) aadd(aLinha,{"C7_QUANT" ,1 ,Nil}) aadd(aLinha,{"C7_PRECO" ,100 ,Nil}) aadd(aLinha,{"C7_TOTAL" ,100 ,Nil}) aadd(aItens,aLinha) Next nX //Rateio Centro de Custo aAdd(aRatCC, Array(2)) aRatCC[1][1] := "0001" aRatCC[1][2] := {} For nX := 1 To Len(aCCusto) aLinha := {} aAdd(aLinha, {"CH_FILIAL" , xFilial("SCH"), Nil}) aAdd(aLinha, {"CH_ITEM" , PadL(nX, TamSx3("CH_ITEM")[1], "0"), Nil}) aAdd(aLinha, {"CH_PERC" , aCCusto[nX][1], Nil}) aAdd(aLinha, {"CH_CC" , aCCusto[nX][2], Nil}) aAdd(aLinha, {"CH_CONTA" , aCCusto[nX][3], Nil}) aAdd(aLinha, {"CH_ITEMCTA" , aCCusto[nX][4], Nil}) aAdd(aLinha, {"CH_CLVL" , aCCusto[nX][5], Nil}) aAdd(aRatCC[1][2], aClone(aLinha)) Next nX //Rateio Projeto aAdd(aRatPrj, Array(2)) aRatPrj[1][1] := "0001" aRatPrj[1][2] := {} For nX := 1 To Len(aItemPrj) aLinha := {} aAdd(aLinha, {"AJ7_FILIAL" , xFilial("AJ7") , Nil}) aAdd(aLinha, {"AJ7_PROJET" , aItemPrj[nX][1], Nil}) aAdd(aLinha, {"AJ7_TAREFA" , PadR(aItemPrj[nX][2],TamSX3("AF9_TAREFA")[1]), Nil}) aAdd(aLinha, {"AJ7_NUMPC" , cDoc , Nil}) aAdd(aLinha, {"AJ7_ITEMPC" , "0001" , Nil}) aAdd(aLinha, {"AJ7_COD" , "0001" , Nil}) aAdd(aLinha, {"AJ7_QUANT" , 1 , Nil}) aAdd(aLinha, {"AJ7_REVISA" , "0001" , Nil}) aAdd(aRatPrj[1][2], aClone(aLinha)) Next nX MSExecAuto({|a,b,c,d,e,f,g| MATA120(a,b,c,d,e,f,,g)},1,aCabec,aItens,nOpc,.F.,aRatCC,aRatPrj) If !lMsErroAuto ConOut("Incluido PC: "+cDoc) Else ConOut("Erro na inclusao!") MostraErro() EndIf RESET ENVIRONMENT PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" dbSelectArea("SC7") //Teste de alteração nOpc := 4 cDoc := "000054" //Informar PC ou AE (Alteração / Exclusão) aadd(aCabec,{"C7_NUM" ,cDoc}) aadd(aCabec,{"C7_EMISSAO" ,dDataBase}) aadd(aCabec,{"C7_FORNECE" ,"001 "}) aadd(aCabec,{"C7_LOJA" ,"01"}) aadd(aCabec,{"C7_COND" ,"001"}) aadd(aCabec,{"C7_CONTATO" ,"AUTO"}) aadd(aCabec,{"C7_FILENT" ,cFilAnt}) For nX := 1 To 2 aLinha := {} If nX == 1 //Alteração do 0001 aadd(aLinha,{"C7_ITEM" ,"0001" ,Nil}) aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),Nil}) aadd(aLinha,{"C7_QUANT" ,1 ,Nil}) aadd(aLinha,{"C7_PRECO" ,150 ,Nil}) aadd(aLinha,{"C7_TOTAL" ,150 ,Nil}) aAdd(aLinha,{"LINPOS","C7_ITEM" ,"0001"}) aAdd(aLinha,{"AUTDELETA","N" ,Nil}) Else //Adicionando um novo item no PC/AE aadd(aLinha,{"C7_ITEM" ,"0002" ,Nil}) aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),Nil}) aadd(aLinha,{"C7_QUANT" ,1 ,Nil}) aadd(aLinha,{"C7_PRECO" ,200 ,Nil}) aadd(aLinha,{"C7_TOTAL" ,200 ,Nil}) Endif aadd(aItens,aLinha) Next nX MSExecAuto({|a,b,c,d,e| MATA120(a,b,c,d,e)},1,aCabec,aItens,nOpc,.F.) If !lMsErroAuto ConOut("Alterado PC: "+cDoc) Else ConOut("Erro na alteracao!") MostraErro() EndIf RESET ENVIRONMENT PREPARE ENVIRONMENT EMPRESA "01" FILIAL "1001" MODULO "COM" dbSelectArea("SC7") //Teste de exclusão nOpc := 5 cDoc := "000054" //Informar PC ou AE (Alteração / Exclusão) aadd(aCabec,{"C7_NUM" ,cDoc}) aadd(aCabec,{"C7_EMISSAO" ,dDataBase}) aadd(aCabec,{"C7_FORNECE" ,"001 "}) aadd(aCabec,{"C7_LOJA" ,"01"}) aadd(aCabec,{"C7_COND" ,"001"}) aadd(aCabec,{"C7_CONTATO" ,"AUTO"}) aadd(aCabec,{"C7_FILENT" ,cFilAnt}) For nX := 1 To 2 aLinha := {} aadd(aLinha,{"C7_ITEM" ,StrZero(nX,4) ,Nil}) aadd(aLinha,{"C7_PRODUTO" ,StrZero(nX,4),Nil}) aadd(aLinha,{"C7_QUANT" ,1 ,Nil}) aadd(aLinha,{"C7_PRECO" ,150 ,Nil}) aadd(aLinha,{"C7_TOTAL" ,150 ,Nil}) aadd(aItens,aLinha) Next nX MSExecAuto({|a,b,c,d,e| MATA120(a,b,c,d,e)},1,aCabec,aItens,nOpc,.F.) If !lMsErroAuto ConOut("Exclusao PC: "+cDoc) Else ConOut("Erro na exclusao!") MostraErro() EndIf RESET ENVIRONMENT Return
|
Exemplo para popular documento de entrada - Base Grande. Expandir |
---|
title | Exemplo de Documento de Entrada (Base Grande) |
---|
| #Include "Protheus.ch" User Function GERANOTAS() BatchProcess("Geracao de dados","Criacao de base de dados para testes de performance","",{ || Processa({|lEnd| ProcBase(@lEnd)},"Gerando dados","Gerando dados",.F.)}) Static Function ProcBase() Local aCabec := {} Local aItens := {} Local aLinha := {} Local aNotas := {} Local aPvlNfs := {} Local aBloqueio := {} Local nX := 0 Local nz := 0 Local nw := 0 Local lOk := .T. Local cDoc := "E00000" Local nCount := 0 Local nItemNf := 10 // Numero de itens por NF Local nNumProd := 10 // Numero de produtos a serem gerados Local nNumDoc := 2000 // Numero de notas geradas Local nNumDocOri:= 2000 // Numero de NFs a serem geradas Local nItensNota:= 10 // Numero de itens por NF Local cSerie := "UNI" // Array com os parametros do programa Local aParam460:=Array(30) PRIVATE lMsErroAuto := .F. PRIVATE lHelpAuto := .T. ProcRegua(nNumProd+nNumDocOri+nNumDocOri) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Verificacao do ambiente para inclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ DbSelectArea("SB1") DbSetOrder(1) If !SB1->(dbSeek(xFilial("SB1"))) lOk := .F. ConOut(OemToAnsi("Nao foram encontrados produtos")) EndIf DbSelectArea("SF4") DbSetOrder(1) If !SF4->(dbSeek(xFilial("SF4")+"001")) lOk := .F. ConOut(OemToAnsi("Nao foi encontrada a TES 001")) EndIf DbSelectArea("SE4") DbSetOrder(1) If !SE4->(dbSeek(xFilial("SE4")+"001")) lOk := .F. ConOut(OemToAnsi("Nao foi encontrada a condicao de pagamento 001")) EndIf DbSelectArea("SA2") DbSetOrder(1) If !SA2->(dbSeek(xFilial("SA2")+"F0000101")) lOk := .F. ConOut(OemToAnsi("Nao foi encontrado fornecedor F00001 01")) EndIf //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Criacao das notas fiscais de entrada variando produtos | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("SB1") nX := 0 nNumDoc:=nNumDocOri If lOk While nx <= nNumDoc While nx <= nNumDoc .And. !SB1->(Eof()) .And. SB1->B1_FILIAL == xFilial("SB1") IncProc() aCabec := {} aItens := {} nCount := 0 cDoc := Soma1(cDoc) aadd(aCabec,{"F1_TIPO" ,"N"}) aadd(aCabec,{"F1_FORMUL" ,"N"}) aadd(aCabec,{"F1_DOC" ,(cDoc)}) aadd(aCabec,{"F1_SERIE" ,"UNI"}) aadd(aCabec,{"F1_EMISSAO",dDataBase}) aadd(aCabec,{"F1_FORNECE","F00001"}) aadd(aCabec,{"F1_LOJA" ,"01"}) aadd(aCabec,{"F1_ESPECIE","CTE"}) aadd(aCabec,{"F1_COND","001"}) While nCount <= nItensNota .And. !SB1->(Eof()) .And. SB1->B1_FILIAL == xFilial("SB1") aLinha := {} aadd(aLinha,{"D1_COD" ,SB1->B1_COD,Nil}) aadd(aLinha,{"D1_QUANT",10000,Nil}) aadd(aLinha,{"D1_VUNIT",1,Nil}) aadd(aLinha,{"D1_TOTAL",10000,Nil}) aadd(aLinha,{"D1_TES","001",Nil}) aadd(aItens,aLinha) SB1->(dbSkip()) nCount ++ If SB1->(Eof()) // Recomeca lista de produtos SB1->(dbSetOrder(1)) SB1->(dbSeek(xFilial("SB1"))) EndIf End //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Inclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ MATA103(aCabec,aItens,3) If !lMsErroAuto ConOut("Documento Entrada Incluido com sucesso "+cDoc+" !") Else ConOut("Erro na inclusao "+cDoc+" !") EndIf nx++ End End EndIf RETURN
|
Exemplo para inclusão de Produtos (MATA010): Expandir |
---|
title | Exemplo de Cadastro de Produtos (MATA010) |
---|
| #Include 'TOTVS.ch' #INCLUDE 'RWMAKE.CH' #INCLUDE 'TBICONN.CH' #INCLUDE 'FWMVCDef.ch' #include 'protheus.ch'
User Function M010RAut() Local PARAMIXB1 := {} Local PARAMIXB2 := 3 Local aDados := {} Local aDadosIte := {} Local aItens := {} Local ncont := 0 Local nQtdIni := 100 Local nVIni1 := 1000 Local aCabec := {} Local aItem := {} Local aLinha := {} Local ddatabase := Date() Local nOpc := 3 // 3) INCLUSÃO | 4) ALTERAÇÃO Local nPos := 0 Private oModel := Nil Private lMsErroAuto := .F. Private aRotina := {} For ncont := 1 To 5000 aDados := {} aCabec := {} aLinha := {} aItem := {}
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" USER 'Admin' PASSWORD '' TABLES "SB1" MODULO "EST" AADD(aDados, "A" + cValtoChar( ncont) ) // Código do Produto (B1_COD) AADD(aDados, "Produto " + cValtoChar(ncont) ) // Descrição do Produto (B1_DESC) AADD(aDados, "PA" ) // Tipo do Produto (B1_TIPO) AADD(aDados, "UN" ) // Unidade do Produto (B1_UM) AADD(aDados, "00" ) // Armazém do Produto (B1_LOCPAD) //AADD(aDados, "N" ) //AADD(aDados, "1" ) //AADD(aDados, "1" ) //PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "EST" TABLES "SD3" AADD(aItens, aDados )
//PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 02" USER 'Admin' PASSWORD '' TABLES "SB9" MODULO "EST" ConOut("Inicio mata010 gravacao") oModel := FwLoadModel ("MATA010") oModel:SetOperation(MODEL_OPERATION_INSERT) oModel:Activate() oModel:SetValue("SB1MASTER","B1_COD" ,aItens[ncont][1]) oModel:SetValue("SB1MASTER","B1_DESC" ,aItens[ncont][2]) oModel:SetValue("SB1MASTER","B1_TIPO" ,aItens[ncont][3]) oModel:SetValue("SB1MASTER","B1_UM" ,aItens[ncont][4]) oModel:SetValue("SB1MASTER","B1_LOCPAD" ,aItens[ncont][5]) // oModel:SetValue("SB1MASTER","B1_GRUPO" ,aItens[ncont][6]) //oModel:SetValue("SB1MASTER","B1_LOCALIZ" ,aItens[ncont][6]) //oModel:SetValue("SB1MASTER","B1_GRUPO" ,aItens[ncont][7]) If oModel:VldData() oModel:CommitData() CONOUT("Gravacao Ok") Else CONOUT("Erro na gravacao") EndIf oModel:DeActivate() oModel:Destroy() oModel := NIL ConOut("Fim mata010 gravacao") NEXT Return Nil |
Exemplo para inclusão de Clientes(MATA030): Expandir |
---|
title | Exemplo de Cadastro de Clientes(MATA030) |
---|
| #Include "Protheus.ch" #include "TBICONN.CH" //------------------------------------------------------------------- /*/{Protheus.doc} MyCRMA980 Função de exemplo para utilização da rotina automática de Clientes. /*/ //------------------------------------------------------------------- User Function MyCRMA980() Local aSA1Auto := {} Local aAI0Auto := {} Local nOpcAuto := 3//MODEL_OPERATION_INSERT Local lRet := .T. Private lMsErroAuto := .F. lRet := RpcSetEnv("T1","D MG 01","Admin")
If lRet //---------------------------------- // Dados do Cliente //---------------------------------- aAdd(aSA1Auto,{"A1_COD" ,"XBX141" ,Nil}) aAdd(aSA1Auto,{"A1_LOJA" ,"01" ,Nil}) aAdd(aSA1Auto,{"A1_NOME" ,"ROTINA AUTOMATICA" ,Nil}) aAdd(aSA1Auto,{"A1_NREDUZ" ,"ROTAUTO" ,Nil}) aAdd(aSA1Auto,{"A1_TIPO" ,"F" ,Nil}) aAdd(aSA1Auto,{"A1_END" ,"BRAZ LEME" ,Nil}) aAdd(aSA1Auto,{"A1_BAIRRO" ,"CASA VERDE" ,Nil}) aAdd(aSA1Auto,{"A1_EST" ,"SP" ,Nil}) aAdd(aSA1Auto,{"A1_MUN" ,"SAO PAULO" ,Nil}) aAdd(aSA1Auto,{"A1_INCISS" ,"N" ,Nil}) aAdd(aSA1Auto,{"A1_GRPVEN" ,"000001" ,Nil}) //--------------------------------------------------------- // Dados do Complemento do Cliente //--------------------------------------------------------- aAdd(aAI0Auto,{"AI0_SALDO" ,30 ,Nil}) //------------------------------------ // Chamada para cadastrar o cliente. //------------------------------------ MSExecAuto({|a,b,c| CRMA980(a,b,c)}, aSA1Auto, nOpcAuto, aAI0Auto) If lMsErroAuto lRet := lMsErroAuto MostraErro()// não usar via JOB Else Conout("Cliente incluído com sucesso!") EndIf EndIf RpcClearEnv() Return lRet
|
Exemplo para inclusão de Reserva(MATA430): Expandir |
---|
title | Exemplo de Cadastro de Reserva (Mata430) |
---|
| #Include 'Protheus.ch'
User Function EXEC_A430RESERV()
Local nOpc := 3//PARAMIXB[1] Local aOperacao := {} Local cNumero := "" Local cLocal := "" Local cProduto := "" Local nQuant := 0 Local aLote := {} Local cUser := "" Local lRet
lRet := MsgYesNo("SIM OU NAO") cUser:= Substr(cUsuario,7,15)
IF Empty(M->C5_NUM) cNumero:= SC5->C5_NUM Else cNumero:= M->C5_NUM Endif
IF nOpc == 3 For n:= 1 to len(aCols) //montando o array aOperacao ele deve ter apenas uma dimensao por isso tem que ser passado assim AADD(aOperacao,nOpc) AADD(aOperacao,"PD") AADD(aOperacao,cNumero) AADD(aOperacao,cUser) AADD(aOperacao,xFilial("SC5")) AADD(aOperacao,"")//deve ser montado um array com 1 dimensao desta fo AADD(aLote,aCols[1][37]) AADD(aLote,"" ) AADD(aLote,aCols[1][41] ) AADD(aLote, aCols[1][42])
cProduto := aCols[n][2] cLocal := aCols[n][14] nQuant := aCols[n][5]
A430Reserv(aOperacao,cNumero,cProduto,cLocal,nQuant,aLote,,,)
aOpercacao:= {} Next Endif
Return |
|