Exemplo n.º 1
0
 private function getVendorInfo($id)
 {
     global $FANNIE_OP_DB, $FANNIE_ROOT;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $ret = "";
     $nameQ = $dbc->prepare_statement("SELECT vendorName FROM vendors WHERE vendorID=?");
     $nameR = $dbc->exec_statement($nameQ, array($id));
     $model = new VendorsModel($dbc);
     $model->vendorID($id);
     $model->load();
     $ret .= '<div>';
     $ret .= "<b>Id</b>: {$id} &nbsp; <b>Name</b>: " . $model->vendorName();
     $ret .= '</div>';
     $itemQ = $dbc->prepare_statement("SELECT COUNT(*) FROM vendorItems WHERE vendorID=?");
     $itemR = $dbc->exec_statement($itemQ, array($id));
     $num = 0;
     if ($itemR && ($row = $dbc->fetch_row($itemR))) {
         $num = $row[0];
     }
     $ret .= '
         <div class="row">
             <div class="container-fluid col-sm-3">';
     $ret .= '
         <div class="panel panel-default">
             <div class="panel-heading">Catalog</div>
             <div class="panel-body">
             This vendor contains ' . $num . ' items<br />';
     if ($num > 0) {
         $ret .= "<a href=\"BrowseVendorItems.php?vid={$id}\">Browse vendor catalog</a>";
         if ($num <= 750) {
             $ret .= "<br />";
             $ret .= "<a href=\"EditVendorItems.php?id={$id}\">Edit vendor catalog</a>";
         }
     }
     $ret .= "<br />";
     $ret .= "<a href=\"DefaultUploadPage.php?vid={$id}\">Upload new vendor catalog</a>";
     $ret .= "<br />";
     $ret .= "<a href=\"VendorIndexPage.php?vid={$id}&autoAdd=1\">Add existing items to catalog</a>";
     $ret .= '</div></div>';
     $ret .= '</div><div class="container-fluid col-sm-3">';
     $ret .= '
         <div class="panel panel-default">
             <div class="panel-heading">Mappings</div>
             <div class="panel-body">';
     $ret .= "<a href=\"UploadPluMapPage.php?vid={$id}\">Upload PLU/SKU mapping</a>";
     $ret .= "<br />";
     $ret .= "<a href=\"SkuMapPage.php?id={$id}\">View or Edit PLU/SKU mapping</a>";
     $ret .= "<br />";
     $ret .= "<a href=\"UnitBreakdownPage.php?id={$id}\">View or Edit Breakdown mapping</a>";
     $ret .= '</div></div>';
     $ret .= '</div><div class="container-fluid col-sm-3">';
     $ret .= '
         <div class="panel panel-default">
             <div class="panel-heading">Margin</div>
             <div class="panel-body">';
     $itemQ = $dbc->prepare("SELECT COUNT(*) FROM vendorDepartments WHERE vendorID=?");
     $itemR = $dbc->execute($itemQ, array($id));
     $num = 0;
     if ($itemR && ($row = $dbc->fetch_row($itemR))) {
         $num = $row[0];
     }
     $ret .= '<p>';
     $ret .= "<a href=\"../../batches/UNFI/\">Vendor Price Batch Tools</a>";
     $ret .= "</p><p>";
     if ($num == 0) {
         $ret .= "<a href=\"VendorDepartmentEditor.php?vid={$id}\">This vendor's items are not yet arranged into subcategories</a>";
         $ret .= '<p />';
         $ret .= "<a href=\"VendorDepartmentUploadPage.php?vid={$id}\">Upload Subcategory List</a>";
     } else {
         $ret .= "This vendor's items are divided into ";
         $ret .= $num . " subcategories";
         $ret .= "<br />";
         $ret .= "<a href=\"VendorDepartmentEditor.php?vid={$id}\">View or Edit vendor-specific margin(s)</a>";
         $ret .= "<br />";
         $ret .= "<a href=\"VendorMarginsPage.php?id={$id}\">And Even More Margins</a>";
         $ret .= '<p />';
         $ret .= "<a href=\"VendorDepartmentUploadPage.php?vid={$id}\">Upload Subcategory List</a>";
     }
     $ret .= '</p>';
     $ret .= '
         <div class="form-group">
             <div class="input-group">
                 <span class="input-group-addon">Shipping</span>
                 <input type="text" id="vc-shipping" name="shipping" 
                     onchange="saveShipping(this.value);"
                     title="Markup percentage to account for shipping fees"
                     class="form-control" value="' . $model->shippingMarkup() * 100 . '" />
                 <span class="input-group-addon">%</span>
             </div>
         </div>
         <div class="form-group">
             <div class="input-group">
                 <span class="input-group-addon">Discount Rate</span>
                 <input type="text" id="vc-discount" name="discount-rate" 
                     title="Markdown percentage from catalog list costs"
                     onchange="saveDiscountRate(this.value);"
                     class="form-control" value="' . $model->discountRate() * 100 . '" />
                 <span class="input-group-addon">%</span>
             </div>
         </div>';
     $ret .= '</div></div>';
     $ret .= '</div></div>';
     $ret .= '
         <div class="panel panel-default">
             <div class="panel-heading">Contact Info</div>
             <div class="panel-body">
                 <div class="form-alerts"></div>';
     $ret .= '<form role="form" class="form-horizontal" onsubmit="saveVC(' . $id . '); return false;" id="vcForm">';
     $ret .= '<div class="form-group">
         <label for="vcPhone" class="control-label col-sm-1">Phone</label>
         <div class="col-sm-10">
         <input type="tel" class="form-control" id="vcPhone" name="phone" value="' . $model->phone() . '" />
         </div>
         </div>';
     $ret .= '<div class="form-group">
         <label for="vcFax" class="control-label col-sm-1">Fax</label>
         <div class="col-sm-10">
         <input type="text" id="vcFax" class="form-control" name="fax" value="' . $model->fax() . '" />
         </div>
         </div>';
     $ret .= '<div class="form-group">
         <label for="vcEmail" class="control-label col-sm-1">Email</label>
         <div class="col-sm-10">
         <input type="text" class="form-control" id="vcEmail" name="email" value="' . $model->email() . '" />
         </div>
         </div>';
     $ret .= '<div class="form-group">
         <label for="vcWebsite" class="control-label col-sm-1">Website</label>
         <div class="col-sm-10">
         <input type="text" class="form-control" id="vcWebsite" name="website" value="' . $model->website() . '" />
         </div>
         </div>';
     $ret .= '<div class="form-group">
         <label for="vc-local-id" class="control-label col-sm-1">Local</label>
         <div class="col-sm-10">
             <select class="form-control" name="local-origin-id">
             <option value="0">No</option>';
     $origins = new OriginsModel($dbc);
     $origins->local(1);
     foreach ($origins->find('shortName') as $origin) {
         $ret .= sprintf('<option %s value="%d">%s</option>', $origin->originID() == $model->localOriginID() ? 'selected' : '', $origin->originID(), $origin->shortName());
     }
     $ret .= '</select>
             </div>
         </div>';
     $ret .= '<div class="form-group">
         <label for="vcNotes" class="control-label col-sm-1">Ordering Notes</label>
         <div class="col-sm-10">
         <textarea class="form-control" rows="5" name="notes" id="vcNotes">' . $model->notes() . '</textarea>
         </div>
         </div>';
     $ret .= '<button type="submit" class="btn btn-default">Save Vendor Contact Info</button>';
     $ret .= '</form>';
     $ret .= '</div></div>';
     $delivery = new VendorDeliveriesModel($dbc);
     $delivery->vendorID($id);
     $delivery->load();
     $ret .= '<p class="form-inline form-group"><label class="control-label" for="deliverySelect">Delivery Schedule</label>: ';
     $ret .= '<select class="delivery form-control" name="frequency" id="deliverySelect"><option>Weekly</option></select>';
     $ret .= ' <label for="regular" class="control-label">Regular</label>: <input type="checkbox" class="delivery"
                 name="regular" id="regular" ' . ($delivery->regular() ? 'checked' : '') . ' />';
     $dt = mktime(0, 0, 0, 6, 15, 2014);
     // date doesn't matter; just need a sunday
     $labels = '';
     $checks = '';
     for ($i = 0; $i < 7; $i++) {
         $func = strtolower(date('l', $dt));
         $labels .= '<th><label for="' . $func . '">' . date('D', $dt) . '</label></th>';
         $checks .= '<td><input type="checkbox" id="' . $func . '" name="' . $func . '"
                     ' . ($delivery->{$func}() ? 'checked' : '') . ' class="delivery" /></td>';
         $dt = mktime(0, 0, 0, date('n', $dt), date('j', $dt) + 1, date('Y', $dt));
     }
     $ret .= '<table class="table"><tr>' . $labels . '</tr><tr>' . $checks . '</tr></table>';
     $ret .= 'Next 2 deliveries: ' . '<span id="nextDelivery">' . date('D, M jS', strtotime($delivery->nextDelivery())) . '</span>' . ' and ' . '<span id="nextNextDelivery">' . date('D, M jS', strtotime($delivery->nextNextDelivery())) . '</span>';
     $ret .= '</p>';
     echo $ret;
 }
Exemplo n.º 2
0
 public function preprocess()
 {
     global $FANNIE_PLUGIN_SETTINGS, $FANNIE_OP_DB, $FANNIE_URL, $FANNIE_TRANS_DB;
     //$this->add_script($FANNIE_URL.'src/javascript/jquery.js');
     //$this->add_script($FANNIE_URL.'src/javascript/jquery-ui.js');
     if (FormLib::get('upc_in') !== '') {
         $upc = BarcodeLib::padUPC(FormLib::get('upc_in'));
         $this->current_item_data['upc'] = $upc;
         $dbc = FannieDB::get($FANNIE_OP_DB);
         $model = new ProductsModel($dbc);
         $model->upc($upc);
         $vendorID = 0;
         if ($model->load()) {
             $this->current_item_data['desc'] = $model->brand() . ' ' . $model->description();
             $this->current_item_data['par'] = $model->auto_par();
             $vendorID = $model->default_vendor_id();
         }
         $model = new VendorsModel($dbc);
         $model->vendorID($vendorID);
         if ($model->load()) {
             $this->current_item_data['vendor'] = $model->vendorName();
             $schedule = new VendorDeliveriesModel($dbc);
             $schedule->vendorID($vendorID);
             if ($schedule->load() && $schedule->regular() == 1) {
                 $this->current_item_data['nextDelivery'] = date('D, M jS', strtotime($schedule->nextDelivery())) . ' & ' . date('D, M jS', strtotime($schedule->nextNextDelivery()));
                 $nd = new DateTime(date('Y-m-d', strtotime($schedule->nextDelivery())));
                 $nnd = new DateTime(date('Y-m-d', strtotime($schedule->nextNextDelivery())));
                 $this->current_item_data['deliverySpan'] = $nnd->diff($nd)->format('%a');
             }
             $items = new VendorItemsModel($dbc);
             $items->vendorID($vendorID);
             $items->upc($upc);
             $this->current_item_data['cases'] = array();
             foreach ($items->find('units') as $item) {
                 $this->current_item_data['cases'][] = $item->units();
             }
         }
         $saleNow = 'SELECT b.batchName, b.startDate, b.endDate
                     FROM batchList AS l
                         INNER JOIN batches AS b ON b.batchID=l.batchID
                     WHERE l.upc=?
                         AND b.discounttype <> 0
                         AND b.startDate <= ' . $dbc->now() . '
                         AND b.endDate >= ' . $dbc->now();
         $saleNow = $dbc->prepare($saleNow);
         $saleNow = $dbc->execute($saleNow, array($upc));
         if ($dbc->num_rows($saleNow) > 0) {
             $row = $dbc->fetch_row($saleNow);
             $this->current_item_data['onSale'] = $row['batchName'] . ' thru ' . date('D, M jS', strtotime($row['endDate']));
         }
         $saleNext = 'SELECT b.batchName, b.startDate, b.endDate
                     FROM batchList AS l
                         INNER JOIN batches AS b ON b.batchID=l.batchID
                     WHERE l.upc=?
                         AND b.discounttype <> 0
                         AND b.startDate >= ' . $dbc->now() . '
                         AND b.endDate >= ' . $dbc->now();
         $saleNext = $dbc->prepare($saleNext);
         $saleNext = $dbc->execute($saleNext, array($upc));
         if ($dbc->num_rows($saleNext) > 0) {
             $row = $dbc->fetch_row($saleNext);
             $this->current_item_data['soonSale'] = $row['batchName'] . ' on ' . date('D, M jS', strtotime($row['startDate']));
         }
         $ordersQ = 'SELECT v.vendorName,
                         o.placedDate,
                         i.quantity,
                         i.caseSize
                     FROM PurchaseOrderItems AS i
                         INNER JOIN PurchaseOrder AS o ON i.orderID=o.orderID
                         INNER JOIN vendors AS v ON o.vendorID=v.vendorID
                     WHERE i.internalUPC = ?
                     ORDER BY o.placedDate DESC';
         $ordersQ = $dbc->add_select_limit($ordersQ, 10);
         $ordersP = $dbc->prepare($ordersQ);
         $ordersR = $dbc->execute($ordersP, array($upc));
         $orders = array();
         while ($w = $dbc->fetch_row($ordersR)) {
             $orders[] = $w;
         }
         $this->current_item_data['orders'] = $orders;
         $salesQ = 'SELECT ' . DTrans::sumQuantity('d') . ' AS qty,
                     MIN(tdate) as day
                    FROM ' . $FANNIE_TRANS_DB . $dbc->sep() . 'dlog_15 AS d
                    WHERE upc = ?
                    GROUP BY YEAR(tdate), MONTH(tdate), DAY(tdate)
                    ORDER BY YEAR(tdate) DESC, MONTH(tdate) DESC, DAY(tdate) DESC';
         $salesP = $dbc->prepare($salesQ);
         $salesR = $dbc->execute($salesP, array($upc));
         $sales = array();
         while ($w = $dbc->fetch_row($salesR)) {
             $sales[] = $w;
         }
         $this->current_item_data['sales'] = $sales;
     }
     $this->linea_ios_mode = $this->linea_support_available();
     if ($this->linea_ios_mode) {
         $this->add_script($FANNIE_URL . 'src/javascript/linea/cordova-2.2.0.js');
         $this->add_script($FANNIE_URL . 'src/javascript/linea/ScannerLib-Linea-2.0.0.js');
     }
     $this->add_script($FANNIE_URL . 'src/javascript/tablesorter/jquery.tablesorter.js');
     $this->add_css_file($FANNIE_URL . 'src/javascript/tablesorter/themes/blue/style.css');
     //$this->add_css_file($FANNIE_URL.'src/javascript/jquery-ui.css');
     return true;
 }