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:


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:

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