CORE-POS/IS4C

View on GitHub
fannie/item/likecodes/cool/CoolImport.php

Summary

Maintainability
A
2 hrs
Test Coverage
F
25%
<?php

include(__DIR__ . '/../../../config.php');
if (!class_exists('FannieAPI')) {
    include(__DIR__ . '/../../../classlib2.0/FannieAPI.php');
}

class CoolImport extends COREPOS\Fannie\API\FannieUploadPage
{
    protected $title = 'COOL Data Import';
    protected $header = 'COOL Data Import';

    protected $preview_opts = array(
        'sku' => array(
            'name' => 'sku',
            'display_name' => 'SKU',
            'default' => 0,
            'required' => false,
        ),
        'cool' => array(
            'name' => 'cool',
            'display_name' => 'COOL',
            'default' => 1,
            'required' => false,
        ),
        'item' => array(
            'name' => 'item',
            'display_name' => 'Item',
            'default' => 2,
            'required' => false,
        ),
    );

    public function process_file($linedata, $indexes)
    {
        $vendorID = FormLib::get('vendor');
        $likeP = $this->connection->prepare("SELECT likeCode
            FROM VendorLikeCodeMap
            WHERE vendorID=? AND sku=?");
        $model = new LikeCodesModel($this->connection);
        $opts = array();
        foreach ($model->find() as $obj) {
            $opts[$obj->likeCode()] = $obj->likeCodeDesc()
                . ' '
                . ($obj->organic() ? '(O)' : '(C)');
        }
        $ret = '<form method="post" action="CoolImportSave.php">
            <table class="table table-bordered">';
        foreach ($linedata as $line) {
            $sku = trim($line[$indexes['sku']]);
            $cool = strtoupper(trim($line[$indexes['cool']]));
            $item = trim($line[$indexes['item']]);
            $cool = str_replace('UNITED STATES', 'USA', $cool);
            $lc = $this->connection->getValue($likeP, array($vendorID, $sku));
            $ret .= sprintf('<tr><td>%s</td><td>%s</td>
                        <td>%s<input type="hidden" name="cool[]" value="%s" /></td>
                        <td><select name="lc[]" class="form-control input-sm chosen">
                        <option value=""></option>',
                $sku, $item, $cool, $cool);
            foreach ($opts as $val => $label) {
                $ret .= sprintf('<option %s value="%d">%d %s</option>',
                    $lc == $val ? 'selected' : '', $val, $val, $label);
            }
            $ret .= '</select></td></tr>';
        }
        $ret .= '</table>
            <p><button class="btn btn-default" type="submit">Save</button></p>';
        $this->result = $ret;

        return true;
    }

    public function results_content()
    {
        $this->addScript('../../../src/javascript/chosen/chosen.jquery.min.js');
        $this->addCssFile('../../../src/javascript/chosen/bootstrap-chosen.css');
        $this->addOnloadCommand("\$('select.chosen').chosen({search_contains: true});");
        return $this->result;
    }

    public function preview_content()
    {
        return sprintf('<input type="hidden" name="vendor" value="%d" />',
            FormLib::get('vendor'));
    }

    public function form_content()
    {
        return <<<HTML
<p>
Custom importers:<br />
<a href="CpwImport.php">CPW</a><br />
<a href="RdwImport.php">RDW</a><br />
</p>
HTML;
    }

    protected function basicForm()
    {
        $form = parent::basicForm();
        $model = new VendorsModel($this->connection);
        $this->addScript('../../../src/javascript/chosen/chosen.jquery.min.js');
        $this->addCssFile('../../../src/javascript/chosen/bootstrap-chosen.css');
        $this->addOnloadCommand("\$('select.chosen').chosen();");
        $opts = $model->toOptions();
        $addOn = <<<HTML
<p>
<div class="form-group">
    <label>Vendor</label>
    <select class="form-control chosen" name="vendor">
        {$opts}
    </select>
</div>
HTML;
        return str_replace('<p>', $addOn, $form);
    }
}

FannieDispatch::conditionalExec();