CORE-POS/IS4C

View on GitHub
fannie/modules/plugins2.0/WfcAbandonEquity/WfcAbandonEquityChecks.php

Summary

Maintainability
B
4 hrs
Test Coverage
<?php
include(dirname(__FILE__).'/../../../config.php');
if (!class_exists('FannieAPI')) {
    include(__DIR__ . '/../../../classlib2.0/FannieAPI.php');
}

class WfcAbandonEquityChecks extends \COREPOS\Fannie\API\FannieUploadPage 
{
    public $page_set = 'Plugin :: WfcAbandonEquity';
    public $description = '[Abandoned Equity Checks] to refund equity as checks';

    protected $preview_opts = array(
        'card_no' => array(
            'display_name' => 'Mem#',
            'default' => 0,
            'required' => true
        ),
        'classA' => array(
            'display_name' => 'Class A',
            'default' => 1,
            'required' => true
        ),
        'classB' => array(
            'display_name' => 'Class B',
            'default' => 2,
            'required' => true
        ),
        'note' => array(
            'display_name' => 'Note',
            'default' => 4,
        )
    );

    protected $header = 'Refund Equity Checks';
    protected $title = 'Refund Equity Checks';

    private function getMember($dbc, $card_no)
    {
        $custdata = new CustdataModel($dbc);
        $custdata->CardNo($card_no);
        $custdata->personNum(1);
        $custdata->load();

        $meminfo = new MeminfoModel($dbc);
        $meminfo->card_no($card_no);
        $meminfo->load();

        return array($custdata, $meminfo);
    }

    public function process_file($linedata, $indexes)
    {
        $dbc = $this->connection;

        $pdf = new FPDF('P', 'mm', 'Letter');
        $pdf->SetMargins(6.35, 6.35, 6.35); // quarter-inch margins
        $pdf->SetAutoPageBreak(false);

        $plugin_settings = $this->config->get('PLUGIN_SETTINGS');
        $checkDB = $plugin_settings['GiveUsMoneyDB'];
        $numberP = $dbc->prepare("
            SELECT checkNumber
            FROM " . $checkDB . $dbc->sep() . "GumPayoffs
            WHERE alternateKey=?");

        $checkCount = 0;
        foreach ($linedata as $data) {

            if (!isset($data[$indexes['card_no']])) {
                continue;
            } elseif (!is_numeric($data[$indexes['card_no']])) {
                continue;
            }

            $card_no = trim($data[$indexes['card_no']]);
            $a_amt = trim($data[$indexes['classA']], '$ ');
            $b_amt = trim($data[$indexes['classB']], '$ ');
            $offset_amt = $a_amt + $b_amt;
            if ($offset_amt == 0) {
                continue;
            }

            $dbc->selectDB($this->config->get('OP_DB'));
            list($custdata, $meminfo) = $this->getMember($dbc, $card_no);
            $payoffKey = 'eqr' . $card_no;
            $number = $dbc->getValue($numberP, array($payoffKey));
            if ($number === false) {
                $number = GumLib::allocateCheck($custdata, false, 'EQ REFUND', 'eqr' . $card_no);
            }
            if ($checkCount % 3 == 0) {
                $pdf->AddPage();
            }
            $check = new GumCheckTemplate($custdata, $meminfo, $offset_amt, 'Equity Refund', $number);
            $pos = ($checkCount % 3) + 2;
            $check->setPosition($pos);
            $check->renderAsPDF($pdf);
            $checkCount++;
        }

        $pdf->Output('Equity Refunds.pdf', 'I');

        return true;
    }

    function results_content()
    {
        return '<p>Import complete</p>';
    }

    function form_content()
    {
        return '<p>Upload equity refund spreadsheet</p>';
    }
}

FannieDispatch::conditionalExec();