| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <?php
- /**
- * @author Open Mind
- * @date 10/04/2018
- * @time 09:43
- */
- namespace Modules\Dimatec;
- use OpenMind\FindBox\FindBoxCoreSystem;
- use OpenMind\FindBox\SmartESL;
- class Pages extends \OpenMind\Web\Controller
- {
- private $CORE_SETTINGS;
- private $findBoxCore;
- public function __construct($f3)
- {
- parent::__construct($f3);
- $this->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')) {
- // <Se è stato ancora passato un codice anomalia, cancella l'operazione di anomalia in corso
- if (isset($stepValues['anomalia']))
- unset($stepValues['anomalia']);
- else
- $f3->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');
- }
- }
|