Exemple #1
0
 public function get_id_break_handler()
 {
     $dbc = FannieDB::get($this->config->get('OP_DB'));
     $model = new VendorBreakdownsModel($dbc);
     $model->vendorID($this->id);
     $original = new VendorItemsModel($dbc);
     $product = new ProductsModel($dbc);
     foreach ($model->find() as $obj) {
         $original->vendorID($this->id);
         $original->sku($obj->sku());
         if (!$original->load()) {
             $this->addOnloadCommand("showBootstrapAlert('#alert-area', 'danger', 'Vendor SKU #" . $obj->sku() . " not found');\n");
             continue;
         }
         $split_factor = false;
         $unit_size = '';
         if (preg_match('/^\\d+$/', $original->size())) {
             $split_factor = $original->size();
         } elseif (preg_match('/(\\d+)\\s*\\/\\s*(.+)/', $original->size(), $matches)) {
             $split_factor = $matches[1];
             $unit_size = $matches[2];
         } elseif (preg_match('/(\\d+)\\s*CT/', $original->size(), $matches)) {
             $split_factor = $matches[1];
         } elseif (preg_match('/(\\d+)\\s*PKT/', $original->size(), $matches)) {
             $split_factor = $matches[1];
         }
         if (!$split_factor) {
             $this->addOnloadCommand("showBootstrapAlert('#alert-area', 'danger', 'Vendor SKU #" . $original->size() . " cannot be broken down');\n");
             continue;
         }
         // add an entry using the store UPC/PLU in place of the vendor SKU
         // since two records from the same vendor with same SKU are not
         // permitted in the table
         $original->sku($obj->upc());
         $original->upc($obj->upc());
         $original->units(1);
         $original->size($unit_size);
         $original->cost($original->cost() / $split_factor);
         $original->saleCost($original->saleCost() / $split_factor);
         if ($original->save()) {
             // update cost in products table, too
             $product->reset();
             $product->upc($obj->upc());
             foreach ($product->find('store_id') as $p) {
                 if ($p->load() && $p->default_vendor_id() == $this->id) {
                     $p->cost($original->cost());
                     $p->save();
                     $original->description($p->description());
                     $original->save();
                 }
             }
         } else {
             $this->addOnloadCommand("showBootstrapAlert('#alert-area', 'success', 'Error saving vendor SKU #" . $obj->sku() . "');\n");
         }
     }
     return true;
 }
Exemple #2
0
 public function post_id_sku_field_value_handler()
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $item = new VendorItemsModel($dbc);
     $item->vendorID($this->id);
     $item->sku($this->sku);
     $ret = array('error' => 0);
     if ($this->field === 'brand') {
         $item->brand($this->value);
     } elseif ($this->field === 'description') {
         $item->description($this->value);
     } elseif ($this->field === 'unitSize') {
         $item->size($this->value);
     } elseif ($this->field === 'caseQty') {
         $item->units($this->value);
     } elseif ($this->field === 'cost') {
         $item->cost($this->value);
     } else {
         $ret['error'] = 1;
         $ret['error_msg'] = 'Unknown field';
     }
     if ($ret['error'] == 0) {
         $saved = $item->save();
         if (!$saved) {
             $ret['error'] = 1;
             $ret['error_msg'] = 'Save failed';
         } else {
             /**
               If cost was updated, update the corresponding
               product cost
             */
             $prodP = $dbc->prepare('
                 SELECT p.upc
                 FROM products AS p
                     INNER JOIN vendorItems AS v ON p.upc=v.upc AND p.default_vendor_id=v.vendorID
                 WHERE v.vendorID=?
                     AND v.sku=?');
             $prodR = $dbc->execute($prodP, array($this->id, $this->sku));
             $model = new ProductsModel($dbc);
             while ($prodW = $dbc->fetch_row($prodR)) {
                 $model->reset();
                 $model->upc($prodW['upc']);
                 foreach ($model->find('store_id') as $obj) {
                     $obj->cost($this->value);
                     $obj->save();
                 }
             }
         }
     }
     echo json_encode($ret);
     return false;
 }
Exemple #3
0
 public function post_vendorID_invoice_num_po_num_invoice_date_handler()
 {
     $dbc = FannieDB::get($this->config->get('OP_DB'));
     $skus = FormLib::get('sku', array());
     $upcs = FormLib::get('upc', array());
     $descriptions = FormLib::get('desc', array());
     $cases = FormLib::get('qty', array());
     $units = FormLib::get('units', array());
     $sizes = FormLib::get('size', array());
     $costs = FormLib::get('unitCost', array());
     $totals = FormLib::get('totalCost', array());
     $order = new PurchaseOrderModel($dbc);
     $order->vendorID($this->vendorID);
     $order->creationDate($this->invoice_date);
     $order->placed(1);
     $order->placedDate($this->invoice_date);
     $order->vendorOrderID($this->po_num);
     $order->vendorInvoiceID($this->invoice_num);
     $order->userID(0);
     $orderID = $order->save();
     $checkP = $dbc->prepare('
         SELECT v.sku
         FROM vendorItems AS v
         WHERE v.vendorID=?
             AND v.upc <> \'0000000000000\'
             AND v.upc <> \'\'
             AND v.upc IS NOT NULL
             AND v.sku=?');
     $vendorItem = new VendorItemsModel($dbc);
     $item = new PurchaseOrderItemsModel($dbc);
     for ($i = 0; $i < count($skus); $i++) {
         $sku = $skus[$i];
         $upc = BarcodeLib::padUPC(isset($upcs[$i]) ? $upcs[$i] : '');
         $qty = isset($cases[$i]) ? $cases[$i] : 1;
         $caseSize = isset($units[$i]) ? $units[$i] : 1;
         $unitSize = isset($sizes[$i]) ? $sizes[$i] : '';
         $unitCost = isset($costs[$i]) ? $costs[$i] : 0;
         $totalCost = isset($totals[$i]) ? $totals[$i] : 0;
         $desc = isset($descriptions[$i]) ? substr($descriptions[$i], 0, 50) : '';
         $item->reset();
         $item->orderID($orderID);
         $item->sku($sku);
         $item->quantity($qty);
         $item->unitCost($unitCost);
         $item->caseSize($caseSize);
         $item->receivedDate($this->invoice_date);
         $item->receivedQty($qty);
         $item->receivedTotalCost($totalCost);
         $item->unitSize($unitSize);
         $item->brand('');
         $item->description($desc);
         $item->internalUPC($upc);
         $item->save();
         /**
           Add entries to vendor catalog if they don't exist
         */
         $checkR = $dbc->execute($checkP, array($this->vendorID, $sku));
         if ($checkR && $dbc->numRows($checkR) == 0) {
             $vendorItem->vendorID($this->vendorID);
             $vendorItem->sku($sku);
             $vendorItem->upc($upc);
             $vendorItem->description($desc);
             $vendorItem->brand('');
             $vendorItem->units($caseSize);
             $vendorItem->size($unitSize);
             $vendorItem->cost($unitCost);
             $vendorItem->vendorDept(0);
             $vendorItem->save();
         }
     }
     header('Location: ' . filter_input(INPUT_SERVER, 'PHP_SELF') . '?complete=' . $orderID);
     return false;
 }
Exemple #4
0
 /**
   Helper: create a vendorItems record for an existing
   product if one does not exist
 */
 public function createIfMissing($upc, $vendorID)
 {
     // look for entry directly by UPC or via SKU mapping
     $findP = $this->connection->prepare('
         SELECT v.upc
         FROM vendorItems AS v
             LEFT JOIN vendorSKUtoPLU AS m ON v.vendorID=m.vendorID AND v.sku=m.sku
         WHERE v.vendorID=?
             AND (v.upc=? OR m.upc=?)');
     $findR = $this->connection->execute($findP, array($vendorID, $upc, $upc));
     if ($this->connection->num_rows($findR) == 0) {
         // create item from product
         $prod = new ProductsModel($this->connection);
         $prod->upc($upc);
         $prod->load();
         $vend = new VendorItemsModel($this->connection);
         $vend->vendorID($vendorID);
         $vend->upc($upc);
         $vend->sku($upc);
         $vend->brand($prod->brand());
         $vend->description($prod->description());
         $vend->cost($prod->cost());
         $vend->saleCost(0);
         $vend->vendorDept(0);
         $vend->units(1);
         $vend->size($prod->size() . $prod->unitofmeasure());
         $vend->save();
     }
 }
Exemple #5
0
 private function autoPopulate($vendorID)
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $query = '
         SELECT p.upc,
             p.upc AS sku,
             p.brand,
             p.description,
             p.size,
             p.unitofmeasure,
             p.cost,
             0.00 AS saleCost,
             0 AS vendorDept
         FROM products AS p
             INNER JOIN vendors AS v ON p.default_vendor_id=v.vendorID
         WHERE v.vendorID=?
             AND p.upc NOT IN (
                 SELECT upc FROM vendorItems WHERE vendorID=?
             ) AND p.upc NOT IN (
                 SELECT upc FROM vendorSKUtoPLU WHERE vendorID=?
             )';
     $prep = $dbc->prepare($query);
     $args = array($vendorID, $vendorID, $vendorID);
     $result = $dbc->execute($prep, $args);
     $item = new VendorItemsModel($dbc);
     while ($row = $dbc->fetch_row($result)) {
         $item->vendorID($vendorID);
         $item->upc($row['upc']);
         $item->sku($row['sku']);
         $item->brand($row['brand']);
         $item->description($row['description']);
         $item->units(1);
         $item->size($row['size'] . $row['unitofmeasure']);
         $item->cost($row['cost']);
         $item->saleCost(0);
         $item->vendorDept(0);
         $item->save();
     }
 }
 public function post_id_handler()
 {
     $dbc = FannieDB::get($this->config->get('OP_DB'));
     $ret = array('error' => false);
     $date = FormLib::get('order-date', date('Y-m-d'));
     $po_num = FormLib::get('po-number');
     $inv_num = FormLib::get('inv-number');
     $sku = FormLib::get('sku', array());
     $upc = FormLib::get('upc', array());
     $cases = FormLib::get('cases', array());
     $caseSize = FormLib::get('case-size', array());
     $total = FormLib::get('total', array());
     $brand = FormLib::get('brand', array());
     $description = FormLib::get('description', array());
     if (count($sku) == 0) {
         $ret['error'] = true;
         $ret['message'] = 'Order must have at least one item';
         echo json_encode($ret);
         return false;
     }
     /**
       Queries to check for vendorItems entries
     */
     $skuP = $dbc->prepare('
         SELECT size
         FROM vendorItems
         WHERE vendorID=?
             AND sku=?');
     $upcP = $dbc->prepare('
         SELECT size
         FROM vendorItems
         WHERE vendorID=?
             AND upc=?');
     $vitem = new VendorItemsModel($dbc);
     /**
       Create parent record for the order
     */
     $po = new PurchaseOrderModel($dbc);
     $po->vendorID($this->id);
     $po->creationDate($date);
     $po->placed(1);
     $po->placedDate($date);
     $po->userID(FannieAuth::getUID());
     $po->vendorOrderID($po_num);
     $po->vendorInvoiceID($inv_num);
     // if an orderID is supplied, update the existing order
     if (FormLib::get('order-id') !== '' && is_numeric(FormLib::get('order-id'))) {
         $orderID = FormLib::get('order-id');
         $po->orderID($orderID);
         $po->save();
     } else {
         $orderID = $po->save();
     }
     if (!$orderID) {
         $ret['error'] = true;
         $ret['message'] = 'Could not create new order';
         echo json_encode($ret);
         return false;
     }
     /**
       Create item records for the order
     */
     $pitem = new PurchaseOrderItemsModel($dbc);
     for ($i = 0; $i < count($sku); $i++) {
         $pitem->reset();
         $pitem->orderID($orderID);
         $pitem->sku($sku[$i]);
         $units = $caseSize[$i];
         $qty = $cases[$i];
         $unitCost = $total[$i] / $qty / $units;
         /**
           Multiple same-SKU records
           Sum the quantities and costs to merge
           into a single record
         */
         if ($pitem->load()) {
             $qty += $pitem->receivedQty();
             $total[$i] += $pitem->receivedTotalCost();
         }
         $pitem->quantity($qty);
         $pitem->caseSize($units);
         $pitem->unitSize('');
         $pitem->unitCost($unitCost);
         $pitem->receivedDate($date);
         $pitem->receivedQty($qty);
         $pitem->receivedTotalCost($total[$i]);
         $pitem->brand($brand[$i]);
         $pitem->description($description[$i]);
         $pitem->internalUPC($upc[$i]);
         /**
           Try to look up unit size using
           vendorID+sku or vendorID+upc.
           This avoids making unit size a required
           field *and* checks for an existing
           vendorItems record
         */
         $size = false;
         $skuR = $dbc->execute($skuP, array($this->id, $sku[$i]));
         if ($skuR && $dbc->numRows($skuR)) {
             $size = true;
             $w = $dbc->fetchRow($skuR);
             $pitem->unitSize($w['size']);
         }
         if ($size === false) {
             $upcR = $dbc->execute($upcP, array($this->id, $upc[$i]));
             if ($upcR && $dbc->numRows($upcR)) {
                 $size = true;
                 $w = $dbc->fetchRow($upcR);
                 $pitem->unitSize($w['size']);
             }
         }
         $pitem->save();
         /**
           If no vendorItems record exists for this
           SKU or UPC then create one
         */
         if ($size === false) {
             $vitem->reset();
             $vitem->vendorID($this->id);
             $vitem->sku($sku[$i]);
             $vitem->upc($upc[$i]);
             $vitem->brand($brand[$i]);
             $vitem->description($description[$i]);
             $vitem->size('');
             $vitem->units($qty);
             $vitem->cost($unitCost);
             $vitem->saleCost(0.0);
             $vitem->vendorDept(0);
             $vitem->save();
         }
     }
     $ret['order_id'] = $orderID;
     echo json_encode($ret);
     return false;
 }
Exemple #7
0
 function SaveFormData($upc)
 {
     $FANNIE_PRODUCT_MODULES = FannieConfig::config('PRODUCT_MODULES', array());
     $upc = BarcodeLib::padUPC($upc);
     $dbc = $this->db();
     $model = new ProductsModel($dbc);
     $model->upc($upc);
     if (!$model->load()) {
         // fully init new record
         $model->special_price(0);
         $model->specialpricemethod(0);
         $model->specialquantity(0);
         $model->specialgroupprice(0);
         $model->advertised(0);
         $model->tareweight(0);
         $model->start_date('0000-00-00');
         $model->end_date('0000-00-00');
         $model->discounttype(0);
         $model->wicable(0);
         $model->scaleprice(0);
         $model->inUse(1);
     }
     $stores = FormLib::get('store_id', array());
     for ($i = 0; $i < count($stores); $i++) {
         $model->store_id($stores[$i]);
         $taxes = FormLib::get('tax');
         if (isset($taxes[$i])) {
             $model->tax($taxes[$i]);
         }
         $fs = FormLib::get('FS', array());
         if (in_array($stores[$i], $fs)) {
             $model->foodstamp(1);
         } else {
             $model->foodstamp(0);
         }
         $scale = FormLib::get('Scale', array());
         if (in_array($stores[$i], $scale)) {
             $model->scale(1);
         } else {
             $model->scale(0);
         }
         $qtyFrc = FormLib::get('QtyFrc', array());
         if (in_array($stores[$i], $qtyFrc)) {
             $model->qttyEnforced(1);
         } else {
             $model->qttyEnforced(0);
         }
         $wic = FormLib::get('prod-wicable', array());
         if (in_array($stores[$i], $wic)) {
             $model->wicable(1);
         } else {
             $model->wicable(0);
         }
         $discount_setting = FormLib::get('discount');
         if (isset($discount_setting[$i])) {
             switch ($discount_setting[$i]) {
                 case 0:
                     $model->discount(0);
                     $model->line_item_discountable(0);
                     break;
                 case 1:
                     $model->discount(1);
                     $model->line_item_discountable(1);
                     break;
                 case 2:
                     $model->discount(1);
                     $model->line_item_discountable(0);
                     break;
                 case 3:
                     $model->discount(0);
                     $model->line_item_discountable(1);
                     break;
             }
         }
         $price = FormLib::get('price');
         if (isset($price[$i])) {
             $model->normal_price($price[$i]);
         }
         $cost = FormLib::get('cost');
         if (isset($cost[$i])) {
             $model->cost($cost[$i]);
         }
         $desc = FormLib::get('descript');
         if (isset($desc[$i])) {
             $model->description(str_replace("'", '', $desc[$i]));
         }
         $brand = FormLib::get('manufacturer');
         if (isset($brand[$i])) {
             $model->brand(str_replace("'", '', $brand[$i]));
         }
         $model->pricemethod(0);
         $model->groupprice(0.0);
         $model->quantity(0);
         $dept = FormLib::get('department');
         if (isset($dept[$i])) {
             $model->department($dept[$i]);
         }
         $size = FormLib::get('size');
         if (isset($size[$i])) {
             $model->size($size[$i]);
         }
         $model->modified(date('Y-m-d H:i:s'));
         $unit = FormLib::get('unitm');
         if (isset($unit[$i])) {
             $model->unitofmeasure($unit[$i]);
         }
         $subdept = FormLib::get('subdept');
         if (isset($subdept[$i])) {
             $model->subdept($subdept[$i]);
         }
         // lookup vendorID by name
         $vendorID = 0;
         $v_input = FormLib::get('distributor');
         if (isset($v_input[$i])) {
             $vendor = new VendorsModel($dbc);
             $vendor->vendorName($v_input[$i]);
             foreach ($vendor->find('vendorID') as $obj) {
                 $vendorID = $obj->vendorID();
                 break;
             }
         }
         $model->default_vendor_id($vendorID);
         $inUse = FormLib::get('prod-in-use', array());
         if (in_array($stores[$i], $inUse)) {
             $model->inUse(1);
         } else {
             $model->inUse(0);
         }
         $idEnf = FormLib::get('id-enforced', array());
         if (isset($idEnf[$i])) {
             $model->idEnforced($idEnf[$i]);
         }
         $local = FormLib::get('prod-local');
         if (isset($local[$i])) {
             $model->local($local[$i]);
         }
         $deposit = FormLib::get('deposit-upc');
         if (isset($deposit[$i])) {
             if ($deposit[$i] == '') {
                 $deposit[$i] = 0;
             }
             $model->deposit($deposit[$i]);
         }
         /* products.formatted_name is intended to be maintained automatically.
          * Get all enabled plugins and standard modules of the base.
          * Run plugins first, then standard modules.
          */
         $formatters = FannieAPI::ListModules('ProductNameFormatter');
         $fmt_name = "";
         $fn_params = array('index' => $i);
         foreach ($formatters as $formatter_name) {
             $formatter = new $formatter_name();
             $fmt_name = $formatter->compose($fn_params);
             if (isset($formatter->this_mod_only) && $formatter->this_mod_only) {
                 break;
             }
         }
         $model->formatted_name($fmt_name);
         $model->save();
     }
     /**
       If a vendor is selected, intialize
       a vendorItems record
     */
     if ($vendorID != 0) {
         $vitem = new VendorItemsModel($dbc);
         $vitem->vendorID($vendorID);
         $vitem->upc($upc);
         $sku = FormLib::get('vendorSKU');
         if (empty($sku)) {
             $sku = $upc;
         } else {
             /**
               If a SKU is provided, update any
               old record that used the UPC as a
               placeholder SKU.
             */
             $existsP = $dbc->prepare('
                 SELECT sku
                 FROM vendorItems
                 WHERE sku=?
                     AND upc=?
                     AND vendorID=?');
             $existsR = $dbc->execute($existsP, array($sku, $upc, $vendorID));
             if ($dbc->numRows($existsR) > 0 && $sku != $upc) {
                 $delP = $dbc->prepare('
                     DELETE FROM vendorItems
                     WHERE sku =?
                         AND upc=?
                         AND vendorID=?');
                 $dbc->execute($delP, array($upc, $upc, $vendorID));
             } else {
                 $fixSkuP = $dbc->prepare('
                     UPDATE vendorItems
                     SET sku=?
                     WHERE sku=?
                         AND vendorID=?');
                 $dbc->execute($fixSkuP, array($sku, $upc, $vendorID));
             }
         }
         $vitem->sku($sku);
         $vitem->size($model->size());
         $vitem->description($model->description());
         $vitem->brand($model->brand());
         $vitem->units(FormLib::get('caseSize', 1));
         $vitem->cost($model->cost());
         $vitem->save();
     }
     if ($dbc->table_exists('prodExtra')) {
         $extra = new ProdExtraModel($dbc);
         $extra->upc($upc);
         if (!$extra->load()) {
             $extra->variable_pricing(0);
             $extra->margin(0);
             $extra->case_quantity('');
             $extra->case_cost(0.0);
             $extra->case_info('');
         }
         $brand = FormLib::get('manufacturer');
         if (isset($brand[0])) {
             $extra->manufacturer(str_replace("'", '', $brand[0]));
         }
         $dist = FormLib::get('distributor');
         if (isset($dist[0])) {
             $extra->distributor(str_replace("'", '', $dist[0]));
         }
         $cost = FormLib::get('cost');
         if (isset($cost[0])) {
             $extra->cost($cost[0]);
         }
         $extra->save();
     }
     if (!isset($FANNIE_PRODUCT_MODULES['ProdUserModule'])) {
         if ($dbc->table_exists('productUser')) {
             $ldesc = FormLib::get_form_value('puser_description');
             $model = new ProductUserModel($dbc);
             $model->upc($upc);
             $model->description($ldesc);
             $model->save();
         }
     }
 }
Exemple #8
0
 /**
   Receiving AJAX callback.
   Lookup item in the order and display form fields
   to enter required info 
 */
 public function get_id_sku_handler()
 {
     $dbc = $this->connection;
     $model = new PurchaseOrderItemsModel($dbc);
     $model->orderID($this->id);
     $model->sku($this->sku);
     // lookup by SKU but if nothing is found
     // try using the value as a UPC instead
     $found = false;
     if ($model->load()) {
         $found = true;
     } else {
         $model->reset();
         $model->orderID($this->id);
         $model->internalUPC(BarcodeLib::padUPC($this->sku));
         $matches = $model->find();
         if (count($matches) == 1) {
             $model = $matches[0];
             $found = true;
         }
     }
     // item not in order. need all fields to add it.
     if (!$found) {
         echo '<div class="alert alert-danger">SKU not found in order</div>';
         echo '<form onsubmit="saveReceive(); return false;">';
         echo '<table class="table table-bordered">';
         echo '<tr><th>SKU</th><th>UPC</th><th>Brand</th><th>Description</th>
             <th>Qty Ordered</th><th>Cost (est)</th><th>Qty Received</th><th>Cost Received</th></tr>';
         $order = new PurchaseOrderModel($dbc);
         $order->orderID($this->id);
         $order->load();
         $item = new VendorItemsModel($dbc);
         $item->vendorID($order->vendorID());
         $item->sku($this->sku);
         $item->load();
         printf('<tr>
             <td>%s<input type="hidden" name="sku" value="%s" /></td>
             <td><input type="text" class="form-control" name="upc" value="%s" /></td>
             <td><input type="text" class="form-control" name="brand" value="%s" /></td>
             <td><input type="text" class="form-control" name="description" value="%s" /></td>
             <td><input type="text" class="form-control" name="orderQty" value="%s" /></td>
             <td><input type="text" class="form-control" name="orderCost" value="%.2f" /></td>
             <td><input type="text" class="form-control" name="receiveQty" value="%s" /></td>
             <td><input type="text" class="form-control" name="receiveCost" value="%.2f" /></td>
             <td><button type="submit" class="btn btn-default">Add New Item</button><input type="hidden" name="id" value="%d" /></td>
             </tr>', $this->sku, $this->sku, $item->upc(), $item->brand(), $item->description(), 1, $item->cost() * $item->units(), 0, 0, $this->id);
         echo '</table>';
         echo '</form>';
     } else {
         // item in order. just need received qty and cost
         echo '<form onsubmit="saveReceive(); return false;">';
         echo '<table class="table table-bordered">';
         echo '<tr><th>SKU</th><th>UPC</th><th>Brand</th><th>Description</th>
             <th>Qty Ordered</th><th>Cost (est)</th><th>Qty Received</th><th>Cost Received</th></tr>';
         if ($model->receivedQty() === null) {
             $model->receivedQty($model->quantity());
         }
         if ($model->receivedTotalCost() === null) {
             $model->receivedTotalCost($model->quantity() * $model->unitCost() * $model->caseSize());
         }
         printf('<tr>
             <td>%s<input type="hidden" name="sku" value="%s" /></td>
             <td>%s</td>
             <td>%s</td>
             <td>%s</td>
             <td>%s</td>
             <td>%.2f</td>
             <td><input type="text" class="form-control" name="qty" value="%s" /></td>
             <td><input type="text" class="form-control" name="cost" value="%.2f" /></td>
             <td><button type="submit" class="btn btn-default">Save</button><input type="hidden" name="id" value="%d" /></td>
             </tr>', $this->sku, $this->sku, $model->internalUPC(), $model->brand(), $model->description(), $model->quantity(), $model->quantity() * $model->unitCost() * $model->caseSize(), $model->receivedQty(), $model->receivedTotalCost(), $this->id);
         echo '</table>';
         echo '</form>';
     }
     return false;
 }
 /**
   AJAX call: ?id=<vendor ID>&sku=<vendor SKU>&qty=<# of cases>
   Add the given SKU & qty to the order
 */
 function get_id_sku_qty_handler()
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $orderID = $this->getOrderID($this->id, FannieAuth::getUID($this->current_user));
     $vitem = new VendorItemsModel($dbc);
     $vitem->vendorID($this->id);
     $vitem->sku($this->sku);
     $vitem->load();
     $pitem = new PurchaseOrderItemsModel($dbc);
     $pitem->orderID($orderID);
     $pitem->sku($this->sku);
     $pitem->quantity($this->qty);
     $pitem->unitCost($vitem->cost());
     $pitem->caseSize($vitem->units());
     $pitem->unitSize($vitem->size());
     $pitem->brand($vitem->brand());
     $pitem->description($vitem->description());
     $pitem->internalUPC($vitem->upc());
     $pitem->save();
     $ret = array();
     $pitem->reset();
     $pitem->orderID($orderID);
     $pitem->sku($this->sku);
     if (count($pitem->find()) == 0) {
         $ret['error'] = 'Error saving entry';
     } else {
         $ret['sidebar'] = $this->calculate_sidebar();
     }
     echo json_encode($ret);
     return False;
 }
 /**
   AJAX call: ?id=<vendor ID>&sku=<vendor SKU>&qty=<# of cases>
   Add the given SKU & qty to the order
 */
 function get_id_sku_qty_handler()
 {
     global $FANNIE_OP_DB;
     $dbc = FannieDB::get($FANNIE_OP_DB);
     $orderID = $this->getOrderID($this->id, FannieAuth::getUID($this->current_user));
     $vitem = new VendorItemsModel($dbc);
     $vitem->vendorID($this->id);
     $vitem->sku($this->sku);
     $vitem->load();
     $pitem = new PurchaseOrderItemsModel($dbc);
     $pitem->orderID($orderID);
     $pitem->sku($this->sku);
     if ($this->qty == 0) {
         $pitem->delete();
     } else {
         $pitem->quantity($this->qty);
         $pitem->unitCost($vitem->cost());
         $pitem->caseSize($vitem->units());
         $pitem->unitSize($vitem->size());
         $pitem->brand($vitem->brand());
         $pitem->description($vitem->description());
         $pitem->internalUPC($vitem->upc());
         $pitem->save();
     }
     $ret = array();
     $pitem->reset();
     $pitem->orderID($orderID);
     $pitem->sku($this->sku);
     if (count($pitem->find()) == 0 && $this->qty != 0) {
         $ret['error'] = 'Error saving entry';
     } else {
         $q = 'SELECT count(*) as rows,
             SUM(unitCost*caseSize*quantity) as estimatedCost
             FROM PurchaseOrderItems WHERE orderID=?';
         $p = $dbc->prepare_statement($q);
         $r = $dbc->exec_statement($p, array($orderID));
         $w = $dbc->fetch_row($r);
         $ret['count'] = $w['rows'];
         $ret['cost'] = sprintf('%.2f', $w['estimatedCost']);
     }
     echo json_encode($ret);
     return False;
 }