Histórico da Página
Exemplo de Execução Automática Solicitações de Compras -
MATA110
Função: MATA110 - Solicitação de Compras
Versão: | Totvs Protheus 12.1.17 | ||||
Linha de Produto: | Microsiga Protheus | ||||
Segmento: | Manufatura | ||||
Módulo: | SIGACOM | ||||
Rotina: |
| ||||
Cadastros Iniciais: | Produto, Local de Estoque | ||||
Parâmetro(s): | N/A | ||||
Ponto de Entrada: | N/A | ||||
Centro de Custo, Conta Contábil, Item Contábil, Classe Valor | |||||
Tickets relacionados | 769289 | ||||
Requisito/Story/Issue (informe o requisito relacionado): | 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: | OBJETIVO: | |||||||||||||||||||||||||||||||||
Sintaxe: | MATA110 - Solicitação de Compras ( [ PARAMIXB1 ] [ PARAMIXB2 ] [ PARAMIXB3 ] [ PARAMIXB4 ] [ PARAMIXB5 ] [ PARAMIXB6 ] [ PARAMIXB7 ] ) | |||||||||||||||||||||||||||||||||
Programa Fonte: | MATA110.prw | |||||||||||||||||||||||||||||||||
Observações: | Esta rotina pode ser utilizada via Rotina Automática. | |||||||||||||||||||||||||||||||||
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. |
Exemplo 1
Bloco de código | ||||||
---|---|---|---|---|---|---|
|
| |||||
#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.) |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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.
|
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ConOut(Repl("-",80))
ConOut(PadC(OemToAnsi("Teste de Inclusao de 2 solicitacoes de compra com 2 itens cada"),80))
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
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
aadd(aCabecEndDo //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| 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(aItens,aLinha)
Next nX
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Teste de Inclusao |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MSExecAuto({|x,y| mata110(x,y)},aCabec,aItens)
If !lMsErroAuto
ConOut(OemToAnsi("Incluidoaadd(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
Else ConOut(OemToAnsi("Erro na |
exclusao!" |
EndIf
Next nY
+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 |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#Include "Protheus.ch" #Include "RwMake.ch" #Include "TbiConn.ch" User Function EXEC110() Local aCabec := {} Local aItens := {} Local aLinha := {} Local nOpc := 7 //Aprovação Local nTotItens := 1 Local nY := 0 Local nX := 0 Local cDoc := "" Local nReg := 1 Private lMsErroAuto := .F. Private lMsHelpAuto := .T. PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" USER "ADMIN" |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
RESET ENVIRONMENT
Return(.T.)
Exemplo 2 - Teste de Inclusão, Alteração e Exclusão - Com Rateio:PASSWORD "1234"
cDoc := "SC0001" //Numero da SC a ser utilizada na aprovação
SC1->(dbSeek(xFilial("SC1")+cDoc)) //Deve-se posicionar
aadd(aCabec,{"C1_FILIAL" ,xFilial("SC1")})
aadd(aCabec,{"C1_NUM" ,cDoc})
aadd(aCabec,{"C1_EMISSAO" ,dDataBase})
aadd(aCabec,{"C1_SOLICIT" ,"Administrador"})
aadd(aCabec,{"C1_APROV" ,"B"}) //Informar "L - Liberado" / "R - Rejeitado" / "B - Bloqueado"
aadd(aCabec,{"C1_ITEM" ,"0001"}) //Informar se aprovação for por Item, caso se SC inteira, não é necessário informar C1_ITEM
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(aItens,aLinha)
Next nX
MsExecAuto({|u,v,x,y,z| MATA110(u,v,x)},aCabec,aItens,nOpc)
If !lMsErroAuto
ConOut(OemToAnsi(" Incluido SC: ")+cDoc)
Else
MostraErro()
ConOut(OemToAnsi("Erro na inclusao!"))
EndIf
Next nY
RESET ENVIRONMENT
Return |