Table of Contents

Criação de Reports PDT para o Eve

You are here:

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;
	}
}