Totvs custom tabs box items |
---|
default | yes |
---|
referencia | Exemplo01 |
---|
| Este é o exemplo básico para a execução da Rotina Automática do Pedido de Venda: Bloco de código |
---|
| #INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
User Function MyMata410()
Local cDoc |
|
Sintaxe: MATA410 - Geração automática de Pedido de Vendas (ExecAuto) ( [ aCabec ] [ aItens ] [ nOpc ] ) Exemplos #INCLUDE "PROTHEUS.CH"#INCLUDE "TBICONN.CH"/*/±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ¿±±±±³Fun‡„o ³MyMata410 ³ Autor ³ Eduardo Riera ³ Data ³17.04.2003 ³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄ´±±±±³ ³Rotina de teste da rotina automatica do programa MATA410 ³±±±±³³³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±±±³Parametros³Nenhum // Número do Pedido de Vendas
Local cA1Cod := "000001" |
| ³±±±±³³ // Código do Cliente
Local cA1Loja := "01" |
| ³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±±±³Retorno³Nenhum // Loja do Cliente
Local cB1Cod := "000000000000000000000000000061" |
| ³±±±±³ // Código do Produto
Local |
| ³³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±±±³Descri‡„o³Estarotinatemcomoobjetivoefetuartestesnarotinade³±±±±³³pedidodevenda³±±±±³ // 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 |
| ³±±±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±±±³Uso³Materiais := {}
Local aLinha := {}
Local aErroAuto := {}
Local lOk := .T.
Private lMsErroAuto := .F.
Private lAutoErrNoFile |
| ³±±±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß/*/Function MyMata410()Local aCabec := {}Local aItens := {}Local aLinha := {}Local nX := 0Local nY := 0Local 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")EndIfdbSelectArea("SF4")dbSetOrder(1)If !SF4->(MsSeek(xFilial("SF4")+"501")) lOk := .F. ConOut("Cadastrar TES: 501")EndIfdbSelectArea("SE4")dbSetOrder(1)If !SE4->(MsSeek(xFilial("SE4")+"001")) lOk := .F. ConOut("Cadastrar condicao de pagamento: 001")EndIfIf !SB1->(MsSeek(xFilial("SB1")+"PA002")) lOk := .F. ConOut("Cadastrar produto: PA002")EndIfdbSelectArea("SA1")dbSetOrder(1)If !SA1->(MsSeek(xFilial("SA1")+"CL000101")) lOk := .F. ConOut("Cadastrar cliente: CL000101")EndIfIf lOk ConOut("Inicio: "+Time()) For nY := 1 To 10 := .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") |
| 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}) 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})
//****************************************************************
//* 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_ |
| PRUNIT100,Nil}) aadd(aLinha,{"C6_VALOR",100,Nil}) StrZero(nX,2), Nil})
aadd(aLinha,{"C6_ |
| TES"501",Nil}) aadd(aItens,aLinha) Next nX //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Inclusao cB1Cod, Nil})
aadd(aLinha,{"C6_QTDVEN", 1, Nil})
|
| aadd(aLinha,{"C6_PRCVEN", 1000, |
| | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ MATA410(aCabec,aItens,3) If !lMsErroAuto ConOut("Incluido com sucesso! "+cDoc) Else ConOut("Erro na inclusao!") EndIf Next nY ConOut("Fim : "+Time()) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de alteracao Nil})
aadd(aLinha,{"C6_PRUNIT", 1000, Nil})
aadd(aLinha,{"C6_VALOR", 1000, Nil})
aadd(aLinha,{"C6_TES", cF4TES, Nil})
aadd(aItens, |
| | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 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()) MATA410(aCabec,aItens,4) ConOut("Fim : "+Time()) ConOut(Repl("-",80)) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Exclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ConOut(PadC("Teste de exclusao",80)) ConOut("Inicio: "+Time()) MATA410(aCabec,aItens,5) If !lMsErroAuto ConOut("Exclusao com sucesso! "+cDoc) Else ConOut("Erro na exclusao!") EndIf ConOut("Fim : "+Time()) ConOut(Repl("-",80))EndIfRESET ENVIRONMENTReturn(.T.)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 |
---|
default | no |
---|
referencia | Exemplo02 |
---|
| 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 |
---|
| #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.) |
|
|