Пример #1
0
 public function post_id_handler()
 {
     $dbc = FannieDB::get($this->config->get('OP_DB'));
     $new = FormLib::get('new-upc');
     if ($new == '') {
         $this->addOnloadCommand("showBootstrapAlert('#alert-area', 'danger', 'New UPC cannot be blank');\n");
         return true;
     }
     $new = BarcodeLib::padUPC($new);
     $model = new ProductsModel($dbc);
     $model->upc($new);
     if ($model->load()) {
         $this->addOnloadCommand("showBootstrapAlert('#alert-area', 'danger', 'New item {$new} already exists');\n");
         return true;
     }
     $model->reset();
     $model->upc(BarcodeLib::padUPC($this->id));
     if (!$model->load()) {
         $this->addOnloadCommand("showBootstrapAlert('#alert-area', 'danger', 'Source item " . $model->upc() . " not found');\n");
         return true;
     }
     $model->upc($new);
     $description = substr('CLONE ' . $model->description(), 0, 30);
     $model->description($description);
     $model->store_id(1);
     $model->save();
     if ($dbc->tableExists('prodExtra')) {
         $extra = new ProdExtraModel($dbc);
         $extra->upc(BarcodeLib::padUPC($this->id));
         $extra->load();
         $extra->upc($new);
         $extra->save();
     }
     if ($dbc->tableExists('productUser')) {
         $user = new ProductUserModel($dbc);
         $user->upc(BarcodeLib::padUPC($this->id));
         $user->load();
         $user->upc($new);
         $user->save();
     }
     header('Location: ItemEditorPage.php?searchupc=' . $new);
     return false;
 }
Пример #2
0
 public function SaveFormData($upc)
 {
     $local = $this->db();
     $upc = BarcodeLib::padUPC($upc);
     $pu = new ProductUserModel($local);
     $pu->upc($upc);
     $pu->enableOnline(FormLib::get('u_online') == 1 ? 1 : 0);
     $pu->soldOut(FormLib::get('u_soldout') == 1 ? 1 : 0);
     $pu->save();
     include dirname(__FILE__) . '/../../src/Credentials/OutsideDB.tunneled.php';
     $remote = $dbc;
     $pu->load();
     if ($pu->enableOnline() && $remote->isConnected()) {
         $pu->setConnection($remote);
         $pu->save();
         $prod = new ProductsModel($local);
         $prod->upc($upc);
         $prod->load();
         $prod->setConnection($remote);
         $prod->save();
     } elseif (FormLib::get('u_already_online') && $remote->isConnected()) {
         $prod = new ProductsModel($remote);
         $prod->upc($upc);
         $prod->delete();
     }
     if ($local->tableExists('productExpires')) {
         $e = new ProductExpiresModel($local);
         $e->upc($upc);
         $e->expires(FormLib::getDate('u_expires', date('Y-m-d')));
         $e->save();
         if ($e->expires() && $remote->isConnected()) {
             $e->setConnection($remote);
             $e->save();
         }
     }
 }
Пример #3
0
 public function process_file($linedata)
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $upc_index = $this->get_column_index('upc');
     $desc_index = $this->get_column_index('desc');
     $size_index = $this->get_column_index('size');
     $brand_index = $this->get_column_index('brand');
     $sku_index = $this->get_column_index('sku');
     if ($desc_index === false && $brand_index === false) {
         $this->error_details = 'Neither brand nor description provided; nothing to import!';
         return false;
     }
     $ret = true;
     $checks = FormLib::get_form_value('checks') == 'yes' ? true : false;
     $normalize = FormLib::get_form_value('norm') == 'yes' ? true : false;
     $model = new ProductUserModel($dbc);
     $verifyP = $dbc->prepare('
         SELECT p.upc
         FROM products AS p
         WHERE p.upc = ?
     ');
     $skuP = $dbc->prepare('
         SELECT p.upc
         FROM vendorItems AS v
             INNER JOIN products AS p ON v.upc=p.upc AND p.default_vendor_id=v.vendorID
         WHERE v.sku = ?
     ');
     foreach ($linedata as $line) {
         $upc = $line[$upc_index];
         // upc cleanup
         $upc = str_replace(" ", "", $upc);
         $upc = str_replace("-", "", $upc);
         if (!is_numeric($upc)) {
             continue;
         }
         // skip header(s) or blank rows
         $this->stats['total']++;
         if ($checks) {
             $upc = substr($upc, 0, strlen($upc) - 1);
         }
         $upc = BarcodeLib::padUPC($upc);
         $verifyR = $dbc->execute($verifyP, array($upc));
         if ($dbc->num_rows($verifyR) == 0) {
             if ($sku_index !== false) {
                 $skuR = $dbc->execute($skuP, array($line[$sku_index]));
                 if ($dbc->num_rows($skuR) == 0) {
                     // no UPC match, no vendor sku match
                     continue;
                 } else {
                     $skuW = $dbc->fetch_row($skuR);
                     $upc = $skuW['upc'];
                 }
             } else {
                 // item does not exist, no vendor sku provided
                 continue;
             }
         }
         $model->reset();
         $model->upc($upc);
         $model->load();
         $changed = false;
         if ($model->brand() == '' && $brand_index !== false && !empty($line[$brand_index])) {
             $brand = $line[$brand_index];
             if ($normalize) {
                 $brand = ucwords(strtolower($brand));
             }
             $model->brand($brand);
             $changed = true;
         }
         if ($model->description() == '' && $desc_index !== false && !empty($line[$desc_index])) {
             $desc = $line[$desc_index];
             if ($normalize) {
                 $desc = ucwords(strtolower($desc));
             }
             $model->description($desc);
             if ($upc == '0002529300278') {
                 var_dump($model->description());
             }
             $changed = true;
         }
         if ($model->sizing() == '' && $size_index !== false && !empty($line[$size_index])) {
             $size = $line[$size_index];
             $model->sizing($size);
             $changed = true;
         }
         // possible that columns exist for brand and/or description
         // but are blank for the given row. No need to update.
         if ($changed) {
             $model->save();
             $this->stats['here']++;
         }
     }
     return $ret;
 }
Пример #4
0
 public function showEditForm($upc, $display_mode = 1, $expand_mode = 1)
 {
     $FANNIE_URL = FannieConfig::config('URL');
     $upc = BarcodeLib::padUPC($upc);
     $ret = '<div id="ProdUserFieldset" class="panel panel-default">';
     $ret .= "<div class=\"panel-heading\">\n                <a href=\"\" onclick=\"\$('#ProdUserFieldsetContent').toggle();return false;\">\n                Sign/Web Info</a>\n                </div>";
     $css = $expand_mode == 1 ? '' : ' collapse';
     $ret .= '<div id="ProdUserFieldsetContent" class="panel-body' . $css . '">';
     $dbc = $this->db();
     $model = new ProductUserModel($dbc);
     $model->upc($upc);
     $model->load();
     $loc = new ProdPhysicalLocationModel($dbc);
     $loc->upc($upc);
     $loc->load();
     $sections = new FloorSectionsModel($dbc);
     $prod = new ProductsModel($dbc);
     $prod->upc($upc);
     $prod->load();
     $ret .= '<div class="col-sm-6">';
     $ret .= '<div class="row form-group">' . '<label class="col-sm-1">Brand</label> ' . '<div class="col-sm-8">' . '<input type="text" class="form-control" id="lf_brand" name="lf_brand" value="' . $model->brand() . '" />' . '</div>' . '<div class="col-sm-3">' . ' <a href="" onclick="createSign(); return false;">Make Sign</a>' . '</div>' . '</div>';
     $ret .= '<div class="row form-group">' . '<label class="col-sm-1">Desc.</label> ' . '<div class="col-sm-8">' . '<textarea class="form-control" rows="2" id="lf_desc" name="lf_desc">' . $model->description() . '</textarea>' . '</div>' . '</div>';
     $ret .= '<div class="row form-group">' . '<label class="small col-sm-1">Sign Ct.</label> ' . '<div class="col-sm-8">' . '<input type="number" class="form-control price-field"
                 name="sign-count" value="' . $model->signCount() . '" />' . '</div>' . '</div>';
     $ret .= '<div class="row form-group">
                 <label tile="Location on the floor" class="col-sm-1">Loc.</label>
                 <div class="col-sm-8">
                     <select name="floor-id" class="form-control">
                         <option value="0">n/a</option>';
     foreach ($sections->find('name') as $section) {
         $ret .= sprintf('<option %s value="%d">%s</option>', $loc->floorSectionID() == $section->floorSectionID() ? 'selected' : '', $section->floorSectionID(), $section->name());
     }
     $ret .= '</select>
             </div>
             <div class="col-sm-3 text-left">
                 <a href="mapping/FloorSectionsPage.php" target="_blank">Add more</a>
             </div>
             </div>';
     $otherOriginBlock = '<div class=row>
             <div class=col-sm-1 />
             <div class=col-sm-8>
         <select name=otherOrigin[] class=form-control><option value=0>n/a</option>';
     $ret .= '<div class="row form-group">' . '<label class="col-sm-1"><a href="' . $FANNIE_URL . 'item/origins/OriginEditor.php">Origin</a></label>' . '<div class="col-sm-8">' . ' <select name="origin" class="form-control">' . '<option value="0">n/a</option>';
     $origins = new OriginsModel($dbc);
     $origins->local(0);
     foreach ($origins->find('name') as $o) {
         $ret .= sprintf('<option %s value="%d">%s</option>', $prod->current_origin_id() == $o->originID() ? 'selected' : '', $o->originID(), $o->name());
         $otherOriginBlock .= sprintf('<option value=%d>%s</option>', $o->originID(), $o->name());
     }
     $ret .= '</select></div>';
     $otherOriginBlock .= '</div></div>';
     $ret .= '<div class="col-sm-3 text-left">';
     $ret .= '&nbsp;&nbsp;&nbsp;&nbsp;<a href="" 
             onclick="$(\'#originsBeforeMe\').before(\'' . $otherOriginBlock . '\'); return false;">Add more</a>';
     $ret .= '</div></div>';
     $mapP = 'SELECT originID FROM ProductOriginsMap WHERE upc=? AND originID <> ?';
     $mapR = $dbc->execute($mapP, array($upc, $prod->current_origin_id()));
     while ($mapW = $dbc->fetch_row($mapR)) {
         $ret .= '<div class="form-group form-inline">
             <select name="otherOrigin[]" class="form-control"><option value="0">n/a</option>';
         foreach ($origins->find('name') as $o) {
             $ret .= sprintf('<option %s value="%d">%s</option>', $mapW['originID'] == $o->originID() ? 'selected' : '', $o->originID(), $o->name());
         }
         $ret .= '</select></div>';
     }
     $ret .= '<div id="originsBeforeMe"></div>';
     $ret .= '</div>';
     $ret .= '<div class="col-sm-6">';
     $ret .= '<div class="form-group"><label>Ad Text</label></div>';
     $ret .= '<div class="form-group">
             <textarea name="lf_text" class="form-control"
                 rows="8" cols="45">' . str_replace('<br />', "\n", $model->long_text()) . '</textarea></div>';
     $ret .= '</div>';
     $ret .= '</div>';
     $ret .= '</div>';
     return $ret;
 }