<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: owais alam</title>
    <description>The latest articles on DEV Community by owais alam (@alammowais).</description>
    <link>https://dev.to/alammowais</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F16791%2F74174da1-cd06-49f0-b0b8-4e36bd2e6917.jpg</url>
      <title>DEV Community: owais alam</title>
      <link>https://dev.to/alammowais</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alammowais"/>
    <language>en</language>
    <item>
      <title>Add Custom Stock Numbers to WooCommerce</title>
      <dc:creator>owais alam</dc:creator>
      <pubDate>Wed, 02 Aug 2017 08:30:34 +0000</pubDate>
      <link>https://dev.to/alammowais/add-custom-stock-numbers-to-woocommerce</link>
      <guid>https://dev.to/alammowais/add-custom-stock-numbers-to-woocommerce</guid>
      <description>&lt;p&gt;It often happens that stock is often distributed between stockrooms and production floors. The problem is that tracking stock that is distributed across two locations.&lt;/p&gt;

&lt;p&gt;Surprisingly, there is no built in solution for tracking distributed stock. I decided to create a custom solution that would involve custom fields.  There will be two custom ‘factory stock’ field and the ‘total stock’.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;total stock&lt;/strong&gt; field will contain the sum of the &lt;strong&gt;factory stock&lt;/strong&gt; and the WooCommerce built in stock control. This is an easy way of tracking the total stock numbers even when they are actually distributed across two locations.&lt;/p&gt;

&lt;p&gt;At the moment, this solution works for Simple Products but it could be expended to cover Variable Product as well. To make things even better, I have added two columns for these stock levels to the product list columns. &lt;/p&gt;

&lt;p&gt;Add the following code to the &lt;strong&gt;functions.php&lt;/strong&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

}

add_action('admin_head', 'my_custom_fonts');

function my_custom_fonts() {
echo '&amp;lt;style&amp;gt;
._total_inventory_field {
        color: red;
    }
._total_inventory_field input {
background-color:red;
color: #fff;
}
&amp;lt;/style&amp;gt;';
}

add_action('save_post', 'myWoo_savePost', 10, 2);

function myWoo_savePost($postID, $post) {
if (isset($post-&amp;gt;post_type) &amp;amp;&amp;amp; $post-&amp;gt;post_type == 'product') {
$shopstock = get_post_meta($post-&amp;gt;ID, '_stock', true);
$factorystock = get_post_meta($post-&amp;gt;ID, '_factory_inventory', true);
$totalstock = $shopstock + $factorystock;
update_post_meta($post-&amp;gt;ID, '_manage_stock', 'yes');
update_post_meta($post-&amp;gt;ID, '_total_inventory', $totalstock);
}
}

add_action( 'woocommerce_product_options_inventory_product_data', 'woo_add_custom_general_fields' );

// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save');

function woo_add_custom_general_fields() {

    global $woocommerce, $post;

echo '&amp;lt;div class="options_group"&amp;gt;';

woocommerce_wp_text_input(
array(
'id' =&amp;gt; '_factory_inventory',
'label' =&amp;gt; __( 'Factory Inventory', 'woocommerce' ),
'description' =&amp;gt; __( 'Please Enter Your Factory Count.', 'woocommerce' ),
'type' =&amp;gt; 'number',
)
);
// Number Field
woocommerce_wp_text_input(
array(
'id' =&amp;gt; '_total_inventory',
'label' =&amp;gt; __( 'Total Inventory', 'woocommerce' ),
'placeholder' =&amp;gt; "",
'description' =&amp;gt; __( 'Stock Must Match.', 'woocommerce' ),
'type' =&amp;gt; 'number',
'custom_attributes' =&amp;gt; array(
'step' =&amp;gt; 'any',
'min' =&amp;gt; '0',
)
)
);
echo '&amp;lt;/div&amp;gt;';

}
function woo_add_custom_general_fields_save( $post_id ){

$woocommerce_number_field = $_POST['_factory_inventory'];
if( !empty( $woocommerce_number_field ) )
update_post_meta( $post_id, '_factory_inventory', esc_attr( $woocommerce_number_field ) );
}


function add_custom_stock_values( $column ) {
$column['factory_stock'] = 'Factory Stock';
$column['total_stock'] = 'Total Stock';

return $column;
}
add_filter( 'manage_product_posts_columns', 'add_custom_stock_values');

function add_value_to_custom_stock( $column_name, $post_id ) {

    $custom_fields = get_post_custom( $post_id );

    switch ($column_name) {
        case 'factory_stock' :
echo $custom_fields['_factory_inventory'][0];
break;

        case 'total_stock' :
echo $custom_fields['_total_inventory'][0];
break;

        default:
    }
}

add_action( 'manage_product_posts_custom_column', 'add_value_to_custom_stock', 10, 2 );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conclusion&lt;br&gt;
In this article, I discussed how you could track stock levels that are distributed across two locations. I also added two columns in the Product List columns so that you could easily view the two stock levels.&lt;/p&gt;

</description>
      <category>woocommerce</category>
      <category>ecommerce</category>
    </item>
  </channel>
</rss>
