Exemple #1
0
 /**
   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();
     }
 }
Exemple #2
0
 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;
 }
Exemple #4
0
 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;
 }
Exemple #5
0
 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;
 }
Exemple #6
0
 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;
 }