CORE_SETTINGS = $f3->get('CORE.fb'); $this->findBoxCore = new FindBoxCoreSystem(...array_values($this->CORE_SETTINGS)); } public function Pick2Light(object $f3, array $args) { $stepValues = []; if ($args['step'] == 1) { $f3->clear('COOKIE.p2l'); $f3->clear('COOKIE.consegna'); $f3->clear('COOKIE.labelid'); } else { $stepValues = array_map('strtoupper', $this->getSanitizedPostRequest()); if (count($stepValues) == 0) $stepValues = json_decode($f3->get('COOKIE.p2l'), true); } $distinta = new Distinta(); switch ($args['step']) { case 3: $distinta->CleanDistintaTable(); $distinta->CopyDistinta($stepValues['consegna']); $label = new SmartESL($this->findBoxCore, [$stepValues['labelid']]); $label->BlinkSpecial(0, 1, 1000, 8, 0); $distinta->SaveProductsToFindBox('3', true, 50); // prende soltanto i primi 3 dalla tabella copia delle distinte $f3->set('COOKIE.p2l', json_encode($stepValues)); $f3->set('COOKIE.consegna', $stepValues['consegna']); $f3->set('COOKIE.labelid', $stepValues['labelid']); $f3->reroute("/pick2light/4"); return; break; case 4: $distinta->SaveProductsToFindBox('3, 2000', false); // LIMIT 3,1000 perchè i primi 3 sono stati fatti nel case 3 break; case 5: $datiCommessa['consegna'] = $f3->get('COOKIE.consegna'); $datiCommessa['labelid'] = $f3->get('COOKIE.labelid'); $pickedBarcode = $f3->get('POST.pickedlabelid'); // Decrease quantity and blink label if ($pickedBarcode != null) { // ANOMALIA if ($pickedBarcode == $f3->get('BARCODE_COMMANDS.ANOMALIACODE')) { // set('ANOMALIA', 'In attesa del codice anomalia'); //> } else if ($stepValues['anomalia']) { if ($distinta->MarkBarcodeAsAnomalia($pickedBarcode)) unset($stepValues['anomalia']); else $f3->set('ANOMALIA', 'Codice non trovato!'); } else { // E' stato passato un codice $codeFromLabelId = $distinta->GetBarcodeFromLabelId($pickedBarcode); $pickedBarcode = $codeFromLabelId ?? $pickedBarcode; if ($distinta->RemoveQuantity($pickedBarcode)) { // SPEGNE LED ETICHETTA DOPO PICKING $label = new SmartESL($this->findBoxCore, [$distinta->GetLabelIdFromBarcode($pickedBarcode)]); $label->BlinkOff(); } else { $f3->set('INFOTEXT', 'Barcode non riconosciuto o non associato ad alcuna etichetta elettronica'); file_put_contents('not_found.log', $pickedBarcode . "\r\n", FILE_APPEND); } } } $rowsDistinta = $distinta->getDistinta(); $f3->set('PRODUCTS', $rowsDistinta); // End Picking List if (count($rowsDistinta) == 0) { //$distinta->ResetDistintaLabels($datiCommessa['consegna'], $datiCommessa['labelid']); $anomalie = $distinta->getAnomalieFromConsegne($datiCommessa['consegna']); $f3->set('LISTANOMALIE', $anomalie); //$label = new SmartESL($this->findBoxCore, [$datiCommessa['labelid']]); $distinta->SaveLabelCarrello($datiCommessa['labelid'], $datiCommessa['labelid'], $datiCommessa['consegna']); // Se non ci sono anomalie torna alla homepage if (count($anomalie) == 0) { $f3->reroute('/'); return; } } else { // Seleziona le prossime tre etichette foreach($rowsDistinta as $rowDist) { $labelId = $distinta->GetLabelIdFromBarcode($rowDist['barcode']); if ($labelId != null) { $label = new SmartESL($this->findBoxCore, [$labelId]); // Se è lo stesso barcode di quello appena pickato dall'operatore, non lo blinka di nuovo if ($distinta->GetArticleCount($rowDist['barcode']) > 0) { $label->BlinkSpecial(2, 1, 1000, 20); } } } } break; } $f3->set('COOKIE.p2l', json_encode($stepValues)); $distinte = $distinta->getListeToBind(); $f3->set('DISTINTE', $distinte); $f3->set('STEP', $args['step']); $f3->set('PAGEVALUES', $stepValues); $f3->set('CONTENT', 'pick2light.tpl'); echo \Template::instance()->render('masterpage.tpl'); } public function Bind($f3) { $params = $this->getSanitizedPostRequest(); $distinta = new Distinta(); if (count($params)) { $bindData = array_map('strtoupper', $this->getSanitizedPostRequest()); $err = $this->findBoxCore->Bind($bindData['labelid'], $bindData['labelid']); $label = new SmartESL($this->findBoxCore, [$bindData['labelid']]); $labelTemplateId = \F3::get("LABELS.TEMPLATES.DT31"); $err = $label->Display($labelTemplateId, $bindData['labelid']); // TODO assegnare il template corretto ed i custom field $eslData = array( 'Q.ta' => 0, 'Commessa' => $bindData['commessa'] ); $j_eslData = json_encode($eslData); $err = $this->findBoxCore->SaveProducts($bindData['labelid'], '', $eslData); $this->dbHandle->exec("DELETE FROM label_bindings WHERE label_id='{$bindData['labelid']}'"); $this->dbHandle->exec( "INSERT INTO label_bindings (label_id, barcode, template_id, esl_datafields, descrizione) VALUES " . "('{$bindData['labelid']}', '{$bindData['commessa']}', '{$labelTemplateId}', '{$j_eslData}', '{$bindData['commessa']}')" ); } $liste = $distinta->getListeToBind(); $f3->set('ORDINE', $liste[0]['commessa']); $f3->set('LISTE', $liste); $f3->set('CONTENT', 'bind.tpl'); echo \Template::instance()->render('masterpage.tpl'); } /** * @deprecated for now not used * @param $f3 * @param array $args */ public function UnBind($f3, array $args) { $stepValues = array_map('strtoupper', $this->getSanitizedPostRequest()); if ($args['step'] == 2) { $success = $this->findBoxCore->UnBind($stepValues['labelid']); if ($success['err'] <> 0) { $f3->set('INFOTEXT', $success['value']); } } $f3->set('STEP', $args['step']); $f3->set('CONTENT', 'unbind.tpl'); echo \Template::instance()->render('masterpage.tpl'); } /** * @deprecated for now not used * @param $f3 */ public function ElencoDistinta($f3) { $distinta = new Distinta(); $f3->set('PRODUCTS', $distinta->getDistinte()); $f3->set('CONTENT', 'distinta.tpl'); echo \Template::instance()->render('masterpage.tpl'); } }