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; }
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(); } } }
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; }
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 .= ' <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; }