Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[Contribution] Step-By-Step Manual Order


frankl

Recommended Posts

  • Replies 476
  • Created
  • Last Reply

Top Posters In This Topic

I have a proposal for the next update of this contribution. I believe it should function this way:

 

Once you create an order for the customer, the contribution creates a product in a hidden category folder with the customized price and shipping price. Then the contribution sends the order invoice to the customer with a link to that created product for them to check out thru your cart.

 

This would be a clean cut order flow. Any ideas anybody? Im sure we can gather enough brains and/or $$. Let me know if anybody knows.

Link to comment
Share on other sites

Rattlesn@ke,

 

What file would I need to edit for these changes?

DAMN!

 

I said so to my self, DON'T FORGET TO TELL WHICH FILE !!!!

 

Stupid me!

 

The changes has to be made in: admin/create_order.php

 

 

10000 times sorry!

 

Greetz.

RattleSn@ke.

 

NOTE: Because I can't edit the other post, I say it in this one.

To add the Customer ID searchbox mentioned in my post on page 10 edit the following file: admin/create_order.php

Edited by RattleSn@ke
Link to comment
Share on other sites

I have multiple items with the same name, so in selecting the new product to add from the dropdown it's a crapshoot as to whether I get the correct one. Is there a way of adding the model to the dropdown of products?

I have looked over the code and am sure I will break it.

Any advice will be greatly appreciated,

M~

Link to comment
Share on other sites

<?
// #############################
// ? Get List of All Products
// #############################

?$result = tep_db_query("SELECT products_name, p.products_model, p.products_id, categories_name, ptc.categories_id FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " pd ON pd.products_id=p.products_id LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc ON ptc.products_id=p.products_id LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON cd.categories_id=ptc.categories_id ORDER BY categories_name");
?while($row = tep_db_fetch_array($result))
?{
?	extract($row,EXTR_PREFIX_ALL,"db");
?	$ProductList[$db_categories_id][$db_products_id] = $db_products_model;
?	$CategoryList[$db_categories_id] = $db_categories_name;
?	$LastCategory = $db_categories_name;
?}
?
?// ksort($ProductList);
?
?$LastOptionTag = "";
?$ProductSelectOptions = "<option value='0'>Don't Add New Product" . $LastOptionTag . "\n";
?$ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
?foreach($ProductList as $Category => $Products)
?{
?	$ProductSelectOptions .= "<option value='0'>$Category" . $LastOptionTag . "\n";
?	$ProductSelectOptions .= "<option value='0'>---------------------------" . $LastOptionTag . "\n";
?	asort($Products);
?	foreach($Products as $Product_ID => $Product_Name)
?	{
? ?$ProductSelectOptions .= "<option value='$Product_ID'>   $Product_Name " . $LastOptionTag . "\n";
?	}
?	
?	if($Category != $LastCategory)
?	{
? ?$ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
? ?$ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
?	}
?}

 

The above gives me the model number instead of the name, which is better than the name. I'd prefer to have both.

Hopefully, if I put the code up someone will be generous and take a look at what I would need to do.

Thanks,

M~

Edited by Marg
Link to comment
Share on other sites

Does anyone know how to had the payment details such as their credit card info. the text at the payment method field says:

 

(Update to Credit Card to view CC fields.)

 

May be a bit slow on the uptake here but what does this mean?

 

thanks

James

Link to comment
Share on other sites

Does anyone know how to had the payment details such as their credit card info. the text at the payment method field says:

 

(Update to Credit Card to view CC fields.)

 

May be a bit slow on the uptake here but what does this mean?

 

thanks

James

It means to enter the words Credit Card into the empty box and then hit update. Then the Credit Card form will be there. But don't do this untill you have atleast 1 product added or it will cause an error.

Link to comment
Share on other sites

add this function to your /admin/includes/functions/general.php

and make the previously mentioned changes to call it in the create_account_process.php

 

  function tep_encrypt_password($plain) {
   $password = '';

   for ($i=0; $i<10; $i++) {
     $password .= tep_rand();
   }

   $salt = substr(md5($password), 0, 2);

   $password = md5($salt . $plain) . ':' . $salt;

   return $password;
 }

Link to comment
Share on other sites

  • 2 weeks later...

Help !

 

I have installed this excellent modification to my MS2 OSCommerce install but I have one problem and one questions.

 

The problem.

 

I operate within the UK and all my orders created via the normal method come through with a currency identifer of ? but anything I create with this mod are shown with the $. I have changed the value in one of the PHP files (can't remeber now which one) from USD to GBP which is the code in the currencies table for Pond Sterling.

 

Could someone please let me know how I can change this to ? from $. I have noticed that the orders_total table has the currency symbol hardcoded with the price.

 

My question is.

 

Has anyone made modification to this hack to allow you to add the shipping costs to a manual order. My apologies if this has already been stated in this thread.

 

Regards

 

Rob.

replicamodels.co.uk

Regards

 

Rob.

Link to comment
Share on other sites

  • 2 weeks later...

Hi, the problem lies in edit_orders.php 3 occurances of '\$" which makes the currency dollars.

 

simply make these changes:

 

line 426:

text = '\$" . number_format($RunningTax, 2, '.', ',') . "',

becomes

text = '".DEFAULT_CURRENCY . number_format($RunningTax, 2, '.', ',') . "',

 

line 433

text = '\$" . number_format($RunningSubTotal, 2, '.', ',') . "',

 

becomes

 

text = '".DEFAULT_CURRENCY . number_format($RunningSubTotal, 2, '.', ',') . "',

 

 

line 445

text = '<b>\$" . number_format($Total, 2, '.', ',') . "</b>',

 

becomes

text = '<b>".DEFAULT_CURRENCY . number_format($Total, 2, '.', ',') . "</b>',

 

HTH

 

A

Link to comment
Share on other sites

ok...went through a few tests for creating orders and two things stand out. First one is easy to fix (I think & hope) but the 2nd might not be....

 

1- The total amount for the order is not saved in currency. so if you view an order you create manually, the total will show up like 15 instead of $15.00. I will look at the code but I think we need to use the currency function...

 

2- The way the categories show up. I have many categories and a bunch of sub-categories. many of the sub-categories have the same name. Example:

 

Air Intakes ->Chevy

                ->Honda

                ->Hummer

 

SuperChargers ->Chevy

                      ->Honda

                      ->Hummer

 

So in the drop down when manually creating an order, I get a bunch of "Hummer's", "Honda's" or "Chevy's" and I have no clue what the top level category is. Is there a way to modify the query/array to show the top level? In some of the categories, I go 4 and 5 levels deep....... I know this is probably a biggies but unfortunately the dropdown is useless to me now....because of how my product catalog is designed....

 

Besides that, very solid contrib. no errors. writes the correct information to the Db. I like it! Just a little tweaking and this can go down as one of the best contribs around!

OK in the edit_orders.php look for this section:

 

// Step 1: Choose Category
	 print "<tr class=\"dataTableRow\"><form action='$PHP_SELF?oID=$oID&action=$action' method='POST'>\n";
	 print "<td class='dataTableContent' align='right'><b>STEP 1:</b></td><td class='dataTableContent' valign='top'><select name='add_product_categories_id'>";
	 $CategoryOptions = "<option value='0'> --- CHOOSE A CATEGORY ---\n";
	 foreach($CategoryList as $CategoryID => $CategoryName)
	 {
	 $CategoryOptions .= "<option value='$CategoryID'> $CategoryName\n";
	 }
	 
	 $CategoryOptions = str_replace("value='$add_product_categories_id'","value='$add_product_categories_id' selected", $CategoryOptions);
	 print $CategoryOptions;
	 print "</select></td>\n";
	 print "<td class='dataTableContent' align='center'><input type='submit' value='Select This Category'>";
	 print "<input type='hidden' name='step' value='2'>";
	 print "</td>\n";
	 print "</form></tr>\n";
	 
	 print "<tr><td colspan='3'> </td></tr>\n";

 

 

and change it to the following:

 

  // Step 1: Choose Category
	 print "<tr class=\"dataTableRow\"><form action='$PHP_SELF?oID=$oID&action=$action' method='POST'>\n";
	 print "<td class='dataTableContent' align='right'><b>STEP 1:</b></td><td class='dataTableContent' valign='top'>\n";
	 
	 $tree = tep_get_category_tree(); 
	 $dropdown= tep_draw_pull_down_menu('add_product_categories_id', $tree, '', ''); //single
	 echo  $dropdown;
	 
	 
// 	 print "<select name='add_product_categories_id'>\n";
// 	 $CategoryOptions = "<option value='0'> --- CHOOSE A CATEGORY ---\n";
// 	 foreach($CategoryList as $CategoryID => $CategoryName)
// 	 {
// 	 $CategoryOptions .= "<option value='$CategoryID'> $CategoryName\n";
// 	 }
	 
	 $CategoryOptions = str_replace("value='$add_product_categories_id'","value='$add_product_categories_id' selected", $CategoryOptions);
	 print $CategoryOptions;
	 print "</select></td>\n";
	 print "<td class='dataTableContent' align='center'><input type='submit' value='Select This Category'>";
	 print "<input type='hidden' name='step' value='2'>";
	 print "</td>\n";
	 print "</form></tr>\n";
	 
	 print "<tr><td colspan='3'> </td></tr>\n";

Link to comment
Share on other sites

<?
// #############################
// ? Get List of All Products
// #############################

?$result = tep_db_query("SELECT products_name, p.products_model, p.products_id, categories_name, ptc.categories_id FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " pd ON pd.products_id=p.products_id LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc ON ptc.products_id=p.products_id LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON cd.categories_id=ptc.categories_id ORDER BY categories_name");
?while($row = tep_db_fetch_array($result))
?{
?	extract($row,EXTR_PREFIX_ALL,"db");
?	$ProductList[$db_categories_id][$db_products_id] = $db_products_model;
?	$CategoryList[$db_categories_id] = $db_categories_name;
?	$LastCategory = $db_categories_name;
?}
?
?// ksort($ProductList);
?
?$LastOptionTag = "";
?$ProductSelectOptions = "<option value='0'>Don't Add New Product" . $LastOptionTag . "\n";
?$ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
?foreach($ProductList as $Category => $Products)
?{
?	$ProductSelectOptions .= "<option value='0'>$Category" . $LastOptionTag . "\n";
?	$ProductSelectOptions .= "<option value='0'>---------------------------" . $LastOptionTag . "\n";
?	asort($Products);
?	foreach($Products as $Product_ID => $Product_Name)
?	{
? ?$ProductSelectOptions .= "<option value='$Product_ID'>   $Product_Name " . $LastOptionTag . "\n";
?	}
?	
?	if($Category != $LastCategory)
?	{
? ?$ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
? ?$ProductSelectOptions .= "<option value='0'> " . $LastOptionTag . "\n";
?	}
?}

 

The above gives me the model number instead of the name, which is better than the name. I'd prefer to have both.

Hopefully, if I put the code up someone will be generous and take a look at what I would need to do.

Thanks,

M~

Here you go this will give you model#-Product Name

 

// ############################################################################
//   Get List of All Products
// ############################################################################

 $result = tep_db_query("SELECT products_name, p.products_id, p.products_model, categories_name, ptc.categories_id FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " pd ON pd.products_id=p.products_id LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc ON ptc.products_id=p.products_id LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON cd.categories_id=ptc.categories_id WHERE pd.language_id = cd.language_id AND cd.language_id = 1 ORDER BY categories_name");
 while($row = tep_db_fetch_array($result))
 {
	 extract($row,EXTR_PREFIX_ALL,"db");
	 $ProductList[$db_categories_id][$db_products_id] = $db_products_model . '-' .$db_products_name;
	 $CategoryList[$db_categories_id] = $db_categories_name;
	 $LastCategory = $db_categories_name;
 }

Link to comment
Share on other sites

Marg and Shawn,

Great work on the product_model - product_name correction. This helps out a ton!

 

Any idea of how to include a search option for selecting products by model number? With most of my phone orders, the customer will just start reading off the model number and I'm not quite good enough with all my products to know exactly what category it is in.

Edited by sirkyle
Link to comment
Share on other sites

I'm using this excellent mod on my loaded MS1 site.

I especially like that it allows me to manually update shipping-costs if a customer needs better priority for their goods, Great Stuff! :D

 

I've yet to figure out why only the 4 last digits are stored, anyone know how this can be tweeked?

For normally placed orders the 4 first + 4 last are stored and the middle 8 digits are emailed to me like this:

 

Order #1234

Middle: 12345678

 

What really would do the trick for me was to modify it so that maybe a PopUp is created (on update) containing the order ID + the 8 middle digits, and to store the 4 first + 4 last. This way I can edit an already received "8Middle-E-mail" adding the info for the new order.

 

Anyone got a suggestion on how to accomplish this?

Petter - Arktisk Pudder

Link to comment
Share on other sites

Continued from my previous post, with regard to the currency showing up as $. I found another section of code that needs to be changed. Now my module uses the stores default currency in the order. Simply add this change to those mentioned above.

 

file: admin/create_order_process.php

line: 44

 

was

  $currency = "AUD";

 

replace with:

  $currency = DEFAULT_CURRENCY;

 

The contribution should now use your store's default currency.

 

later

A

Link to comment
Share on other sites

Is the contribution available for download working, it seems there has been alot of fixes since the latest release. Can I just download it and install it, or will I have to debug it with all the fixes in this thread. Is there going to be a more current version available?

And will this work with Authorize net to process walkin credit card purchases, or will I have to run the card itself manually?

 

Thanks for any help,

Doug

Edited by Main Miner
Link to comment
Share on other sites

Is the contribution available for download working, it seems there has been alot of fixes since the latest release. Can I just download it and install it, or will I have to debug it with all the fixes in this thread. Is there going to be a more current version available?

And will this work with Authorize net to process walkin credit card purchases, or will I have to run the card itself manually?

 

Thanks for any help,

Doug

You will have to do some work on it.

Link to comment
Share on other sites

Hey all, this is a great contribution - I'm looking to figure out how to make it do just one more thing. When I Create a user, I want a checkbox asking me if i want to send them the new user email - with their password and stuff.. I've had a couple of ebay customers who are adamant they don't want to create an account - but it just makes the process easier for me.

 

So, i want to be able to create their account without them receiveing an email from me - I can't just put in my own email becuase osCommerce only allows an email to be registered once - hmm, mabye changing that would be easier than having a checkbox....

 

In any event, can anyone help me out with this?

Link to comment
Share on other sites

Alright, this is what I did: (Backup, yo!)

 

In filename Create_account_process, look for

// build the message content

    $name = $firstname . " " . $lastname;

 

    if (ACCOUNT_GENDER == 'true') {

      if ($HTTP_POST_VARS['gender'] == 'm') {

        $email_text = EMAIL_GREET_MR;

      } else {

        $email_text = EMAIL_GREET_MS;

      }

    } else {

      $email_text = EMAIL_GREET_NONE;

    }

 

    $email_text .= EMAIL_WELCOME . EMAIL_PASS_1 . $password_nocrypt . EMAIL_PASS_2 . EMAIL_TEXT . EMAIL_CONTACT . EMAIL_WARNING;

    tep_mail($name, $email_address, EMAIL_SUBJECT, nl2br($email_text), STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

 

(near the bottom) and replace it with this:

 

// build the message content

$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";

  }

  $name = $firstname . " " . $lastname;

 

    if (ACCOUNT_GENDER == 'true') {

      if ($HTTP_POST_VARS['gender'] == 'm') {

        $email_text = EMAIL_GREET_MR;

      } else {

        $email_text = EMAIL_GREET_MS;

      }

    } else {

      $email_text = EMAIL_GREET_NONE;

    }

 

    $email_text .= EMAIL_WELCOME . EMAIL_PASS_1 . $password_nocrypt . EMAIL_PASS_2 . EMAIL_TEXT . EMAIL_CONTACT . EMAIL_WARNING;

    tep_mail($name, $email_address, EMAIL_SUBJECT, nl2br($email_text), STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

 

  $customer_notified = '1';

  }       

 

 

in file account_details.php (in admin/includes/modules), look for :

echo tep_draw_pull_down_menu('newsletter', $newsletter_array, $account['customers_newsletter']) . ' ' . ENTRY_NEWSLETTER_TEXT;

  }

 

?>

around line 434.

 

Add this right below it:

 

<tr>

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

          </tr>

 

and lastley, stick this at the bottom of your admin/includes/languages/english.php

 

define('ENTRY_NOTIFY_CUSTOMER', 'Notify Customer? :');

 

That's it. Your done! - This seemed to work for me. I had already changed the new account's password to "default" using another mod that was posted on here earlier. So now I can create a customers account, and checkout with them withouth them ever knowing. (this works great with the eBay Auction Manager Contrib.) - Anyways, i hope someone makes use of this!

 

Tim

pocketGEAR.ca

Link to comment
Share on other sites

Hello,

 

I've got a problem with the contrib. When trying to create a new account, nothing happens when I click 'create account'.

 

Seems as it doesn't post the data in the sql and then doesn't proceed with the next step.

Link to comment
Share on other sites

Did I miss something. My line item totals do not show the $ sign (usd) and they round to whole dollars.

 

This is my code form create_order_process.php lines 42-45.

 

$temp_amount = "0";

$temp_amount = number_format($temp_amount, 2, '.', '');

$currency = "USD";

$currency_value = "1";

 

But when I pull up my inital test order that I created through admin. It shows the line item cost at 82.50 and the total price at 83. Again without the $ sign.

 

Thanks for any help

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...