I posted this a couple of years ago - time is added in quite easily, but take note my instructions are for an older version of the module ....
Will note though that while I thought time selection was a great idea at the time, we have now abandoned it as we found it too hard to meet customer demands.


Zencart Order Delivery Date – Time Addition

Following documents changes I made to my 1.5.1 installation to add Order Delivery Time to your Zencart.

It assumes you have Order Delivery Date mod already installed.


Datebase changes
orders.order_delivery_date was added as type 'date'. This needs to be changed to 'datetime'.


admin/includes/classes

order.php

no change


admin/includes/languages/English

orders.php

Change -

define('TABLE_HEADING_DELIVERY_DATE', 'Desired Delivery Date');
define('ENTRY_DELIVERY_DATE', 'Desired Delivery Date:');
define('EMAIL_TEXT_DELIVERY_DATE', 'Desired Delivery Date:');

To -

define('TABLE_HEADING_DELIVERY_DATE', 'Desired Delivery Date');
define('ENTRY_DELIVERY_DATE', 'Desired Delivery Date:');
define('EMAIL_TEXT_DELIVERY_DATE', 'Desired Delivery Date:');

define('TABLE_HEADING_DELIVERY_TIME', 'Desired Delivery Time');
define('ENTRY_DELIVERY_TIME', 'Desired Delivery Time:');
define('EMAIL_TEXT_DELIVERY_TIME', 'Desired Delivery Time:');


invoice.php

Change -

define('ENTRY_DELIVERY_DATE', 'Desired Delivery Date:');

To -

define('ENTRY_DELIVERY_DATE', 'Desired Delivery Date:');
define('ENTRY_DELIVERY_TIME', 'Desired Delivery Time:');


packingslip.php

Change –

define('ENTRY_DELIVERY_DATE', 'Desired Delivery Date:');

To –

define('ENTRY_DELIVERY_DATE', 'Desired Delivery Date:');
define('ENTRY_DELIVERY_TIME', 'Desired Delivery Time:');


admin/

invoice.php

Change –

<tr>
<td class="main"><strong><?php echo ENTRY_DELIVERY_DATE; ?></strong></td>
<td class="main"><?php echo zen_date_long($order->info['order_delivery_date']); ?></td>
</tr>

To -

<tr>
<td class="main"><strong><?php echo ENTRY_DELIVERY_DATE; ?></strong></td>
<td class="main"><?php echo zen_date_long($order->info['order_delivery_date']); ?></td>
</tr>
<tr>
<td class="main"><strong><?php echo ENTRY_DELIVERY_TIME; ?></strong></td>
<td class="main"><?php echo substr(zen_datetime_short($order->info['order_delivery_date']) ,11); ?></td>
</tr>


orders.php

Change –

<td class="main"><strong><?php echo ENTRY_DELIVERY_DATE; ?></strong></td>
<td class="main"><?php echo zen_date_long($order->info['order_delivery_date']); ?></td>
</tr>

To –

<td class="main"><strong><?php echo ENTRY_DELIVERY_DATE; ?></strong></td>
<td class="main"><?php echo zen_date_long($order->info['order_delivery_date']); ?></td>
</tr>
<tr>
<td class="main"><strong><?php echo ENTRY_DELIVERY_TIME; ?></strong></td>
<td class="main"><?php echo substr(zen_datetime_short($order->info['order_delivery_date']) ,11); ?></td>
</tr>


packingslip.php

Change –

<tr>
<td class="main"><strong><?php echo ENTRY_DELIVERY_DATE; ?></strong></td>
<td class="main"><?php echo zen_date_long($order->info['order_delivery_date']); ?></td>
</tr>

To –

<tr>
<td class="main"><strong><?php echo ENTRY_DELIVERY_DATE; ?></strong></td>
<td class="main"><?php echo zen_date_long($order->info['order_delivery_date']); ?></td>
</tr>
<tr>
<td class="main"><strong><?php echo ENTRY_DELIVERY_TIME; ?></strong></td>
<td class="main"><?php echo substr(zen_datetime_short($order->info['order_delivery_date']) ,11); ?></td>
</tr>

email

no change

(this could be improved - but the time does appear next to delivery date.)


includes/classes

order.php

no change


includes/languages/english/TEMPLATE/

checkout_confirmation.php

Change –

// Begin Order Delivery Date
define('TABLE_HEADING_DELIVERY_DATE', 'Desired Delivery Date');
// End Order Delivery Date

To –

// Begin Order Delivery Date
define('TABLE_HEADING_DELIVERY_DATE', 'Desired Delivery Date');
define('TABLE_HEADING_DELIVERY_TIME', 'Desired Delivery Time by');
// End Order Delivery Date


checkout_process.php

Change –

// BEGIN Order Delivery Date
define('EMAIL_TEXT_DELIVERY_DATE', 'Desired Delivery Date:');
// END Order Delivery Date

To –

// BEGIN Order Delivery Date
define('EMAIL_TEXT_DELIVERY_DATE', 'Desired Delivery Date:');
define('EMAIL_TEXT_DELIVERY_TIME', 'Desired Delivery Time:');
// END Order Delivery Date


checkout_shipping.php

Change –

// BEGIN Order Delivery Date
define('TABLE_HEADING_DELIVERY_DATE', 'Desired Delivery Date is Required!');
define('ERROR_PLEASE_CHOOSE_DELIVERY_DATE', 'Please choose a delivery date');
// END Order Delivery

To –

// BEGIN Order Delivery Date
define('TABLE_HEADING_DELIVERY_DATE', 'Desired Delivery Date is Required!');
define('TABLE_HEADING_DELIVERY_TIME', 'Desired Delivery Time is Required!');
define('ERROR_PLEASE_CHOOSE_DELIVERY_DATE', 'Please choose a delivery date');
define('ERROR_PLEASE_CHOOSE_DELIVERY_TIME', 'Please choose a delivery time');
// END Order Delivery


includes/modules/pages/checkout_shipping

header_php.php

Change -

//BEGIN Order Delivery Date
if (zen_not_null($_POST['order_delivery_date'])) {
$_SESSION['order_delivery_date'] = zen_db_prepare_input($_POST['order_delivery_date']);
} elseif (MIN_DISPLAY_DELIVERY_DATE > 0)
{
$messageStack->add_session('checkout_shipping', ERROR_PLEASE_CHOOSE_DELIVERY_DATE, 'error');



To -

//BEGIN Order Delivery Date
if ($_POST['order_delivery_time'] == 'notselected') {
$messageStack->add_session('checkout_shipping', ERROR_PLEASE_CHOOSE_DELIVERY_TIME, 'error');
zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}

if (zen_not_null($_POST['order_delivery_date'])) {
$_SESSION['order_delivery_date'] = zen_db_prepare_input($_POST['order_delivery_date'] . " " . $_POST['order_delivery_time']);
} elseif (MIN_DISPLAY_DELIVERY_DATE > 0)
{
$messageStack->add_session('checkout_shipping', ERROR_PLEASE_CHOOSE_DELIVERY_DATE, 'error');


jscript_a-mootools.js

no change


jscript_b-calendar.js

no change


jscript_calendar_head.php

no change


includes/templates/TEMPLATE/css

checkout_shipping

no change


includes/templates/TEMPLATE/images
no change


includes/templates/TEMPLATE/templates

tpl_checkout_confirmation_default.php

Change -

<?php // BEGIN Order Delivery Date ?>
<br />
<h3><?php echo TABLE_HEADING_DELIVERY_DATE; ?></h3>
<h4><?php echo zen_date_long($order->info['order_delivery_date']); ?></h4><br />
</div>
<?php // END Order Delivery Date ?>

To -

<?php // BEGIN Order Delivery Date ?>
<br />
<h3><?php echo TABLE_HEADING_DELIVERY_DATE; ?></h3>
<h4><?php echo zen_date_long($order->info['order_delivery_date']); ?></h4><br />
<h3><?php echo TABLE_HEADING_DELIVERY_TIME; ?></h3>
<h4><?php echo substr(zen_datetime_short($order->info['order_delivery_date']),11); ?></h4><br />
</div>
<?php // END Order Delivery Date ?>


tpl_checkout_shipping_default.php

please note I force my customers to choose a 2 hour time window - you can amend the option value statements below to best suit your needs. Do note that I do record the upper limit of the time window in the order.

Its up to you what business logic you wish to apply.

Change -

<!-- Bof Order Delivery Date -->
<fieldset class="shipping" id="order_delivery_date">
<legend><?php echo TABLE_HEADING_DELIVERY_DATE; ?></legend>

<label for="order_delivery_date">Date:</label>
<input readonly="readonly" id="date" name="order_delivery_date" type="text">
</fieldset>
<!-- Eof Order Delivery Date -->

To -

<!-- Bof Order Delivery Date -->
<fieldset class="shipping" id="order_delivery_date">
<legend><?php echo TABLE_HEADING_DELIVERY_DATE; ?></legend>

<label for="order_delivery_date">Date:</label>
<input readonly="readonly" id="date" name="order_delivery_date" type="text">
</fieldset>

<fieldset class="shipping" id="order_delivery_time">
<legend><?php echo TABLE_HEADING_DELIVERY_TIME; ?></legend>
<label for="order_delivery_time">Time:</label>
<select name="order_delivery_time" id="delivery_time">
<option value="notselected" selected="selected">Please select ...</option>
<option value="11:00">09:00-11:00</option>
<option value="12:00">10:00-12:00</option>
<option value="13:00">11:00-13:00</option>
<option value="14:00">12:00-14:00</option>
<option value="15:00">13:00-15:00</option>
<option value="16:00">14:00-16:00</option>
<option value="17:00">15:00-17:00</option>
<option value="18:00">16:00-18:00</option>
</select>
</fieldset>

<!-- Eof Order Delivery Date -->