CORE-POS/IS4C

View on GitHub
pos/is4c-nf/gui-modules/pos2.php

Summary

Maintainability
A
3 hrs
Test Coverage
F
59%
<?php
/*******************************************************************************

    Copyright 2010 Whole Foods Co-op

    This file is part of IT CORE.

    IT CORE is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    IT CORE is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    in the file license.txt along with IT CORE; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*********************************************************************************/

use COREPOS\pos\lib\gui\BasicCorePage;
use COREPOS\pos\lib\DisplayLib;
use COREPOS\pos\lib\MiscLib;
use COREPOS\pos\lib\ReceiptLib;

session_cache_limiter('nocache');

include_once(dirname(__FILE__).'/../lib/AutoLoader.php');

class pos2 extends BasicCorePage 
{
    private $display;

    function preprocess()
    {
        $this->display = "";

        $ajax = new COREPOS\pos\ajax\AjaxParser($this->session, $this->form);
        $ajax->enablePageDrawing(false);
        $json = $ajax->ajax(array('field'=>'reginput'));
        $redirect = $this->doRedirect($json);
        if ($redirect !== false) {
            $this->change_page($redirect);
            return false;
        }
        $this->setOutput($json);
        $this->registerRetry($json);
        $this->registerPrintJob($json);
        if ($this->session->get('CustomerDisplay') == true) {
            $this->loadCustomerDisplay();
        }

        return true;
    }

    // @hintable
    private function doRedirect($json)
    {
        if (isset($json['main_frame']) && $json['main_frame'] != false) {
            return $json['main_frame'];
        }

        return false;
    }

    // @hintable
    private function setOutput($json)
    {
        if (isset($json['output']) && !empty($json['output'])) {
            $this->display = $json['output'];
        }
    }

    // @hintable
    private function registerRetry($json)
    {
        if (isset($json['retry']) && $json['retry'] != false) {
            $this->add_onload_command("setTimeout(\"pos2.inputRetry('".$json['retry']."');\", 150);\n");
        }
    }

    // @hintable
    private function registerPrintJob($json)
    {
        if (isset($json['receipt']) && $json['receipt'] != false) {
            $ref = isset($json['trans_num']) ? $json['trans_num'] : ReceiptLib::mostRecentReceipt();
            $this->add_onload_command("pos2.receiptFetch('" . $json['receipt'] . "', '" . $ref . "');\n");
        }
    }

    private function loadCustomerDisplay()
    {
        $childUrl = MiscLib::baseURL() . 'gui-modules/posCustDisplay.php';
        $this->add_onload_command("CustomerDisplay.setURL('{$childUrl}');\n");
        $this->add_onload_command("CustomerDisplay.reloadCustomerDisplay();\n");
    }

    function head_content()
    {
        ?>
        <script type="text/javascript" src="<?php echo $this->page_url; ?>js/ajax-parser.js"></script>
        <script type="text/javascript" src="<?php echo $this->page_url; ?>js/CustomerDisplay.js?date=20210823"></script>
        <Script type="text/javascript" src="js/pos2.js"></script>
        <script type="text/javascript">
        function parseWrapper(str){
            $('#reginput').val($('#reginput').val() + '' + str);
            pos2.submitWrapper();
        }
        </script>
        <?php
    }

    function body_content()
    {
        $lines = DisplayLib::screenLines();
        $this->input_header('action="pos2.php" onsubmit="return pos2.submitWrapper();"');
        if ($this->session->get("timeout") != "") {
            $timeout = sprintf('%d', $this->session->get('timeout'));
            $this->add_onload_command("pos2.enableScreenLock({$timeout});\n");
        }
        $this->add_onload_command("pos2.setNumLines({$lines});\n");
        $this->add_onload_command("\$('#reginput').keydown(pos2.keydown);\n");

        echo '<div class="baseHeight">';

        $this->session->set("quantity",0);
        $this->session->set("multiple",0);
        // set memberID if not set already
        if (!$this->session->get("memberID")) {
            $this->session->set("memberID","0");
        }

        if ($this->session->get("plainmsg") && strlen($this->session->get("plainmsg")) > 0) {
            echo DisplayLib::printheaderb();
            echo "<div class=\"centerOffset\">";
            echo DisplayLib::plainmsg($this->session->get("plainmsg"));
            $this->session->set("plainmsg",0);
            echo "</div>";
        } elseif (!empty($this->display)) {
            echo $this->display;
        } else {
            echo DisplayLib::lastpage();
        }

        echo "</div>"; // end base height

        echo "<div id=\"footer\">";
        echo DisplayLib::printfooter();
        echo "</div>";

        if ($this->session->get("touchscreen")) {
            $this->touchScreenKeys();
        }
    } // END body_content() FUNCTION

    private function touchScreenKeys()
    {
        echo '<div style="text-align: center;">
        <button type="submit" 
            class="quick_button pos-button coloredBorder"
            style="margin: 0 10px 0 0;"
            onclick="parseWrapper(\'QO1001\');">'
            . _('Items') . '
        </button>
        <button type="submit"
            class="quick_button pos-button coloredBorder"
            style="margin: 0 10px 0 0;"
            onclick="parseWrapper(\'QO1002\');">'
            . _('Total') . '
        </button>
        <button type="submit" 
            class="quick_button pos-button coloredBorder"
            style="margin: 0 10px 0 0;"
            onclick="parseWrapper(\'QO1003\');">'
            . _('Member') . '
        </button>
        <button type="submit" 
            class="quick_button pos-button coloredBorder"
            style="margin: 0 10px 0 0;"
            onclick="parseWrapper(\'QO1004\');">'
            . _('Tender') . '
        </button>
        <button type="submit"
            class="quick_button pos-button coloredBorder"
            style="margin: 0 10px 0 0;"
            onclick="parseWrapper(\'QO1005\');">'
            . _('Misc') . '
        </button>
        </div>';
    }
}

AutoLoader::dispatch();