Sistema De Testes Automáticos – Instalação / Configuração Servidor

Introdução

Para executar testes automáticos no EVE, é necessário instalar o Katalon Studio V 6.3.2, configurar o projeto onde os testes, mais os seus artefatos, são guardados e criar a pasta de onde os testes são executados. É importante referir que serão necessários privilégios sudo para efetuar os seguintes passos.

Criação das pastas necessárias

Para criar as pastas necessárias para a execução dos testes, devem ser executados os seguintes comandos:

cd /www/htdocs
# Pasta principal
sudo mkdir Eve_testSystem
cd Eve_testSystem
# Pasta de ficheiros temporários
sudo mkdir execute

Download Projeto

Para transferir o projeto, já com as parametrizações corretas para a melhor execução possível, devem ser executados os seguintes comandos:

cd /www/htdocs/Eve_testSystem
sudo wget https://github.com/Bern1959/EVE_PRJ/raw/main/EVE_PRJ.tar.gz
# Extração do projeto
sudo tar -xf EVE_PRJ.tar.gz
# Apagar ficheiro comprimido
sudo rm EVE_PRJ.tar.gz

Download Katalon Studio V.6.3.2

O Katalon Studio V.6.3.2 é o software onde os testes são criados e executados. Para instalar o Katalon Studio V.6.3.2, devem ser executados os seguintes comandos:

cd /www/htdocs/Eve_testSystem
sudo wget https://github.com/katalon-studio/katalon-studio/releases/download/v6.3.2/Katalon_Studio_Linux_64-6.3.2.tar.gz
# Extração do software
sudo tar -xf Katalon_Studio_Linux_64-6.3.2.tar.gz
# Alterar nome
sudo mv Katalon_Studio_Linux_64-6.3.2 KatalonRuntimeEngine
# Apagar ficheiro comprimido
sudo rm Katalon_Studio_Linux_64-6.3.2.tar.gz
# Mudar o utilizador para o do EVE
chown -R eve /www/htdocs/Eve_testSystem
# Listar ficheiros criados
ls
# Output esperado
EVE_PRJ  execute  KatalonRuntimeEngine

Instalação OpenJDK 8

O Katalon Studio utiliza o “Java Virtual Machine” para executar os testes nele criados. Para verificar se o OpenJDK 8 já se encontra instalado na maquina atual, deve ser executado o seguinte comando:

java -version

Se o output do comando anterior for igual a:

openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)

não será necessário efetuar mais qualquer passo. Atenção, que qualquer outra versão do OpenJDK, que não seja a 1.8.0, não será compatível.

Caso contrário, devem ser executados os seguintes comandos:

# Para distribuições baseadas em Debian / Ubuntu
sudo apt update

# Para distribuições baseadas em Red Hat
sudo yum update
# Para distribuições baseadas em Debian / Ubuntu
sudo apt-get install openjdk-8-jre

# Para distribuições baseadas em Red Hat
sudo yum install java-1.8.0-openjdk
# Para selecionar a versão correta, no caso de haver mais que uma
sudo update-alternatives --config java

O comando anterior vai solicitar ao utilizador que escolha entre as versões de Java disponíveis. O utilizador deve digitar o número na lista que pertence á instalação correta (1.8.0), e premir Enter para a selecionar.

There is 1 program that provides 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-0.el7_9.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1

Instalação Google Chrome

Os testes automáticos são executados utilizando o Google Chrome. Para verificar se o Google Chrome se encontra instalado, deve ser executado o seguinte comando:

 google-chrome --version

Se o output anterior for igual a:

Google Chrome 76.0.3809.132

não será necessário efetuar mais nenhum passo e o Katalon Studio está pronto para ser utilizado.

Caso contrário, devem ser executados os seguintes comandos:

wget http://orion.lcg.ufrj.br/RPMS/myrpms/google/google-chrome-stable-76.0.3809.132-1.x86_64.rpm
# Para distribuições baseadas em Debian / Ubuntu
sudo apt install google-chrome-stable-76.0.3809.132-1.x86_64.rpm

# Para distribuições baseadas em Red Hat
sudo yum install google-chrome-stable-76.0.3809.132-1.x86_64.rpm

O Katalon Studio está pronto para ser utilizado

Erro no registo de Series – AT

Quando dá o seguinte erro ao registar um serie:

Deve-se verificar se o utilizador (dados que se pode ver no AG001 – Empresas no contactos) que está a registar as series tem autorização no portal das finanças para tal.

No portal das finanças o utilizador tem de ter essas opções ativadas

Esta situação é feita pelo cliente que nos dá os dados do utilizador.

Instalação E Configuração de Sistema De Testes Automáticos

Instalacao-e-configuracao-de-sistema-de-testes-automaticos

Mensagens DOC da AT em erro

Mensagens DOC da AT com o seguinte erro: 9990 The requested URL returned error: 500 Internal Server Error def:15 elapsed:0.067561149597168

  • verificar se os códigos postais tem a o seguinte formato xxxx-xxx
  • verificar se a data/hora do servidor está alinhado com a data/hora real
  • verificar se a descrição dos artigos tem algum caracter “estranho” (p.e ???) ou mesmo vazio. Isto pode acontecer em ambientes que recebem informação de ISO-8859-15 para UTF8 e por alguma razão não é possivel converter correctamente todos os caracteres, ou ambientes que tenham sido convertidos para UTF8
  • verificar se o certificado para a ligação se encontra válido

Mapa de Indicadores 2022

IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Plano anual de objetivosADM
79% conseguido e 21% em curso.
Cumprir o plano a 100%Anual
Planeamento do SGQADM100%Cumprir o plano a 100%Anual
NC imputadas aos processo de comunicaçãoADM00 NCAnual
NC imputadas à estrutura organizacionalADM00 NCAnual
NC imputadas à revisão do SGQADM00 NCAnual
PC_01 Gestão estratégica
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Número de prospect leadsDMK2>=4Anual3 – Não conseguido.
Número de propostas / número de prospect leadsDMK50%>=25%Anual66,67% – Conseguido.
Número de propostas adjudicadas / número de propostas apresentadasDMK0%>=15%Anual50% – Conseguido.
Número de reclamações recebidasDMK00Trimestral1001 – Não conseguido
PC_02 Gestão Comercial
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
NC imputadas aos procedimentos aplicáveisDGC00 NCAnual0 – objetivo conseguido
Taxa de concretização dos projectos e programasDGC56% realizado, 17% parcialmente realizado e 28% não concretizado. Não conseguido.>=75%Anual
Número de ideias seleccionadas e implementadasDGC4>=10Semestral2
PC_03 Concepção de Soluções
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Número de desenvolvimentos concluídosDGC7,42>10Mensal1716147965511831410 – conseguido.
Número de erros / número de processos (novos + melhorias)DGC72<=66Mensal72657069717170717175727371 – Não conseguido.
% SLA’s cumpridos na primeira respostaDGC58,4%>=85Mensal52,3857,5056,5857,6960,3258,5557,5860,6458,0257,2059,8559,1459% – Não conseguido.
% SLA’s cumpridos na soluçãoDGC87,64%>=85Mensal80,9580,0078,9580,7782,5482,2483,0384,0482,0881,7884,3184,7285% – Conseguido.
Número de pedidos de esclarecimento / número de Clientes que pediram esclarecimentosDGC4,83%<=4Mensal5665444665465% – Não conseguido.
Número de pedidos de intervenção / número de Clientes que pediram intervençãoDGC5,83<=4Mensal4678666655465,8% – Não conseguido.
Número de projectos de consultoria encerrados no prazo devido / número total de projectos concluídosDGC100%>=75Semestral60%
PC_04 Gestão de Clientes
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
NC imputadas aos processos de integraçãoRH0%0 NCTrimestral00000 – Conseguido
Taxa de concretização dos CursosRH100%>=75Trimestral100%100%100%100%Houve um reajustamento do tipo de formação às necessidades, devido à entrada de colaboradores. Conseguido.
Taxa de presenças em formação (Pessoas)RH100%>=75Trimestral120%80%60%100%Tiveram acesso a formação um número de formandos superior ao previsto: 7 previstos contra 11 verificados. Conseguido.
Total de horas de formação realizadas / Total de horas planeadasRH100%>=80Trimestral742265551234h/colaborador. Muito acima devido à entrada de vários colaboradores novos.
Nº de horas de formação por ColaboradorRH21>=20 horasTrimestral11487135150234h/colaborador. Muito acima devido à entrada de vários colaboradores novos.
Rotatividade dos Colaboradores (Técnicos e Funcionais)RH0Retenção >= 3 anosMensal1 saída de colaborador com mais doe 3 anos de casa. Não conseguido.
Nível de desempenho dos ColaboradoresRHA avaliação e auto avaliação foram feitas pelas chefias e pelos colaboradores, não tendo havido lugar a relatório.>=70
(75% colaboradores)
Anual
Não conformidades (NC) imputadas aos sistemas de comunicação e informaçãoDM00 NCAnual0 – Conseguido
Não conformidades (NC) imputadas à infraestruturaDM00 NCAnual0 – Conseguido
Não conformidades (NC) imputadas à receção do produto compradoDM00 NCAnual0 – Conseguido
PC_05 Gestão de Recursos
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Nível de Satisfação de ClientesGQA ISRETAIL lançou um produto novo pelo que suspendemos esta atividade.Atributos >=3 M.Bom + Bom >=75%Anual
Taxa de cumprimento do programa anual de auditoriasGQ100%100%Semestral100%
Não Conformidades (NC) imputadas à BD de NC/AC/AP/AMGQ00 NCSemestral0
Não Conformidades (NC) imputadas à gestão da qualidadeGQ00 NCSemestral0
Nível de desempenho dos FornecedoresGQ100%Todos os Fornecedores Tipo A ou BAnual
PC_06 Gestão da Melhoria

Mapa de Indicadores 2021

IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Plano anual de objetivosADM70% conseguido e 30% por atingirCumprir o plano a 100%Anual79% conseguido e 21% em curso.
Planeamento do SGQADM100%Cumprir o plano a 100%Anual100%
NC imputadas aos processo de comunicaçãoADM00 NCAnual0% – conseguido
NC imputadas à estrutura organizacionalADM00 NCAnual0% – conseguido
NC imputadas à revisão do SGQADM00 NCAnual0% – conseguido
PC_01 Gestão estratégica
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Número de prospect leadsDMK3>=4Anual2 – abaixo do objetivo.
Número de propostas / número de prospect leadsDMK66%>=25%Anual50% – entro do objetivo.
Número de propostas adjudicadas / número de propostas apresentadasDMK50%>=15%Anual0 – abaixo do objetivo.
Número de reclamações recebidasDMK00Trimestral0000 – objetivo conseguido
PC_02 Gestão Comercial
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
NC imputadas aos procedimentos aplicáveisDGC30 NCAnual0 – objetivo conseguido
Taxa de concretização dos projectos e programasDGC50% concretização + 17% parcialmente concretizado e 33% não concretizado.>=75%Anual56% realizado, 17% parcialmente realizado e 28% não concretizado. Não conseguido.
Número de ideias seleccionadas e implementadasDGC1 – abaixo do objetivo>=10Semestral24 – Não conseguido.
PC_03 Concepção de Soluções
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Número de desenvolvimentos concluídosDGC8,3>10Mensal687896106675117,42 – não conseguido.
Número de erros / número de processos (novos + melhorias)DGC70%<=66Mensal73737852506792687766906072% – Não conseguido.
% SLA’s cumpridos na primeira respostaDGC55,8%>=85Mensal47,3758,3341,674042,8661,1165,6371,4360,6166,6767,4447,3758,4% – Não conseguido.
% SLA’s cumpridos na soluçãoDGC79,2%>=85Mensal84,2187,5087,507085,7172,2293,7692,8696,9795,8388,3773,6887,64% – Conseguido.
Número de pedidos de esclarecimento / número de Clientes que pediram esclarecimentosDGC6,8%<=4Mensal5443554466754,83% – Não conseguido.
Número de pedidos de intervenção / número de Clientes que pediram intervençãoDGC8,2<=4Mensal6775655575665,83% – Não conseguido.
Número de projectos de consultoria encerrados no prazo devido / número total de projectos concluídosDGC0%>=75Semestral60%8/8 – 100% – Conseguido.
PC_04 Gestão de Clientes
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
NC imputadas aos processos de integraçãoRH0%0 NCTrimestral00000 – Conseguido
Taxa de concretização dos CursosRH100%>=75Trimestral66%66%66%66%66% – 2 das 3 atividades de formação foram executadas. O curso externo de inglês foi interrompido. Não conseguido.
Taxa de presenças em formação (Pessoas)RH100%>=75Trimestral100%100%100%100% – Conseguido.
Total de horas de formação realizadas / Total de horas planeadasRH100%>=80Trimestral163,24%45%117,86%92% – Conseguido.
Nº de horas de formação por ColaboradorRH21>=20 horasTrimestral910617,9 – Não conseguido.
Rotatividade dos Colaboradores (Técnicos e Funcionais)RH0Retenção >= 3 anosMensal3 saídas de pessoas com mais do que 3 anos de casa – Não conseguido.
Nível de desempenho dos ColaboradoresRHA avaliação e auto avaliação foram feitas pelas chefias e pelos colaboradores, não tendo havido lugar a relatório.>=70
(75% colaboradores)
AnualA avaliação e auto avaliação foram feitas pelas chefias e pelos colaboradores, não tendo havido lugar a relatório.
Não conformidades (NC) imputadas aos sistemas de comunicação e informaçãoDM00 NCAnual0 – Conseguido
Não conformidades (NC) imputadas à infraestruturaDM00 NCAnual0 – Conseguido
Não conformidades (NC) imputadas à receção do produto compradoDM00 NCAnual0 – Conseguido
PC_05 Gestão de Recursos
IndicadorResponsávelValor Ano-1MetaControloJANFEVMARABRMAIJUNJULAGOSETOUTNOVDEZMédia (acumulada)
Nível de Satisfação de ClientesGQA ISRETAIL lançou um produto novo pelo que suspendemos esta atividade.Atributos >=3 M.Bom + Bom >=75%AnualA ISRETAIL lançou um produto novo pelo que suspendeu esta atividade.
Taxa de cumprimento do programa anual de auditoriasGQ100%100%Semestral100%100% – Conseguido.
Não Conformidades (NC) imputadas à BD de NC/AC/AP/AMGQ00 NCSemestral00 – Conseguido.
Não Conformidades (NC) imputadas à gestão da qualidadeGQ00 NCSemestral00 – Conseguido.
Nível de desempenho dos FornecedoresGQ100%Todos os Fornecedores Tipo A ou BAnual100% – Conseguido.
PC_06 Gestão da Melhoria

Testes de Automação

Para a realização de testes de automação é necessária a ferramenta Katalon Studio. Os testes têm de ser realizados em PC e é necessário o browser Chrome ou Firefox.

Instalação

Criar Projeto

  • Selecionar “File>New>Project
Imagem 1 – Criar Projeto
Imagem 2 – Definições do projeto

Criar Novo Teste

  • Iniciar gravação
Imagem 3 – Demonstração Iniciar Gravação
  • Inserir URL e clicar em Record
Imagem 4 – Demonstração da janela
  • Realizar teste
  • Guardar o Script
Imagem 5 – Guardar o script

Executar teste

Para executar um teste tem de ter instalado um browser (Chrome ou Firefox, de preferência)

Imagem 6 – Executar teste com diferentes opções

Testes no Servidor

Para executar os testes no servidor será necessário colocar a pasta do projeto no servidor.

O projeto tem a seguinte estrutura:

  • Data Files (Onde estão definidos os parâmetros dos testes).
  • Object Repository (Onde estão os objetos que o gravador de testes grava).
  • Profiles (Podem ser definidos perfis de utilizador onde se podem podem deferir as definições dos testes).
  • Reports (O Katalon Studio gera automaticamente logs com informações acerca dos testes.)
    • Observação: De modo a não carregar o servidor com logs desnecessários pode se adicionar ao script que executa os testes o seguinte comando:
      • rm -rf [caminho]/SistemaTestes/Reports/202*
  • Script (Onde estão guardados os scripts de teste).
  • Test Cases.
  • Test Suites (Conjunto de testes).

Linha de comandos

Para executar os testes no servidor é necessário executar o comando ./katalon {opções}

Exemplo:

./katalon -noSplash -runMode=console -projectPath=[caminho projeto] -retry=1 -retryStrategy=immediately -testSuitePath=”Test Suites/[nome do teste]” -browserType=”Chrome (headless)” -executionProfile=”default” -apiKey=”********-****-****-****-************” –config -proxy.auth.option=NO_PROXY -proxy.system.option=NO_PROXY -proxy.system.applyToDesiredCapabilities=true

  • -runMode=console
    • Permite a execução do teste na consola
  • -projectPath
    • Especifica a pasta onde se encontra o projeto.
  • -retry=1
    • Indica quantas vezes o teste é executado em caso de falha
  • -retryStrategy:
    • Indica como é que os testes que falham voltam a ser executados
      • Immediately:
        • Assim que o teste falha volta a ser executado
      • allExecutions:
        • No fim de todos os testes, voltam a ser executados todos os testes.
      • failedExecutions:
        • No fim de todos os testes, voltam a ser executados apenas os testes que falharam
    • testSuitePath:
      • Indica qual o teste a ser executado
    • browserType:
      • Define o browser onde o teste vai ser executado
    • executionProfile
      • Perfil de execução

Existem outras opções para o comando, podem ser encontradas em https://docs.katalon.com/docs/katalon-runtime-engine/command-syntax-command-lineconsole-mode-execution

Sugestão

De modo a simplificar a chamada do comando sugere-se a criação de um script executável.

vi [nome script].sh

// Adicionar comando katalon

./katalon {opções}

// Para apagar os logs gerados automaticamente

rm -rf [caminho]/SistemaTestes/Reports/202*

Compilar: chmod +x [nome script].sh

Para execução do comando basta executar o comando:

./[nome script].sh

Considerações Importantes

Tendo em conta a versão do Katalon ser a 6 temos de ter em consideração pequenas alterações para que os testes funcionem.

  • Alterar tamanho da janela para 929×879
    • Criar ficheiro “com.kms.katalon.core.webui.chrome (headless).properties” na pasta “[Project Path]/settings/internal/”
    • Inserir “{“HEADLESS_DRIVER”:{“args”:[“-window-size\u003d929,879″]}}”
  • Uma vez que a execução em browser headless é mais rápida por vezes os elementos ainda não estão visíveis, nesses casos aconselha-se a usar o seguinte comando:
    • WebUI.delay(1)
  • Não esquecer de alterar a data nos campos, obtendo a data atual.
  • Caso o comando WebUI.setText(…) não estiver a funcionar existe a seguinte alternativa de comandos:
    • WebUI.sendKeys(findTestObject(…), Keys.chord(Keys.CONTROL,’a’))
    • WebUI.sendKeys(findTestObject(…), Keys.chord(Keys.DELETE))
    • WebUI.sendKeys(findTestObject(…), texto)

Criação de Reports PDT para o Eve

Como já devem calcular o Eve respeita mais as definições que o Wpms, o que peço que quando estão a criar reports novos, tomem mais atenção à definição das colunas.

Vou deixar aqui alguns exemplos do que é necessário começar a fazer para que o report funcione corretamente no Eve:

Novos campos de quantidade

Para o controlo que vemos na imagem abaixo é necessário fazer:

No método de leitura do report em questão e na coluna em questão:
Solução 1:
$outData[$lin]['Quantita_stock_UMS2C'] = array(
	'Control' => 'Q',
	'Description' => $outData[$lin]['Unita_misura_stock2'],
	'DescriptionSize' => 20
);
$outData[$lin]['Unita_misura_stock2H'] = true;
-----------
Solução 2:
$outData[$lin]['Unita_misura_stock1H'] = true;
$outData[$lin]['Quantita_stock_UMS1L'] = $outData[$lin]['Unita_misura_stock1'];
$outData[$lin]['Quantita_stock_UMS1C'] = array(
      'Control' => 'Q',
      'Description' => '',
      'DescriptionSize' => 0
);
Novos campos de Sim/Não

Para o controlo que vemos na imagem abaixo é necessário fazer:

Isto é necessário fazer no método de leitura, porque no PDT não existe tipos de elementos, então ao passar assim o construtor do Eve irá reconhecer isto para fazer um controlo diferente.
Para formatar uma etiqueta (Retirado do código)
$outData[$lin]["Text4C"] = array(
	'Control' => 'L',
	'Text' => $outData[$lin]["Text4"],
	'ColorScheme' => '8',
	'Icon' => "sap-icon://tags",
);
Campos alinhados na vertical

O que aconteceu aqui é que não olharam para a definição da linha na coluna, porque no antigo pdt não era necessário porque ele metia os campos de input (que começam no nivel L06) automaticamente, o que agora é necessário definir o numero seguinte (no limite o mesmo numero que o registo anterior, porque o código tem uma validação para incrementar a partir do deste nível).

Para preencher o Text1 seguinte:
Com artigo + descrição de artigo + fator de conversão
// get some article data
$parD0080 = array();
$parD0080["ARTC"][0]["val1"] = $rec["310"];
$datD0080 = exec_sql("D0080", "read_D0080V01", $parD0080);
$outData[$line]["Text1"] = get_msg($rec["100"], $rec["110"], $rec["120"], array("p1"=>((getG("rfDescAndCode"))? $datD0080[0]["010"]." - ": false).$datD0080[0]["020"]." ".$rec["320"]));
Utilizar campos de artigo e código de barras no mesmo ecrã

Quando temos que utilizar o campo artigo ou código de barras no mesmo ecrã, devemos fazer o seguinte código, pois assim garantimos que o código de barras respeita as regras do PLU:

if($recPar["ARTC"][0]["val1"]) $article = $recPar["ARTC"][0]["val1"];	
else if($recPar["BRCD"][0]["val1"]) {
/*function that returns the barcode according to the PLU radical definitions defined in the system parameters*/
	if(substr($recPar["BRCD"][0]["val1"], -1) == "#") {
		$post2Send = $arrayBatch = array();
		$post2Send["estab"] = $rec["230"];
		$post2Send["cb"] = $recPar["BRCD"][0]["val1"];
		$post2Send["rec"] = $rec;
		if ($data128UCC = exec_sql("FAPLOG102", "callAnalize128UCC", $post2Send)) {
			$array128UCC = $data128UCC["128UCC"];
			$arrayAI = $data128UCC["AI"];
			// $rightRoot = $data128UCC["rightRoot"];
			} else {
				send_msg("AP", "RFS", "75");
				return FALSE;
			}
			// decode
			if ($array128UCC) foreach ($array128UCC as $ai => $value) if ($arrayAI[$ai]) foreach ($arrayAI[$ai] as $seq => $elements) {
				$valueX = $value;
				if ($elements["start"] || $elements["end"]) {
					$start = $delta = 0;
					if ($elements["start"]) $start = $elements["start"] - 1;
					if ($elements["end"]) $delta = $elements["end"] - $start;
					if ($delta) $valueX = substr($value, $start, $delta);
					else $valueX = substr($value, $start);
				}
				switch ($elements["elem"]) {
					case "GTIN":
						$barcode = $valueX;
						break;
				}
			}
		}
		elseif($recPar["BRCD"][0]["val1"]){
			$postCheck=array();
			$postCheck["barcode"] = $recPar["BRCD"][0]["val1"];
			if($barcode = exec_sql("FAPLOG102","getBarcodeEAN",$postCheck)) $check = TRUE;
			else{
				$barcode = $recPar["BRCD"][0]["val1"];
				$check = FALSE;
			}
		}
	}
}
if($article || $barcode){
if($article) {
	$parD0080 = array();
	$parD0080["ARTC"][0]["val1"] = $article;
	if($datD0080 = exec_sql("D0080", "read", $parD0080)) $art = $datD0080[0]["Articolo"];
	else {
		send_msg("AP", "RFS", "180");
		return false;
	}
} else {
	// if we have barcode, we must look for assigned article to him
	$parD0081 = array();
	$parD0081["BRCD"][0]["val1"] = $barcode."%";
	$parD0081["BRCD"][0]["sig1"] = "L";
	if(!$datD0081 = exec_sql("D0081", "read", $parD0081)) {
		send_msg("AP", "RFS", "180");
		return false;
	}
	if(!$datD0081[1]) $art = $datD0081[0]["Articolo"];
	else {
		send_msg("AP", "RFS", "673", array("p1"=>$recPar["ARTC"][0]["val1"])); // there are more than one article linked to the supplied code
		return false;
	}
}

Certificado Documentos de Transporte

Glossário

A

Abaixamento: Tarefa de colocar um contentor de uma zona alta de buffer para o mesmo espaço mas para o piso zero, zona de picking.

Tipos de Abaixamento:

  • Totalidade Contentor: O abaixamento é feito com todo o contentor. Se o contentor tiver 10 UM, baixa as 10, se tiver 100 baixa 100. Não é possível baixar parte do contentor.
  • Só Quant. Reservada: O abaixamento é feito com a quantidade que foi reservada no contentor durante o processamento, se sobrar quantidades no contentor, este volta para o lugar inicial..
  • Só Quant. Específica: Só será baixada a quantidade definida no AL077->Espaços Atribuidos Permanentemente->Quant. a Baixar
  • Quant. a Pedido: Durante a unidade de trabalho, o operador indica quais as quantidades a baixar.
  • Quantidade Sugerida – O sistema calcula a quantidade máxima definida no AL077->Espaços Atribuidos Permanentemente->”Quant. a Baixar”, UM para Calc. Sugere essa quantidade a baixar, no entanto o utilizador poderá definir a quantidade.
  • Quantidade Obrigatória – O sistema calcula a quantidade máxima definida no AL077->Espaços Atribuidos Permanentemente->”Quant. a Baixar”, UM para Calc. Desde que exista no contentor e obriga a baixar forçosamente essa quantidade.

Ação: Interação no sistema. Normalmente associada a um botão e um report.

Agendamento:  Execução de um processo recursivamente com período definido.

Alocação: É a indicação por parte do sistema do sítio onde se pode arrumar a mercadoria. O sistema faz uma proposta de alocação.

Armazém: Armazém é uma instalação física onde se efetuam as diversas operações de gestão de stock.

O armazém divide-se por x zonas principais:

  • Cais
  • Zona de receção
  • Zona de armazenamento
  • Zona tratamento de pedidos
  • Zona de execução

Arrumação: É a operação de arrumar a palete no rack fisicamente. Baseia-se na proposta de alocação mas o sítio onde se coloca pode não ser o mesmo.

AT: Acessório de transporte.

ASN: Advanced Shipment Notification é uma etiqueta com os dados do artigo referentes à sua origem e seu transporte

B

Bloqueio: Um bloqueio impede que 2 utilizadores possam editar dados ao mesmo tempo. Isto previne alterações na base de dados mal formatadas.

Batch: Fila de processos que ocorrem sem que o utilizador perceba.

C

Cais:  Zona onde estão os pontos de acesso ao armazém. 

Carga: Processo de colocação de mercadoria no veiculo de transporte.

  • Carga Controlada: O sistema indica que carga e por que ordem são carregados.
  • Carga Não Controlada : É o operador que se encarrega de gerir quais as cargas a carregar e por que ordem são carregados.

Centro de Distribuição: Espaço físico que engloba um ou mais armazéns.

Código de Barras: Associado a um artigo e uma unidade de medida.

Condomínio: Agrupamento de contentores. Dividem-se em:

  • Condomínio Pai: Pode conter um ou mais filhos.
  • Condomínio Filho: Pertence a um único pai.

Consolidação: Consiste em criar grandes carregamentos a partir de vários outros pequenos. Resulta em economia de escala no custo da logística. 

Contentor: É um conjunto de artigos agrupados numa AT.

Contentor Completo: Considera-se um contentor completo quando as quantidades estão colocadas na AT, de acordo com as definições dos níveis, lastro e excedente. O calculo do volume é N*L+E (Nível*Lastro+Excedente).

Cycle Counting: Inventário a um determinado espaço, sem necessidade de paragem do armazém.

D

Dados Mestre: Todos os dados necessários para os documentos externos.

Dados Logísticos: Dados de definição de um artigo para um determinado armazém.

Documento interno: É um documento que é gerado internamente sempre que se faz um movimento.

Documento externo: É um documento que é gerado por um terceiro como as faturas ou guias de transporte.

E

Espaço: É um espaço físico onde são coladas a mercadoria, normalmente em cada espaço pode conter até três paletes EUR.

Eventos: Lançados pelos trabalhos. Responsáveis pela implementação do programa associado. 

Execução: É a operação que executa os pedidos, ou seja, organiza os produtos pedidos num contentor. Operação dentro do armazém.

Excedente: Quantidade extra que se pode colocar acima do último nível.

Expedição: É a operação que trata do envio dos pedidos para as respectivas lojas/clientes. Operação na zona do cais.

F

FAQ(Frequent Asked Questions): Perguntas frequentes. Contem a descrição da pergunta e possível solução.

Ficha Lote:  Dados de rastreabilidade do artigo.

Fluxo: Definição do sistema para as operações do armazém. As suas definições fazem com que o comportamento do sistema variar de artigo para artigo consoante o fluxo.

Fornecedor: Entidade externa que fornece produto ao armazém.

G

Galera: Componente de um camião, parte que transporta a mercadoria.

Glossário: Conjunto de termos do sistema.

H

I

Inventário: Processo de contagem de todos, ou parte, dos artigos do armazém.

  • Artigo:
    • Operação parada.
    • Operação em curso.
  • Cycle Counting
  • Buffer/Picking

Intervalo Numerador: Define o intervalo de números sequenciais que um numerador pode ter.

J

JIT(Just-in-Time): Tipo de armazenamento. Este é um processo onde um contentor é dividido pelas lojas/clientes.

K

KPI: Key Performance Indicator, Indicador-chave de desempenho é uma ferramenta de gestão para realizar a medição e consequente nível de desempenho de um determinado processo.

L

Lastro: Camada de artigo, define a quantidade de UN que cabem nessa camada.

Layout: Disposição das diferentes componentes/zonas do armazém.

Lead Time: Período entre o momento em que um pedido é feito e o horário em que ele é recebido no armazém. Também chamado de tempo de reabastecimento.

Local Source: Trecho de código que está implementado diretamente no sistema do cliente.

M

Mensagens Interface: São mensagens que o sistema troca com sistemas externos para trocar informações entre os diversos sistemas. As mensagens são trocadas através de:

  • Protocolos IDOC ou HTTP-XML, usado com os sistemas SAP;
  • Ficheiros CSV; 
  • Protocolo SOAP, por Web Service;
  • Por SQL;

Modificações: Uma modificação consiste num objeto que vai conter todas as instruções de código e alterações a tabelas efetuadas para um determinado pedido.

Método: Uma função do sistema que permite a escrita ou leitura dos dados.

N

Nível: Quantidade de lastros possíveis.

Numerador: Um numerador é usado para numerar dados com grandes volumes. Normalmente a numeração é sequencial.

O

Objeto: Conjunto de métodos/funções do sistema.

Onda: Conjunto de voltas planeadas organizadas por dia/mês.

Operação: Processo que o armazém realiza. Contêm as definições de como o processo é gerido.

Operação JIT: Operação do armazém onde os pedidos são executados ao contentor. O operador inicia com o contentor completo e vai executar os mesmos por loja/cliente.

Operação Stock: O operador inicia a operação com um contentor vazio e vai ao armazém executar os artigos para completar o contentor.

Ordem Compra: É um pedido ao fornecedor de um ou mais artigos.

P

Parâmetros: Parâmetros são campos que servem de passagem de dados entre os vários objetos. Como exemplo, podemos passar dados entre um relatório e o seu método, e para o fazer, usamos parâmetros. Um parâmetro é criado com base num elemento, ou num elemento calculado, que contêm as características do campo.

Patches: Conjunto de código com as novas alterações agrupadas.

PDT: Máquina com ecrã para operadores executarem as suas operações

Pedido: Conjunto de artigos e respetivas quantidades que um cliente solicitou.

PLU: PLU é um código de barras identificador da origem do produto, normalmente para artigos exportados

Picking: Operação de retirar um artigo da zona de picking para o contentor que o operador está a executar. 

PID: Número identificador único de cada serviço.

Proposta de Alocação: É a indicação por parte do sistema de um lugar (Buffer ou Picking) para a alocação do artigo. O que pode falhar?

  • Não existir espaço definido para o artigo.
  • Não existir espaço para o tipo de artigo (isto é, num armazém de secos tentar se colocar um artigo de frio).

Q

Quarentena: Tipo de stock.

R

Rateio: Rateio é a distribuição de stock pelos diferentes pedidos quando o mesmo não satisfaz totalmente as necessidades dos clientes. Estão definidas regras de rateio. Podem se consultar em [SAM21].

Receção: É a operação que faz a ordem de compra, receção da mercadoria, descarrega, coloca-a no cais e procede à verificação de quantidades, artigos e estado.

Regras De Alocação: São regras definidas para a alocação dos artigos. Podem ser consultadas no menu: [AD031]

Regras de Extração: São regras definidas para a extração dos artigos no seu processamento. Podem ser consultadas no menu [AD032]

  • Validade e FIFO: Extrai-se os artigos com menor validade, se tiverem mesma validade extraem-se os que chegaram em primeiro.
  • FIFO: O primeiro a entrar é o primeiro a sair.
  • Extração Ganchos: Esta regra foi definida para a execução de carne. A carne é pendurada em ganchos e percorre o sistema de ganchos até ao fim. O primeiro a entrar é o primeiro a sair.
  • FEFO com Ficha Lote: Os primeiros a expirarem a data de validade são os primeiros a sair.
  • LIFO: O último a entrar é o primeiro a sair.
  • Palotes: Por contentor Palote (Um tipo de contentor).
  • Primeiro Chao Depois Rack: Primeiro executa-se o que se encontra no picking e depois o que está no rack.
  • Progressiva: Extrai-se da palete “aos poucos” os artigos, ao invés de se extrair a palete completa.
  • Só Palete Cheia e por Excesso ao Pedido: Ordena contentores por data de validade e FIFO mas para contentores completos.

Relação Variável: Artigos cuja a sua unidade de medida pode variar, normalmente a UN, em quilogramas. Por exemplo, o bacalhau varia muito de peso consoante a humidade existente.

Reorganização: Apagar dados das tabelas do ambiente de modo a evitar perdas de performance do sistema.

Reports: Reports são todos os ecrãs que existem na aplicação (tanto no WPMS como EVE) e no PDT.

Reserva de Receção: Agrupamento de um conjunto de ordens de compra organizados por fornecedor, normalmente.

Reserva de Expedição:  Agrupamento de um conjunto de pedidos organizados por volta.

RF: Radiofrequência.

Rota:  Um percurso definido para um dia, contém os pontos de paragem (Lojas) para cada dia da semana. É um planeamento e não é definitivo. Pode ser gerido ao dia, semana, mês ou até ao ano.

S

Serviço: É um conjunto de trabalhos.

Serviço Master/Pai: Serviço responsável pela gestão de todos os serviços filho. Se este não estiver iniciado não pode haver mais serviços iniciados naquele servidor.

Serviço Slave/Filho:  Serviço responsável por qualquer trabalho a si designado.

Spool:  Lista de ficheiros gerados para impressão. Só os ficheiros configurados com spool são guardados nesta lista.

Stock: Artigos, produtos ou mercadorias guardadas ou preservadas num armazém.

  • Stock Físico: Quantidade de produto que existe fisicamente.
    • Disponível: Produto físico que se encontra disponível. Por exemplo, aumenta quando o operador conclui a receção.
    • Existente: Produto físico que realmente existe. Por exemplo, aumenta à medida que o operador recebe os contentores.
  • Stock Teórico: Quantidade de produto que existe em teoria no sistema.
    • Disponível: Produto disponível. Por exemplo, quando se cria um pedido esta quantidade reduz, deste modo reserva-se a quantidade pedida.
    • Existente: Produto que existe no sistema. Por exemplo, quando o operador conclui a receção, este valor aumenta com as quantidades recebidas.

Supply Chain: Cadeia de abastecimento. Envolve toda a logística desde o seu fabrico ao consumidor final.

T

Terceiros: Qualquer entidade que se relacione com o sistema ou armazém, como por exemplo fornecedores, clientes, entre outros.

Ticket: Um Ticket é caracterizado por conter toda a informação relativa aos tipos de ticket, responsáveis, tempos, clientes, prioridades e ao estados das diversas modificações que lhe possam estar atribuídas. Na sua criação, o sistema atribui-lhe automaticamente um código que identifica o ticket.

Trabalho: Todas as interações do utilizador, através de um processo não-interativo.

Transbordo: Transferir mercadorias/produtos de um para outro meio de transporte ou veículo, no decorrer do percurso da operação de entrega. 

U

Unidade de Medida:A unidade de medida é a representação da grandeza fisica para quantificar um artigo.

Unidade de Medida de Stock: É a unidade de medida que um artigo é gerido no stock, normalmente nas unidades mais pequenas, Unidade ou Caixa

Unidade de Movimentação de Armazém: Unidade de medida com que o artigo é gerido no armazém. 

V

Vasilhame: Agrupamento de contentores.

  • Variável
  • Fixo

Volta: Uma volta é a concretização de uma rota. É criado quando chega um, ou mais, pedidos. Ao chegar o pedido procura-se a rota mais adequada, podendo-se alterar ou acrescentar pontos de paragem.

  • Com planeamento: Quando existe planeamento o sistema atribui uma rota a cada pedido, antes do pedido ser processado.
  • Sem planeamento: Quando não existe planeamento o sistema só atribui uma rota a ao pedido depois do mesmo ser processado.

Volume:  É uma unidade de transporte. Pode conter um ou mais contentores.

Volume Externo: É o volume de um contentor criado fora do armazém, por uma entidade externa. Os únicos dados que o armazém tem desse volume é o peso e as suas dimensões físicas. 

W

Workflow: Fluxo de um processo.

WPMS: Warehouse Process Management System. Sistema desenvolvido para gestão do armazém.

X

X-Docking(Cross-Docking): Tipo/processo de armazém, onde os contentores não são arrumados. Vão diretamente dos fornecedores para os clientes.

Y

Z

Zero: Linhas de mercadoria não executadas, totalmente ou parcialmente. Existem diversas razões para a não execução das linhas e os tipos de zeros dividem-se nas seguintes categorias:

  • Zero Anagráfico: É um tipo de zero cuja razão é a falta de dados Anagráficos(Dados mestre).
  • Reserva Stock Físico:
    • Palete existe mas não está arrumada.
    • Palete existe mas fora de validade.
    • Palete existe mas não está no espaço de picking do artigo.
    • Palete existe mas está bloqueada.
    • Existe stock teórico mas não existe stock físico.
  • Reserva Stock Teórico: Não existe stock disponível do artigo.
  • Zeros rateio – Não existe stock disponível do artigo.
  • Zero Parcial: Caixeiro não executou toda a mercadoria do documento de execução.
  • Anulação linha contentor: Caixeiro não executou nada da mercadoria do documento de execução.