Histórico da Página
Exemplo de Execução Automática Solicitações de Compras - MATA110
Linha de Produto: | Protheus | ||||
Segmento: | Manufatura | ||||
Módulo: | SIGACOM | ||||
Rotina: |
| ||||
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: |
| ||||||||||||||||||||||||||||||||
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 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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#include 'totvs.ch' /*/{Protheus.doc} User Function EXEC110 Inclusão de solicitação de compras @type Function @since 01/01/2024 @author user /*/ User Function EXEC110() Local aCabec := {} Local aItens := {} Local aLinha := {} Local aCCusto := {{40,"CC01","","",""},{60,"CC02","","",""}} Local aItensRat := {} Local nOpc := 3 Local nY := 0 Local nX := 0 Local nReg := 1 Local cDoc := "" Private lMsErroAuto := .F. Private lMsHelpAuto := .T. PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "COM" USER "ADMIN" PASSWORD "1234" cDoc := GetSXENum("SC1","C1_NUM") SC1->(dbSetOrder(1)) While SC1->(dbSeek(xFilial("SC1")+cDoc)) ConfirmSX8() cDoc := GetSXENum("SC1","C1_NUM") EndDo aadd(aCabec,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aCabec,{"C1_NUM" ,cDoc}) aadd(aCabec,{"C1_EMISSAO" ,dDataBase}) aadd(aCabec,{"C1_SOLICIT" ,"Administrador"}) For nX := 1 To nTotItens aLinha := {} aadd(aLinha,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aLinha,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil}) aadd(aLinha,{"C1_PRODUTO",PadR("01",TamSx3("C1_PRODUTO")[1]),Nil}) aadd(aLinha,{"C1_LOCAL" ,"01",Nil}) aadd(aLinha,{"C1_QUANT" ,nX,Nil}) aadd(aLinha,{"C1_DATPRF" ,dDataBase,Nil}) aadd(aItens,aLinha) //Rateio aAdd(aItensRat, Array(2)) aItensRat[Len(aItensRat)][1] := StrZero(nx,len(SC1->C1_ITEM)) aItensRat[Len(aItensRat)][2] := {} For nY := 1 To Len(aCCusto) aLinha := {} aAdd(aLinha, {"CX_FILIAL", xFilial("SCX") , Nil}) aAdd(aLinha, {"CX_ITEM", PadL(nY, TamSx3("CX_ITEM")[1], "0"), Nil}) aAdd(aLinha, {"CX_PERC", 100 aCCusto[nY,1] , Nil}) aAdd(aLinha, {"CX_CC", aCCusto[nY,2] "CC001" , Nil}) aAdd(aItensRat[Len(aItensRat)][2], aClone(aLinha)) Next nY Next nX MsExecAuto({|u,v,x,y,z| MATA110(u,v,x,,,z)},aCabec,aItens,nOpc,aItensRat) If !lMsErroAuto ConOut(OemToAnsi(" Incluido SC: ")+cDoc + " - " + AllTrim(Str(nY)) + " de " + AllTrim(Str(nReg))) Else MostraErro() ConOut(OemToAnsi("Erro na inclusao!")) Exit EndIf RESET ENVIRONMENT Return |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#include 'totvs.ch' /*/{Protheus.doc} User Function EXEC110 Inclusão de solicitação de compras @type Function @since 01/01/2024 @author user /*/ User Function EXEC110() Local aCabec := {} Local aItens := {} Local aLinha := {} Local nOpc := 3 Local nY := 0 Local nX := 0 Local nReg := 1 Local cDoc := "" Private lMsErroAuto := .F. Private lMsHelpAuto := .T. PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "COM" USER "ADMIN" PASSWORD "1234" cDoc := GetSXENum("SC1","C1_NUM") SC1->(dbSetOrder(1)) While SC1->(dbSeek(xFilial("SC1")+cDoc)) ConfirmSX8() cDoc := GetSXENum("SC1","C1_NUM") EndDo aadd(aCabec,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aCabec,{"C1_NUM" ,cDoc}) aadd(aCabec,{"C1_EMISSAO" ,dDataBase}) aadd(aCabec,{"C1_SOLICIT" ,"Administrador"}) For nX := 1 To nTotItens aLinha := {} aadd(aLinha,{"C1_FILIAL" ,xFilial("SC1")}) aadd(aLinha,{"C1_ITEM" ,StrZero(nx,len(SC1->C1_ITEM)),Nil}) aadd(aLinha,{"C1_PRODUTO",PadR("01",TamSx3("C1_PRODUTO")[1]),Nil}) aadd(aLinha,{"C1_LOCAL" ,"01",Nil}) aadd(aLinha,{"C1_QUANT" ,nX,Nil}) aadd(aLinha,{"C1_DATPRF" ,dDataBase,Nil}) aadd(aItens,aLinha) Next nX MsExecAuto({|u,v,x,y,z| MATA110(u,v,x)},aCabec,aItens,nOpc) If !lMsErroAuto ConOut(OemToAnsi(" Incluido SC: ")+cDoc + " - " + AllTrim(Str(nY)) + " de " + AllTrim(Str(nReg))) Else MostraErro() ConOut(OemToAnsi("Erro na inclusao!")) Exit EndIf RESET ENVIRONMENT Return |
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.
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| 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:
#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