CORE-POS/IS4C

View on GitHub
fannie/modules/plugins2.0/Mercato/MercatoTaxDiff.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

use COREPOS\Fannie\API\FannieUploadPage;
use COREPOS\Fannie\API\item\ItemText;

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

class MercatoTaxDiff extends FannieUploadPage
{
    protected $header = 'Mercato Tax Diff';
    protected $title = 'Mercato Tax Diff';

    protected $preview_opts = array(
        'sku' => array(
            'name' => 'sku',
            'display_name' => 'SKU',
            'default' => 0,
            'required' => true,
        ),
        'name' => array(
            'name' => 'name',
            'display_name' => 'Name',
            'default' => 1,
            'required' => true,
        ),
        'tax' => array(
            'name' => 'tax',
            'display_name' => 'Tax',
            'default' => 8,
            'required' => true,
        ),
    );

    private $results = array();

    public function process_file($linedata, $indexes)
    {
        $itemP = $this->connection->prepare("SELECT COALESCE(r.rate, 0) FROM products AS p
            LEFT JOIN taxrates AS r ON p.tax=r.id
            WHERE p.upc=?");
        foreach ($linedata as $data) {
            $sku = trim($data[$indexes['sku']]);
            if ($sku == '' || strtolower($sku) == 'sku') {
                continue;
            }
            $name = trim($data[$indexes['name']]);
            $tax = trim($data[$indexes['tax']]);
            $tax = trim($tax, '%');
            $rate = $this->connection->getValue($itemP, array(BarcodeLib::padUPC($sku)));
            if (abs(($rate * 100) - $tax) > 0.001) {
                $this->results[] = array(
                    'sku' => $sku,
                    'item' => $name,
                    'mrate' => sprintf('%.4f', $tax),
                    'prate' => sprintf('%.4f', $rate * 100),
                );
            }
        }

        return true;
    }

    public function results_content()
    {
        $ret = count($this->results) . ' discrepancies found';
        $ret .= '<table class="table table-bordered"><tr><th>SKU</th><th>Item</th><th>Mercato Tax</th><th>POS Tax</th></tr>';
        foreach ($this->results as $row) {
            $ret .= sprintf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
                $row['sku'], $row['item'], $row['mrate'], $row['prate']);
        }
        $ret .= '</table>';

        return $ret;
    }

}

FannieDispatch::conditionalExec();