{"id":464,"date":"2010-10-17T15:10:21","date_gmt":"2010-10-17T23:10:21","guid":{"rendered":"https:\/\/www.numinix.com\/blog\/?p=464"},"modified":"2019-05-30T10:59:40","modified_gmt":"2019-05-30T17:59:40","slug":"how-to-add-backorder-support-to-your-zen-cart-store","status":"publish","type":"post","link":"https:\/\/www.numinix.com\/blog\/how-to-add-backorder-support-to-your-zen-cart-store\/","title":{"rendered":"How to Add Backorder Support to Your Zen Cart Store"},"content":{"rendered":"<p>As your store grows and you have to manage a larger inventory, you&#8217;ll often find items are out of stock as you await new stock from your suppliers.\u00a0 You can either set Zen Cart to disallow checkout when items are out of stock and potentially lose a large number of orders, or you can display a message to customers that products will be backordered and shipped when they become available.\u00a0 However, in the default Zen Cart, there is no way to set individual products as backordered or shipped so out of the box, this isn&#8217;t really an option.<\/p>\n<p>This tutorial is going to show you how to add the ability to assign backordered or shipped status to individual products in an order and how to generally setup a usable backorder system in your Zen Cart store.<\/p>\n<p>So, let&#8217;s begin!<\/p>\n<p><strong>Step 1<\/strong><\/p>\n<p>Begin by installing the Edit Order module.<\/p>\n<p><strong>Step 2<\/strong><\/p>\n<p>Go to ADMIN-&gt;LOCALIZATION-&gt;ORDER STATUS and create two new statuses called &#8216;Backordered&#8217; and &#8216;Shipped&#8217;.<\/p>\n<p><strong>Step 3<\/strong><\/p>\n<p>Go to ADMIN-&gt;TOOLS-&gt;INSTALL SQL PATCHES and paste the following code into the textarea:<\/p>\n<pre lang=\"mysql\" escaped=\"true\">ALTER TABLE orders_products ADD backorder tinyint(1) NOT NULL DEFAULT '0';\r\nALTER TABLE orders_products ADD shipped tinyint(1) NOT NULL DEFAULT '0';<\/pre>\n<p><strong>Step 4<\/strong><\/p>\n<p>Open \/admin\/edit_orders.php and perform the following modifications:<\/p>\n<p>Add near the top of the file around line 80:<\/p>\n<pre lang=\"php\" line=\"81\" escaped=\"true\">\/\/ Backorder \/ Shipped Support Modification\r\n$dropdown_options = array(array(\"id\" =&gt; 0, \"text\" =&gt; \"no\"),\r\n array(\"id\" =&gt; 1, \"text\" =&gt; \"yes\"));<\/pre>\n<p>Find:<\/p>\n<pre lang=\"php\" escaped=\"true\">$Query = \"update \" . TABLE_ORDERS_PRODUCTS . \" set<\/pre>\n<p>Add After:<\/p>\n<pre lang=\"php\" escaped=\"true\">\u00a0shipped = '\" . $products_details[\"shipped\"] . \"',\r\n backorder = '\" . $products_details[\"backorder\"] . \"',<\/pre>\n<p>Find:<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;!-- Begin Products Listing Block --&gt;\r\n &lt;table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\"&gt;\r\n &lt;tr&gt;\r\n &lt;td colspan=\"2\"&gt;&lt;?php echo TABLE_HEADING_PRODUCTS; ?&gt;&lt;\/td&gt;<\/pre>\n<p>Add After:<\/p>\n<pre lang=\"php\" escaped=\"true\">\u00a0&lt;td&gt;&lt;?php echo TABLE_HEADING_SHIPPED; ?&gt;&lt;\/td&gt;\r\n &lt;td&gt;&lt;?php echo TABLE_HEADING_BACKORDER; ?&gt;&lt;\/td&gt;<\/pre>\n<p>Find:<\/p>\n<pre lang=\"php\" escaped=\"true\">$order-&gt;products[$index] = array('qty' =&gt; $orders_products_query-&gt;fields['products_quantity'],\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'name' =&gt; zen_html_quotes($orders_products_query-&gt;fields['products_name']),<\/pre>\n<p>Add After:<\/p>\n<pre lang=\"php\" escaped=\"true\">\u00a0'shipped' =&gt; zen_html_quotes($orders_products_query-&gt;fields['shipped']),\r\n 'backorder' =&gt; zen_html_quotes($orders_products_query-&gt;fields['backorder']),<\/pre>\n<p>Find:<\/p>\n<pre lang=\"php\" escaped=\"true\">echo '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td valign=\"top\"&gt;' . \"&lt;input name='update_products[$orders_products_id][model]' size='12' value='\" . $order-&gt;products[$i]['model'] . \"'&gt;\" . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td align=\"center\" valign=\"top\"&gt;' . \"&lt;input name='update_products[$orders_products_id][tax]' size='3' value='\" . zen_display_tax_value($order-&gt;products[$i]['tax']) . \"'&gt;\" . '%&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td align=\"right\" valign=\"top\"&gt;' . \"&lt;input name='update_products[$orders_products_id][final_price]' size='5' value='\" . number_format($order-&gt;products[$i]['final_price'], 2, '.', '') . \"'&gt;\" . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td align=\"right\" valign=\"top\"&gt;' . $currencies-&gt;format($order-&gt;products[$i]['final_price'] * $order-&gt;products[$i]['qty'], true, $order-&gt;info['currency'], $order-&gt;info['currency_value']) . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0 &lt;\/tr&gt;' . \"\\n\";<\/pre>\n<p>Replace With:<\/p>\n<pre lang=\"php\" escaped=\"true\">echo '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td valign=\"top\"&gt;' . zen_draw_pull_down_menu(\"update_products[$orders_products_id][shipped]\", $dropdown_options, $order-&gt;products[$i]['shipped']) . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td valign=\"top\"&gt;' . zen_draw_pull_down_menu(\"update_products[$orders_products_id][backorder]\", $dropdown_options, $order-&gt;products[$i]['backorder']) . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td valign=\"top\"&gt;' . \"&lt;input name='update_products[$orders_products_id][model]' size='12' value='\" . $order-&gt;products[$i]['model'] . \"'&gt;\" . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td align=\"center\" valign=\"top\"&gt;' . \"&lt;input name='update_products[$orders_products_id][tax]' size='3' value='\" . zen_display_tax_value($order-&gt;products[$i]['tax']) . \"'&gt;\" . '%&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td align=\"right\" valign=\"top\"&gt;' . \"&lt;input name='update_products[$orders_products_id][final_price]' size='5' value='\" . number_format($order-&gt;products[$i]['final_price'], 2, '.', '') . \"'&gt;\" . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;td align=\"right\" valign=\"top\"&gt;' . $currencies-&gt;format($order-&gt;products[$i]['final_price'] * $order-&gt;products[$i]['qty'], true, $order-&gt;info['currency'], $order-&gt;info['currency_value']) . '&lt;\/td&gt;' . \"\\n\" .\r\n\u00a0\u00a0\u00a0\u00a0 '\u00a0\u00a0\u00a0 &lt;\/tr&gt;' . \"\\n\";<\/pre>\n<p><strong>Step 5<\/strong><\/p>\n<p>Open \/admin\/includes\/languages\/english\/edit_orders.php and add the following definition somewhere in the file:<\/p>\n<pre lang=\"php\" escaped=\"true\">define('TABLE_HEADING_BACKORDER', 'Backordered');\r\ndefine('TABLE_HEADING_SHIPPED', 'Shipped');<\/pre>\n<p><strong>Step 6<\/strong><\/p>\n<p>Open \/admin\/includes\/classes\/order.php and find:<\/p>\n<pre lang=\"php\" escaped=\"true\">$orders_products = $db-&gt;Execute(\"select orders_products_id, products_id, products_name, products_model, products_price, products_tax, products_quantity, final_price, onetime_charges, product_is_free\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 from \" . TABLE_ORDERS_PRODUCTS . \"\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 where orders_id = '\" . (int)$order_id . \"'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 order by orders_products_id\");<\/pre>\n<p>Replace With:<\/p>\n<pre lang=\"php\" escaped=\"true\">$orders_products = $db-&gt;Execute(\"select orders_products_id, products_id, products_name, products_model, products_price, products_tax, products_quantity, final_price, onetime_charges, product_is_free, backorder, shipped\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0 from \" . TABLE_ORDERS_PRODUCTS . \"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 where orders_id = '\" . (int)$order_id . \"'\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 order by orders_products_id\");<\/pre>\n<p>Find:<\/p>\n<pre lang=\"php\" escaped=\"true\">$this-&gt;products[$index] = array('qty' =&gt; $new_qty,\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'id' =&gt; $orders_products-&gt;fields['products_id'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'name' =&gt; $orders_products-&gt;fields['products_name'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'model' =&gt; $orders_products-&gt;fields['products_model'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'tax' =&gt; $orders_products-&gt;fields['products_tax'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'price' =&gt; $orders_products-&gt;fields['products_price'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'onetime_charges' =&gt; $orders_products-&gt;fields['onetime_charges'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'final_price' =&gt; $orders_products-&gt;fields['final_price'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'product_is_free' =&gt; $orders_products-&gt;fields['product_is_free']);<\/pre>\n<p>Replace With:<\/p>\n<pre lang=\"php\" escaped=\"true\">$this-&gt;products[$index] = array('qty' =&gt; $new_qty,\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'id' =&gt; $orders_products-&gt;fields['products_id'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'name' =&gt; $orders_products-&gt;fields['products_name'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'model' =&gt; $orders_products-&gt;fields['products_model'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'tax' =&gt; $orders_products-&gt;fields['products_tax'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'price' =&gt; $orders_products-&gt;fields['products_price'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'onetime_charges' =&gt; $orders_products-&gt;fields['onetime_charges'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'final_price' =&gt; $orders_products-&gt;fields['final_price'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'product_is_free' =&gt; $orders_products-&gt;fields['product_is_free'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'backorder' =&gt; $orders_products-&gt;fields['backorder'],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'shipped' =&gt; $orders_products-&gt;fields['shipped']);<\/pre>\n<p><strong>Step 7<\/strong><\/p>\n<p>Open \/admin\/invoice.php and find:<\/p>\n<pre lang=\"php\" escaped=\"true\">for ($i = 0, $n = sizeof($order-&gt;products); $i &lt; $n; $i++) {<\/pre>\n<p>Add After (anywhere inside the for loop):<\/p>\n<pre lang=\"php\" escaped=\"true\">\u00a0if ($order-&gt;products[$i]['backorder'] == 1) {\r\n\u00a0\u00a0 echo '&lt;br \/&gt;&lt;nobr&gt;&lt;small&gt;&lt;strong&gt;* Backordered *&lt;\/strong&gt;&lt;\/small&gt;&lt;\/nobr&gt;';\r\n } elseif ($order-&gt;products[$i]['shipped'] == 1) {\r\n\u00a0\u00a0 echo '&lt;br \/&gt;&lt;nobr&gt;&lt;small&gt;&lt;strong&gt;* Previously Shipped *&lt;\/strong&gt;&lt;\/small&gt;&lt;\/nobr&gt;';\r\n }<\/pre>\n<p><strong>Step 8<\/strong><\/p>\n<p>Repeat step 7 inside \/admin\/packingslip.php<\/p>\n<p><strong>Step 9<\/strong><\/p>\n<p>Open \/includes\/classes\/order.php and find:<\/p>\n<pre lang=\"php\" escaped=\"true\">$this-&gt;notify('NOTIFY_ORDER_PROCESSING_STOCK_DECREMENT_END');<\/pre>\n<p>Add After:<\/p>\n<pre lang=\"php\" escaped=\"true\">\/\/ begin back-order modification\r\n $backorder = 0;\r\n if ($stock_left &lt; 0 || $attribute_stock_left &lt; 0) { \/\/ less then 0 because this is the quantity remaining after this order\u00a0\r\n\u00a0\u00a0 $backorder = 1;\r\n }<\/pre>\n<p>Notice this edit also adds support for stock by attributes if you have that module installed.<\/p>\n<p>Find:<\/p>\n<pre lang=\"php\" escaped=\"true\">zen_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);<\/pre>\n<p>Add Before:<\/p>\n<pre lang=\"php\" escaped=\"true\">$sql_data_array['backorder'] = $backorder;<\/pre>\n<p><strong>Step 10<br \/>\n<\/strong><\/p>\n<p>Go to ADMIN-&gt;CONFIGURATION-&gt;STOCK and set Allow Checkout to true.<\/p>\n<p>Finished!<\/p>\n<p>Now, when customers go to order a product that is out of stock, a message will display to the customer (you can change this message in your language definitions;\u00a0 search for the text in ADMIN-&gt;TOOLS-&gt;DEVELOPER&#8217;S TOOLKIT) and they will still be able to order the product.\u00a0 When your shipper goes to ship the order, they will already see the out of stock items have been marked as backordered (as per the edits to the order() class).\u00a0 They can then ship the order and set the status of the individual products that were shipped to &#8220;Shipped&#8221; and set the entire order to &#8220;Backordered&#8221;.\u00a0 When the items come into stock, the shipper can set the individual items that were previously backordered to &#8220;Shipped&#8221; and also set the entire order to &#8220;Shipped&#8221;.<\/p>\n<p>Numinix is currently working on shipping modules that will rely on this type of backorder system to be in place in order to better manage shipments.\u00a0 For example, our Endicia XML Exporter \/ Importer module is setup to only ship orders that do not have &#8220;Shipped&#8221; status and for orders that are &#8220;Backordered&#8221; it will skip any products that have been marked as &#8220;Shipped&#8221;.\u00a0 Furthermore, the module will import any completed shipments back into Zen Cart and set the overall status of the order to &#8220;Shipped&#8221; if all products in the order have been shipped.<\/p>\n<p>If I&#8217;ve missed any steps or made a mistake, please let me know right away and I&#8217;ll update this tutorial with the corrected information.\u00a0 Otherwise, I hope this will help managing backorders a lot easier for your store!<\/p>\n<p><script type=\"application\/ld+json\">\n      {\n        \"@context\": \"http:\/\/schema.org\",\n        \"@type\": \"NewsArticle\",\n\t\"dateModified\": \"https:\/\/calendar.google.com\/calendar\/r\/day\/2019\/5\/29\",\n\t\"mainEntityOfPage\": \"https:\/\/www.numinix.com\/wordpress\/2010\/10\/17\/how-to-add-backorder-support-to-your-zen-cart-store\/\",\n\"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Jeff Lew\"\n  },\n   \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Numinix Web Developers\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"https:\/\/www.numinix.com\/images\/banner_hero_clarity.png\"\n    }\n    },\n        \"headline\": \"How to Add Backorder Support to Your Zen Cart Store\",\n        \"datePublished\": \"2010-10-17T16:00:41Z\",\n        \"image\": [\n          \"https:\/\/www.numinix.com\/wordpress\/wp-content\/uploads\/2019\/05\/web-design.jpg\"\n        ]\n      }\n    <\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As your store grows and you have to manage a larger inventory, you&#8217;ll often find items are out of stock as you await new stock from your suppliers.\u00a0 You can either set Zen Cart to disallow checkout when items are out of stock and potentially lose a large number of orders, or you can display&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,7],"tags":[204,205,143,8],"class_list":["post-464","post","type-post","status-publish","format-standard","hentry","category-zen-cart-optimization","category-zen-cart-modules","tag-backorders","tag-endicia","tag-tutorial","tag-zen-cart"],"modified_by":"Numinix Developer","jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/posts\/464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":0,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/posts\/464\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/media?parent=464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/categories?post=464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.numinix.com\/blog\/wp-json\/wp\/v2\/tags?post=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}