/** Assign batch to all stores @param $batchID [int] batch ID */ public static function initBatch($batchID) { $dbc = FannieDB::get(FannieConfig::config('OP_DB')); $map = new StoreBatchMapModel($dbc); $stores = new StoresModel($dbc); foreach ($stores->find() as $s) { $map->storeID($s->storeID()); $map->batchID($batchID); $map->save(); } }
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; }
public function results_content() { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $start = date('Y-m-d', strtotime(FormLib::get_form_value('start', date('Y-m-d')))); $end = date('Y-m-d', strtotime(FormLib::get_form_value('end', date('Y-m-d')))); $b_start = date('Y-m-d', strtotime(FormLib::get_form_value('bstart', date('Y-m-d')))); $b_end = date('Y-m-d', strtotime(FormLib::get_form_value('bend', date('Y-m-d')))); $naming = FormLib::get_form_value('naming', ''); $upcs = FormLib::get_form_value('upc', array()); $prices = FormLib::get_form_value('price', array()); $names = FormLib::get_form_value('batch', array()); $set = FormLib::get('deal-set'); $batchIDs = array(); if (FormLib::get_form_value('group_by_superdepts', '') == 'on') { $superdept_grouping = "CASE WHEN s.super_name IS NULL THEN 'sale' ELSE s.super_name END"; } else { $superdept_grouping = ""; } $saleItemsP = $dbc->prepare_statement("\n SELECT t.upc,\n t.price,\n t.multiplier," . $dbc->concat($superdept_grouping ? $superdept_grouping : "''", $superdept_grouping ? "' '" : "''", "'Co-op Deals '", "t.abtpr", '') . " AS batch\n FROM CoopDealsItems as t\n " . DTrans::joinProducts('t', 'p', 'INNER') . "\n LEFT JOIN MasterSuperDepts AS s ON p.department=s.dept_ID\n WHERE p.inUse=1\n AND t.dealSet=?\n ORDER BY s.super_name, t.upc\n "); $saleItemsR = $dbc->exec_statement($saleItemsP, array($set)); $batchP = $dbc->prepare_statement(' INSERT INTO batches ( batchName, batchType, discountType, priority, startDate, endDate ) VALUES (?, ?, ?, 0, ?, ?) '); $list = new BatchListModel($dbc); $list->active(0); $list->pricemethod(0); $list->quantity(0); while ($row = $dbc->fetch_row($saleItemsR)) { if (!isset($batchIDs[$row['batch']])) { $args = array($row['batch'] . ' ' . $naming, 1, 1); if (substr($row['batch'], -2) == " A") { $args[] = $start; $args[] = $end; } else { if (substr($row['batch'], -2) == " B") { $args[] = $b_start; $args[] = $b_end; } else { $args[] = $start; $args[] = $b_end; } } $dbc->exec_statement($batchP, $args); $bID = $dbc->insert_id(); $batchIDs[$row['batch']] = $bID; if ($this->config->get('STORE_MODE') === 'HQ') { StoreBatchMapModel::initBatch($bID); } } $id = $batchIDs[$row['batch']]; $list->upc($row['upc']); $list->batchID($id); $list->salePrice(sprintf("%.2f", $row['price'])); $list->signMultiplier($row['multiplier']); $list->save(); } $ret = "<p>New sales batches have been created!</p>"; $ret .= "<p><a href=\"../newbatch/\">View batches</a></p>"; return $ret; }
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_newType_newName_newStart_newEnd_newOwner_handler() { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $json = array('error' => 0, 'msg' => 'Created batch ' . $this->newName); $infoQ = $dbc->prepare_statement("select discType from batchType where batchTypeID=?"); $infoR = $dbc->exec_statement($infoQ, array($this->newType)); $discounttype = 1; // if no match, assuming sale is probably safer // than assuming price change if ($infoR && ($infoW = $dbc->fetch_row($infoR))) { $discounttype = $infoW['discType']; } $b = new BatchesModel($dbc); $b->startDate($this->newStart); $b->endDate($this->newEnd); $b->batchName($this->newName); $b->batchType($this->newType); $b->discountType($discounttype); $b->priority(0); $b->owner($this->newOwner); $id = $b->save(); if ($this->config->get('STORE_MODE') === 'HQ') { StoreBatchMapModel::initBatch($id); } if ($dbc->tableExists('batchowner')) { $insQ = $dbc->prepare_statement("insert batchowner values (?,?)"); $insR = $dbc->exec_statement($insQ, array($id, $b->owner())); } if ($id === false) { $json['error'] = 1; $json['msg'] = 'An error occured creating the batch ' . $this->newName; } else { $json['new_list'] = $this->batchListDisplay(); } echo json_encode($json); return false; }
public function post_id_storeID_handler() { $dbc = $this->connection; $dbc->selectDB($this->config->OP_DB); $ret = array('error' => 0, 'display' => ''); $map = new StoreBatchMapModel($dbc); $map->storeID($this->storeID); $map->batchID($this->id); if ($map->load()) { $deleted = $map->delete(); if (!$deleted) { $ret['error'] = 'Error removing store mapping'; } } else { $saved = $map->save(); if (!$saved) { $ret['error'] = 'Error saving store mapping'; } } echo json_encode($ret); return false; }