public function get_id_view() { global $FANNIE_OP_DB; $dbc = FannieDB::get($FANNIE_OP_DB); $id = $this->id; $delQ = $dbc->prepare_statement("DELETE FROM vendorSRPs WHERE vendorID=?"); $delR = $dbc->exec_statement($delQ, array($id)); $query = ' SELECT v.upc, v.sku, v.cost, CASE WHEN a.margin IS NOT NULL THEN a.margin WHEN b.margin IS NOT NULL THEN b.margin ELSE 0 END AS margin, COALESCE(n.shippingMarkup, 0) as shipping, COALESCE(n.discountRate, 0) as discount FROM vendorItems as v LEFT JOIN vendorDepartments AS a ON v.vendorID=a.vendorID AND v.vendorDept=a.deptID INNER JOIN vendors AS n ON v.vendorID=n.vendorID LEFT JOIN products as p ON v.upc=p.upc AND v.vendorID=p.default_vendor_id LEFT JOIN departments AS b ON p.department=b.dept_no WHERE v.vendorID=? AND (a.margin IS NOT NULL OR b.margin IS NOT NULL)'; $fetchP = $dbc->prepare($query); $fetchR = $dbc->exec_statement($fetchP, array($id)); $upP = $dbc->prepare(' UPDATE vendorItems SET srp=?, modified=' . $dbc->now() . ' WHERE vendorID=? AND sku=?'); $insP = false; if ($dbc->tableExists('vendorSRPs')) { $insP = $dbc->prepare_statement('INSERT INTO vendorSRPs VALUES (?,?,?)'); } $rounder = new \COREPOS\Fannie\API\item\PriceRounder(); while ($fetchW = $dbc->fetch_array($fetchR)) { // calculate a SRP from unit cost and desired margin $adj = \COREPOS\Fannie\API\item\Margin::adjustedCost($fetchW['cost'], $fetchW['discount'], $fetchW['shipping']); $srp = \COREPOS\Fannie\API\item\Margin::toPrice($adj, $fetchW['margin']); $srp = $rounder->round($srp); $upR = $dbc->execute($upP, array($srp, $id, $fetchW['sku'])); if ($insP) { $insR = $dbc->exec_statement($insP, array($id, $fetchW['upc'], $srp)); } } $ret = "<b>SRPs have been updated</b><br />"; $ret .= sprintf('<p> <a class="btn btn-default" href="index.php">Price Batch Tools</a> <a class="btn btn-default" href="%s/item/vendors/VendorIndexPage.php?vid=%d">Vendor Settings & Catalog</a> </p>', $this->config->get('URL'), $id); return $ret; }
private function getSRP($cost, $margin) { $srp = Margin::toPrice($cost, $margin); $pr = new PriceRounder(); return $pr->round($srp); }