Card |
---|
default | true |
---|
id | Ferramentas de Suporte |
---|
label | Execautos |
---|
| Deck of Cards |
---|
startHidden | false |
---|
effectDuration | 0.5 |
---|
id | ExecAutos |
---|
effectType | horizontal |
---|
loopCards | true |
---|
| Card |
---|
default | true |
---|
id | 06072020265 |
---|
label | Faturamento |
---|
| 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 comprasinclusão de Clientes(MATA030): |
| 1- Pedido de Comprade Cadastro de Clientes(MATA030) |
| #Include "Protheus.ch"
|
| #Include RwMakech" #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"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 |
|
Card |
---|
default | true |
---|
id | 06072020265 |
---|
label | Compras |
---|
| Exemplo para popular pedido de compras: Expandir |
---|
title | Exemplo 1- Pedido de Compra |
---|
| #INCLUDE "RWMAKE.CH" #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" User Function GeraPC() Local aCabec := {} Local aItens := {} Local aLinha := {} Local nY := 0 Local cDoc := "" Local lOk := .T. PRIVATE lMsErroAuto := .F. //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Abertura do ambiente | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ConOut(Repl("-",80)) ConOut(PadC("Teste de Inclusao de 2.000 pedidos de compra",80)) //PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SA3","SB1","SB2","SF4","SC7" //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Verificacao do ambiente para teste | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("SB1") dbSetOrder(1) If !SB1->(MsSeek(xFilial("SB1")+"PROD")) // Inserir o código do Produto lOk := .F. ConOut("Cadastrar produto: PROD") // Inserir o código do Produto EndIf dbSelectArea("SF4") dbSetOrder(1) If !SF4->(MsSeek(xFilial("SF4")+"501")) // Inserir o código do TES lOk := .F. ConOut("Cadastrar TES: 501") // Inserir o código do TES EndIf dbSelectArea("SE4") dbSetOrder(1) If !SE4->(MsSeek(xFilial("SE4")+"000")) // Inserir o código da Condição de Pagamento lOk := .F. ConOut("Cadastrar condicao de pagamento: 000") // Inserir o código da Condição de Pagamento EndIf dbSelectArea("SA2") dbSetOrder(1) If !SA1->(MsSeek(xFilial("SA2")+"000000")) // Inserir o código do Fornecedor lOk := .F. ConOut("Cadastrar Fornecedor: 000000") // Inserir o código do Fornecedor EndIf If lOk ConOut("Inicio: "+Time()) For nY := 1 To 2000 //cDoc := GetSxeNum("SC7","C7_NUM") //RollBAckSx8() cDoc := StrZero(nY, 4) + "PC" aCabec := {} aItens := {} aadd(aCabec,{"C7_NUM" ,cDoc, Nil}) aadd(aCabec,{"C7_EMISSAO" ,dDataBase, Nil}) aadd(aCabec,{"C7_ |
| FILENTcFilAntFor nX := 1 To 2 aLinha := {}aadd(aCabec,{"C7_LOJA" ,"00", Nil}) aadd( |
| aLinhaITEMStrZero(nX,4) aLinhaPRODUTOStrZero(nX,4)aLinhaQUANT1 "01", Nil}) aLinha := {} //aadd(aLinha,{"C7_ |
| PRECO150 StrZero(nX,2) ,Nil}) aadd(aLinha,{"C7_ |
| TOTAL150 aItens,aLinha) Next nXMSExecAuto({|a,b,c,d,e| MATA120(a,b,c,d,e)},1,aCabec,aItens,nOpc,.F.aLinha,{"C7_QUANT" ,1 ,Nil}) aadd(aLinha,{"C7_PRECO" ,100 ,Nil}) aadd(aLinha,{"C7_TOTAL" ,100 ,Nil}) aadd(aItens,aLinha) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Inclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ MATA121(aCabec,aItens,3) If !lMsErroAuto ConOut(" |
| Exclusao PC: Incluido com sucesso! "+cDoc) Else ConOut("Erro na |
| exclusaoMostraErro()
RESET ENVIRONMENT Return
Next nY ConOut("Fim : "+Time()) ConOut(Repl("-",80)) EndIf Return(.T.) |
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): Card |
---|
default | true |
---|
id | 06072020265 |
---|
label | Estoque |
---|
| |
| Exemplo de Cadastro de Produtos (MATA010) |
| #Include'TOTVS.ch' #INCLUDE'RWMAKE.CH' #INCLUDE'TBICONN.CH' #INCLUDE'FWMVCDef.ch' #include'protheus.ch'
UserFunctionM010RAut() Local
|
| PARAMIXB1 := {} Local PARAMIXB2 := 3 Local := {} Local aDadosIte := {} LocalaItens := {} Localncont := 0 |
|
Local nQtdIni := 100 Local nVIni1 := 1000 LocalaCabec := {} LocalaItem := {} LocalaLinha := {}
|
| Local ddatabase := Date() Local nOpc := 3 // 3) INCLUSÃO | 4) ALTERAÇÃO Local nPos := 0
PrivateoModel := Nil PrivatelMsErroAuto := .F. PrivateaRotina := {}
Forncont := 1To |
| 50001000//Numero de Produtos que deseja cadastrar 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)
|
| //aDados, "N_OPERATION_INSERT) oModel:Activate() oModel:SetValue("SB1MASTER","B1_COD" ,aItens[ncont][1]) oModel:SetValue("SB1MASTER","B1_aItens,aDados )
ConOut("Inicio mata010 gravacao")
|
| //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(MODELoModel := 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])Verifica e indica no AppServer se a gravação ocorreu normalmente para cada item IfoModel:VldData() oModel:CommitData() CONOUT("Gravacao Ok") Else CONOUT("Erro na gravacao") EndIf
oModel:DeActivate() oModel:Destroy()
oModel := NIL ConOut("Fim mata010 gravacao") //Fim da gravação
NEXT
ReturnNil |
|
|
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 Card |
---|
default | true |
---|
id | 06072020265 |
---|
label | Gestão de Serviços |
---|
| Gerar Atendentes e Orçamentos de Serviços, ao compilar este fonte, acesse a rotina Gestão dos Contratos (TECA870) > Outras Ações > Gerar Registros: Expandir |
---|
title | Gerar Atendentes e Orçamentos |
---|
| #include 'protheus.ch' User Function AT870NWMNU() Local nC Local aRetMenu := {} If ValType(PARAMIXB) == "A" nTam := Len(PARAMIXB) For nC := 1 to nTam aAdd(aRetMenu, aClone(PARAMIXB[nC])) Next nC EndIf aAdd( aRetMenu, {"Gerar Registros", { || u_GERREG()} , 2} ) aAdd( aRetMenu, {"TecTrigger", { || TECTrigger()} , 2} ) aAdd( aRetMenu, {"Teste OS", { || U_TESTOS()} , 2} ) Return aRetMenu User Function GERREG() Local oDlgEscTela := Nil Local oExit Local oOk Local oGet1 Local oGet2 Local oCheck1 Local cVal := "000000" Local cVal2 := "000000" Local lCheck := .T. If Aviso("GsGenRegs","Escolha que tipo de registro deseja gerar automáticamente:",{"Atendentes","Orçamento"},2) == 1 DEFINE MSDIALOG oDlgEscTela TITLE "Gerar Atendentes" FROM 0,0 TO 120,320 PIXEL @ 5, 9 SAY "Quantidade: " SIZE 50, 19 PIXEL oExit := TButton():New( 35, 54, "Sair",oDlgEscTela,{|| oDlgEscTela:End() }, 35,10,,,.F.,.T.,.F.,,.F.,,,.F. ) oOk := TButton():New( 35, 9, "Gerar",oDlgEscTela,{|| AddAtendente(cVal,lCheck), oDlgEscTela:End() }, 35,10,,,.F.,.T.,.F.,,.F.,,,.F. ) oGet1:= TGet():New( 15, 9, { | u | If( PCount() == 0, cVal, cVal := u ) },oDlgEscTela, ; 50, 010, "@E 999999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"cVal",,,,.T. )
oCheck1 := TCheckBox():New(15,60,'Gera Funcionário? (SRA)',{|u|if( pcount()==0,lCheck,lCheck := u)},oDlgEscTela,100,210,,,,,,,,.T.,,,) ACTIVATE MSDIALOG oDlgEscTela CENTERED Else DEFINE MSDIALOG oDlgEscTela TITLE "Gerar Orçamento" FROM 0,0 TO 190,320 PIXEL @ 5, 9 SAY "Quantidade de LOCAIS (TFL): " SIZE 75, 29 PIXEL @ 37, 9 SAY "Quantidade de RH por Local (TFF): " SIZE 85, 29 PIXEL oCheck1 := TCheckBox():New(15,100,'Gerar o contrato?',{|u|if( pcount()==0,lCheck,lCheck := u)},oDlgEscTela,100,210,,,,,,,,.T.,,,)
oGet1:= TGet():New( 15, 9, { | u | If( PCount() == 0, cVal, cVal := u ) },oDlgEscTela, ; 50, 010, "@E 999999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"cVal",,,,.T. )
oGet2:= TGet():New( 50, 9, { | u | If( PCount() == 0, cVal2, cVal2 := u ) },oDlgEscTela, ; 50, 010, "@E 999999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"cVal2",,,,.T. )
oOk := TButton():New( 50, 110, "Gerar",oDlgEscTela,{|| AddORC(cVal,cVal2,lCheck), oDlgEscTela:End() }, 35,10,,,.F.,.T.,.F.,,.F.,,,.F. ) oExit := TButton():New( 70, 110, "Sair",oDlgEscTela,{|| oDlgEscTela:End() }, 35,10,,,.F.,.T.,.F.,,.F.,,,.F. )
ACTIVATE MSDIALOG oDlgEscTela CENTERED EndIf Return .T. Static Function AddAtendente(nQtd,lSRA) Local oGsGenRegs := GsGenRegs():New() nQtd := VAL(Alltrim(nQtd)) IF nQtd > 0 oGsGenRegs:addAtendente(nQtd,lSRA) If lSRA MsgAlert(cValToChar(nQtd) + " atendentes (AA1) e funcionários (SRA) inseridos !") Else MsgAlert(cValToChar(nQtd) + " atendentes inseridos !") EndIf Else MsgAlert("Nenhum atendente inserido") EndIf Return Static Function AddORC(nTFL,nTFF,lGeraGCT) Local oGsGenRegs := GsGenRegs():New() Local nX Local nY nTFL := VAL(Alltrim(nTFL)) nTFF := VAL(Alltrim(nTFF)) If nTFL > 0 .AND. nTFF > 0 oGsGenRegs:addOrcamento("ORC1") For nX := 1 TO nTFL oGsGenRegs:addLocal("ORC1", "LOC" + cValToChar(nX)) For nY := 1 TO nTFF oGsGenRegs:addRH("ORC1", "LOC" + cValToChar(nX), "RH" + cValToChar(nY)) Next nY Next nX If lGeraGCT oGsGenRegs:gerarContrt("ORC1") EndIf TFJ->(DbGoTo(oGsGenRegs:getRec( oGsGenRegs:aORCS[1][2]))) MsgAlert("Processamento concluído! Orçamento: " + TFJ->TFJ_CODIGO + IIF(lGeraGCT,". Contrato: " + TFJ->TFJ_CONTRT,"")) Else MsgAlert("Nenhum orçamento inserido") EndIf |
|
|
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 |
|