Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

usps api shipping label, online labels integrated


goldencrown

Recommended Posts

This looks like a great contribution.. I have been installing it and slowly getting it set up but I am getting alot of error pop ups on admin/customershippinglabel.php

 

Runtime error: Line 313 Object Expected etc..

 

Any ideas what may

Link to comment
Share on other sites

  • Replies 156
  • Created
  • Last Reply

Top Posters In This Topic

Hello all!

 

 

Sorry for not making a new update with all the corrections but during this time of year it is really hard for me to take the time. I will be looking at the forum at the begging of Jan 04 to make all corrections. I will be also adding international shipping to this contribution as well. But I do have something to add to the contribution today. I have seen some request to have the date to be current with what we see on the shipping date. So I have taken the time to figure out how to code this. So here is my best shot!

 

starting around line 2227 you will find the code (it is tords the bottom of the file)

 

<tr>
 <td align='right' class="mainText"><span class="redbarkerText">*</span> Shipping Date </td>
 <td class="mainText"><select id='ShippingDate' tabindex='27' name='shipping_date'>

 <option value='0' >Friday, 12/12/2003</option> 
 <option value='1' >Saturday, 12/13/2003</option> 
 <option value='2' >Sunday, 12/14/2003</option> 
 <option value='3' >Monday, 12/15/2003</option>
 </select>
 <span style="display:none"><label for='ShippingDate'>* Shipping Date </label></span>
 </td>
</tr>

 

 

 

 

replace it with this

<tr>
 <td align='right' class="mainText"><span class="redbarkerText">*</span> Shipping Date </td>
 <td class="mainText"><select id='ShippingDate' tabindex='27' name='shipping_date'>

 <option value='0' ><? print date("l,/m/j/Y"); ?></option> 
 <option value='1' ><?php
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));

$tomorrow = date('l, F d, Y  ',$tomorrow);

echo $tomorrow
?></option> 
 <option value='2' ><?php
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+2,date("Y"));

$tomorrow = date('l, F d, Y  ',$tomorrow);

echo $tomorrow
?></option> 
 <option value='3' ><?php
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+3,date("Y"));

$tomorrow = date('l, F d, Y  ',$tomorrow);

echo $tomorrow
?></option>
 </select>
 <span style="display:none"><label for='ShippingDate'>* Shipping Date </label></span>
 </td>
</tr>

 

This will give you the dates to choose from. This should help with creating shipping labels for two to three days in advance. Also other plans are to make a ups shipping contribution there web site works very strange. I am really not to fond of it. If any one else has a found a third party that they are using. I would like some input or a least a better format to work with.

 

usps tip make friends with the men that work at the dock of you main usps. they can save your bum if you have past the time to drop of boxs. :D

 

 

thanks for all the great feed back it really helps.

Biscochitos almost as good as grandma

Link to comment
Share on other sites

  • 3 weeks later...
This looks like a great contribution.. I have been installing it and slowly getting it set up but I am getting alot of error pop ups on admin/customershippinglabel.php

 

Runtime error: Line 313 Object Expected etc..

I had the same problem with the Line 313 and 314. The problem is the path that is hard coded for the javascript files--the customershippinglabel and diffrentshippinglabel php files included a path to somewhere named /jscript/, which didn't exist on my site. I changed the path to match where the files actually were (they're in the same directory with the USPS images in the contribution zip).

 

I had the same trouble with most of the graphics--they were hardcoded to /images/uspsimages, but without the server name and the rest of the path between. A lot of the OSC contributions solve that by using the variables that mean the server name and the paths to different places--but since I'm no coder I just hardcoded it to my path.

 

Incidentally, the code listed below printed some extra garbage on my label entry page, so I deleted it. It wasn't helping with the weight entry (don't care about that, personally, since my boxes and stuffing weigh differently depending on what's inside the box).

<?php
 for ($i = 0, $n = sizeof($order->totals); $i < $n; $i++) {
   echo '          <tr>' . "\n" .
        '            ' . $order->totals[$i]['title'] . '</td>' . "\n" .
        '          </tr>' . "\n";
 }
?>

 

Also, instead of adding the code for figuring out exactly what dates should be in the ship date pick box, I replaced the hard-coded september dates with these items:

Today

Tomorrow

The day after

One more day after

 

If I ever have to hire help for the business, I might decide to change the code to show the exact dates. For now, though, this is a quick workaround.

 

I know, most of this stuff is rather brutish, but it worked. The pages look right, act right, and nothing is getting in my way.

 

shris

the brute

:ph34r:

Link to comment
Share on other sites

Wonderful contribution. I had to make a minor fix to the date fix.... This change fixes the format for the shipping date of 'today'.

 

Based on the work that goldencrown did:

 

Find the code:

<tr>
<td align='right' class="mainText"><span class="redbarkerText">*</span> Shipping Date </td>
<td class="mainText"><select id='ShippingDate' tabindex='27' name='shipping_date'>

<option value='0' >Friday, 12/12/2003</option>
<option value='1' >Saturday, 12/13/2003</option>
<option value='2' >Sunday, 12/14/2003</option>
<option value='3' >Monday, 12/15/2003</option>
</select>
<span style="display:none"><label for='ShippingDate'>* Shipping Date </label></span>
</td>
</tr>

 

 

and replace it with:

 

<tr>
<td align='right' class="mainText"><span class="redbarkerText">*</span> Shipping Date </td>
<td class="mainText"><select id='ShippingDate' tabindex='27' name='shipping_date'>

<option value='0' ><?php
$today  = mktime (0,0,0,date("m")  ,date("d"),date("Y"));

$today = date('l, F d, Y  ',$today);

echo $today
?></option>
<option value='1' ><?php
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));

$tomorrow = date('l, F d, Y  ',$tomorrow);

echo $tomorrow
?></option>
<option value='2' ><?php
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+2,date("Y"));

$tomorrow = date('l, F d, Y  ',$tomorrow);

echo $tomorrow
?></option>
<option value='3' ><?php
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+3,date("Y"));

$tomorrow = date('l, F d, Y  ',$tomorrow);

echo $tomorrow
?></option>
</select>
<span style="display:none"><label for='ShippingDate'>* Shipping Date </label></span>
</td>
</tr>

 

The only change is in the <option value='0' > code from the original post of the code.

Overall, this contribution should help speed up order processing significantly.

 

Dan

http://www.quiltsyourway.com

Dan Stevens

Link to comment
Share on other sites

  • 2 weeks later...

Great contrib!

 

In the State switch statement, do you know any reason why it should be in there at all? I think that the USPS website will accept either full names for the states OR the abbreviation.

 

I'll remove it from my copy and see if it works.

 

-jared

Link to comment
Share on other sites

In the State switch statement, do you know any reason why it should be in there at all? I think that the USPS website will accept either full names for the states OR the abbreviation.

 

ok the reason why there is a switch statement is because the original page of the usps web site uses a drop down list that has the full name of the state but if u look at the code it converts it to a abbreviation of the state. Oscommerce stores state as a full name if u push the data from the database of oscommerce to the "holding page? with out the switch statement u will have the full name of the state. And if u submit it with the full name of the state u will get an error. The page will reload and then it will request u to refill out the missing data.

 

Bottom line it will slow down the process of making a shipping label.

:(

Hope this answers your question. :)

Biscochitos almost as good as grandma

Link to comment
Share on other sites

I think I fixed the state problem. Basically, you were only checking for state names that are entered into the osC database in all uppercase.

 

At the beginning of the case statement, I changed the line from

 

<?php switch($order->customer['state']):

 

to

 

<?php switch(strtoupper($order->customer['state'])):

 

in both files, and it now works just fine for me!

 

 

-jared

Link to comment
Share on other sites

  • 1 month later...

I am trying to integrate USPS Shipping Labels with:

 

osC 2.2MS2

PayPal ipn v 1.7

eBay auction manager (latest version)

 

I think a lot of people will be using this configuration, and by the way, for anyone trying to integrate the two, below is code that works for integrating both PayPal ipn1.7 and ebay auction manager with a clean install of osC 2.2ms2 (because the admin/orders.php file is modified by both modules.)

 

I have uploaded everything except for admin/orders.php

 

I did not upload the admin/orders.php file from the USPS Shipping Contribution over my current version (below) yet, because it is customized.....

 

When I compared the two files using Examdiff1.6, the differences were extensive, and I was unable to configure it to make it work. Here is my current orders.php file, how can I modify it to work with USPS shipping labels?

 

Anyone else?

 

Please help.

 

 

 

 

 

 

 

 

 

 

<?php

/*

$Id: orders.php,v 1.112 2003/06/29 22:50:52 hpdl Exp $

modified by [email protected] 2003/12/31

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright ? 2003 osCommerce

 

Released under the GNU General Public License

*/

 

require('includes/application_top.php');

 

require(DIR_WS_CLASSES . 'currencies.php');

$currencies = new currencies();

 

$orders_statuses = array();

$orders_status_array = array();

$orders_status_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "'");

while ($orders_status = tep_db_fetch_array($orders_status_query)) {

$orders_statuses[] = array('id' => $orders_status['orders_status_id'],

'text' => $orders_status['orders_status_name']);

$orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name'];

}

 

$action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');

 

if (tep_not_null($action)) {

switch ($action) {

case 'update_order':

$oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

$status = tep_db_prepare_input($HTTP_POST_VARS['status']);

$comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);

 

$order_updated = false;

$check_status_query = tep_db_query("select customers_name, customers_email_address, orders_status, date_purchased from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");

$check_status = tep_db_fetch_array($check_status_query);

 

if ( ($check_status['orders_status'] != $status) || tep_not_null($comments)) {

tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . tep_db_input($status) . "', last_modified = now() where orders_id = '" . (int)$oID . "'");

 

$customer_notified = '0';

if (isset($HTTP_POST_VARS['notify']) && ($HTTP_POST_VARS['notify'] == 'on')) {

$notify_comments = '';

if (isset($HTTP_POST_VARS['notify_comments']) && ($HTTP_POST_VARS['notify_comments'] == 'on')) {

$notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n";

}

 

$email = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n" . EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') . "\n" . EMAIL_TEXT_DATE_ORDERED . ' ' . tep_date_long($check_status['date_purchased']) . "\n\n" . $notify_comments . sprintf(EMAIL_TEXT_STATUS_UPDATE, $orders_status_array[$status]);

 

tep_mail($check_status['customers_name'], $check_status['customers_email_address'], EMAIL_TEXT_SUBJECT, $email, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

 

$customer_notified = '1';

}

 

tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments) values ('" . (int)$oID . "', '" . tep_db_input($status) . "', now(), '" . tep_db_input($customer_notified) . "', '" . tep_db_input($comments) . "')");

 

$order_updated = true;

}

 

if ($order_updated == true) {

$messageStack->add_session(SUCCESS_ORDER_UPDATED, 'success');

} else {

$messageStack->add_session(WARNING_ORDER_NOT_UPDATED, 'warning');

}

 

tep_redirect(tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action')) . 'action=edit'));

break;

case 'deleteconfirm':

$oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

 

tep_remove_order($oID, $HTTP_POST_VARS['restock']);

 

tep_redirect(tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action'))));

break;

}

}

 

if (($action == 'edit') && isset($HTTP_GET_VARS['oID'])) {

$oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);

 

$orders_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$oID . "'");

$order_exists = true;

if (!tep_db_num_rows($orders_query)) {

$order_exists = false;

$messageStack->add(sprintf(ERROR_ORDER_DOES_NOT_EXIST, $oID), 'error');

}

}

 

include(DIR_WS_CLASSES . 'order.php');

?>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html <?php echo HTML_PARAMS; ?>>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

<link rel="stylesheet" type="text/css" href="includes/stylesheet.css">

<script language="javascript" src="includes/general.js"></script>

</head>

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">

<!-- header //-->

<?php

require(DIR_WS_INCLUDES . 'header.php');

?>

<!-- header_eof //-->

 

<!-- body //-->

<table border="0" width="100%" cellspacing="2" cellpadding="2">

<tr>

<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

</table></td>

<!-- body_text //-->

<td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

<?php

if (($action == 'edit') && ($order_exists == true)) {

$order = new order($oID);

?>

<tr>

<td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

<td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>

<?php

if ($order->info['payment_method'] == 'paypal' && isset($HTTP_GET_VARS['refer']) && $HTTP_GET_VARS['refer'] == 'ipn'){

?>

<td class="pageHeading" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_PAYPAL_IPN, tep_get_all_get_params(array('action','oID','refer'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>

<?php

} else {

?>

<td class="pageHeading" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action','refer'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>

<?php

}//else not paypal

?>

</tr>

</table></td>

</tr>

<tr>

<td><table width="100%" border="0" cellspacing="0" cellpadding="2">

<tr>

<td colspan="3"><?php echo tep_draw_separator(); ?></td>

</tr>

<tr>

<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">

<tr>

<td class="main" valign="top"><b><?php echo ENTRY_CUSTOMER; ?></b></td>

<td class="main"><?php echo tep_address_format($order->customer['format_id'], $order->customer, 1, '', '<br>'); ?></td>

</tr>

<tr>

<td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '5'); ?></td>

</tr>

<tr>

<td class="main"><b><?php echo ENTRY_TELEPHONE_NUMBER; ?></b></td>

<td class="main"><?php echo $order->customer['telephone']; ?></td>

</tr>

<tr>

<td class="main"><b><?php echo ENTRY_EMAIL_ADDRESS; ?></b></td>

<td class="main"><?php echo '<a href="mailto:' . $order->customer['email_address'] . '"><u>' . $order->customer['email_address'] . '</u></a>'; ?></td>

</tr>

</table></td>

<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">

<tr>

<td class="main" valign="top"><b><?php echo ENTRY_SHIPPING_ADDRESS; ?></b></td>

<td class="main"><?php echo tep_address_format($order->delivery['format_id'], $order->delivery, 1, '', '<br>'); ?></td>

</tr>

</table></td>

<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="2">

<tr>

<td class="main" valign="top"><b><?php echo ENTRY_BILLING_ADDRESS; ?></b></td>

<td class="main"><?php echo tep_address_format($order->billing['format_id'], $order->billing, 1, '', '<br>'); ?></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

</tr>

<tr>

<?php

 

if (strtolower($order->info['payment_method']) == 'paypal') {

 

include 'paypal_ipn_order.php';

 

} else {

 

?>

<td><table border="0" cellspacing="0" cellpadding="2">

<tr>

<td class="main"><b><?php echo ENTRY_PAYMENT_METHOD; ?></b></td>

<td class="main"><?php echo $order->info['payment_method']; ?></td>

</tr>

<?php

}//else not paypal

 

if (tep_not_null($order->info['cc_type']) || tep_not_null($order->info['cc_owner']) || tep_not_null($order->info['cc_number'])) {

?>

<tr>

<td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

</tr>

<tr>

<td class="main"><?php echo ENTRY_CREDIT_CARD_TYPE; ?></td>

<td class="main"><?php echo $order->info['cc_type']; ?></td>

</tr>

<tr>

<td class="main"><?php echo ENTRY_CREDIT_CARD_OWNER; ?></td>

<td class="main"><?php echo $order->info['cc_owner']; ?></td>

</tr>

<tr>

<td class="main"><?php echo ENTRY_CREDIT_CARD_NUMBER; ?></td>

<td class="main"><?php echo $order->info['cc_number']; ?></td>

</tr>

<tr>

<td class="main"><?php echo ENTRY_CREDIT_CARD_EXPIRES; ?></td>

<td class="main"><?php echo $order->info['cc_expires']; ?></td>

</tr>

<?php

}

?>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr class="dataTableHeadingRow">

<td class="dataTableHeadingContent" colspan="2"><?php echo TABLE_HEADING_PRODUCTS; ?></td>

<td class="dataTableHeadingContent"><?php echo TABLE_HEADING_PRODUCTS_MODEL; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TAX; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_PRICE_EXCLUDING_TAX; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_PRICE_INCLUDING_TAX; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TOTAL_EXCLUDING_TAX; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_TOTAL_INCLUDING_TAX; ?></td>

</tr>

<?php

for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {

echo ' <tr class="dataTableRow">' . "\n" .

' <td class="dataTableContent" valign="top" align="right">' . $order->products[$i]['qty'] . ' x</td>' . "\n" .

' <td class="dataTableContent" valign="top">' . $order->products[$i]['name'];

 

if (isset($order->products[$i]['attributes']) && (sizeof($order->products[$i]['attributes']) > 0)) {

for ($j = 0, $k = sizeof($order->products[$i]['attributes']); $j < $k; $j++) {

echo '<br><nobr><small> <i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'];

if ($order->products[$i]['attributes'][$j]['price'] != '0') echo ' (' . $order->products[$i]['attributes'][$j]['prefix'] . $currencies->format($order->products[$i]['attributes'][$j]['price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . ')';

echo '</i></small></nobr>';

}

}

 

echo ' </td>' . "\n" .

' <td class="dataTableContent" valign="top">' . $order->products[$i]['model'] . '</td>' . "\n" .

' <td class="dataTableContent" align="right" valign="top">' . tep_display_tax_value($order->products[$i]['tax']) . '%</td>' . "\n" .

' <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .

' <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax']), true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .

' <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format($order->products[$i]['final_price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n" .

' <td class="dataTableContent" align="right" valign="top"><b>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax']) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</b></td>' . "\n";

echo ' </tr>' . "\n";

}

?>

<tr>

<td align="right" colspan="8"><table border="0" cellspacing="0" cellpadding="2">

<?php

for ($i = 0, $n = sizeof($order->totals); $i < $n; $i++) {

echo ' <tr>' . "\n" .

' <td align="right" class="smallText">' . $order->totals[$i]['title'] . '</td>' . "\n" .

' <td align="right" class="smallText">' . $order->totals[$i]['text'] . '</td>' . "\n" .

' </tr>' . "\n";

}

?>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

</tr>

<tr>

<td class="main"><table border="1" cellspacing="0" cellpadding="5">

<tr>

<td class="smallText" align="center"><b><?php echo TABLE_HEADING_DATE_ADDED; ?></b></td>

<td class="smallText" align="center"><b><?php echo TABLE_HEADING_CUSTOMER_NOTIFIED; ?></b></td>

<td class="smallText" align="center"><b><?php echo TABLE_HEADING_STATUS; ?></b></td>

<td class="smallText" align="center"><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>

</tr>

<?php

$orders_history_query = tep_db_query("select orders_status_id, date_added, customer_notified, comments from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . tep_db_input($oID) . "' order by date_added");

if (tep_db_num_rows($orders_history_query)) {

while ($orders_history = tep_db_fetch_array($orders_history_query)) {

echo ' <tr>' . "\n" .

' <td class="smallText" align="center">' . tep_datetime_short($orders_history['date_added']) . '</td>' . "\n" .

' <td class="smallText" align="center">';

if ($orders_history['customer_notified'] == '1') {

echo tep_image(DIR_WS_ICONS . 'tick.gif', ICON_TICK) . "</td>\n";

} else {

echo tep_image(DIR_WS_ICONS . 'cross.gif', ICON_CROSS) . "</td>\n";

}

echo ' <td class="smallText">' . $orders_status_array[$orders_history['orders_status_id']] . '</td>' . "\n" .

' <td class="smallText">' . nl2br(tep_db_output($orders_history['comments'])) . ' </td>' . "\n" .

' </tr>' . "\n";

}

} else {

echo ' <tr>' . "\n" .

' <td class="smallText" colspan="5">' . TEXT_NO_ORDER_HISTORY . '</td>' . "\n" .

' </tr>' . "\n";

}

?>

</table></td>

</tr>

<tr>

<td class="main"><br><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '1', '5'); ?></td>

</tr>

<tr><?php echo tep_draw_form('status', FILENAME_ORDERS, tep_get_all_get_params(array('action')) . 'action=update_order'); ?>

<td class="main"><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5'); ?></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>

</tr>

<tr>

<td><table border="0" cellspacing="0" cellpadding="2">

<tr>

<td><table border="0" cellspacing="0" cellpadding="2">

<tr>

<td class="main"><b><?php echo ENTRY_STATUS; ?></b> <?php echo tep_draw_pull_down_menu('status', $orders_statuses, $order->info['orders_status']); ?></td>

</tr>

<tr>

<td class="main"><b><?php echo ENTRY_NOTIFY_CUSTOMER; ?></b> <?php echo tep_draw_checkbox_field('notify', '', true); ?></td>

<td class="main"><b><?php echo ENTRY_NOTIFY_COMMENTS; ?></b> <?php echo tep_draw_checkbox_field('notify_comments', '', true); ?></td>

</tr>

</table></td>

<td valign="top"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?></td>

</tr>

</table></td>

</form></tr>

<tr>

<?php

if ($order->info['payment_method'] == 'paypal' && isset($HTTP_GET_VARS['refer']) && $HTTP_GET_VARS['refer'] == 'ipn'){

?>

<td colspan="2" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a> <a href="' . tep_href_link(FILENAME_PAYPAL_IPN, tep_get_all_get_params(array('action','oID','refer'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>

<?php

} else {

?>

<td colspan="2" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action','refer'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>

<?php

}//else not paypal

?>

</tr>

<?php

} else {

?>

<tr>

<td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

<td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', 1, HEADING_IMAGE_HEIGHT); ?></td>

<td align="right"><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr><?php echo tep_draw_form('orders', FILENAME_ORDERS, '', 'get'); ?>

<td class="smallText" align="right"><?php echo HEADING_TITLE_SEARCH . ' ' . tep_draw_input_field('oID', '', 'size="12"') . tep_draw_hidden_field('action', 'edit'); ?></td>

</form></tr>

<tr><?php echo tep_draw_form('status', FILENAME_ORDERS, '', 'get'); ?>

<td class="smallText" align="right"><?php echo HEADING_TITLE_STATUS . ' ' . tep_draw_pull_down_menu('status', array_merge(array(array('id' => '', 'text' => TEXT_ALL_ORDERS)), $orders_statuses), '', 'onChange="this.form.submit();"'); ?></td>

</form></tr>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr class="dataTableHeadingRow">

<td class="dataTableHeadingContent"><?php echo TABLE_HEADING_CUSTOMERS; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ORDER_TOTAL; ?></td>

<td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_DATE_PURCHASED; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_STATUS; ?></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?> </td>

</tr>

<?php

if (isset($HTTP_GET_VARS['cID'])) {

$cID = tep_db_prepare_input($HTTP_GET_VARS['cID']);

$orders_query_raw = "select o.orders_id, o.customers_name, o.customers_id, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id), " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$cID . "' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and ot.class = 'ot_total' order by orders_id DESC";

} elseif (isset($HTTP_GET_VARS['status'])) {

$status = tep_db_prepare_input($HTTP_GET_VARS['status']);

$orders_query_raw = "select o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id), " . TABLE_ORDERS_STATUS . " s where o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.orders_status_id = '" . (int)$status . "' and ot.class = 'ot_total' order by o.orders_id DESC";

} else {

$orders_query_raw = "select o.orders_id, o.customers_name, o.payment_method, o.date_purchased, o.last_modified, o.currency, o.currency_value, s.orders_status_name, ot.text as order_total from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id), " . TABLE_ORDERS_STATUS . " s where o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and ot.class = 'ot_total' order by o.orders_id DESC";

}

$orders_split = new splitPageResults($HTTP_GET_VARS['page'], MAX_DISPLAY_SEARCH_RESULTS, $orders_query_raw, $orders_query_numrows);

$orders_query = tep_db_query($orders_query_raw);

while ($orders = tep_db_fetch_array($orders_query)) {

if ((!isset($HTTP_GET_VARS['oID']) || (isset($HTTP_GET_VARS['oID']) && ($HTTP_GET_VARS['oID'] == $orders['orders_id']))) && !isset($oInfo)) {

$oInfo = new objectInfo($orders);

}

 

if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {

echo ' <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . '\'">' . "\n";

} else {

echo ' <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '\'">' . "\n";

}

?>

<td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $orders['orders_id'] . '&action=edit') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a> ' . $orders['customers_name']; ?></td>

<td class="dataTableContent" align="right"><?php echo strip_tags($orders['order_total']); ?></td>

<td class="dataTableContent" align="center"><?php echo tep_datetime_short($orders['date_purchased']); ?></td>

<td class="dataTableContent" align="right"><?php echo $orders['orders_status_name']; ?></td>

<td class="dataTableContent" align="right"><?php if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID')) . 'oID=' . $orders['orders_id']) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>

</tr>

<?php

}

?>

<tr>

<td colspan="5"><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td class="smallText" valign="top"><?php echo $orders_split->display_count($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $HTTP_GET_VARS['page'], TEXT_DISPLAY_NUMBER_OF_ORDERS); ?></td>

<td class="smallText" align="right"><?php echo $orders_split->display_links($orders_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $HTTP_GET_VARS['page'], tep_get_all_get_params(array('page', 'oID', 'action'))); ?></td>

</tr>

</table></td>

</tr>

</table></td>

<?php

$heading = array();

$contents = array();

 

switch ($action) {

case 'delete':

$heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_ORDER . '</b>');

 

$contents = array('form' => tep_draw_form('orders', FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=deleteconfirm'));

$contents[] = array('text' => TEXT_INFO_DELETE_INTRO . '<br><br><b>' . $cInfo->customers_firstname . ' ' . $cInfo->customers_lastname . '</b>');

$contents[] = array('text' => '<br>' . tep_draw_checkbox_field('restock') . ' ' . TEXT_INFO_RESTOCK_PRODUCT_QUANTITY);

$contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');

break;

default:

if (isset($oInfo) && is_object($oInfo)) {

$heading[] = array('text' => '<b>[' . $oInfo->orders_id . ']  ' . tep_datetime_short($oInfo->date_purchased) . '</b>');

 

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=edit') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('oID', 'action')) . 'oID=' . $oInfo->orders_id . '&action=delete') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a>');

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $oInfo->orders_id) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a> <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $oInfo->orders_id) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a>');

$contents[] = array('text' => '<br>' . TEXT_DATE_ORDER_CREATED . ' ' . tep_date_short($oInfo->date_purchased));

if (tep_not_null($oInfo->last_modified)) $contents[] = array('text' => TEXT_DATE_ORDER_LAST_MODIFIED . ' ' . tep_date_short($oInfo->last_modified));

$contents[] = array('text' => '<br>' . TEXT_INFO_PAYMENT_METHOD . ' ' . $oInfo->payment_method);

}

break;

}

 

if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {

echo ' <td width="25%" valign="top">' . "\n";

 

$box = new box;

echo $box->infoBox($heading, $contents);

 

echo ' </td>' . "\n";

}

?>

</tr>

</table></td>

</tr>

<?php

}

?>

</table></td>

<!-- body_text_eof //-->

</tr>

</table>

<!-- body_eof //-->

 

<!-- footer //-->

<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>

<!-- footer_eof //-->

<br>

</body>

</html>

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

Edited by vyoufinder

"Your focus is your reality"

Link to comment
Share on other sites

if anyone having the same problem as i had above do this

 

add this

define('FILENAME_ORDERS_CUSTOMERSHIPPINGLABEL', 'customershippinglabel.php');
?define('FILENAME_ORDERS_diffrentshipping', 'diffrentshipping.php');

 

to filename.php at the bottom

I have no filenames.php to insert this in.

 

I'm getting the same problem with the url coming back wrong.

 

can somebody help me with this please?

Link to comment
Share on other sites

ok - got the module working even with my heavily customized cart...

 

When I did the fixes on the previous page (in this forum) I now get the proper dates, and also (the biggest bonus) now my customer's information is pre-populated into the usps module! GREAT!

 

Now I just have a question: Why the two buttons? What is the difference? When I use customershippinglabel.php I get the customer information pre-populated, but when I use diffrentshipping.php I do not get the customer information in the form already...why? Why two buttons?

"Your focus is your reality"

Link to comment
Share on other sites

Okay, I'm still having problems here. Any kind sould care to help point me in the right direction?

 

 

When the UPS label buttons are clicked I get a url as follows:

http://www.mydomain.com/store/admin/FILENA...PINGLABEL?oID=7

 

Obviously I need to get it to replace FILENAME_CUSTOMERSHIPPINGLABEL so the url looks like:

http://www.mydomain.com/store/admin/custom...label.php?oID=7

 

I implimented the fix that PKO reccomended which was to add

 

define('FILENAME_ORDERS_CUSTOMERSHIPPINGLABEL', 'customershippinglabel.php');
define('FILENAME_ORDERS_diffrentshipping', 'diffrentshipping.php');

 

to filenames.php

 

 

What am I doing wrong here?

 

I finally found filename.php in the admin/includes folder and added the code. But I still get the same problem.

 

Here's the code from my orders.php page..

 

<td colspan="2" align="right"><?php echo '<a href="' . tep_href_link(FILENAME_ORDERS_INVOICE, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_invoice.gif', IMAGE_ORDERS_INVOICE) . '</a> 
	 <a href="' . tep_href_link(FILENAME_ORDERS_PACKINGSLIP, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_packingslip.gif', IMAGE_ORDERS_PACKINGSLIP) . '</a>
	 <a href="' . tep_href_link(FILENAME_ORDERS_CUSTOMERSHIPPINGLABEL, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_labelcustomer.gif', IMAGE_ORDERS_labelcustomer) . '</a>
 <a href="' . tep_href_link(FILENAME_ORDERS_diffrentshipping, 'oID=' . $HTTP_GET_VARS['oID']) . '" TARGET="_blank">' . tep_image_button('button_labelshipping.gif', IMAGE_ORDERS_diffrentshipping) . '</a>
	 <a href="' . tep_href_link(FILENAME_ORDERS, tep_get_all_get_params(array('action','refer'))) . '">' . tep_image_button('button_back.gif', IMAGE_BACK) . '</a>'; ?></td>

 

 

Sorry if it's a glaring mistake, but I know next to nothing about php.

Link to comment
Share on other sites

  • 2 weeks later...

I just fixed basically every flaw in these contribs, with the help of the recomendations here, and several hours of me scouring it over on my own and comparing everything to the usps web site (That was before I found this thread, lol).

 

Anyway, the one thing I still cant get working is the shipping weight. Has anyone gotten this contrib to display or enter the weight into the form?

 

If I can get that fixed, I will probably take the time to re write the instructions and also update the files so there arent as many errors.

Link to comment
Share on other sites

Oh, and alot of people were asking what the differance was in the two buttons. One button, customershippinglabel.php addresses the label to the customers shipping address.

 

The other button, differentshipping.php, addresses it to the shipping address in case a cusomter wants the items shipped to an alternate address.

Link to comment
Share on other sites

Does this contrib work with 2.2 MS 2? I really want to use this module but when I installed it I got errors everywhere. First I clicked on the "Orders" page and received tep_array errors. So when I was finally able to move past that and actually get into looking at an order, I received more tep_array errors below the comments box. So I uninstalled it and gave up for now.

 

I would really like to use it though, so I just want to make sure it does work with MS2.

 

-priest-

 

PS. The readme file says that in order to pay you would need to sign up for an account (or enter your username/password). Where do I sign up for an account? I visited USPS but I want to make sure I sign up for the correct thing that works with this contrib.

 

Thanks.

Link to comment
Share on other sites

Ok, I got this working but I am not getting a pop-up with the weight, or do not see the weight displayed anywhere after I click the "USPS Label Shipping" button.

 

Is this working for anyone else?

 

-p-

Link to comment
Share on other sites

Hello every one!!

 

Quick update.

 

The Good news

The usps web site has changed for the better and it is great. it happened about 3pm mst time. 4/9/04 We now have the ability to check our shipping history and many other great services. Also Billy has fixed all the issues with the contribution. Thank you bill for all the great work. we also have another individual to thank for all his hard work for fixing the weight issue. I will look up his screen name and give proper thanks in a few days

 

 

The Bad news

 

usps has updated there web site our links are now broken it will need to be fixed. i will be taking home the new addition that Billy has provided us and compare notes with the new changes. hope fully I will have it fixed before the weekend is over.

 

Also from here on out I will be doing all my posting on the new thread that Billy has provided.

 

http://www.oscommerce.com/forums/index.php?showtopic=86902

Biscochitos almost as good as grandma

Link to comment
Share on other sites

I know that this may be a bit off topic, if you believe so, then I am sorry, but has anyone been able to get this contrib/USPS website to print using a Thermal Printer?

 

I love being able to just go and print up everything quickly with the USPS website but I can't get the labels to print correctly using a Thermal Printer and because of this, well, it's the only reason I have to stay with someone like Stamps.com.

 

:(

 

This contrib has come a long way. Great thanks to all who have helped it along!

 

-p-

Link to comment
Share on other sites

I know that this may be a bit off topic, if you believe so, then I am sorry, but has anyone been able to get this contrib/USPS website to print using a Thermal Printer?

 

I love being able to just go and print up everything quickly with the USPS website but I can't get the labels to print correctly using a Thermal Printer and because of this, well, it's the only reason I have to stay with someone like Stamps.com.

 

:(

 

This contrib has come a long way. Great thanks to all who have helped it along!

 

-p-

USPS does provide actual API's to print shipping labels using the same Java Interface that is used on their own site. Maybe if a real contrib using the real API is created (This one is really a hacked copy of a USPS web page) by someone who knows Java and javascript, maybe a program can be created to make this shipping label thing as easy as clicking one button in the OSC interface, even using a thermal printer. The likelyhood of that happening any time soon though is probably not that good.

Link to comment
Share on other sites

I apologize upfront, but I'm still not understanding how this contrib and the USPS module in general work??? I'm assuming when people reference setting up an account at USPS.com they are referring to the Click-N-Ship stuff, is that right? Do you need the Click-N-Ship software if you're using this contribution? Does this print postage and labels, or just labels? Can you ship internationally?

 

Right now I've just setup flat rate shipping, but I would like to install a shipping module so I have more accurate shipping costs and can ship internationally. This is the biggest issue I'm facing right now!

 

I've seen a lot of comparion between USPS.com and Stamps.com. Is there a conrib for Stamps.com?

 

Someone please advise... I'd like to know as much as possible before I start hacking away at something that isn't going to work for me.

 

Thanks!

Link to comment
Share on other sites

I apologize upfront, but I'm still not understanding how this contrib and the USPS module in general work??? I'm assuming when people reference setting up an account at USPS.com they are referring to the Click-N-Ship stuff, is that right? Do you need the Click-N-Ship software if you're using this contribution? Does this print postage and labels, or just labels? Can you ship internationally?

 

This contribution works directly with the click-n-ship service that usps provides. Just think of this way. The page that you fill your shipping information and delivery address is auto completed with just a click of a button. Currently it is just for domestic purposes.

Biscochitos almost as good as grandma

Link to comment
Share on other sites

Is the domestic-shipping-only a (short term) contrib limitation or is it a USPS limitation?

 

So you do not need to download the Click-N-Ship software? The contrib basically replaces the software?

 

If the USPS program does not support International shipping, can someone recommend another contrib for International?

 

goldencrown - Thank you for your reply! The contrib sounds really really cool!!!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...