Árvore de páginas

Versões comparadas

Chave

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

Exemplo de Execução Automática Solicitações de Compras - MATA110

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGACOM

Rotina:

Rotina

Nome Técnico

MATA110

Solicitação de Compras

Cadastros Iniciais:

Produto, Centro de Custo, Conta Contábil, Item Contábil, Classe Valor

Tickets relacionados

769289

Requisito:

DMANMAT02-226

País(es):

Todos

Banco(s) de Dados:

Todos

Tabelas Utilizadas:

SC1, SB1, SCX, AFG

Sistema(s) Operacional(is):

Todos


ExecAuto MATA110 

Descrição:

Essa rotina permite o registro de qualquer Solicitação de Compras de mercadorias na empresa. A entrada das solicitações inicia o processo de compras.

Sintaxe:

MATA110 - Solicitação de Compras ( [ PARAMIXB1 ] [ PARAMIXB2 ] [ PARAMIXB3 ] [ PARAMIXB4 ] [ PARAMIXB5 ]  [ PARAMIXB6 ]  [ PARAMIXB7 ] )

Programa Fonte:

MATA110.prw

Retorno:

NIL

Parâmetros:

Nome

Tipo

Descrição

Default

PARAMIXB1

Vetor

Array contendo o cabeçalho da Solicitação de Compras { {"C1_NUM", "CONTEUDO"} ...}


PARAMIXB2VetorArray contendo os itens da Solicitação de Compras { {"C1_ITEM",StrZero(nx,len(SC1->C1_ITEM) } ...}
PARAMIXB3NuméricoOpção desejada: 3-Inclusão; 4-Alteração ; 5-Exclusão ; 7-Aprovação3
PARAMIXB4LógicoControle Interno - Informa se a rotina é chamada via MRP..F.
PARAMIXB5LógicoIndica se apresenta ou não a Dialog da Rotina Automática..F.
PARAMIXB6VetorArray contendo Rateio SC { {C1_ITEM,{ {"CX_CAMPO","CONTEUDO"},... } }, ...}{}
PARAMIXB7VetorArray contendo Rateio Projeto { {C1_ITEM,{ {"AFG_CAMPO","CONTEUDO"},... } }, ...}{}
Observações:

A opção 7 (Aprovação) da rotina automática do MATA110 está disponível apenas para quem não utiliza o módulo SIGAGSP. O RDMAKE de aprovação devera conter o campo C1_APROV no cabeçalho. É necessário informar o valor desejado:

"L" = Liberado
"R" = Rejeitado
"B" = Bloqueado

Realizando dessa forma o RDMAKE, a liberação/rejeição/bloqueio será realizada sem problemas.

Observação: Utilizar usuário e senha no Prepare Environment para que o campo C1_NOMAPRO seja preenchido.

 

Bloco de código
languagedelphi
themeMidnight
titleExemplo - Teste de Inclusão, Alteração e Exclusão Simples
linenumberstrue
collapsetrue
#Include 'Protheus.ch'
#include "tbiconn.ch"

User Function MyMata110()
Local aCabSC := {}
Local aItensSC := {}
Local aLinhaC1 := {}
Local nX := 0
Local nY := 0
Local cDoc := ""
Local lOk := .T.
Local nAux := 0

Local lAuxInclui := .T.
Local lAuxAltera := .T.
Local lAuxExclui := .T.

Private lMsHelpAuto := .T.
PRIVATE lMsErroAuto := .F.

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Abertura do ambiente |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ConOut(Repl("-",80))

ConOut(PadC(OemToAnsi("Teste de Inclusao, Alteracao e Exclusao de Solicitacao de Compras"),80))

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SC1","SB1"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificacao do ambiente para teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SC1")
DbSelectArea("SB1")
DbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produto: 01"))
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produto: 02"))
EndIf

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Inicia o teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lOk
ConOut(OemToAnsi("Inicio: ")+Time())
For nY := 1 To 2
ConOut(PadC(OemToAnsi("Inicio Repeticao " + cValToChar(nY)),80))
aCabSC := {}
aItensSC := {}

If lAuxInclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verifica numero da SC |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cDoc := GetSXENum("SC1","C1_NUM")
SC1->(dbSetOrder(1))
While SC1->(dbSeek(xFilial("SC1")+cDoc))
ConfirmSX8()
cDoc := GetSXENum("SC1","C1_NUM")
EndDo

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta cabecalho |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta itens |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Inclusao de SC com 2 itens"))
For nX := 1 To 2
aLinhaC1 := {}
aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil})
aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})
aadd(aLinhaC1,{"C1_QUANT" ,1 ,Nil})
aadd(aItensSC,aLinhaC1)
Next nX

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Inclusao - Execução Rotina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("Incluido com sucesso! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na inclusao!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Pega Ultima SC |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SC1->(dbSetOrder(1))
SC1->(DbGoTop())
While SC1->(!Eof())
cDoc := SC1->C1_NUM
SC1->(DbSkip())
EndDo
EndIf

If lAuxAltera
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Alteração - Monta cabecalho |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Alteração - Monta itens |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Alteracao de SC para 3 itens"))
aItensSC := {}
For nX := 1 To 3
aLinhaC1 := {}
aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil})
aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})
aadd(aLinhaC1,{"C1_QUANT" ,1+nX ,Nil})
aadd(aItensSC,aLinhaC1)
Next nX

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Alteração - Execução Rotina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y,4)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("Alterado com sucesso! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na alteracao!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf

If lAuxExclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Exclusão - Monta cabecalho |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Exclusao de SC"))
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Exclusão - Monta itens |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aItensSC := {}

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Exclusão - Execução Rotina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y,5)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("Excluido com sucesso! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na exclusao!"+cDoc))
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf

Next nY
ConOut(OemToAnsi("Fim : ")+Time())
EndIf

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Fechamento do ambiente |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RESET ENVIRONMENT

Return(.T.)

Exemplo 1 - Teste de Inclusão, Alteração e Exclusão Simples:

#Include 'Protheus.ch'
#include "tbiconn.ch"

User Function MyMata110()
Local aCabSC := {}
Local aItensSC := {}
Local aLinhaC1 := {}
Local nX := 0
Local nY := 0
Local cDoc := ""
Local lOk := .T.
Local nAux := 0
Local lAuxInclui := .T.
Local lAuxAltera := .T.
Local lAuxExclui := .T.
Private lMsHelpAuto := .T.
PRIVATE lMsErroAuto := .F.
Bloco de código
languagedelphi
themeMidnight
titleExemplo
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Abertura do ambiente |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ConOut(Repl("-",80))
ConOut(PadC(OemToAnsi("Teste de Inclusao, Alteracao e Exclusao de Solicitacao de Compras"),80))PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SC1","SB1"
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificacao do ambiente para teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SC1")
DbSelectArea("SB1")
DbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"01"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produto: 01"))
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"02"))
lOk := .F.
ConOut(OemToAnsi("Cadastrar produto: 02"))
EndIf
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Inicia o teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lOk
ConOut(OemToAnsi("Inicio: ")+Time())
For nY := 1 To 2
ConOut(PadC(OemToAnsi("Inicio Repeticao " + cValToChar(nY)),80))
aCabSC := {}
aItensSC := {}If lAuxInclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verifica numero da SC |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cDoc := GetSXENum("SC1","C1_NUM")
SC1->(dbSetOrder(1))
While SC1->(dbSeek(xFilial("SC1")+cDoc))
ConfirmSX8()
cDoc := GetSXENum("SC1","C1_NUM")
EndDo
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta cabecalho |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Monta itens |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Inclusao de SC com 2 itens"))
For nX := 1 To 2
aLinhaC1 := {}
aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil})
aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})
aadd(aLinhaC1,{"C1_QUANT" ,1 ,Nil})
aadd(aItensSC,aLinhaC1)
Next nX
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Inclusao - Execução Rotina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("Incluido com sucesso! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na inclusao!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Pega Ultima SC |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SC1->(dbSetOrder(1))
SC1->(DbGoTop())
While SC1->(!Eof())
cDoc := SC1->C1_NUM
SC1->(DbSkip())
EndDo
EndIf
If lAuxAltera
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Alteração - Monta cabecalho |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Alteração - Monta itens |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Alteracao de SC para 3 itens"))
aItensSC := {}
For nX := 1 To 3
aLinhaC1 := {}
aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil})
aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})
aadd(aLinhaC1,{"C1_QUANT" ,1+nX ,Nil})
aadd(aItensSC,aLinhaC1)
Next nX
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Alteração - Execução Rotina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y,4)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("Alterado com sucesso! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na alteracao!")+cDoc)
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf
If lAuxExclui
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Exclusão - Monta cabecalho |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ConOut(OemToAnsi("Exclusao de SC"))
aCabSC := {}
aadd(aCabSC,{"C1_NUM" ,cDoc})
aadd(aCabSC,{"C1_SOLICIT","Administrador"})
aadd(aCabSC,{"C1_EMISSAO",dDataBase})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Exclusão - Monta itens |
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
aItensSC := {}
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Exclusão - Execução Rotina Automática |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y,5)},aCabSC,aItensSC)
If !lMsErroAuto
ConOut(OemToAnsi("Excluido com sucesso! ")+cDoc)
Else
ConOut(OemToAnsi("Erro na exclusao!"+cDoc))
aErrPCAuto := GETAUTOGRLOG()
For nAux := 1 to Len(aErrPCAuto)
Conout(aErrPCAuto[nAux])
Next nAux
EndIf
EndIf
Next nY
ConOut(OemToAnsi("Fim : ")+Time())
EndIf

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Fechamento do ambiente |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RESET ENVIRONMENT

Return(.T.)

Exemplo 2
- Teste de Inclusão, Alteração e Exclusão - Com Rateio
:
linenumberstrue
collapsetrue
#Include 'Protheus.ch'


#include "tbiconn.ch"


User Function MyMa110_RAT()


Local aCabSC := {}


Local aItensSC := {}


Local aLinhaC1 := {}


Local nX := 0


Local nY := 0


Local cDoc := ""


Local lOk := .T.


Local aLinhaCX := {}


Local aRateioCX := {}


Local nAux := 0



Local lAuxInclui := .T.


Local lAuxAltera := .T.


Local lAuxExclui := .T.


Private lMsErroAuto := .F.


Private lAutoErrNoFile := .T.


PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SC1","SB1","SCX"


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Verificacao do ambiente para teste |


//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


DbSelectArea("SC1")


DbSelectArea("SB1")


DbSetOrder(1)


If !SB1->(MsSeek(xFilial("SB1")+"01"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar produto: 01"))


EndIf


If !SB1->(MsSeek(xFilial("SB1")+"02"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar produto: 02"))


EndIf



DbSelectArea("CTT")


DbSetOrder(1)


If !CTT->(MsSeek(xFilial("CTT")+"CC01"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar centro de custo: CC01 (Rotina CTBA180)"))


EndIf


If !CTT->(MsSeek(xFilial("CTT")+"CC02"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar centro de custo: CC02 (Rotina CTBA180)"))


EndIf



DbSelectArea("CT1")


DbSetOrder(1)


If !CT1->(MsSeek(xFilial("CT1")+"CTA01"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar conta: CTA01 (Rotina CTBA020)"))


EndIf


If !CT1->(MsSeek(xFilial("CT1")+"CTA02"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar conta: CTA02 (Rotina CTBA020)"))


EndIf



/*DbSelectArea("CTD")


DbSetOrder(1)


If !CTD->(MsSeek(xFilial("CTD")+"IT01"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar item contabil: IT01 (Rotina CTBA180)"))


EndIf


If !CTD->(MsSeek(xFilial("CTD")+"IT02"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar item contabil: IT02 (Rotina CTBA180)"))


EndIf*/



/*DbSelectArea("CTH")


DbSetOrder(1)


If !CTH->(MsSeek(xFilial("CTH")+"CV01"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar classe valor: CV01 (Rotina CTBA180)"))


EndIf


If !CTH->(MsSeek(xFilial("CTH")+"CV02"))


lOk := .F.


ConOut(OemToAnsi("Cadastrar classe valor: CV02 (Rotina CTBA180)"))


EndIf*/


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Inicia o teste |


//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


If lOk


ConOut(OemToAnsi("Inicio: ")+Time())


For nY := 1 To 2


ConOut(PadC(OemToAnsi("Inicio Repeticao " + cValToChar(nY)),80))


aCabSC := {}


aItensSC := {}


If lAuxInclui


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Verifica numero da SC |


//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


cDoc := GetSXENum("SC1","C1_NUM")


SC1->(dbSetOrder(1))


While SC1->(dbSeek(xFilial("SC1")+cDoc))


ConfirmSX8()


cDoc := GetSXENum("SC1","C1_NUM")


EndDo




//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Monta cabecalho |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


aadd(aCabSC,{"C1_NUM" ,cDoc})


aadd(aCabSC,{"C1_SOLICIT","Administrador"})


aadd(aCabSC,{"C1_EMISSAO",dDataBase})



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Monta itens |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


ConOut(OemToAnsi("Inclusao de SC com 2 itens - COM RATEIO SCX"))


aItensSC := {}


aRateioCX := {}


For nX := 1 To 2


aLinhaC1 := {}


aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nX,len(SC1->C1_ITEM)),Nil})


aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})


aadd(aLinhaC1,{"C1_QUANT" ,1 ,Nil})


aadd(aLinhaC1,{"C1_RATEIO" ,1 ,Nil})


aadd(aItensSC,aLinhaC1)



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Monta itens rateio |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


aAdd(aRateioCX,{StrZero(nX,len(SC1->C1_ITEM)),{}}) //Item da SC1



// Primeiro item do rateio


aLinhaCX := {}


//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})


aAdd(aLinhaCX,{"CX_ITEM",StrZero(1,Len(SCX->CX_ITEM)),NIL})


aAdd(aLinhaCX,{"CX_PERC",50,NIL})


aAdd(aLinhaCX,{"CX_CC","CC01",NIL})


aAdd(aLinhaCX,{"CX_CONTA","CTA01",NIL})


//aAdd(aLinhaCX,{"CX_ITEMCTA","IT01",NIL})


//aAdd(aLinhaCX,{"CX_CLVL","CV01",NIL})


aAdd(aRateioCX[nX][2],aLinhaCX)



// Segundo item do rateio


aLinhaCX := {}


//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})


aAdd(aLinhaCX,{"CX_ITEM",StrZero(2,Len(SCX->CX_ITEM)),NIL})


aAdd(aLinhaCX,{"CX_PERC",50,NIL})


aAdd(aLinhaCX,{"CX_CC","CC02",NIL})


aAdd(aLinhaCX,{"CX_CONTA","CTA02",NIL})


//aAdd(aLinhaCX,{"CX_ITEMCTA","IT02",NIL})


//aAdd(aLinhaCX,{"CX_CLVL","CV02",NIL})


aAdd(aRateioCX[nX][2],aLinhaCX)


Next nX



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Executa rotina automatica |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,3,aRateioCX)



If !lMsErroAuto


ConOut(OemToAnsi("Incluido com sucesso! ")+cDoc)


Else


ConOut(OemToAnsi("Erro na inclusao!")+cDoc)


aErrPCAuto := GETAUTOGRLOG()


For nAux := 1 to Len(aErrPCAuto)


Conout(aErrPCAuto[nAux])


Next nAux


EndIf


Else


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Pega Ultima SC |


//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


SC1->(dbSetOrder(1))


SC1->(DbGoTop())


While SC1->(!Eof())


cDoc := SC1->C1_NUM


SC1->(DbSkip())


EndDo


EndIf



If lAuxAltera


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Teste de Alteração - Monta cabecalho |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


aCabSC := {}


aadd(aCabSC,{"C1_NUM" ,cDoc})


aadd(aCabSC,{"C1_SOLICIT","Administrador"})


aadd(aCabSC,{"C1_EMISSAO",dDataBase})



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Teste de Alteração - Monta itens |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


ConOut(OemToAnsi("Alteracao de SC para 3 itens - COM RATEIO SCX"))


aItensSC := {}


aRateioCX := {}


For nX := 1 To 3


aLinhaC1 := {}


aadd(aLinhaC1,{"C1_ITEM" ,StrZero(nX,len(SC1->C1_ITEM)),Nil})


aadd(aLinhaC1,{"C1_PRODUTO","01",Nil})


aadd(aLinhaC1,{"C1_QUANT" ,1+nX ,Nil})


aadd(aLinhaC1,{"C1_RATEIO" ,1 ,Nil})


aadd(aItensSC,aLinhaC1)



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Monta itens rateio |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


aAdd(aRateioCX,{StrZero(nX,len(SC1->C1_ITEM)),{}}) //Item da SC1



// Primeiro item do rateio


aLinhaCX := {}


//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})


aAdd(aLinhaCX,{"CX_ITEM",StrZero(1,Len(SCX->CX_ITEM)),NIL})


aAdd(aLinhaCX,{"CX_PERC",25,NIL})


aAdd(aLinhaCX,{"CX_CC","CC01",NIL})


aAdd(aLinhaCX,{"CX_CONTA","CTA01",NIL})


//aAdd(aLinhaCX,{"CX_ITEMCTA","IT01",NIL})


//aAdd(aLinhaCX,{"CX_CLVL","CV01",NIL})


aAdd(aRateioCX[nX][2],aLinhaCX)



// Segundo item do rateio


aLinhaCX := {}


//aAdd(aLinhaCX,{"CX_SOLICIT",cDoc,NIL})


aAdd(aLinhaCX,{"CX_ITEM",StrZero(2,Len(SCX->CX_ITEM)),NIL})


aAdd(aLinhaCX,{"CX_PERC",75,NIL})


aAdd(aLinhaCX,{"CX_CC","CC02",NIL})


aAdd(aLinhaCX,{"CX_CONTA","CTA02",NIL})


//aAdd(aLinhaCX,{"CX_ITEMCTA","IT02",NIL})


//aAdd(aLinhaCX,{"CX_CLVL","CV02",NIL})


aAdd(aRateioCX[nX][2],aLinhaCX)


Next nX



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Executa rotina automatica |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,4,aRateioCX)



If !lMsErroAuto


ConOut(OemToAnsi("Alterado com sucesso! ")+cDoc)


Else


ConOut(OemToAnsi("Erro na alteracao!")+cDoc)


aErrPCAuto := GETAUTOGRLOG()


For nAux := 1 to Len(aErrPCAuto)


Conout(aErrPCAuto[nAux])


Next nAux


EndIf


EndIf



If lAuxExclui


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Teste de Exclusão - Monta cabecalho |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


ConOut(OemToAnsi("Exclusao de SC - COM RATEIO SCX"))


aCabSC := {}


aadd(aCabSC,{"C1_NUM" ,cDoc})


aadd(aCabSC,{"C1_SOLICIT","Administrador"})


aadd(aCabSC,{"C1_EMISSAO",dDataBase})



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Teste de Exclusão - Monta itens |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


aItensSC := {}


aRateioCX := {}



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Executa rotina automatica |


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


MSExecAuto({|w,x,y,z| MATA110(w,x,y,,,z)},aCabSC,aItensSC,5,aRateioCX)



If !lMsErroAuto


ConOut(OemToAnsi("Excluido com sucesso! ")+cDoc)


Else


ConOut(OemToAnsi("Erro na exclusao!"+cDoc))


aErrPCAuto := GETAUTOGRLOG()


For nAux := 1 to Len(aErrPCAuto)


Conout(aErrPCAuto[nAux])


Next nAux


EndIf


EndIf



Next nY


ConOut(OemToAnsi("Fim : ")+Time())


EndIf


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿


//| Fechamento do ambiente |


//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ


RESET ENVIRONMENT


Return