Order Delivery Date Support Thread
This contribution will add a field during checkout where a customer can select the date which they would like a product to be delivered.
The requested delivery date will then appear on:
- Confirm Order Page
- Email sent to customer when order is processed
- In the Admin: Edit Order, Invoice, Packing Slip
- When you update the status of an order it will include the delivery date on the email generated to the customer (if you select to notify customer)
- On the main orders page in the Admin, there is a new table field that shows the requested delivery date
This is very helpful for stores with perishable items, such as food or flowers.
This contribution is based off of the "ship date and cancel date" contribution, and i would like to make sure credit goes to everyone that has worked on this before myself (I did my best to notate this in the files). There were a number of issues with the code in that contribution and they are aiming to make more of a "PO" contribution. I simply needed a solid delivery date feature for one of my stores, so i am putting the code up for everyone else to benefit.
This is my first contribution to the zen-cart community, and it is my way of saying thanks for all the help on the forums and giving back. I really believe in this project and am proud to offer what i can.
I will post a link to the contribution's download page once it is approved by the Zen Cart administrators. (I wanted to make this thread first so i could include it in the readme.txt file)
Let the journey begin!
-MrMeech
Re: Order Delivery Date Support Thread
This sounds great! Exactly what I was looking for for my personal gift store!
Re: Order Delivery Date Support Thread
The download link is now available:
http://www.zen-cart.com/index.php?main_page=product_contrib_info&products_id=976
Please let me know how this works out for you - If the installation went smoothly, please let me know! Or, if you ran into any problems or have any suggestions, please let me know that as well.
Thanks! :smile:
Re: Order Delivery Date Support Thread
mrmeech,
Thank you for this contribution it is exactly what I was looking for. Installation went well although I did make a few changes to integrate with Ty's tracking module.
Thanks again!!:D
Re: Order Delivery Date Support Thread
Quote:
Originally Posted by
duffy
mrmeech,
Thank you for this contribution it is exactly what I was looking for. Installation went well although I did make a few changes to integrate with Ty's tracking module.
Thanks again!!:D
I'm glad it worked out for ya. :)
Re: Order Delivery Date Support Thread
This is a great addition! Thank you.
I have one question though. the site I'm working on offers same day delivery if they order before 10am. Is there any way that I can have it not have today's date listed after 10 am???
Re: Order Delivery Date Support Thread
Quote:
Originally Posted by
pinixdesign
This is a great addition! Thank you.
I have one question though. the site I'm working on offers same day delivery if they order before 10am. Is there any way that I can have it not have today's date listed after 10 am???
I just wrote some code for ya - Open up /includes/templates/YOURTEMPLATE/templates/tpl_checkout_shipping_default.php
Find this code (it's near the bottom):
Code:
<!-- Bof Ship Date -->
<fieldset class="shipping" id="order_delivery_date">
<legend><?php echo TABLE_HEADING_DELIVERY_DATE; ?></legend>
<select name="order_delivery_date">
<?php
for ($i=0, $n=50; $i < $n; $i++) {
$now[$i] = strtotime ("+$i day", time());
if ( strftime ("%w",$now[$i])<>0
AND strftime ("%m-%d",$now[$i])<>"12-25"
AND strftime ("%m-%d",$now[$i])<>"12-26"
AND strftime ("%m-%d",$now[$i])<>"01-01"
){
echo '<option value="'.strftime ("%Y-%m-%d",$now[$i]).'">'.strftime ("%A %d %B %Y",$now[$i]).'</option>';
}
}
?>
</select>
</fieldset>
<!-- Eof Ship Date -->
And replace it with this:
Code:
<!-- Bof Ship Date -->
<fieldset class="shipping" id="order_delivery_date">
<legend><?php echo TABLE_HEADING_DELIVERY_DATE; ?></legend>
<select name="order_delivery_date">
<?php
$current_time = (date("h:ia"));
$current_hour = (date("H")); // 24 hour time as two digits
$begin_cutoff_hour = '10'; // set on a 24 hour time clock
$end_cutoff_hour = '19'; // set on a 24 basis - "19" would be 7pm
$time_zone_adjust = '0'; // use this to adjust your hour value forward or backwards
$display_current_time = false; // Chage to "true" to check your system time for adjustments to $time_zone_adjust. Result will be echo'd to browser below ship date dropdown menu
$current_adjusted_hour = ($current_hour + $time_zone_adjust);
if($current_adjusted_hour <= $begin_cutoff_hour) {
$date_offset = '0';
}
else {
$date_offset = '1';
}
for ($i=$date_offset, $n=50; $i < $n; $i++) {
$now[$i] = strtotime ("+$i day", time());
if ( strftime ("%w",$now[$i])<>0
AND strftime ("%m-%d",$now[$i])<>"12-25"
AND strftime ("%m-%d",$now[$i])<>"12-26"
AND strftime ("%m-%d",$now[$i])<>"01-01"
){
echo '<option value="'.strftime ("%Y-%m-%d",$now[$i]).'">'.strftime ("%A %d %B %Y",$now[$i]).'</option>';
}
}
?>
</select>
</fieldset>
<?PHP
if ($display_current_time == true) {
echo "YOUR SYSTEM TIME IS $current_time";
}
?>
<!-- Eof Ship Date -->
Change $display_current_time to true to see if the time output by the server/browser matches your time zone, and then adjust $time_zone_adjust as needed.
Let me know if this works for ya..
Re: Order Delivery Date Support Thread
Thank you so much! It seems to be working great so far. I will test it tomorrow morning just to be sure. You are a life saver!
Re: Order Delivery Date Support Thread
Hi mrmeech,
Don't mean to be a pest but I think I broke something on my install of this mod and maybe you can direct me to a fix.
In an effort to change the display of the ship date I changed the code in the
/includes/templates/YOURTEMPLATE/templates/tpl_checkout_shipping_default.php
file.
On the line to print the date I changed the order of Y , m, d to m, d, Y. It seemed to work fine, at least it shows the correct date order in the drop down at check out and displays the correct date order on the confirmation page as well. I also made this change in the emails and it displays properly there too.
But now I'm getting the date of 11/30/1999 in the orders list on the admin side for all orders, regardless of date selected. Could you guide me to what I need to correct?? And since I'm NOT a programmer, perhaps my approach is completely wrong.:shocking:
Re: Order Delivery Date Support Thread
Quote:
Originally Posted by
duffy
Hi mrmeech,
Don't mean to be a pest but I think I broke something on my install of this mod and maybe you can direct me to a fix.
In an effort to change the display of the ship date I changed the code in the
/includes/templates/YOURTEMPLATE/templates/tpl_checkout_shipping_default.php
file.
On the line to print the date I changed the order of Y , m, d to m, d, Y. It seemed to work fine, at least it shows the correct date order in the drop down at check out and displays the correct date order on the confirmation page as well. I also made this change in the emails and it displays properly there too.
But now I'm getting the date of 11/30/1999 in the orders list on the admin side for all orders, regardless of date selected. Could you guide me to what I need to correct?? And since I'm NOT a programmer, perhaps my approach is completely wrong.:shocking:
Well, changing that line of code can actually cause it to be inserted into the database record incorrectly, so it doesn't surprise me that you would wind up with something awkward happening. You could have also broken the date array that generates the list of dates... anyway, do some reading here if you're interested in learning about dates and mysql databases (i'm a strong encourager of learning): http://www.tizag.com/mysqlTutorial/mysql-date.php
What is it exactly that you want to do? Have the dropdown display the year at the end instead of the beginning of each date value?