Árvore de páginas

Versões comparadas

Chave

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

Não publicar esta página

Índice
titleFonte TAFXFUN

Fonte TAFXFUN

XFUNVldUni(cAlias, nOrder, cChave, lUpper)

Função de validação da chave única da tabela utilizando EXISTCPO

Parâmetros:

  • cAlias - Alias da tabela para o EXISTCPO
  • nOrder - Caso seja necessário alterar a ordem de pesquisa do EXISTCPO
  • cChave - Deve ser enviado caso seja uma chave diferente do padrão da função, o próprio campo em edição no momento (READVAR)
  • lUpper - Default converte em Maiúsculas a string de busca, caso utilize case-sensitive envie .F. (False) no parâmetro

Retorno: lOk - Estrutura

  • .T. - Para validação OK
  • .F. - Para validação NÃO OK

Exemplo:

Bloco de código
languagepy
themeMidnight
XFUNVldUni("C9V", 5, FWFLDGET("C9V_CPF") + DTOS(M->C9V_DTALT))

XFUNVldCmp(cAlias , nOrder , cChave , lID , nOrdID , lVldVig , lVldFin , lVldAtv)

Função de validação utilizando EXISTCPO e chamando o HELP do campo

Parâmetros:

  • cAlias - Alias da tabela para o EXISTCPO
  • nOrder - Caso seja necessário alterar a ordem de pesquisa do EXISTCPO
  • cChave - Deve ser enviado caso seja uma chave diferente do padrão da função, o próprio campo em edição no momento (READVAR)
  • lID - Tratamento para criar um facilitador de digitação, de forma a aceitar tanto o ID como o código do cadastro (segundo identificador)
  • nOrdID - Ordem/Índice da tabela para o conceito acima (lId == .T.)
  • lVldVig - Informa se necessita validação da Data de Vigência
  • lVldFin - Informa se necessita validação da Data Inicial e Final
  • lVldAtv - Informa se necessita validação do campo Ativo

Retorno: lOk - Estrutura

  • .T.  - Para validacao OK
  • .F.  - Para validacao NÃO OK

Exemplo:

Bloco de código
languagepy
themeMidnight
firstlineXFUNVldCmp("C8N",,,,2,.T.)
XFUNVldCmp("C8N",,,,2,.T.)

XFUNVldIE(cIE , cUF , lHelp)  

Função de validação do dígito verificador da IE

Parâmetros:

  • cIE -  Código da Inscrição estadual
  • cUF - Unidade Federativa
  • lHelp - Indica se o Help deverá ser demonstrado (OPC)

Retorno: lRetorno - Estrutura

  • .T.  - Para validacao OK
  • .F.  - Para validacao NÃO OK

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

cIE

...

Código da Inscrição estadual

...

Exemplo:

Bloco de código
languagepy
themeMidnight
XFUNVldIE(M->C1H_IE, FWFLDGET("C1H_UF"))

xFunWizard(aTxtApre, aPaineis, cNomeWizard, cNomeAnt, nTamSay, lBackIni, bFinalExec) 

Função de montagem da Wizard da rotina.

Parâmetros: 

  • aTxtApre - Array com o cabeçalho da Wizard

  • aPaineis - Array com os painéis da Wizard

  • cNomeWizard - Nome do arquivo da Wizard

  • cNomeAnt - Nome do arquivo anterior da Wizard, caso tenha mudado de nome

  • nTamSay - Indica a largura em pixels do objeto

  • lBackIni - Indica se deve retornar ao início da Wizard

  • bFinalExec - Bloco de código a ser executado ao final da Wizard

Retorno: lRet - Estrutura

  • .T.  - Para validação OK
  • .F.  - Para validação NÃO OK

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

aTxtApre

...

Array com o cabeçalho da Wizard

...

Indica se deve retornar ao inicio da Wizard

...

FATXGrvWizard(cNomeWizard , aVarPaineis , aPaineis)  

Função para realizar a gravação dos dados inseridos nos objetos no txt (.WIZ)

Parâmetros:

  • cNomeWizard - Nome do arquivo de Wizard

  • aVarPaineis - Array com as informações digitadas no Wizard

  • aPaineis - Array com os painéis do Wizard

Retorno: lRet - Estrutura

  • .T.  - Para validação OK
  • .F.  - Para validação NÃO OK

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

cNomeWizard

...

Nome do arquivo de Wizard

...

xFUNSaveProf(cNomeWizard , aParametros)

Função que salva os parâmetros no profile.

Parâmetros:

  • cNomeWizard - Nome do arquivo de Wizard

  • aParametros - Array com o conteúdo dos campos do Wizard para gravação no profile

Retorno: lRet - Estrutura

  • .T.  - Para validação OK
  • .F.  - Para validação NÃO OK

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

cNomeWizard

...

Nome do arquivo de Wizard

...

XFUNLoadProf(cNomeWizard , aIniWiz)

Função que carrega os parâmetros do profile.

Parâmetros:

  • cNomeWizard - Nome do arquivo de Wizard

  • aIniWiz - Array com o conteúdo do arquivo texto do Wizard (Retorno Por Referência)

Retorno: lRet - Estrutura

  • .T.  - Para validação OK
  • .F.  - Para validação NÃO OK

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

cNomeWizard

...

Nome do arquivo de Wizard

...

XFUNFilSXB(cFilDtVig, cFilDtFin, cTipoModel, cF3Wizard)

Função utilizada nas consultas SXB para personalizar os filtros das informações.

Parâmetros:

  • cFilDtVig - Data de Vigência

  • cFilDtFin - Data Final de Vigência

  • cTipoModel - Informa qual o modelo para registros genericos do ECF

  • cF3Wizard - Parâmetro usado apenas quando necessário um filtro de F3 vindo da Wizard de Geração de Obrigação Fiscal

Retorno: cRet - Retorna a string do filtro SXB

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

XFUNVldDiv()

Função utilizada na validação da data extemporânea do movimento.

Retorno: lRet - Retorna FLAG de validação

  • .T.  - Para validação OK
  • .F.  - Para validação NÃO OK

XFUNVld( nIndice, lUPPER )

Função utilizada na validação.

Parâmetros: 

  • nIndice - Caso seja necessário alterar a ordem de pesquisa do EXISTCPO
  • lUPPER - Default converte em Maiúsculas a string de busca, caso utilize case-sensitive envie .F. (False) no parâmetro

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Ordem de pesquisa do EXISTCPO

...

XFUNRedund( cCmpModel )

Função utilizada para validar redundância entre a relação. 

Parâmetros: 

  • cCmpModel - Campo a ser validado com o campo editado.

...

Nome

...

Tipo

...

Descrição

...

Campo a ser validado com o campo editado.

Exemplo

Cadastro de Fator de Conversão, onde seleciona-se uma unidade de medida e cadastra-se as conversões para a mesma. Porém não pode existir a conversão para a mesma UM selecionada.

XFUNTrg( nOpc, cCmpModel, cString ) 

Função utilizada para retornar valor nos gatilhos.

Parâmetros: 

  • nOpc - Número da opção do tratamento específico. 
  • cCmpModel - Campo a ser validado com o campo editado.
  • cString - Utilizado para opção 21

...

Nome

...

Tipo

...

Descrição

...

Nome do modelo a ser carregado pela classe de teste

Exemplo:

Bloco de código
languagepy
themeMidnight
//-----------------------------------------------------------------
/*/{Protheus.doc} SetUpSuite

 Prepara o ambiente para execução dos casos de teste

/*/
//-----------------------------------------------------------------
METHOD SetUpSuite() CLASS CRMA610TestSuite

Local oHelper := FWTestHelper():New()

//-------------------------------
// Define Layout de importação
//-------------------------------
oHelper:SetXml( "ctba010.xml" ) //Calendário Contábil
oHelper:SetXml( "ctba020.xml" ) //Plano de contas

//-------------------------
// Ativado Classe Auxiliar
//-------------------------
oHelper:Activate()

Return( oHelper )

TabForTxt ( cPath, nExtensao, nTipo, aTables )

Método para converter dados de tabelas para arquivo de texto.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Define o caminho onde o arquivo será salvo

...

Define a extensão do arquivo ( 1-TXT; 2-CSV)

...

Define o tipo do arquivo a ser gerado (1-Modelo; 2-Teste)

...

Define as tabelas que serão geradas

...

Exemplo:

Bloco de código
languagepy
themeMidnight
TabForTxt( cPath, 2, 2, { "SA1" } )

Txt2Array( cArqTxt, cCond, aReplace )

Método que transforma um arquivo texto em array.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Nome do arquivo TXT que será transformado

...

Condição de aglutinação

...

Retorno do arquivo completo transformado em array

Exemplo:

Bloco de código
languagepy
themeMidnight
aArqModel := Txt2Array( cArqModel,"|T001" )

UTAddLine( cModel ) 

Método utilizado para incluir uma linha em um modelo de dados ou em um array.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Nome do Array ou Model que deseja inserir uma nova linha.

...

Exemplo:

Adição em array

Bloco de código
languagepy
themeMidnight
oHelper:UTSetValue( "aItens", 'N3_VORIG1', 1000 ) 

oHelper:UTAddLine( 'aItens' )

oHelper:UTSetValue( "aItens", "N3_CBASE", "ATF038 ") 

Adição no modelo de dados

Bloco de código
languagepy
themeMidnight
oHelper:UTAddLine( "CPIDETAIL" )

oHelper:UTSetValue( "CPIDETAIL", "CPI_CODORG", '000002' ) 
oHelper:UTSetValue( "CPIDETAIL", "CPI_QTDLIC", 3500 )

UTAlterAutoCont( cTable, nOrder, cSeek, aData )

Método para alterar um campo em alguma tabela autocontida por TestCase tendo em vista que as tabelas autocontidas são sempre recriadas nos appends.

Nome

Tipo

Descrição

Obrigatório

cTableCaractere

Nome da Tabela autocontida

X
nOrderNumérico

Índice de busca

X
cSeekCaractere

Chave de pesquisa

 X
aDataArrayValor de preenchimento do campo { campo, valor }

...

Bloco de código
languagepy
themeMidnight
Local oHelper 	 := FWTestHelper():New()
Local lUpdtAuto  := .F.

oHelper:Activate()

If oHelper:UTAlterAutoCont( 'CC2', 1, "GO" + "14804", { { "CC2_PERMAT", 25 } } )
	lUpdtAuto := .F.
EndIf 
 
//------------------------------------------------------------------------
// Restaura o valor da autocontida para não conflitar com outro TestCase
//------------------------------------------------------------------------
oHelper:UTRestAutoCont()
 
Return( oHelper )
Aviso

Ao utilizar o método UTAlterAutoCont() é necessário antes de finalizar o caso de testes, restaurar os dados da tabela através do método UTRestAutoCont(), para não conflitar com a execução de casos de testes posteriores.

...

Método para alterar um campo  no SIGAMAT do sistema.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

X

...

Nome do campo que sera alterado

...

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTAlterSM0("T1X TSS02", "M0_ESTCOB", "SP" )
Aviso

Após utilizar este método é necessário restaurar os valores originais do SIGAMAT através do método UTRestSM0().

UTAppendData( cTable, lExcluir,cFile )

Apenda os dados para a tabela da base utilizada  conforme appServer.ini.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

X

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//-----------------------------------------------------------------
/*/{Protheus.doc} SetUpSuite

 Prepara o ambiente para execução dos casos de teste do módulo de CRM

@version 1.0
/*/
//-----------------------------------------------------------------
METHOD SetUpSuite() CLASS CRMA610TestSuite


Local oHelper := FWTestHelper():New()

//---------------------------------
// Realiza a abertura do ambiente
//---------------------------------
oHelper:UTOpenFilial( "T1", "D MG 01 " ) 
 
//---------------------------
// Ativado Classe Auxiliar
//---------------------------
oHelper:Activate()

//-----------------------------------------------------------------------------------------------
// Realiza o append das tabelas na base, quando as mesmas não possuem ExecAuto e não são em MVC
//-----------------------------------------------------------------------------------------------

oHelper:UTAppendData("TAFST2",,"AdvPR_007")


//-- Append dos dados sem deletar registros
oHelper:UTAppendData("SA1",.F.,"AdvPR_008")

Return( oHelper )

UTArqCompare( cPath, cFileModel, cFileTest, cIdLinha, aReplace )

Método que compara arquivo inteiro ou parcial. 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

X

...

Exemplo:

Bloco de código
languagepy
themeMidnight
Aadd( aReplace, { "01112016" , "03102016" } )
Aadd( aReplace, { "01092016" , "01102016" } )
Aadd( aReplace, { "000800"   , "000833"   } )
Aadd( aReplace, { "30092016" , "31102016" } )
Aadd( aReplace, { "21092016" , "01102016" } )

oHelper:UTArqCompare( "", cArqTest, cArqModel, "|E350", aReplace )

UTAtzPsw()

Método para atualizar os SIGAPSS.spf, de acordo como o backup da base congelada.

Ver também o método UTDelPsw( )

Exemplo:

Bloco de código
languagepy
themeMidnight
//"Copia arquivo SIGAPASS do ambiente"
oHelper:UTAtzPsw() 

UTAuditField( cTable, cField )

Método para auditar um campo específico de uma tabela, utilizando o Audit Trail.

Deve ser colocado imediatamente após a ativação do oHelper. Se necessário configurar mais de um campo a ser auditado, é necessário repetir o método com o novo campo no script.

Deve ser utilizado junto com o método UTCheckAudit, para verificação do resultado esperado por meio de relatório do AuditTrail.

A configuracao no Audit Trail ficara da seguinte forma:

                Empresa - EXCECAO

                Tabela - LIGACAO

                Campo - REGRA

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Nome da tabela que possui o campo a ser auditado

...

Bloco de código
languagepy
themeMidnight
oHelper:Activate()

//-- Desejo auditar somente os campos E1_NUM e E1_TIPO
oHelper:UTAuditField("SE1","E1_NUM")
oHelper:UTAuditField("SE1","E1_TIPO")

//-- Alterar Pergunte
oHelper:UTChangePergunte("FIN040","01",2)
oHelper:UTChangePergunte("FIN040","02",1)
oHelper:UTChangePergunte("FIN040","03",1)
oHelper:UTChangePergunte("FIN040","04",1)

//-- Incluindo Cabecalho	
//-- Preenchimento dos campos
oHelper:UTSetValue("aCab","E1_PREFIXO","AUT")
oHelper:UTSetValue("aCab","E1_NUM",cE1_Num)
oHelper:UTSetValue("aCab","E1_TIPO","NF ")
oHelper:UTSetValue("aCab","E1_NATUREZ",cE1_Naturez)
oHelper:UTSetValue("aCab","E1_CLIENTE",cE1_Cliente)
oHelper:UTSetValue("aCab","E1_LOJA",cE1_Loja)
oHelper:UTSetValue("aCab","E1_MOEDA",1)
oHelper:UTSetValue("aCab","E1_EMISSAO",dDate)
oHelper:UTSetValue("aCab","E1_VENCTO",dDate)
oHelper:UTSetValue("aCab","E1_VENCREA",dDate)
oHelper:UTSetValue("aCab","E1_VALOR",1000)

//-- Teste de Inclusao
oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetaCab(),3) 

oHelper:UTCheckAudit("FINA040_001")
oHelper:AssertTrue(oHelper:lOk,"")

UTAuditNoField( cTable, cField )

Método para auditar uma tabela inteira, exceto um campo.

Deve ser colocado imediatamente após a ativação do oHelper. Se necessário configurar mais de um campo a ser desconsiderado, é necessário repetir o método com o novo campo no script.

Deve ser utilizado junto com o método UTCheckAudit, para verificação do resultado esperado por meio de relatório do AuditTrail.

A configuracao no Audit Trail ficará da seguinte forma:

                Empresa - EXCECAO

                Tabela - REGRA

                Campo - EXCECAO

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Nome da tabela a ser auditada

...

Bloco de código
languagepy
themeMidnight
oHelper:Activate()

//-- Desejo auditar a tabela SE1 inteira, exceto os campos E1_NUM e E1_TIPO
oHelper:UTAuditNoField("SE1","E1_NUM")
oHelper:UTAuditNoField("SE1","E1_TIPO")

//-- Alterar Pergunte
oHelper:UTChangePergunte("FIN040","01",2)
oHelper:UTChangePergunte("FIN040","02",1)
oHelper:UTChangePergunte("FIN040","03",1)
oHelper:UTChangePergunte("FIN040","04",1)

//-- Incluindo Cabecalho	
//-- Preenchimento dos campos
oHelper:UTSetValue("aCab","E1_PREFIXO","AUT")
oHelper:UTSetValue("aCab","E1_NUM",cE1_Num)
oHelper:UTSetValue("aCab","E1_TIPO","NF ")
oHelper:UTSetValue("aCab","E1_NATUREZ",cE1_Naturez)
oHelper:UTSetValue("aCab","E1_CLIENTE",cE1_Cliente)
oHelper:UTSetValue("aCab","E1_LOJA",cE1_Loja)
oHelper:UTSetValue("aCab","E1_MOEDA",1)
oHelper:UTSetValue("aCab","E1_EMISSAO",dDate)
oHelper:UTSetValue("aCab","E1_VENCTO",dDate)
oHelper:UTSetValue("aCab","E1_VENCREA",dDate)
oHelper:UTSetValue("aCab","E1_VALOR",1000)

//-- Teste de Inclusao
oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetaCab(),3) 

oHelper:UTCheckAudit("FINA040_001")

oHelper:AssertTrue(oHelper:lOk,"")

...

Método para Auditar uma tabela inteira.

Deve ser colocado imediatamente após a ativação do oHelper. Se necessário configurar mais de uma tabela a ser auditada, é necessário repetir o método com a nova tabela no script.

Deve ser utilizado junto com o método UTCheckAudit, para verificação do resultado esperado por meio de relatório do AuditTrail.

A configuracao no Audit Trail ficará da seguinte forma:

                Empresa - EXCECAO

                Tabela - REGRA

                Campo - SEM CONFIGURACAO

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Nome da tabela a ser auditada

...

Bloco de código
languagepy
themeMidnight
oHelper:Activate()

//-- Desejo auditar a tabela SE1 e SE2 inteiras
oHelper:UTAuditTable("SE1")
oHelper:UTAuditTable("SE2")

//-- Alterar Pergunte
oHelper:UTChangePergunte("FIN040","01",2)
oHelper:UTChangePergunte("FIN040","02",1)
oHelper:UTChangePergunte("FIN040","03",1)
oHelper:UTChangePergunte("FIN040","04",1)

//-- Incluindo Cabecalho	
//-- Preenchimento dos campos
oHelper:UTSetValue("aCab","E1_PREFIXO","AUT")
oHelper:UTSetValue("aCab","E1_NUM",cE1_Num)
oHelper:UTSetValue("aCab","E1_TIPO","NF ")
oHelper:UTSetValue("aCab","E1_NATUREZ",cE1_Naturez)
oHelper:UTSetValue("aCab","E1_CLIENTE",cE1_Cliente)
oHelper:UTSetValue("aCab","E1_LOJA",cE1_Loja)
oHelper:UTSetValue("aCab","E1_MOEDA",1)
oHelper:UTSetValue("aCab","E1_EMISSAO",dDate)
oHelper:UTSetValue("aCab","E1_VENCTO",dDate)
oHelper:UTSetValue("aCab","E1_VENCREA",dDate)
oHelper:UTSetValue("aCab","E1_VALOR",1000)

//-- Teste de Inclusao
oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetaCab(),3) 

oHelper:UTCheckAudit("FINA040_001")

oHelper:AssertTrue(oHelper:lOk,"")

UTChangePergunte( cGrupo, cOrdem, xValue )  

Metodo que ira alterar o conteúdo das perguntas do SX1.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Grupo da rotina a ser alterada a pergunta

...

X

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTChangePergunte( "AFA010", "01", 2 ) //Mostra Lançamento - N
oHelper:UTChangePergunte( "AFA010", "02", 2 ) //Repete Chapa 	  - S
oHelper:UTChangePergunte( "AFA010", "03", 2 ) //Desc. Estendida   - N
oHelper:UTChangePergunte( "AFA010", "04", 1 ) //Copia valores 	  - TODOS 

UTCheckAudit(cRptName, lUseTxt, lConvAcent, cOrder)

Extrai os dados das tabelas de auditoria e compara com arquivo base.

Deve ser colocado após o Commit. Se utilizado a comparação via Txt, o arquivo base deverá ficar na pasta "baseline" do ambiente. Se comparação via relatório, o arquivo base deverá ficar na pasta "spool".

Recomenda-se a comparação via txt por ser mais rápida.

O método UTCheckAudit deve ser utilizado junto com um dos métodos UTAuditField, UTAuditNoField ou UTAuditTable, pois esses métodos aplicam as configurações do aplicador do Audit Trail, necessários para a comparação funcionar.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Bloco de código
languagepy
themeMidnight
oHelper:Activate()

//-- Desejo auditar a tabela SE1 e SE2 inteiras
oHelper:UTAuditTable("SE1")
oHelper:UTAuditTable("SE2")

//-- Alterar Pergunte
oHelper:UTChangePergunte("FIN040","01",2)
oHelper:UTChangePergunte("FIN040","02",1)
oHelper:UTChangePergunte("FIN040","03",1)
oHelper:UTChangePergunte("FIN040","04",1)

//-- Incluindo Cabecalho	
//-- Preenchimento dos campos
oHelper:UTSetValue("aCab","E1_PREFIXO","AUT")
oHelper:UTSetValue("aCab","E1_NUM",cE1_Num)
oHelper:UTSetValue("aCab","E1_TIPO","NF ")
oHelper:UTSetValue("aCab","E1_NATUREZ",cE1_Naturez)
oHelper:UTSetValue("aCab","E1_CLIENTE",cE1_Cliente)
oHelper:UTSetValue("aCab","E1_LOJA",cE1_Loja)
oHelper:UTSetValue("aCab","E1_MOEDA",1)
oHelper:UTSetValue("aCab","E1_EMISSAO",dDate)
oHelper:UTSetValue("aCab","E1_VENCTO",dDate)
oHelper:UTSetValue("aCab","E1_VENCREA",dDate)
oHelper:UTSetValue("aCab","E1_VALOR",1000)

//-- Teste de Inclusao
oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetaCab(),3) 

//-- Gera o relatorio do que foi auditado e compara com arquivo base
oHelper:UTCheckAudit("FINA040_001")

oHelper:AssertTrue(oHelper:lOk,"")

UTCheckDB( cAlias, cField, xValue )

Método utilizado para verificações de resultado esperado, valida se o resultado do campo especificado confere com o conteúdo gravado no banco de dados.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Nome da tabela a ser utilizada

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//------------------------
// Ponto de verificação 
//------------------------
oHelper:UTCheckDB( "SAH", "AH_UNIMED", cCodigo )
oHelper:AssertTrue( oHelper:lOk, "" ) 

oHelper:UTCheckDB( "SE1", "E1_VALOR", 1000 )
oHelper:AssertTrue( oHelper:lOk, "")  

oHelper:UTCheckDB( "SE1", "E1_MOEDA", 1 )
oHelper:AssertTrue( oHelper:lOk, "" ) 

UTClearDB( aAlias )

Método utilizado para limpar os dados de tableas especificas conforme informado no parâmetro.

Nome

Tipo

Descrição

Obrigatório

aAliasArray

Array de Alias a serem excluídos. 

X

Exemplo:

Bloco de código
languagepy
themeMidnight
//-----------------------------------------------------------------
/*/{Protheus.doc} SetUpSuite


Prepara o ambiente para execução dos casos de teste do módulo de CRM


/*/
//-----------------------------------------------------------------
METHOD SetUpSuite() CLASS CRMA610TestSuite

Local oHelper := FWTestHelper():New()


//-----------------------------------
// Realiza a abertura do ambiente
//-----------------------------------
oHelper:UTOpenFilial("T1","D MG01 ")


//---------------------------
// Ativado Classe Auxiliar
//---------------------------
oHelper:Activate()


//--------------------------------------------------------------
// Limpa tabelas que serão populadas pelos os casos de testes
//--------------------------------------------------------------
oHelper:UTClearDB( { "ACG","B44","SEZ","SFQ","SK1","SC5","SC6","SC9","SDA" } )

Return( oHelper )

UTCloseFilial()

Método utilizado para fechar a empresa após a execução dos casos de testes.

Exemplo:

Bloco de código
languagepy
themeMidnight
//-----------------------------------------------------------------
/*/{Protheus.doc} TearDownSuite

 Finaliza o ambiente após a execução dos casos de teste

@author 
@since 01/02/2016
@version 1.0

/*/
//-----------------------------------------------------------------
METHOD TearDownSuite() CLASS ATFA010TestSuite

Local oHelper := FWTestHelper():New()

//---------------------------------
// Restaura os parâmetros
//---------------------------------
oHelper:UTRestParam( ::aParam )

//---------------------------------------
// Fecha a filial do sistema
//---------------------------------------
oHelper:UTCloseFilial()

Return( oHelper )

UTCommitData( bExec, xParam1, xParam2… xParam20 ) 

Função que executa o commit de teste e captura o erro, se tiver. 

...

id1619529180411_1588997564

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Bloco de execução do MsExecAuto

...

Exemplo:

Rotina automática

Bloco de código
languagepy
themeMidnight
 oHelper:UTCommitData( { |x,y,z| ATFA010( x, y, z ) }, oHelper:GetaCab(), oHelper:GetaItens(), 3 )

Model View Controler (MVC)

Bloco de código
languagepy
themeMidnight
 oHelper:UTCommitData()

UTContDB( cAlias, nCount )

Método utilizado para contar a quantidade de registros de uma determinada tabela.

Nome

Tipo

Descrição

Obrigatório

cAliasCaractere

Nome da tabela a ser utilizada

X
nCountNuméricoQuantidade a ser verificada na tabelaX

Exemplo:

Bloco de código
languagepy
themeMidnight
nRegister := oHelper:UTCheckDB( "SA1", 13 )

UTCountRows( cTable, cFilter )

Método para contagem de linhas em uma determinada tabela de acordo com um filtro utilizado para pesquisa.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Return

...

Tipo

...

Descrição

...

Exemplo:

Bloco de código
languagepy
themeMidnight
nCount := oHelper:UTCountRows( "SA2" , "A2_EST = 'SP' " )

UTDelPsw()

Método que irá apagar o SIGAPSS.SPF 

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTDelPsw()

UTEAIActivate( cProgram, cFormat, cVersion )

Metodo que irá ativar a utilização da configuração de Envio do EAI. 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

RetornoVerdadeiro ou Falso indicando se foi possível ativar o adapter informado.

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTEAIActivate( 'FINA010' )

UTExecEAI( cCodigo )

 

Método de execução da mensagem única de ENVIO.

Retorno: Verdadeiro ou Falso indicando se foi possível executar a mensagem.

 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Codigo que será usado para busca (XX3_UUID)

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//-------------------------------------------
// Execução da Mensagem Unica
//-------------------------------------------
oHelper:UTExecEAI( "9000000000000000000037785" )

UTVldEAI( cProgram, cTestCase, cFormat )

Método utilizado para comparar o arquivo xml gerado na mensagem única de ENVIO.

 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

 

RetornoVerdadeiro ou Falso indicando se foi possível efetuar a validação

Exemplo:

Bloco de código
languagepy
themeMidnight
//-----------------------------------------------------------
// Habilita a utilização de Envio de mensagem através do EAI
//-----------------------------------------------------------
oHelper:UTEAIActivate( 'FINA010' )
 
//---------------------
// Confirma a inclusão
//---------------------
oHelper:UTCommitData( { |x,y| FINA010( x, y) }, oHelper:GetaCab(), 3 )
 
//-------------------------------
// Valida o xml gerado no envio
//-------------------------------
oHelper:UTVldEAI( 'FINA010', 'FIN010_001' )
oHelper:AssertTrue(oHelper:lOk,"")
Aviso

Obs.: Para utilizar a validação do EAI é necessário, primeiramente utilizar o método UTEAIActivate para ativar as configurações de envio do adapter.

...

Método para encontrar o registro em determinada tabela.

Retorno: Verdadeiro/Falso indicando se foi possível posicionar no registro.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Nome da tabela que irá ser procurado o registro

...

Índice que será realizado a pesquisa na tabela

...

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTFindReg( "FNG", 1, cFNG_GRUPO + cFNG_TIPO + cFNG_TPSALD ) 

oHelper:UTFindReg( "SNI", 1, '00000000000000000008'+'000001')
Aviso

Não é necessário informar a Filial, por exemplo: xFilial( 'SA1' ) + cCod + cLoja

É considerado a filial logada no sistema, ou seja, filial utilizada no TestSuite ou alterada no TestCase conforme método ChangeFil

UTGetError()

Procura e retorna o erro para o MsExecAuto / MVC.

UTGetaCab()

Metodo para recuperar o aCab declarado através do método UTSetValue()

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTSetValue( "aCab","N1_CBASE", 'CT001') 
oHelper:UTSetValue( "aCab","N1_ITEM" , '0001' ) 

oHelper:UTCommitData( { |x,y,z| ATFA010( x, y, z ) }, oHelper:GetaCab(), oHelper:GetaItens(), 3 )

UTGetaItens()

Metodo para recuperar o aItens declarado através do método UTSetValue()

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTSetValue( "aItens", 'N3_TIPO'   , '01' 	)
oHelper:UTSetValue( "aItens", 'N3_HISTOR' , 'Fiscal') 
oHelper:UTSetValue( "aItens", 'N3_TPSALDO', '1'		) 

oHelper:UTCommitData( { |x,y,z| ATFA010( x, y, z ) }, oHelper:GetaCab(), oHelper:GetaItens(), 3 )

UTGetWS(aHeader,cFile,cGetParms,cURLRest,aReplace,aReplaceX,lLastResult,lRetry)

Método para consumo de APIs via Web Service utilizando GET, o método atende os modelos Rest/JSON e Soap/XML.

Observação: O método deverá ser utilizado em conjunto com o método UTSetAPI, para definir qual o modelo de API que está sendo utilizado.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Indica o array que contêm as strings que serão acrescentadas ao header da requisição que será realizada, utilizar pipes "|" quando o modelo utilizado for SOAP.

...

Rest:
{ Content-Type: application/json}

Soap:

{}

...

Nome do arquivo que será usado para comparação entre o conteúdo do response da requisição e o arquivo base disponibilizado na pasta baseline.

Observação:  Por padrão cFile sempre irá concatenar o valor "base" no sufixo, para realizar comparação com o arquivo gerado automaticamente.

...

Indica se o retorno do método será o erro do GetResult ou do GetlastError do Client FwRest()
.T. = GetResult → Erros completos (Estrutura Json)

.F. = GetLastError →  Erros Resumidos (Qualquer estrutura)

...

.F. = Não realiza segunda chamada da api em caso de falha

...


Este material deve ser usado pelos times de desenvolvimento do Totvs Automação Fiscal.

Fontes: 


Exibir filhos

Exemplo:

Bloco de código
languagepy
themeMidnight
//-------------------------------------------------------------------
/*/{Protheus.doc} AdvPR_001
Caso de Teste 001, via TDD
@since 09/08/2018
@version 1.0
/*/
//-------------------------------------------------------------------
METHOD AdvPR_001() CLASS AdvPRTestCase
Local oHelper	:= FWTestHelper():New()
Local aHeader   := {"Content-Type: application/json"}
Local cRet		:= ""

	oHelper:Activate()

	//-- Indica qual api será utilizada
	oHelper:UTSetAPI("/api/v1/","REST")

	//-- Realiza o consumo da api e comparação do response com o arquivo baseline
	cRet := oHelper:UTGetWS(aHeader,"UTGETWS0001_REST")


    oHelper:AssertTrue( oHelper:lOk, "" )

Return oHelper

UTPostWS(cBody,aHeader,cFile,cGetParms,cURLRest,aReplace,aReplaceX,lLastResult)

Método para consumo de APIs via Web Service utilizando POST, o método atende os modelos Rest/JSON e Soap/XML.

Observação: O método deverá ser utilizado em conjunto com o método UTSetAPI, para definir qual o modelo de API que está sendo utilizado.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

String com os valores do Body que serão enviados no consumo da API, podendo ser enviado JSON para modelo de API Rest,e XML para o modelo Soap.

...

" "

...

Rest:
{ Content-Type: application/json}

Soap:

{}

...

Nome do arquivo que será usado para comparação entre o conteúdo do response da requisição e baseline.

Observação:  Por padrão cFile sempre irá concatenar o valor "base" no sufixo, para realizar comparação com o arquivo gerado automaticamente.

...

{}

...

Indica se o retorno do método será o erro do GetResult ou do GetlastError do Client FwRest()
.T. = GetResult → Erros completos (Estrutura Json)

.F. = GetLastError →  Erros Resumidos (Qualquer estrutura)

...

.F. = Não realiza segunda chamada da api em caso de falha

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//-------------------------------------------------------------------
/*/{Protheus.doc} AdvPR_004
Caso de Teste 004, via TDD
@since 09/08/2018
@version 1.0
/*/
//-------------------------------------------------------------------
METHOD AdvPR_004() CLASS AdvPRTestCase
Local oHelper	:= FWTestHelper():New()
Local aHeader   := {"Content-Type: application/json"}
Local cRet		:= ""
Local cBody     := '{"body_request":"advPr", "test_modelo": "interface"}'

	oHelper:Activate()

	oHelper:UTSetAPI("/api/v1","REST")

	cRet := oHelper:UTPostWS(cBody,aHeader,"UTPostWs_004")

	oHelper:AssertTrue( oHelper:lOk, "" )

Return oHelper

UTPutWS(cBody,aHeader,cFile,cURLRest,aReplace,aReplaceX)

Método para consumo de APIs via Web Service utilizando PUT, o método atende os modelos Rest/JSON e Soap/XML.

Observação: O método deverá ser utilizado em conjunto com o método UTSetAPI, para definir qual o modelo de API que está sendo utilizado.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

String com os valores do Body que serão enviados no consumo da API, podendo ser enviado JSON para modelo de API Rest,e XML para o modelo Soap.

...

" "

...

Rest:
{ Content-Type: application/json}

Soap:

{}

...

Nome do arquivo que será usado para comparação entre o conteúdo do response da requisição e baseline.

Observação:  Por padrão cFile sempre irá concatenar o valor "base" no sufixo, para realizar comparação com o arquivo gerado automaticamente.

...

.F. = Não realiza segunda chamada da api em caso de falha

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//---------------------------------------------------------------------
/*/{Protheus.doc} AUTP004
Caso de teste 004, via TDD

@since 17/08/2018
@version 1.0

/*/
//----------------------------------------------------------------------

METHOD AUTP004() CLASS AUTTestCase

	LOCAL oHelper	:= FWTestHelper():New()
	Local aHeader   := {"Content-Type: application/json"}
	Local cRet      := ""
	Local cBody 	:= ""
 
    oHelper:Activate()
 	
    //-- Indica qual api será utilizada
    oHelper:UTSetAPI("/CRMMOPPORTUNITYCONTACT/","REST")
 
    //-- Realiza o consumo da api e comparação do response com o arquivo baseline
    cRet := oHelper:UTPutWS(cBody,aHeader,"testcrmput")
	oHelper:AssertTrue( oHelper:lOk, "" )

 
Return oHelper

UTDeleteWS(cBody,aHeader,cFile,cURLRest,aReplace,aReplaceX)

Método para consumo de APIs via Web Service utilizando DELETE, o método atende os modelos Rest/JSON e Soap/XML.

Observação: O método deverá ser utilizado em conjunto com o método UTSetAPI, para definir qual o modelo de API que está sendo utilizado.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

String com os valores do Body que serão enviados no consumo da API, podendo ser enviado JSON para modelo de API Rest,e XML para o modelo Soap.

...

" "

...

Rest:
{ Content-Type: application/json}

Soap:

{}

...

Nome do arquivo que será usado para comparação entre o conteúdo do response da requisição e baseline.

Observação:  Por padrão cFile sempre irá concatenar o valor "base" no sufixo, para realizar comparação com o arquivo gerado automaticamente.

...

.F. = Não realiza segunda chamada da api em caso de falha

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//---------------------------------------------------------------------
/*/{Protheus.doc} AUTP005
Caso de teste 005, via TDD

@since 17/08/2018
@version 1.0

/*/
//----------------------------------------------------------------------

METHOD AUTP005() CLASS AUTTestCase

	LOCAL oHelper	:= FWTestHelper():New()
	Local aHeader   := {"Content-Type: application/json", "Authorization: Basic " + oHelper:UTSetAuthorization("Admin", "1")}
	Local cRet      := ""
	Local cBody 	:= ""
 
    oHelper:Activate()
 	
    //-- Indica qual api será utilizada
    oHelper:UTSetAPI("/CRMMOPPORTUNITYCONTACT/00024401/TMK035/","REST")
 
    //-- Realiza o consumo da api e comparação do response com o arquivo baseline
    cRet := oHelper:UTDeleteWS(cBody,aHeader,"testcrmdelete")
	
	oHelper:AssertTrue( oHelper:lOk, "" )

 
Return oHelper	

UTClientWSDL(cWSDL,cOperation,cXml,cFile,aReplace,cService)

Método que realiza o envio de uma mensagem do tipo Soap para um serviço de web service utilizando WSDL.

...

id1536177934401_1291581378

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

URL que será consumida pelo método de teste, caso não seja informada, será capturado valor através da chave SOAP da seção ADVPR no appserver.ini. Para executar no Servidor Contínuo, não deve ser informado conteúdo nesse parâmetro, exceto para URL externa. No teste local, é necessário criar a chave SOAP na seção ADVPR com a URL da configuração local.  

...

http://localhost:8787/

...

Nome do arquivo baseline que será usado como modelo para comparação do response de retorno.

Observação:  Por padrão cFile sempre irá concatenar o valor "base" no sufixo, para realizar comparação com o arquivo gerado automaticamente.

...

Exemplo, utilizando UTSetSoapValue

Bloco de código
languagepy
themeMidnight
//-------------------------------------------------------------------
/*/{Protheus.doc} AdvPR_001
Caso de Teste 001, via TDD

@since 09/08/2018
@version 1.0
/*/
//-------------------------------------------------------------------
METHOD AdvPR_001() CLASS AdvPRTestCase
    Local oHelper        := FWTestHelper():New()
    Local cRet           := ""
    Local cService       := "/ws/PLSXMOV.apw?WSDL"
    Local cOperation     := "GETVLRCO"
    
    oHelper:Activate()

    oHelper:UTSetSoapValue("USERCODE","MSALPHA")
    oHelper:UTSetSoapValue("GUIAS"   ,"000001")

    cRet := oHelper:UTClientWSDL(,cOperation,,,,cService)

    If Empty(cRet)
        oHelper:AssertTrue(oHelper:lOK,"Erro ao Executar UTClientWSDL")
    Else
        oHelper:AssertTrue(oHelper:lOK,"Sucesso ao Executar UTClientWSDL")
    EndIF

Return oHelper

Exemplo, utilizando cXml para o envio, e comparação de arquivo

Bloco de código
languagepy
themeMidnight
//-------------------------------------------------------------------
/*/{Protheus.doc} AdvPR_001
Caso de Teste 001, via TDD

@since 09/08/2018
@version 1.0
/*/
//-------------------------------------------------------------------
METHOD AdvPR_001() CLASS AdvPRTestCase
    Local oHelper        := FWTestHelper():New()
    Local cRet           := ""
    Local cService       := "/ws/PLSXMOV.apw?WSDL"
    Local cOperation     := "PUTAUTHORIZATION"
    Local cXml           := ::UTLoadBody("ADVPR001.txt")//-- Método criado que retorna uma estrutura de XMl
    oHelper:Activate()

    cRet := oHelper:UTClientWSDL(,cOperation,cXml,"advpr001CT",,cService)

    If Empty(cRet)
        oHelper:AssertTrue(oHelper:lOK,"Erro ao Executar UTClientWSDL")
    Else
        oHelper:AssertTrue(oHelper:lOK,"Sucesso ao Executar UTClientWSDL")
    EndIF

Return oHelper

Exemplo, utilizando chamadas de 2 serviços usando cService

Bloco de código
languagepy
themeMidnight
//-------------------------------------------------------------------
/*/{Protheus.doc} AdvPR_001
Caso de Teste 001, via TDD

@since 09/08/2018
@version 1.0
/*/
//-------------------------------------------------------------------
METHOD AdvPR_001() CLASS AdvPRTestCase
    Local oHelper        := FWTestHelper():New()
    Local cRet1          := ""
    Local cRet2          := ""
    Local cOperation1     := "PUTAUTHORIZATION"
	Local cOperation2     := "GETGUIAS"
    Local cXml           := ::UTLoadBody("ADVPR001.txt")//-- Método criado que retorna uma estrutura de XMl
    oHelper:Activate()

    cRet1 := oHelper:UTClientWSDL(,cOperation1,cXml,"advpr001CT",,"PLSXMOV.apw?WSDL")


	cRet2 := oHelper:UTClientWSDL(,cOperation2,cXml,"advpr002CT",,"PLSXGUIAS.apw?WSDL")

    If Empty(cRet1) .OR. Empty(cRet2)
        oHelper:AssertTrue(oHelper:lOK,"Erro ao Executar UTClientWSDL")
    Else
        oHelper:AssertTrue(oHelper:lOK,"Sucesso ao Executar UTClientWSDL")
    EndIF

Return oHelper

UTSetAPI(cApi,cTypeAPI)

Método que define qual será o modelo de API que será consumido, modelos atendidos Rest e Soap.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Caminho da API na URL, este parâmetro é necessário pois em alguns casos um único endereço http pode conter diversas APIs.

...

Informações

Para que as suítes de testes que utilizam os métodos de consumo de API executem corretamente no Servidor Continuo, é necessário informar para Central de Automação - Protheus, via Ryver as seguintes informações:

Nome da Suíte: TAFA261
Integração com TSS: Sim/Não
Autenticação: Sim/Não
REST ou SOAP? Caso seja SOAP, é necessário informar em qual filial deve ser executada a suíte.

Canal Ryver: https://totvs.ryver.com/index.html#forums/1247736/chat

Exemplo:

Bloco de código
languagepy
themeMidnight
//-------------------------------------------------------------------
/*/{Protheus.doc} AdvPR_004
Caso de Teste 001, via TDD

@since 09/08/2018
@version 1.0
/*/
//-------------------------------------------------------------------
METHOD AdvPR_004() CLASS AdvPRTestCase
	Local oHelper	:= FWTestHelper():New()
	
	Local lOk 		:= .F.

	oHelper:Activate()

	lOk := oHelper:UTSetAPI("/api/v1","REST")

Return oHelper

UTSetAuthorization(cUser,cPwd)

Método para autenticação de usuário nos scripts de WebService, método atende os modelos REST/JSON e SOAP/XML.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Login do usuário que será utilizado para autenticação.

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//---------------------------------------------------------------------
/*/{Protheus.doc} AUTP002
Caso de teste 002, via TDD

@since 17/08/2018
@version 1.0

/*/
//----------------------------------------------------------------------

METHOD AUTP002() CLASS AUTTestCase

	LOCAL oHelper	:= FWTestHelper():New()
	Local aHeader   := {"Content-Type: application/json", "Authorization: Basic " + oHelper:UTSetAuthorization("CRMREST01", "1")}
	Local cRet      := ""
 
    oHelper:Activate()
 	
    //-- Indica qual api será utilizada
    oHelper:UTSetAPI("/CRMMPHONEDDI/","REST")
 
    //-- Realiza o consumo da api e comparação do response com o arquivo baseline: testcrm
    cRet := oHelper:UTGetWS(aHeader,"testcrm")
 
Return oHelper

UTLoadData( lClearDB, aParam )

Importação dos layouts XML e execução do layouts CSV.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Define se deve ser realizada a limpeza das tabelas

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//-----------------------------------------------------------------
/*/{Protheus.doc} SetUpSuite


 Prepara o ambiente para execução dos casos de teste
@author 
@since 01/02/2016
@version 1.0
/*/
//-----------------------------------------------------------------
METHOD SetUpSuite() CLASS ATFA030TestSuite

Local oHelper := FWTestHelper():New()

//---------------------------------
// Abertura do sistema
//---------------------------------
oHelper:UTOpenFilial( "T1", "D MG01 " )

oHelper:Activate()

//---------------------------------
// Alteração de parâmetros
//---------------------------------
oHelper:UTLoadData( .T., ::aParam )

Conout ( "Setup realizado com sucesso!" )

Return( oHelper )

UTMarkReg( cTable, cField, cMark )

Método utilizado para marcação física no banco de dados de registros sem a utilização e telas do tipo markBrowse.

Observação:  A utlização do método, UTMarkReg() deve ser em conjunto com o método UTFindRFeg().

...

Nome

...

Tipo

...

Descrição

...

Exemplo (marcação) :

Bloco de código
languagepy
themeMidnight
oHelper:UTFindReg( "SA2", 1, '000002')     //-- Encontra o registro.
oHelper:UTMarkReg( "SA2" , "A2_OK", "AT" ) //-- Realiza a marcação do registro.

...

Bloco de código
languagepy
themeMidnight
oHelper:UTFindReg( "SA2", 1, '000002')     //-- Encontra o registro.
oHelper:UTMarkReg( "SA2" , "A2_OK", "" )   //-- Realiza a desmarcação do registro.

UTOpenFilial( cEmpresa, cFil, cMod, aTable, cUser, cPsw )

Abre a filial de acordo com os parâmetros passados.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//-----------------------------------------------------------------
/*/{Protheus.doc} SetUpSuite

 Prepara o ambiente para execução dos casos de teste

@author 
@since 08/06/2015
@version 1.0
/*/
//-----------------------------------------------------------------
METHOD SetUpSuite() CLASS CRMA180TestSuite

Local oHelper := FWTestHelper():New()


//---------------------------------
// Realiza a abertura do ambiente
//---------------------------------
oHelper:UTOpenFilial( "T1", "D RJ01 ", "CRM",, "VENDFAT05", "1" )


//----------------------------
// Ativado Classe Auxiliar
//----------------------------
oHelper:Activate()


Conout( "Setup realizado com sucesso!" )

Return( oHelper )

UTPrtCompare( cReport, lConvAcent, lConvAuto,aReplace,aReplacex)

Método utilizado para comprar relatórios gerado com baseline.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplo:

Bloco de código
languagepy
themeMidnight
 oHelper:UTPrtCompare( "FINR130_001" )

UTQueryDB( cTable, cField, cFilter, xValue, cFil )

Método para realizar a query de verificação de resultado esperado.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

X

...

Exemplo:

Bloco de código
languagepy
themeMidnight
cTable := "FW6"
cQuery := "FW6_ITEM = '01'  AND FW6_SOLICI =  '" + cSolicit + "' "
 
oHelper:UTQueryDB( cTable, "FW6_PORCEN",  cQuery, 100 )
oHelper:UTQueryDB( cTable, "FW6_CC"	   ,  cQuery, 'FIN10101' )

oHelper:AssertTrue( oHelper:lOk, "" )

UTRestParam( aParam )

Método para restaurar os parâmetros para seus valores default.

Nome

Tipo

Descrição

Obrigatório

aParamArrayArray de parâmetros que serão restaurados.X

Exemplo:

Bloco de código
languagepy
themeMidnight
 oHelper:UTRestParam( oHelper:aParamCT ) 

UTSetParam( cParam, xValue, lChange )

Método para alterar os parâmetros (SX6).

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Se o parâmetro será alterado no momento ou depende do método LoadData()

...

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTSetParam( "MV_BXCNAB" , 'S', .T. )
oHelper:UTSetParam( "MV_FINJRTP", 2  , .T. )

UTSerieID( cTabela, cCampo, cEspecie, cSerie )

 

Método que verifica novo formato de gravação do ID no campos _SERIE.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Espécie da nota

...

Exemplo:

 

Bloco de código
languagepy
themeMidnight
cSerieId  := oHelper:UTSerieID( 'SF1', 'F1_SERIE', cEspecie, cSerie )

UTSetValue( cModel, cField, xValue, cAuxiliar )

Método utilizado para incluir valor em um campo individualmente ou em um array. 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplos:

MVC:

Bloco de código
languagepy
themeMidnight
//---------------------------------
//SetValue: MASTER                
//---------------------------------
oHelper:UTSetValue('FW3MASTER', 'FW3_SOLICI', cIdSolic	) //Id Solicitante
oHelper:UTSetValue('FW3MASTER', 'FW3_NACION', '1'		) //Nacional 1=SIM;2=NÃO

//--------------------------------
//SetValue: DETAIL - FW4        
//--------------------------------
oHelper:UTSetValue('FW4DETAIL', 'FW4_SOLICI', cIdSolic	) //Id Solicitante 
oHelper:UTSetValue('FW4DETAIL', 'FW4_ITEM'  , '01'		) //Item

Array:

*Ver também o método UTGetaCab() e UTGetaItens() 

Bloco de código
languagepy
themeMidnight
//---------------------------------
//Preenche array do cabeçalho
//---------------------------------
oHelper:UTSetValue("aCab","UA_CLIENTE","TMK001", Nil )
oHelper:UTSetValue("aCab","UA_LOJA"	  ,"01"	   , Nil )
oHelper:UTSetValue("aCab","UA_OPERADO","000003", Nil )
 
//---------------------------------
//Preenche array de itens
//---------------------------------
oHelper:UTSetValue("aItens","UB_PRODUTO", "TMK002" , Nil )
oHelper:UTSetValue("aItens","UB_QUANT"	, 1		   , Nil ) 
oHelper:UTSetValue("aItens","UB_VRUNIT"	, 845511.78, Nil )

UTSetSoapValue(cField,xValue)

Método utilizado para definir valores no XML que utilizam estruturas simples.

...

Nome

...

Tipo

...

Descrição

...

UTStartRpt( cReport, aListParam, cDef, cPerg, nOrder, wnrel, lEndReport,lEmptyLine  )

Permite a geração de arquivos de relatório.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

nOrder

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//---------------------------
// Altera o pergunte 
//---------------------------
oHelper:UTChangePergunte( "FIN501", "01", "000007" ) // Da Liquidacao ?                
oHelper:UTChangePergunte( "FIN501", "02", "000008" ) // Ate Liquidacao ?             
oHelper:UTChangePergunte( "FIN501", "03", "      " ) // Do Cliente ?                   
oHelper:UTChangePergunte( "FIN501", "04", "ZZZZZZ" ) // Até o Cliente ?
oHelper:UTChangePergunte( "FIN501", "05", 	1	  ) // Listar Titulos ?  #1 - Todos                  
oHelper:UTChangePergunte( "FIN501", "06", 	2	  ) // Converter Moeda ? #2 - Dt. Referência
oHelper:UTChangePergunte( "FIN501", "07", 	"1"	  ) // Moeda ?			
oHelper:UTChangePergunte( "FIN501", "08", 	2	  ) // Seleciona Filiais ? #2 - Não


//---------------------------
// Gera o relatório			  
//---------------------------
oHelper:UTStartRpt( "FINR501_001" )

UTStartTimer( cOperation )

Método utilizado para marcar o início da marcação de tempo de determinada operação.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTStartTimer( 'TESTE 001' )

...

Método utilizado para marcar o final da marcação de tempo de determinada operação.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTStopTimer( 'TESTE 001' )

UtPutError( cError )

Método para incluir um erro manualmente. 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplo:

Bloco de código
languagepy
themeMidnight
//--------------------------------------
// Verifica se existe a tabela TAFST1
//--------------------------------------
If FOpnTabTAf( cTable, cAliasST1 )
	lOpenTable	 	:= .T.
Else
	oHelper:UTPutError(" Problemas na estrutura da tabela TAFST1 ou a tabela nao existe" )
	oHelper:AssertTrue( .F., "" )
EndIF

UTRestAutoCont()

Metodo para restaurar as alterações efetuadas na tabela autocontida conforme o método UTAlterAutoCont.

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTRestAutoCont()
 
Return( oHelper )

...

Método para restaurar filial.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:UTRestSM0( oHelper:aSM0 )

UTUpdSpecialKey( )

Método para atualizar a chave SpecialKey do .ini, com o environment+data+hora+segundo. Deverá ser utulizada antes do metódo UTOpenFilial.

Exemplo:

Bloco de código
languagepy
themeMidnight
METHOD SetUpSuite() CLASS MATA780TestSuite
Local oHelper := FWTestHelper():New()

//-- Atualiza a chave SpecialKey no INI
oHelper:UTUpdSpecialKey() 

//-- Realiza a abertura do ambiente
oHelper:UTOpenFilial("T1","D MG 01 ","PCP")


METHOD AdvPR_011() CLASS AdvPRTestCase
    Local oHelper        := FWTestHelper():New()
    Local cRet        := ""
    Local cWsdl          := "http://127.0.0.1:2007/ws/PLSXMOV.apw?WSDL"
    Local cOperation     := "GETVLRCO"
    
    oHelper:Activate()


    oHelper:UTSetSoapValue("USERCODE","MSALPHA")
    oHelper:UTSetSoapValue("GUIAS" ,"000001")

    cRet := oHelper:UTClientWSDL(cWsdl,cOperation,/*cFile*/)

    If Empty(cRet)
        oHelper:AssertTrue(oHelper:lOK,"Erro ao Executar UTClientWSDL")
    Else
        oHelper:AssertTrue(oHelper:lOK,"Sucesso ao Executar UTClientWSDL")
    EndIF

Return oHelper
METHOD AdvPR_012() CLASS AdvPRTestCase
    Local oHelper        := FWTestHelper():New()
    Local cRet        := ""
    Local cWsdl          := "http://10.171.67.232:2007/ws/PLSXMOV.apw?WSDL"
    Local cOperation     := "PUTAUTHORIZATION"
    Local cXml           := ::RetXml()
    oHelper:Activate()


    cRet := oHelper:UTClientWSDL(cWsdl,cOperation,cXml,/*cFile*/)

    If Empty(cRet)
        oHelper:AssertTrue(oHelper:lOK,"Erro ao Executar UTClientWSDL")
    Else
        oHelper:AssertTrue(oHelper:lOK,"Sucesso ao Executar UTClientWSDL")
    EndIF

Return oHelper

UTUpdSpecialKey( )

Método para atualizar a chave SpecialKey do .ini, com o environment+data+hora+segundo. Deverá ser utulizada antes do metódo UTOpenFilial.

Exemplo:

Bloco de código
languagepy
themeMidnight
METHOD SetUpSuite() CLASS MATA780TestSuite
Local oHelper := FWTestHelper():New()

//-- Atualiza a chave SpecialKey no INI
oHelper:UTUpdSpecialKey() 

//-- Realiza a abertura do ambiente
oHelper:UTOpenFilial("T1","D MG 01 ","PCP")

ExecStatic( )

Método utilizado para execução de uma função static do fonte.

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Exemplo:

Bloco de código
languagepy
themeMidnight
METHOD TECXFUN_01() CLASS TECXFUNTestCase
	Local oHelper	:=	FWTestHelper():New()
	Local aProgramas := {"TEC880EXE","TECA001","teca010","TECA011","TECA011A","TECA012"}
	Local lOk := oHelper:ExecStatic("ModelDef",aProgramas)

	If !lOk
		oHelper:AssertHelp("ExecStatic","Falha nos modelos: " + oHelper:cErrorPrograms)
	EndIf
		
	oHelper:AssertTrue(lOk,"")

Return oHelper

GeraChvNfe(cUFEmi,cAAMMEmi,cCnpjEmi,cModeloNf,cSerieNf,cNumNf)

Função para geração da chave do documento fiscal.

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cUFEmi

...

Caractere

...

Código da UF emitente do Documento Fiscal.

...

X

...

cAAMMEmi

...

Caractere

...

Ano e mês da emissão da NF-e, no formato AAMM.

...

 

...

X

...

cCnpjEmi

...

Caractere

...

CNPJ do emitente.

...

X

...

cModeloNf

...

Caractere

...

Modelo do Documento Fiscal.

...

 

...

X

...

cSerieNf

...

Caractere

...

Série do Documento Fiscal.

...

 

...

X

...

cNumNf

...

Caractere

...

Número do Documento Fiscal.

...

 

...

X

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:GeraChvNfe('33','1809','00000000001082','57','001','000000001')

UTXMLReplace(cXml, cPath, cReplace, lEncode64) 

Substituir o valor de um atributo do XML. (Retorno: Xml modificado)

 

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cXml 

...

Caractere

...

String com o xml

...

X

...

cPath 

...

Caractere

...

Caminho do atributo que deseja buscar e substituir o valor.

...

 

...

X

...

cReplace 

...

Caractere

...

Conteúdo que será substituído.

...

X

...

lEncode64 

...

Logico

...

Se o conteúdo a ser substituído está deverá ser gravado com base64 no xml.

...

 

...

X

Bloco de código
languagepy
themeMidnight
aAdd(aReplace, {"/infNFe/ide/serie","1", .F.})
cNewXml := UTXMLReplace(cNewXml,aReplace[nReplace,1] /*caminho*/,aReplace[nReplace,2]/*valor que será atribuído*/, aReplace[nReplace,3] /*É base 64? .T. = Sim, .F. = Nào*/)

UTXMLGETVALUE(cXml, cPath, lEncode64)

Obter valor de uma tag do XML.

 

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cXml 

...

Caractere

...

String com o xml

...

X

...

cPath 

...

Caractere

...

caminho do atributo que deseja buscar o valor.

...

 

...

X

...

lEncode64 

...

Logico

...

Se o conteúdo a ser substituído está deverá ser gravado com base64 no xml.

...

X

Bloco de código
languagepy
themeMidnight
cPath       := "SOAPENV:ENVELOPE/SOAPENV:BODY/NFS:SCHEMA/NFS:NFE/NFS:NOTAS/NFS:NFES/NFS:XML"
cNewXml := UTXMLGETVALUE(cXml,cPath /*caminho*/,.T. /*É base 64? .T. = Sim, .F. = Não*/)

UTExecPredecessor(cNomeCT, cNumeroCT, aPar) 

Método para executar os predecessores do caso de teste.

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cNomeCT

...

Caractere

...

Nome do caso de teste : EX. TAFS1000TestCase

...

X

...

cNumeroCT

...

Caractere

...

Nome do método do caso de teste: EX. S1000_001

...

 

...

X

...

aPar

...

Caractere

...

Parâmetros do caso de teste: EX.: {“1”}

...

X

Bloco de código
languagepy
themeMidnight
oHelper:UTExecPredecessor("TSSNFESBRANORSPTestCase","NFE_001",{cEntidade,cSerie,cNota})

UTTSSNFE(cXml, cPath, aReplace)

Função especifica para notas fiscais do TSS, irá substituir os valores dinâmicos do Xml do NFE dentro do cliente, nesta função é chamado as duas funções acima.

 

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cXml

...

Caractere

...

String com o xml

...

X

...

cPath

...

Caractere

...

Caminho do atributo que deseja buscar o valor.

...

 

...

X

...

aReplace

...

Caractere

...

Atributos que deseja substituir dentro do cPath.

...

X

Bloco de código
languagepy
themeMidnight
aAdd(aReplace, {"/infNFe/ide/serie","1", .F.})
cPath       := "SOAPENV:ENVELOPE/SOAPENV:BODY/NFS:SCHEMA/NFS:NFE/NFS:NOTAS/NFS:NFES/NFS:XML"
UTTSSNFE(cXml, cPath, aReplace)

UTRetReg(cTable,cFiltro,aFields)

Método para encontrar os registros em determinada tabela.

 

...

id1563389074642_409871479

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cTable

...

Caractere

...

Nome da tabela Ex. RetSqlName("SA1")

...

X

...

cFiltro

...

Caractere

...

Filtro para seleção de registros: Ex. "A1_COD = '0001' AND A1_TPCLI = 'R' "

...

 

...

X

...

aFields

...

Caractere

...

Campos a serem considerados Ex. {"A1_COD","A1_TPCLI"}

...

X

Bloco de código
languagepy
themeMidnight
aRet:= oHelper:UTRetReg(RetSqlName("SA1"), "ID_ENT = "A1_COD = '0001' AND A1_TPCLI = 'R' " , {"A1_COD","A1_TPCLI"})

String com o xml

...

UTDateCurrent(.T.)

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

.T.

...

Lógico 

...

.F.

...

Lógico

...

Utiliza a data que está no script

Bloco de código
languagepy
themeMidnight
oHelper:UTDateCurrent(.T.) //Default .T.

SetMsErroAuto(lMsAuto,lErrFile)

Método para setar variáveis privadas da execução automática.

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

lMsAuto

...

Lógico

...

Recebe o retorno dos erros no MsExecAuto. Se .T. houve erro.

...

lErrFile

...

Lógico

...

Se a variável estiver declarada como .T. a variável __aErrAuto será alimentada

...

.T.

Exemplo:

Bloco de código
languagepy
themeMidnight
oHelper:SetMsErroAuto()

UTSetKey(cCommand1,cCommand2)

Método para realizar envio de teclas (ações) do teclado para execução de Scripts que utilizam comunicação Telnet.

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cCommand1

...

String

...

X

...

cCommand2

...

Lógico

...

Tecla de comando auxiliar que será enviada para o servidor. Ex. CTRL X

Teclas Válidas:

...

Bloco de código
languagepy
themeMidnight
oHelper:UTSetKey("ENTER")

oHelper:UTSetKey("CTRL","X")

UTInputValue(cValue)

Método para realizar envio de dados digitados do teclado para execução de Scripts que utilizam comunicação Telnet.

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cValue

...

String

...

X

Bloco de código
languagepy
themeMidnight
oHelper:UTInputValue("Admin")

oHelper:UTInputValue("1234")

oHelper:UTInputValue("Avenida Braz Leme")

UTExecTelNet(cScript)

Método que realiza a execução dos scripts criados em Vbs para comunicação com a aplicação Telnet.

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cScript

...

String

...

X

Bloco de código
languagepy
themeMidnight
oHelper:UTExecTelNet("ACD010_001")

Informações

Para que as suítes de testes que utilizam o método de TelNet executem corretamente no Servidor Continuo, é necessário informar o nome da suíte para Central de Automação - Protheus via Ryver.

Canal Ryver: https://totvs.ryver.com/index.html#forums/1247736/chat

UTDeleteDB(cTable,cFilter)

Método que realiza delete dos registros de uma tabela, podendo ou não considerar um filtro para condição Where.

...

Nome

...

Tipo

...

Descrição

...

Default

...

Obrigatório

...

cTable

...

String

...

X

...

Informações

Ao executar o método os dados serão apagados de maneira definitiva, o AdvPR não realiza restore/armazenamento em mémoria ou algo similar com dados que foram apagados pelo método.

Bloco de código
languagepy
themeMidnight
METHOD FIN010_001() CLASS FINA040TestCase
	Local oHelper    := FWTestHelper():New()
	
	//--Limpa os dados da tabela SA1 com filtro da loja = 01 (Fiscal)
	oHelper:UTDeleteDB("SA1T10","A1_LOJA = '01'")

	//--Limpa os dados da tabela SA1 com filtro da loja = 01 (Financeiro)
	oHelper:UTDeleteDB("SA2T10","A2_LOJA = '03'")
	
	//--Apaga os dados das notas fiscais com filtro de nota e série.
	oHelper:UTDeleteDB("SFTT10","FT_NFISCAL = '000006' AND FT_SERIE = '664' ")

	oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetaCab(),3)
	
	oHelper:AssertTrue(oHelper:lOk, "")

Return oHelper

 UTLoadBody(cJSon,lTrimLine)

 Método que realiza a leitura de um arquivo que está localizado dentro da pasta baseline do ambiente.

...

Bloco de código
languagepy
themeMidnight
METHOD AdvPR_001() CLASS AdvPRTestCase

Local oHelper        := FWTestHelper():New()
Local cJson          := oHelper:UTLoadBody("ADVPR001.txt")

oHelper:Activate()

oHelper:UTCommitData({|x| JsonSend(x)},cJson)
oHelper:AssertTrue(oHelper:lOK,"")

Return oHelper

UTSelectDB(cTable,aFields,cFilter)

Método que retorna os registros de uma tabela conforme os parâmetros, através de uma consulta SQL.

...

cTable 

...

String

...

Nome da tabela que será feito o update

...

aFields

...

Array

...

Lista com os nomes dos campos que serão retornados

...

X

...

cFilter

...

String

...

Filtro que poderá ser usado para pesquisa

...

         X

Retorno: aRows, Array, Lista de 2 dimensões com registros que foram encontrados com o filtro realizado

    

Bloco de código
languagepy
themeMidnight
METHOD AdvPR_001() CLASS AdvPRTestCase

Local oHelper       := FWTestHelper():New()
Local aFields       := {"E1_TIPO","E1_DATAIN","E1_VALOR"}
Local cFilter       := "E1_NUM = '000000001' AND E1_FILIAL = 'D MG 01 ' AND E1_EMISSAO = '20171203'"

oHelper:Activate()
oHelper:UTSetValue("aCab","E1_PREFIXO","AUT")
oHelper:UTSetValue("aCab","E1_NUM","000000001")
oHelper:UTSetValue("aCab","E1_TIPO","NF ")
oHelper:UTSetValue("aCab","E1_NATUREZ",cE1_Naturez)
oHelper:UTSetValue("aCab","E1_CLIENTE",cE1_Cliente)
oHelper:UTSetValue("aCab","E1_LOJA",cE1_Loja)
oHelper:UTSetValue("aCab","E1_MOEDA",1)
oHelper:UTSetValue("aCab","E1_EMISSAO","20171203")
oHelper:UTSetValue("aCab","E1_VENCTO","20171203")
oHelper:UTSetValue("aCab","E1_VENCREA","20171203")
oHelper:UTSetValue("aCab","E1_VALOR",1000)


oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetACab(),3)

aTitulos := oHelper:UTSelectDB('SE1T10',aFields,cFilter)                           
If Len(aTitulos) <> 1
    oHelper:lOk := .F.
EndIf

oHelper:AssertTrue(oHelper:lOK,"")
                    
Return oHelper

UTUpdateDB(cTable,cField,xVal,cFilter)

Método para alterar registros no banco de dados atráves de filtro de SQL

...

cTable 

...

String

...

Nome da tabela que será feito o update

...

X

...

cField

...

String

...

Campo que será atualizado

...

X

...

xVal   

...

 Any  

...

Valor que será inputado no campo

...

X

...

cFilter

...

String

...

Filtro que poderá ser usado para pesquisa

Retorno: ::lOK  , Lógico,  Indica se realizou a atualizaçao com sucesso

    

Bloco de código
languagepy
themeMidnight
METHOD AdvPR_001() CLASS AdvPRTestCase

Local oHelper       := FWTestHelper():New()
Local cFilter       := "E1_NUM = '000000001' AND E1_FILIAL = 'D MG 01 ' AND E1_EMISSAO = '20171203'"

oHelper:Activate()

oHelper:UTSetValue("aCab","E1_PREFIXO","AUT")
oHelper:UTSetValue("aCab","E1_NUM","000000001")
oHelper:UTSetValue("aCab","E1_TIPO","NF ")
oHelper:UTSetValue("aCab","E1_NATUREZ",cE1_Naturez)
oHelper:UTSetValue("aCab","E1_CLIENTE",cE1_Cliente)
oHelper:UTSetValue("aCab","E1_LOJA",cE1_Loja)
oHelper:UTSetValue("aCab","E1_MOEDA",1)
oHelper:UTSetValue("aCab","E1_EMISSAO","20171203")
oHelper:UTSetValue("aCab","E1_VENCTO","20171203")
oHelper:UTSetValue("aCab","E1_VENCREA","20171203")
oHelper:UTSetValue("aCab","E1_VALOR",1000)

oHelper:UTUpdateDB('SE1T10',"E1_NUM","000000002",cFilter)                           
oHelper:UTUpdateDB('SE1T10',"E1_VALOR",1000.00  ,cFilter)             

oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetACab(),3)
             
oHelper:AssertTrue(oHelper:lOK,"")
                   

Return oHelper

                           

UTSetStamp(aTables,IGroup)

Método que adiciona o campo S_T_A_M_P_ nas tabelas do Protheus.

...

aTable 

...

Array

...

Lista com as tabelas que serão atualizadas

...

  X

...

lGroup

...

Lógico

...

Indica se será realizado RetSQlName na tabela

...

.T.

...

Opcional

Retorno: ::lOK  , Lógico,  Indica se realizou a atualização da tabela.

Observação: Este método pode ser usadoe em conjunto com o método UTUpdateDB, para  setar um TimeStamp no campo que foi criado, pois por padrão o campo é criado em branco.

Bloco de código
languagepy
themeMidnight
METHOD AdvPR_001() CLASS AdvPRTestCase

Local oHelper       := FWTestHelper():New()
Local aTables                  := {"SE1"}

oHelper:Activate()
oHelper:UTSetStamp(aTables)

oHelper:UTSetValue("aCab","E1_PREFIXO","AUT")
oHelper:UTSetValue("aCab","E1_NUM","000000001")
oHelper:UTSetValue("aCab","E1_TIPO","NF ")
oHelper:UTSetValue("aCab","E1_NATUREZ",cE1_Naturez)
oHelper:UTSetValue("aCab","E1_CLIENTE",cE1_Cliente)
oHelper:UTSetValue("aCab","E1_LOJA",cE1_Loja)
oHelper:UTSetValue("aCab","E1_MOEDA",1)
oHelper:UTSetValue("aCab","E1_EMISSAO","20171203")
oHelper:UTSetValue("aCab","E1_VENCTO","20171203")
oHelper:UTSetValue("aCab","E1_VENCREA","20171203")
oHelper:UTSetValue("aCab","E1_VALOR",1000)

oHelper:UTCommitData({|x,y| FINA040(x,y)},oHelper:GetACab(),3)

oHelper:AssertTrue(oHelper:lOK,"")

Return oHelper

UTEngSPSInstall(cProcess,cCompany,cOrigin)

Método para instalação de um processo de procedures em uma determinada empresa.

...

cProcess

...

Caracter

...

Código do processo que será instalado

...

  X

...

cCompany

...

Caracter

...

Grupo de empresa

...

Grupo da empresa logada

...

Opcional

...

Retorno: ::lOK  , Lógico,  Indica se realizou a instalação com sucesso.

Bloco de código
languagepy
themeMidnight
oHelper:EngSPSInstall("01", "T1" )

UTEngSPSUninstall(cProcess,cCompany)

Método para desinstalação de um processo de procedures em uma determinada empresa.

...

cProcess

...

Caracter

...

Código do processo que será instalado

...

  X

...

cCompany

...

Caracter

...

Grupo de empresa

...

Grupo da empresa logada

...

Opcional

Retorno: ::lOK  , Lógico,  Indica se realizou a desinstalação com sucesso.

Bloco de código
languagepy
themeMidnight
oHelper:EngSPSUninstall("01", "T1" )

UTEngSPSBatch(cAction)

Método responsável pela instalação/desinstalação em lote de todos os processos existentes no RPO em todas as empresas do ambiente. 

...

cAction

...

Caracter

...

Ação que será realizada (1-Instalação;2-Remoção)

...

  X

Retorno: ::lOK  , Lógico,  Indica se realizou o processo com sucesso.

Bloco de código
languagepy
themeMidnight
oHelper:EngSPSBatch("1")

UTEngSPSStatus(cProcess,cCompany)

Método para retorna o status do processo na empresa solicitada.

...

cProcess

...

Caracter

...

Código do processo que será avaliado

...

  X

...

cCompany

...

Caracter

...

Grupo de empresa

...

Grupo da empresa logada

...

Opcional

O retorno é um objeto JSON com as seguintes propriedades:
    oReturn["status"]
    oReturn["process"]
    oReturn["company"]
    oReturn["version"]
    oReturn["signature"]
    oReturn["idsps"]
    oReturn["generation"]
    oReturn["error"] , JSON,  Indica se realizou o processo com sucesso.

...

languagepy
themeMidnight

...