Kryptronic Software Support Forum

You are viewing this forum as a guest. Login to an existing account, or create a new account, to reply to topics and to create new topics.

#1 04-20-2017 12:06:07

gfrracing
Member
Registered: 07-03-2010
Posts: 72
Website

Local Inventory Oversell to change to Preorder

Local Inventory Oversell is there a way when you have inventory in inventory oversell that the add to cart button could say Preorder Item and be in the color red and then when there is no inventory on the oversell but in regular inventory
Say just  add to cart ?

Thanks, Gary

Offline

 

#2 04-21-2017 07:03:57

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19758
Website

Re: Local Inventory Oversell to change to Preorder

This can be done with a fairly simple edit to {private}/apps/ecom/ECOM/includes/prodshow.php.  Can you explain how you would like this handled in cases where you are selling more than one inventory item (package or choices) and not all of the items meet this criteria?


Nick Hendler

Offline

 

#3 04-21-2017 09:22:13

gfrracing
Member
Registered: 07-03-2010
Posts: 72
Website

Re: Local Inventory Oversell to change to Preorder

I don't sell in Package and or Choices. Its straight forward one inventory item. But allot of my Items are preorder Items. Just want this on the Local Inventory Oversell only. Regular inventory to be kept the way it is so I can use the package deals or choices if I need to.

Thanks, Gary

Offline

 

#4 04-22-2017 02:52:00

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

We are looking at doing something similar.

In prodshow.php the following code selects an inventory level of zero and a non zero oversell for the main item.

Code:

reset($proddisp);
$first_key = key($proddisp['xpricemap']);

     if (($proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] == '0') AND ($proddisp['xpricemap'][$first_key]['xinvid']['invoversell'] !== '0')) {

               do-something;
     }

Hope the above is useful in getting you started.

Last edited by robprotronica (04-22-2017 02:55:05)

Online

 

#5 04-22-2017 03:46:10

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

Hi Gary - I liked your idea of the "Pre-Order" button better than the route we were taking so I have set up something to try it out.

Find the following in prodshow.php - somewhere around line 270

Code:

 $buttonclass = 'kaddtocart'; if (!(empty($proddisp['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount';}

          print '<div class="ktopmarginfull"><input type="submit" class="' . $buttonclass . '" name="SUBMIT" id="' . $formid . '--SUBMIT" value="Add to Cart" onclick="jQuery(\'#' . $formid . '--SUBMITVALUE\').val(\'CART\');" />';

replace with the following:-

Code:

reset($proddisp);
$first_key = key($proddisp['xpricemap']);

   if (($proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] == '0') AND ($proddisp['xpricemap'][$first_key]['xinvid']['invoversell'] !== '0')) {

          $buttonclass = 'kaddtocart_pre'; if (!(empty($proddisp['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount_pre';}

          print '<div class="ktopmarginfull"><input type="submit" class="' . $buttonclass . '" name="SUBMIT" id="' . $formid . '--SUBMIT" value="Pre Order" onclick="jQuery(\'#' . $formid . '--SUBMITVALUE\').val(\'CART\');" />';
          } else {         
         
          $buttonclass = 'kaddtocart'; if (!(empty($proddisp['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount';}

          print '<div class="ktopmarginfull"><input type="submit" class="' . $buttonclass . '" name="SUBMIT" id="' . $formid . '--SUBMIT" value="Add to Cart" onclick="jQuery(\'#' . $formid . '--SUBMITVALUE\').val(\'CART\');" />';
   }//End of if statement

Then edit the css creating two new classes kaddtocart_pre and kdisallowdiscount_pre - essentially copies of the originals with any changes you want to make.

Not sure if it is necessary to have a separate kdisallowdiscount_pre, just added that for completeness.

Rob

Online

 

#6 04-22-2017 04:22:34

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

Just been playing with the above.

Looks like the "Display In Stock Info" needs to be turned off in General Store Settings - otherwise the display shows and "In-stock" message and a quantity equal to the unsold oversell level whilst the button is showing "Pre-Order".

I wonder where that price and stock level display gets put together - could be possible to modify that.

Anyone know where that comes from?

Thanks

Rob

Online

 

#7 04-23-2017 05:56:43

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

The stock quantity info gets put together in the include pricedisp.php

For "Pre-Order" Items we want to be able to display the number of items arriving and when they can be expected.

The most likely section to do this is around line 673.

Code:

     } elseif ((!(empty($proddisp['invdisp']['instock']))) && (!(empty($showinstock)))) {

          $stocklevel = 'In Stock';

          if ((!(empty($showinstocklevel))) && ($proddisp['invdisp']['invcalc'] == 'LOCALINV')) {

               $invlevel = $CORE_App->number_commify($proddisp['invdisp']['locallevel']);

               $stocklevel = $this->xhtml_encode($invlevel) . ' In Stock';

          } // End of if statement.

     } // End of if statement.

Have modified this to:-

Code:

          if ((!(empty($showinstocklevel))) && ($proddisp['invdisp']['invcalc'] == 'LOCALINV')) {

               
               $preorder=True;
               $newstockarr= '3-7 days';
               reset($proddisp);
               $first_key = key($proddisp['xpricemap']);
               
               if (($preorder) && ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] !== '0')) {
               
               $invlevel = ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel']); 
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' In UK Stock';

                                           
               } elseif (($preorder) && ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] == '0')) {
               
               $invlevel = $CORE_App->number_commify($proddisp['invdisp']['locallevel']);
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' Available in ' . $this->xhtml_encode($newstockarr);
               
               } else {
               
               $invlevel = $CORE_App->number_commify($proddisp['invdisp']['locallevel']);
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' In UK Stock';
               
               } // End of if statement.

          } // End of if statement.

All seems to be working - if it all checks out, the idea is to add a couple of columns to the inventory items so it is possible to select if an item can be pre-ordered when out of local inventory and to input  an estimated time when the item will become available.

If an item can be pre-ordered the "Oversell" value becomes the number of items expected to be arriving - otherwise the Oversell value gets added to the local inventory as per normal.

Need to do a bit more testing to make sure this all works as expected.

Last edited by robprotronica (04-23-2017 06:16:13)

Online

 

#8 04-24-2017 07:30:23

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19758
Website

Re: Local Inventory Oversell to change to Preorder

I'm just going to sit back and wait for you to intelligently answer your own questions, robprotronica.  Seems it takes you about 90 minutes to locate and solve each thing you stumble across.  Thanks for posting the answers back.

The only thing I'd have to add here is that you should really, really look at the buildprodoffers() function in {private}/apps/ecom/ECOM/ECOM.php.  Every time an offer is loaded (EVERY TIME) it is built by this function.  Not only will this completely de-mystify everything you are looking at, it will give you a single point at which you can override and change things before they ever get to the cart/displays/etc.


Nick Hendler

Offline

 

#9 04-24-2017 09:42:14

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

Thanks Nick,

buildprodoffers() is 760 lines of code!

Does look to be interesting - will have to spend some time getting to understand what is happening here.

Bedtime reading I think smile

Online

 

#10 04-25-2017 08:04:35

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19758
Website

Re: Local Inventory Oversell to change to Preorder

@robprotronica: Once you dig into it, you'll see that function basically spiders into four sub-functions (one for each offer type), and two or three pricing functions.  Basically the rest of the ECOM.php file is buildprodoffers() related, but that is the heart of where product offers are generated, so you can see all the incoming data, setup, overrides, pricing construction, options, etc.  Seeing how things are done there will give you an excellent framework for modding the software going forward.


Nick Hendler

Offline

 

#11 04-26-2017 06:55:05

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

Have spent a bit of time looking at this function and it really is the heart of where the product offers get put together.

For the Pre-Order button and associated inventory levels, the code we developed basically modifies the "oversell" feature to behave how we want it if the "Allow Pre-Order" column we added to inventory items is set to 1.

We could probably do that better by getting involved in the 'locallevel' inventory calculation in the Inventory display section of  buildprodoffers() and use the "Local Inventory on Purchase Order" to set the pre-order stock level - it would be a more accurate reflection of what is really happening so less of a work around.

Rob

Last edited by robprotronica (04-26-2017 06:56:12)

Online

 

#12 04-26-2017 07:26:43

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19758
Website

Re: Local Inventory Oversell to change to Preorder

@robprotronica: You've got it.  That's kind of how I handle it, and why buildprodoffers() was built the way it was.  Modify there and let the displays do the right things without mods, or with minor mods only.

Perhaps in your case all you need is to drop a custom cron job into {private}/apps/ecom/ECOM/tasks_hourly that runs every hour and sets the oversell amount = inventory on purchase order minus inventory on sales order plus inventory in stock.  Not sure if that works for you, but that's another way to do it.


Nick Hendler

Offline

 

#13 05-03-2017 12:39:39

gfrracing
Member
Registered: 07-03-2010
Posts: 72
Website

Re: Local Inventory Oversell to change to Preorder

@robprotronica  How did this function on setting oversale to Preorder work for you ? can you put a link so I can look at it.

Thanks, Gary

Offline

 

#14 05-03-2017 13:34:46

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

Hi Gary,

Site is in development at the moment - have sent you a PM with link to something that will show how things work - should be there for the next couple of days.

Rob

Online

 

#15 05-03-2017 14:02:55

gfrracing
Member
Registered: 07-03-2010
Posts: 72
Website

Re: Local Inventory Oversell to change to Preorder

Thanks Rob   I looked at it and sent you a PM. Their is something you might look at.

Thanks, Gary

Offline

 

#16 05-04-2017 06:06:53

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

@gfrracing politely pointed out that whilst the "Pre Order" button works for the detailed product display - in "Featured Product" displays and "Category Featured Items" displays the "Add to Cart" button still showed "Add to Cart" not "Pre-Order" and allowed the item to be added to the cart without giving any warning of stock not being immediately available.

To fix this two further files require some modification, both of which are located in:-

k9-private/apps/ecom/ECOM/includes

The first file to be modified is catfeatgriddetail.php

Around line 173 change:-

Code:

          $buttonclass = 'kbutton kaddtocart'; if (!(empty($offer['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount';}

          print '<a id="' . $linkid . '" href="' . $cartlink . '" class="' . $buttonclass . '" rel="nofollow"';

          if (!(empty($ajaxadd))) {

               $ajax_extras = '{\'ecom_skinwidget_minicart\': {\'app\': \'ecom\', \'ns\': \'skinwidgetsid\', \'ref\': \'ecom.skinwidget_minicart\'}}';
               $ajax_params = '{\'primary\': \'' . $linkid . '\', \'modal\': \'Shopping Cart\', \'extras\': ' . $ajax_extras . ', \'app\': \'ecom\', \'ns\': \'addcartquick\', \'ref\': \'' . $this->xhtml_encode($linkref) . '\'}';

               print ' onclick="return ajaxExec(' . $ajax_params . ');"';

          } // End of if statement.

          print '>Add to Cart</a>';

To the following:-

Code:

   reset($offer);
   $first_key = key($offer['xpricemap']);
   
   $preorder = $offer['xpricemap'][$first_key]['xinvid']['preorder'];
   
    if (($preorder) && ($offer['xpricemap'][$first_key]['xinvid']['invlevel'] == '0') && ($offer['xpricemap'][$first_key]['xinvid']['invoversell'] !== '0')) {

          $buttonclass = 'kbutton kaddtocart_pre'; if (!(empty($offer['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount_pre';}

          print '<a id="' . $linkid . '" href="' . $cartlink . '" class="' . $buttonclass . '" rel="nofollow"';

          if (!(empty($ajaxadd))) {

               $ajax_extras = '{\'ecom_skinwidget_minicart\': {\'app\': \'ecom\', \'ns\': \'skinwidgetsid\', \'ref\': \'ecom.skinwidget_minicart\'}}';
               $ajax_params = '{\'primary\': \'' . $linkid . '\', \'modal\': \'Shopping Cart\', \'extras\': ' . $ajax_extras . ', \'app\': \'ecom\', \'ns\': \'addcartquick\', \'ref\': \'' . $this->xhtml_encode($linkref) . '\'}';

               print ' onclick="return ajaxExec(' . $ajax_params . ');"';

          } // End of if statement.

          print '>Pre Order</a>';    
    
    } else {

          $buttonclass = 'kbutton kaddtocart'; if (!(empty($offer['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount';}

          print '<a id="' . $linkid . '" href="' . $cartlink . '" class="' . $buttonclass . '" rel="nofollow"';

          if (!(empty($ajaxadd))) {

               $ajax_extras = '{\'ecom_skinwidget_minicart\': {\'app\': \'ecom\', \'ns\': \'skinwidgetsid\', \'ref\': \'ecom.skinwidget_minicart\'}}';
               $ajax_params = '{\'primary\': \'' . $linkid . '\', \'modal\': \'Shopping Cart\', \'extras\': ' . $ajax_extras . ', \'app\': \'ecom\', \'ns\': \'addcartquick\', \'ref\': \'' . $this->xhtml_encode($linkref) . '\'}';

               print ' onclick="return ajaxExec(' . $ajax_params . ');"';

          } // End of if statement.

          print '>Add to Cart</a>';
          
    } // End of if statement.

Next file to be modified is prodlistitem.php

Around line 137 change:-

Code:

 

     $buttonclass = 'kbutton kmid krightmarginqtr kaddtocart'; if (!(empty($proddisp['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount';}

     print '<a id="' . $linkid . '" href="' . $cartlink . '" class="' . $buttonclass . '" rel="nofollow"';

     if (!(empty($ajaxadd))) {

          $ajax_extras = '{\'ecom_skinwidget_minicart\': {\'app\': \'ecom\', \'ns\': \'skinwidgetsid\', \'ref\': \'ecom.skinwidget_minicart\'}}';
          $ajax_params = '{\'primary\': \'' . $linkid . '\', \'modal\': \'Shopping Cart\', \'extras\': ' . $ajax_extras . ', \'app\': \'ecom\', \'ns\': \'addcartquick\', \'ref\': \'' . $this->xhtml_encode($linkref) . '\'}';

          print ' onclick="return ajaxExec(' . $ajax_params . ');"';

     } // End of if statement.

     print '>Add to Cart</a>';

To the following:-

Code:

   reset($proddisp);
   $first_key = key($proddisp['xpricemap']);
   
   $preorder = $proddisp['xpricemap'][$first_key]['xinvid']['preorder'];
         
   if (($preorder) && ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] == '0') && ($proddisp['xpricemap'][$first_key]['xinvid']['invoversell'] !== '0')) {
   
        $buttonclass = 'kbutton kmid krightmarginqtr kaddtocart_pre'; if (!(empty($proddisp['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount_pre';}

     print '<a id="' . $linkid . '" href="' . $cartlink . '" class="' . $buttonclass . '" rel="nofollow"';

     if (!(empty($ajaxadd))) {

          $ajax_extras = '{\'ecom_skinwidget_minicart\': {\'app\': \'ecom\', \'ns\': \'skinwidgetsid\', \'ref\': \'ecom.skinwidget_minicart\'}}';
          $ajax_params = '{\'primary\': \'' . $linkid . '\', \'modal\': \'Shopping Cart\', \'extras\': ' . $ajax_extras . ', \'app\': \'ecom\', \'ns\': \'addcartquick\', \'ref\': \'' . $this->xhtml_encode($linkref) . '\'}';

          print ' onclick="return ajaxExec(' . $ajax_params . ');"';

     } // End of if statement.

     print '>Pre Order</a>';
         
   } else {   

     $buttonclass = 'kbutton kmid krightmarginqtr kaddtocart'; if (!(empty($proddisp['disallowdiscount']))) {$buttonclass .= ' kdisallowdiscount';}

     print '<a id="' . $linkid . '" href="' . $cartlink . '" class="' . $buttonclass . '" rel="nofollow"';

     if (!(empty($ajaxadd))) {

          $ajax_extras = '{\'ecom_skinwidget_minicart\': {\'app\': \'ecom\', \'ns\': \'skinwidgetsid\', \'ref\': \'ecom.skinwidget_minicart\'}}';
          $ajax_params = '{\'primary\': \'' . $linkid . '\', \'modal\': \'Shopping Cart\', \'extras\': ' . $ajax_extras . ', \'app\': \'ecom\', \'ns\': \'addcartquick\', \'ref\': \'' . $this->xhtml_encode($linkref) . '\'}';

          print ' onclick="return ajaxExec(' . $ajax_params . ');"';

     } // End of if statement.

     print '>Add to Cart</a>';
     
   } // End of if statement.

Note the css classes for the "Pre Order" button have been modified as per the original product detail page - this is only necessary if the styling of the "Pre Order" button needs to be changed, otherwise they can be left alone and I think the added if/else statement could be moved closer to the line:-

Code:

 print '>AddtoCart</a>':

The complete list of files that have been modified is:-

prodshow.php
pricedisp.php
catfeatgriddetail.php
prodlistitem.php

We also added two extra columns (preorder and newstockarr) to the inventory items to control the Pre Order status and provide information on availability, so the full code change in pricedisp.php becomes :-

Code:

               reset($proddisp);
               $first_key = key($proddisp['xpricemap']);
               
               $preorder = $proddisp['xpricemap'][$first_key]['xinvid']['preorder'];
               $newstockarr= $proddisp['xpricemap'][$first_key]['xinvid']['newstockarr'];

               
               if (($preorder) && ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] !== '0')) {
               
               $invlevel = ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel']); 
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' In UK Stock';

                                           
               } elseif (($preorder) && ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] == '0')) {
               
               $invlevel = $CORE_App->number_commify($proddisp['invdisp']['locallevel']);
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' Available in ' . $this->xhtml_encode($newstockarr);
               
               } else {
               
               $invlevel = $CORE_App->number_commify($proddisp['invdisp']['locallevel']);
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' In UK Stock';
               
               } // End of if statement.

The newstockarr column could be changed to something more generic to fit a wider range of possibilities.

Hopefully we have now got it covered smile

Rob

Online

 

#17 09-12-2017 02:08:48

sdn
Member
From: UK
Registered: 05-29-2007
Posts: 879

Re: Local Inventory Oversell to change to Preorder

Could this pre-ordering function be added as a standard feature in K902? The current Local Inventory Oversell system provides no indication to the customer that they are pre-ordering so we cannot use it as it would lead to a great deal of unhappy customers.


Simon

Online

 

#18 09-12-2017 07:27:04

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19758
Website

Re: Local Inventory Oversell to change to Preorder

sdn wrote:

Could this pre-ordering function be added as a standard feature in K902? The current Local Inventory Oversell system provides no indication to the customer that they are pre-ordering so we cannot use it as it would lead to a great deal of unhappy customers.

I will seriously review and consider it.


Nick Hendler

Offline

 

#19 09-12-2017 08:26:41

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

We are using both the Pre-Order system as outlined above and the Oversell as designed - both are really useful in their own ways.

If I was going over this again the one main change I would make is to include an extra column in Inventory items > Inventory Local to set the pre-order quantity rather than hijacking the "Oversell" quantity.

"Inventory on Purchase Order" is another candidate as a hijack-able quantity to set the pre-order level but again it may not always reflect what is likely to be available in the correct time frame. I may just go back and add that column on our site.

If a separate column is used for pre-order then there will need to be a few checks on calculations to make sure quantities are correct but, in theory at least, the quantity to display should be a bit easier to calculate, even if using "Oversell" and "Pre-Order" on the same Inventory Item at the same time.

Mentioning calculating quantities - our original modification to pricedisp.php did not get the calculation correct.

The inventory Local Level is the physical stock quantity and does not get decremented until an order for that item is completed - something we did not notice, coming from a system where stock is decremented when the order is placed.

The below code shows the modification to pricedisp.php that correctly takes care of the inventory levels and switches to "Pre-Order" as soon as the available stock is sold.

Code somewhere around line 677.

Code:

          if ((!(empty($showinstocklevel))) && ($proddisp['invdisp']['invcalc'] == 'LOCALINV')) {

// +--
// | Modified to show new stock arriving 
// +--              
               reset($proddisp);
               $first_key = key($proddisp['xpricemap']);
               
               $preorder = $proddisp['xpricemap'][$first_key]['xinvid']['preorder'];
               $newstockarr= $proddisp['xpricemap'][$first_key]['xinvid']['newstockarr'];
               $invavailable = $proddisp['xpricemap'][$first_key]['xinvid']['invlevel'] - $proddisp['xpricemap'][$first_key]['xinvid']['invsalesorder'];
               
               if (($preorder) && ($invavailable > 0)) {
               
               $invlevel = ($proddisp['xpricemap'][$first_key]['xinvid']['invlevel']); 
               
               $stocklevel = $this->xhtml_encode($invavailable) . ' In UK Stock';

                                           
               } elseif (($preorder) && ($invavailable <= 0)) {
               
               $invlevel = $CORE_App->number_commify($proddisp['invdisp']['locallevel']);
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' Available in ' . $this->xhtml_encode($newstockarr);
               
               } else {
               
               $invlevel = $CORE_App->number_commify($proddisp['invdisp']['locallevel']);
               
               $stocklevel = $this->xhtml_encode($invlevel) . ' In UK Stock';
               
               } // End of if statement.

          } // End of if statement.

Hope the above helps.

Online

 

#20 09-12-2017 10:04:31

sdn
Member
From: UK
Registered: 05-29-2007
Posts: 879

Re: Local Inventory Oversell to change to Preorder

Thanks for the details on making the changes. I might add it and see how well it works for us.

The reason for asking Nick is that it is much easier if it just gets added as standard option. We made quite a few mods to version 8 code but it was a real pain when the software was updated which happened quite a lot. You have to trawl through the code to check whats changed and if you can just throw the mod back in or if it needs amending - very time consuming.


Simon

Online

 

#21 09-13-2017 07:37:40

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19758
Website

Re: Local Inventory Oversell to change to Preorder

Oversell in K9 can be used for whatever you want to use it for. 

We have one client who buys large rolls of fabric-like product, then cuts that product to sell smaller rolls to customers.  Those smaller rolls are listed on the site with oversell to allow the client to still sell the smaller rolls, even when none remain (more need to be cut from a large roll).  The item showing as sold but OOS in the Batch Shipping Manager is the client's indication that more smaller rolls need to be made.

Others use it for pre-order, as per this thread. 

I think if we were to incorporate this mod, it would be done in a fashion where there's either a true/false field, or a date input field (for a future arrival date), on the inventory item level that basically changes the display and messaging related to oversold items to use preorder language.  That would extend to all displays/buttons/messaging and tag the item as preorder with a special note in the shopping cart.

Still thinking on this...


Nick Hendler

Offline

 

#22 09-13-2017 07:55:50

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

Hi Nick,

We added a two fields to Inventory items - one to set Pre-Order True or False and one to include some text to go after the, "pre-order quantity", e.g "available in 3-7 days" (picked up with the $newstockarr variable we added to pricedisp.php above).

We then went through the following displays: -

prodshow.php
pricedisp.php
catfeatgriddetail.php
prodlistitem.php

And made sure all the buttons say the right things.

I think there are a couple of other displays that probably need modifying but we have not hit those displays with products that have pre-order - We know we have not looked at,  "Inventory Item(s): Multiple Item Display Type" for product offers and there may be some others.

The "Inventory Item(s): Multiple Item Display Type" is sort of on my to-do list but not with a high priority.

Like the idea of putting a note on the item in the shopping cart - maybe will take a look at that.

Last edited by robprotronica (09-13-2017 08:22:50)

Online

 

#23 09-13-2017 08:18:52

robprotronica
Member
Registered: 12-16-2008
Posts: 106

Re: Local Inventory Oversell to change to Preorder

I think I should add a note here -

The system we implemented really only works for product offers where there is a single inventory item or where there is a single item plus options (accessories) BUT the option items are not in the pre-order system.

A main item can be pre-ordered with accessories - but if accessories are out of stock they are simply out of stock  - we did not want to think about the complexities of trying to deal with inventory items that can be included as an option, are also sold with their own product offer and could be pre-ordered.

Online

 

#24 09-14-2017 07:37:06

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19758
Website

Re: Local Inventory Oversell to change to Preorder

Thanks, Rob.  Extending that functionality to other offer types is fairly trivial.  I appreciate you posting that info up here for anyone who is planning on implementing this mod.


Nick Hendler

Offline

 

#25 09-18-2017 10:20:12

sdn
Member
From: UK
Registered: 05-29-2007
Posts: 879

Re: Local Inventory Oversell to change to Preorder

I have finally had some time to get my head around this mod. What is the intended function of invpurchord column? Could we use that for the pre-order quantities rather than adding a new column? That would work better if Quickbooks was driving the inventory levels as it tracks inventory we have on order with suppliers. Is the new Quickbooks interface available now?

Last edited by sdn (09-18-2017 10:27:37)


Simon

Online

 

Board footer