/** Save batch and redirect to display */ public function post_id_handler() { $dbc = $this->connection; $dbc->selectDB($this->config->get('OP_DB')); $list = new BatchListModel($dbc); $upcs = FormLib::get('upc', array()); $prices = FormLib::get('price', array()); $groups = FormLib::get('groupPrice', array()); $methods = FormLib::get('priceMethod', array()); $qtys = FormLib::get('quantity', array()); for ($i = 0; $i < count($upcs); $i++) { $list->reset(); $list->batchID($this->id); $list->upc($upcs[$i]); $changed = false; if (isset($prices[$i])) { $list->salePrice($prices[$i]); $changed = true; } if (isset($groups[$i])) { $list->groupSalePrice($groups[$i]); $changed = true; } if (isset($methods[$i])) { $list->pricemethod($methods[$i]); $changed = true; } if (isset($qtys[$i])) { $list->quantity($qtys[$i]); $changed = true; } if ($changed) { $list->save(); } } header('Location: ?id=' . $this->id); return false; }
function post_createBatch_handler() { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $type = $this->form->batchType; $name = $this->form->batchName; $startdate = $this->form->startDate; $enddate = $this->form->endDate; $owner = $this->form->batchOwner; $priority = 0; $upcs = $this->form->upc; $prices = $this->form->price; $btype = new BatchTypeModel($dbc); $btype->batchTypeID($type); if (!$btype->load()) { echo 'Invalid Batch Type ' . $type; return false; } $discounttype = $btype->discType(); // make sure item data is present before creating batch if (!is_array($upcs) || !is_array($prices) || count($upcs) != count($prices) || count($upcs) == 0) { echo 'Invalid item data'; return false; } $batch = new BatchesModel($dbc); $batch->startDate($startdate); $batch->endDate($enddate); $batch->batchName($name); $batch->batchType($type); $batch->discountType($discounttype); $batch->priority($priority); $batch->owner($owner); $batchID = $batch->save(); if ($this->config->get('STORE_MODE') === 'HQ') { StoreBatchMapModel::initBatch($batchID); } if ($dbc->tableExists('batchowner')) { $insQ = $dbc->prepare_statement("insert batchowner values (?,?)"); $insR = $dbc->exec_statement($insQ, array($batchID, $owner)); } // add items to batch for ($i = 0; $i < count($upcs); $i++) { $upc = $upcs[$i]; $price = isset($prices[$i]) ? $prices[$i] : 0.0; $list = new BatchListModel($dbc); $list->upc(BarcodeLib::padUPC($upc)); $list->batchID($batchID); $list->salePrice($price); $list->groupSalePrice($price); $list->active(0); $list->pricemethod(0); $list->quantity(0); $list->save(); } /** If tags were requested and it's price change batch, make them Lookup vendor info for each item then add a shelftag record */ $tagset = $this->form->tagset; if ($discounttype == 0 && $tagset !== '') { $vendorID = $this->form->preferredVendor; $tag = new ShelftagsModel($dbc); $product = new ProductsModel($dbc); for ($i = 0; $i < count($upcs); $i++) { $upc = $upcs[$i]; $price = isset($prices[$i]) ? $prices[$i] : 0.0; $product->upc($upc); $info = $product->getTagData($price); $tag->id($tagset); $tag->upc($upc); $tag->description($info['description']); $tag->normal_price($price); $tag->brand($info['brand']); $tag->sku($info['sku']); $tag->size($info['size']); $tag->units($info['units']); $tag->vendor($info['vendor']); $tag->pricePerUnit($info['pricePerUnit']); $tag->save(); } } return 'Location: newbatch/BatchManagementTool.php?startAt=' . $batchID; }
function process_file($linedata) { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $upcCol = $this->get_column_index('upc_lc'); $priceCol = $this->get_column_index('price'); $btype = FormLib::get_form_value('btype', 0); $date1 = FormLib::get_form_value('date1', date('Y-m-d')); $date2 = FormLib::get_form_value('date2', date('Y-m-d')); $bname = FormLib::get_form_value('bname', ''); $owner = FormLib::get_form_value('bowner', ''); $ftype = FormLib::get_form_value('ftype', 'UPCs'); $has_checks = FormLib::get_form_value('has_checks') !== '' ? True : False; $dtQ = $dbc->prepare_statement("SELECT discType FROM batchType WHERE batchTypeID=?"); $dtR = $dbc->execute($dtQ, array($btype)); $dtW = $dbc->fetchRow($dtR); $discountType = is_array($dtW) ? $dtW[0] : 0; $insQ = $dbc->prepare_statement("\n INSERT INTO batches \n (startDate,endDate,batchName,batchType,discounttype,priority,owner)\n VALUES \n (?,?,?,?,?,0,?)"); $args = array($date1, $date2, $bname, $btype, $discountType, $owner); $insR = $dbc->exec_statement($insQ, $args); $batchID = $dbc->insert_id(); if ($this->config->get('STORE_MODE') === 'HQ') { StoreBatchMapModel::initBatch($batchID); } $upcChk = $dbc->prepare_statement("SELECT upc FROM products WHERE upc=?"); $model = new BatchListModel($dbc); $model->batchID($batchID); $model->pricemethod(0); $model->quantity(0); $model->active(0); $ret = ''; foreach ($linedata as $line) { if (!isset($line[$upcCol])) { continue; } if (!isset($line[$priceCol])) { continue; } $upc = $line[$upcCol]; $price = $line[$priceCol]; $upc = str_replace(" ", "", $upc); $upc = str_replace("-", "", $upc); $price = trim($price, ' '); $price = trim($price, '$'); if (!is_numeric($upc)) { $ret .= "<i>Omitting item. Identifier {$upc} isn't a number</i><br />"; continue; } elseif (!is_numeric($price)) { $ret .= "<i>Omitting item. Price {$price} isn't a number</i><br />"; continue; } $upc = $ftype == 'UPCs' ? BarcodeLib::padUPC($upc) : 'LC' . $upc; if ($has_checks && $ftype == 'UPCs') { $upc = '0' . substr($upc, 0, 12); } if ($ftype == 'UPCs') { $chkR = $dbc->exec_statement($upcChk, array($upc)); if ($dbc->num_rows($chkR) == 0) { continue; } } $model->upc($upc); $model->salePrice($price); $model->groupSalePrice($price); $model->save(); } $ret .= ' <p> Batch created <a href="' . $this->config->URL . 'batches/newbatch/EditBatchPage.php?id=' . $batchID . '" class="btn btn-default">View Batch</a> </p>'; $this->results = $ret; return true; }
protected function post_id_upc_price_qty_handler() { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $json = array('error' => 0, 'msg' => ''); if (!is_numeric($this->qty) || $this->qty < 1 || $this->qty != round($this->qty)) { $json['error'] = 1; $json['msg'] = 'Invalid quantity "' . $this->qty . '"; using quantity one'; $this->qty = 1; } $pmethod = $this->qty >= 2 ? 2 : 0; $model = new BatchListModel($dbc); $model->upc($this->upc); $model->batchID($this->id); $model->salePrice($this->price); $model->groupSalePrice($this->price); $model->quantity($this->qty); // quantity functions as a per-transaction limit // when pricemethod=0 if ($this->qty <= 1) { $this->qty = 1; $model->quantity(0); } $model->pricemethod($pmethod); $model->save(); $json['price'] = sprintf('%.2f', $this->price); $json['qty'] = (int) $this->qty; $upQ = $dbc->prepare_statement("update batchBarcodes set normal_price=? where upc=? and batchID=?"); $upR = $dbc->exec_statement($upQ, array($this->price, $this->upc, $this->id)); if (FormLib::get_form_value('audited') == '1') { \COREPOS\Fannie\API\lib\AuditLib::batchNotification($this->id, $this->upc, \COREPOS\Fannie\API\lib\AuditLib::BATCH_EDIT, substr($this->upc, 0, 2) == 'LC' ? true : false); } echo json_encode($json); return false; }