/** Apply action @return [boolean] true if the action completes successfully (or is not necessary at all) or [string] url to redirect to another page for further decisions/input. */ public function apply() { $db = Database::pDataConnect(); $repeat = CoreLocal::get('msgrepeat'); $coupons = array(); $hc_table = $db->table_definition('houseCoupons'); if ($db->table_exists('autoCoupons')) { $autoR = $db->query('SELECT coupID, description FROM autoCoupons'); while ($autoW = $db->fetch_row($autoR)) { $coupons[$autoW['coupID']] = $autoW['description']; } } if (isset($hc_table['description']) && isset($hc_table['auto'])) { $autoR = $db->query('SELECT coupID, description FROM houseCoupons WHERE auto=1'); while ($autoW = $db->fetch_row($autoR)) { $coupons[$autoW['coupID']] = $autoW['description']; } } $hc = new HouseCoupon(); $prefix = CoreLocal::get('houseCouponPrefix'); if ($prefix == '') { $prefix = '00499999'; } foreach ($coupons as $id => $description) { if ($hc->checkQualifications($id, true) !== true) { // member or transaction does not meet requirements // for auto-coupon purposes, this isn't really an // error. no feedback necessary continue; } // get value of coupon AND value // of any previous applications of this coupon $add = $hc->getValue($id); $upc = $prefix . str_pad($id, 5, '0', STR_PAD_LEFT); $upc = str_pad($upc, 13, '0', STR_PAD_LEFT); $current = $db->query('SELECT SUM(-total) AS ttl FROM ' . CoreLocal::get('tDatabase') . $db->sep() . 'localtemptrans WHERE upc=\'' . $upc . '\''); $val = 0; if ($db->num_rows($current) > 0) { $currentW = $db->fetch_row($current); $val = $currentW['ttl']; } $next_val = $add['value'] - $val; if ($next_val == 0) { // no need to add another line item // previous one(s) sum to correct total continue; } TransRecord::addhousecoupon($upc, $add['department'], -1 * $next_val, $description); } CoreLocal::set('msgrepeat', $repeat); return true; }
public function handle($upc, $json) { $coupID = ltrim(substr($upc, -5), "0"); $leadDigits = substr($upc, 3, 5); $qualified = $this->checkQualifications($coupID); if ($qualified !== true) { $json['output'] = $qualified; return $json; } $available = $this->checkLimits($coupID); if ($available !== true) { $json['output'] = $available; return $json; } $add = $this->getValue($coupID); TransRecord::addhousecoupon($upc, $add['department'], -1 * $add['value'], $add['description']); $json['output'] = DisplayLib::lastpage(); $json['udpmsg'] = 'goodBeep'; $json['redraw_footer'] = true; return $json; }
public function testTransRecord() { if (!class_exists('lttLib')) { include 'lttLib.php'; } lttLib::clear(); CoreLocal::set('infoRecordQueue', array()); TransRecord::addQueued('1234567890123', 'UNIT TEST', 1, 'UT', 1.99); $queue = CoreLocal::get('infoRecordQueue'); $this->assertInternalType('array', $queue); $this->assertEquals(1, count($queue)); $this->assertArrayHasKey(0, $queue); $this->assertInternalType('array', $queue[0]); $this->assertArrayHasKey('upc', $queue[0]); $this->assertEquals('1234567890123', $queue[0]['upc']); $this->assertArrayHasKey('description', $queue[0]); $this->assertEquals('UNIT TEST', $queue[0]['description']); $this->assertArrayHasKey('numflag', $queue[0]); $this->assertEquals(1, $queue[0]['numflag']); $this->assertArrayHasKey('charflag', $queue[0]); $this->assertEquals('UT', $queue[0]['charflag']); $this->assertArrayHasKey('regPrice', $queue[0]); $this->assertEquals(1.99, $queue[0]['regPrice']); TransRecord::emptyQueue(); $queue = CoreLocal::get('infoRecordQueue'); $this->assertInternalType('array', $queue); $this->assertEquals(0, count($queue)); $record = lttLib::genericRecord(); $record['upc'] = '1234567890123'; $record['description'] = 'UNIT TEST'; $record['numflag'] = 1; $record['charflag'] = 'UT'; $record['regPrice'] = 1.99; $record['trans_type'] = 'C'; $record['trans_status'] = 'D'; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); CoreLocal::set('taxTotal', 1.23); TransRecord::addtax(); $record = lttLib::genericRecord(); $record['upc'] = 'TAX'; $record['description'] = 'Tax'; $record['trans_type'] = 'A'; $record['total'] = 1.23; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addtender('UT TENDER', 'UT', 2.34); $record = lttLib::genericRecord(); $record['description'] = 'UT TENDER'; $record['trans_type'] = 'T'; $record['trans_subtype'] = 'UT'; $record['total'] = 2.34; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addcomment('UNIT TEST COMMENT'); $record = lttLib::genericRecord(); $record['description'] = 'UNIT TEST COMMENT'; $record['trans_type'] = 'C'; $record['trans_subtype'] = 'CM'; $record['trans_status'] = 'D'; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addchange(3.14, 'UT'); $record = lttLib::genericRecord(); $record['description'] = 'Change'; $record['trans_type'] = 'T'; $record['trans_subtype'] = 'UT'; $record['total'] = 3.14; $record['voided'] = 8; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addfsones(3); $record = lttLib::genericRecord(); $record['description'] = 'FS Change'; $record['trans_type'] = 'T'; $record['trans_subtype'] = 'FS'; $record['total'] = 3; $record['voided'] = 8; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::adddiscount(5.45, 25); $record = lttLib::genericRecord(); $record['description'] = '** YOU SAVED $5.45 **'; $record['trans_type'] = 'I'; $record['trans_status'] = 'D'; $record['department'] = 25; $record['voided'] = 2; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addfsTaxExempt(); $record = lttLib::genericRecord(); $record['upc'] = 'FS Tax Exempt'; $record['description'] = ' Fs Tax Exempt '; $record['trans_type'] = 'C'; $record['trans_status'] = 'D'; $record['voided'] = 17; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::discountnotify(5); $record = lttLib::genericRecord(); $record['description'] = '** 5% Discount Applied **'; $record['trans_status'] = 'D'; $record['voided'] = 4; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addTaxExempt(); $record = lttLib::genericRecord(); $record['description'] = '** Order is Tax Exempt **'; $record['trans_status'] = 'D'; $record['voided'] = 10; $record['tax'] = 9; lttLib::verifyRecord(1, $record, $this); $this->assertEquals(1, CoreLocal::get('TaxExempt')); lttLib::clear(); TransRecord::reverseTaxExempt(); $record = lttLib::genericRecord(); $record['description'] = '** Tax Exemption Reversed **'; $record['trans_status'] = 'D'; $record['voided'] = 10; $record['tax'] = 9; lttLib::verifyRecord(1, $record, $this); $this->assertEquals(0, CoreLocal::get('TaxExempt')); lttLib::clear(); CoreLocal::set('casediscount', 7); TransRecord::addcdnotify(); $record = lttLib::genericRecord(); $record['description'] = '** 7% Case Discount Applied'; $record['trans_status'] = 'D'; $record['voided'] = 6; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addCoupon('0051234512345', 123, -1.23, 1); $record = lttLib::genericRecord(); $record['upc'] = '0051234512345'; $record['description'] = ' * Manufacturers Coupon'; $record['trans_type'] = 'I'; $record['trans_subtype'] = 'CP'; $record['trans_status'] = 'C'; $record['department'] = 123; $record['unitPrice'] = -1.23; $record['total'] = -1.23; $record['regPrice'] = -1.23; $record['foodstamp'] = 1; $record['quantity'] = 1; $record['ItemQtty'] = 1; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addhousecoupon('0049999912345', 122, -1.22); $record = lttLib::genericRecord(); $record['upc'] = '0049999912345'; $record['description'] = ' * Store Coupon'; $record['trans_type'] = 'I'; $record['trans_subtype'] = 'IC'; $record['trans_status'] = 'C'; $record['department'] = 122; $record['unitPrice'] = -1.22; $record['total'] = -1.22; $record['regPrice'] = -1.22; $record['quantity'] = 1; $record['ItemQtty'] = 1; $record['discountable'] = 1; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::additemdiscount(345, 3.45); $record = lttLib::genericRecord(); $record['upc'] = 'ITEMDISCOUNT'; $record['description'] = ' * Item Discount'; $record['trans_type'] = 'I'; $record['department'] = 345; $record['unitPrice'] = -3.45; $record['total'] = -3.45; $record['regPrice'] = -3.45; $record['quantity'] = 1; $record['ItemQtty'] = 1; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addtare(5); $record = lttLib::genericRecord(); $record['description'] = '** Tare Weight 0.05 **'; $record['trans_status'] = 'D'; $record['voided'] = 6; lttLib::verifyRecord(1, $record, $this); $this->assertEquals(0.05, CoreLocal::get('tare')); lttLib::clear(); CoreLocal::set('transDiscount', 3.24); TransRecord::addTransDiscount(); $record = lttLib::genericRecord(); $record['upc'] = 'DISCOUNT'; $record['description'] = 'Discount'; $record['trans_type'] = 'S'; $record['quantity'] = 1; $record['ItemQtty'] = 1; $record['unitPrice'] = -3.24; $record['total'] = -3.24; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); TransRecord::addCashDrop('90.78'); $record = lttLib::genericRecord(); $record['upc'] = 'DROP'; $record['description'] = 'Cash Drop'; $record['trans_type'] = 'I'; $record['trans_status'] = 'X'; $record['quantity'] = 1; $record['ItemQtty'] = 1; $record['unitPrice'] = -90.78; $record['total'] = -90.78; $record['charflag'] = 'CD'; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); $record = lttLib::genericRecord(); $record['upc'] = 'UNITTEST'; $record['description'] = 'Unit Test'; $record['department'] = 5; $record['numflag'] = 4; $record['charflag'] = 'UT'; $record['amount1'] = 1.23; $record['total'] = 1.23; $record['amount2'] = 1.24; $record['regPrice'] = 1.24; TransRecord::add_log_record($record); unset($record['amount1']); // not real column unset($record['amount2']); // not real column $record['trans_type'] = 'L'; $record['trans_subtype'] = 'OG'; $record['trans_status'] = 'D'; lttLib::verifyRecord(1, $record, $this); lttLib::clear(); }