Jump to content
Jack_mcs

Additional Orders Info

Recommended Posts

INSERT INTO configuration_group (configuration_group_id, configuration_group_title, configuration_group_description, sort_order, visible)

VALUES ('289', 'Additional Info', 'Additional Orders Options', '29', '1');

Just to let you know if you have Google XML SEO Sitemap contribution installed it has the Configuration Group ID of 289. I simply changed that value in the SQL query to 290 to get around it.

Share this post


Link to post
Share on other sites

A new version has been uploaded with these changes:

 

-> Added code to highlight order with various colors, depending upon what is being monitored

-> Added database options to control the colors for highlighting

-> Changed code that checks for module names for better matching

-> Changed the configure ID to avoid conflicts with other contributions

-> Fixed mistake in orders.php where wrong order ID number was used

Share this post


Link to post
Share on other sites

A new version has been uploaded with these changes:

 

-> Added code to highlight order with various colors, depending upon what is being monitored

-> Added database options to control the colors for highlighting

-> Changed code that checks for module names for better matching

-> Changed the configure ID to avoid conflicts with other contributions

-> Fixed mistake in orders.php where wrong order ID number was used

 

Many thanks for that!

Can you please tell me how i can define which payment method will be monitored? The setting "Show Orders Highlight Payment" does not seem to work.

 

Thank you

Share this post


Link to post
Share on other sites

Many thanks for that!

Can you please tell me how i can define which payment method will be monitored? The setting "Show Orders Highlight Payment" does not seem to work.

 

Thank you

 

Problem solved! in my heavily modified orders.php I've put the code " // Look up things in orders ..." to the wrong place.

Everything works perfect now!

Thank you

Share this post


Link to post
Share on other sites

Hey Jack.

I have make the v1.4 to 100% translate to danish, and make some chance so the contri can be chache to other languard.

But where can i upload alle the files. ???

Sorry my bad ebglish.

Share this post


Link to post
Share on other sites

Hey Jack.

I have make the v1.4 to 100% translate to danish, and make some chance so the contri can be chache to other languard.

But where can i upload alle the files. ???

Sorry my bad ebglish.

You can't. You can send me the files, if you want, and I will include them in the next version, or post a link to them here so anyone wanting to download them can.

Share this post


Link to post
Share on other sites

Hi,

 

First of all, great and thx for the contribution.

 

I was wondering whether anyone can help me out on this:

 

1. Change the sub-total value (ex) to (inc) tax

2. remove the FL TAX row

 

Also, by any chance would you be able to add one more feature that is the invoice # ?

 

thank youuuuu

Share this post


Link to post
Share on other sites

First of all, great and thx for the contribution.

 

I was wondering whether anyone can help me out on this:

 

1. Change the sub-total value (ex) to (inc) tax

2. remove the FL TAX row

 

Also, by any chance would you be able to add one more feature that is the invoice # ?

There isn't any tax specific code in this contribution. You have to setup the tax for your shop and this contribution will just report it.

 

Oscommerce doesn't have an invoice number. If that is something that has been added to your shop, then you would need to figure out how to add it since I can't provide specific coding instructions on the forums due to too many requests and too little time.

Share this post


Link to post
Share on other sites

There isn't any tax specific code in this contribution. You have to setup the tax for your shop and this contribution will just report it.

 

Oscommerce doesn't have an invoice number. If that is something that has been added to your shop, then you would need to figure out how to add it since I can't provide specific coding instructions on the forums due to too many requests and too little time.

 

Thx jack for the quick reply...

 

i've removed the tax under the shipping modules and i remember that it wasn't showing anymore, but somehow it re-appears again...

 

i'll have a play around with it first and see what i can do...

 

cheers.

Share this post


Link to post
Share on other sites

Is it possible to add the total quantity that each order contains in the product listing?

If so, please enlighten me with that.

 

Thanks,

Fredrik

Share this post


Link to post
Share on other sites

Is it possible to add the total quantity that each order contains in the product listing?

If so, please enlighten me with that.

 

Thanks,

Fredrik

It should be;

Is it possible to add the total quantity that each order contains in the order listing?

Share this post


Link to post
Share on other sites

I little bit more info about the question abowe. I made some atempts by adding

 
$order = new order($oInfo->orders_id);
echo sizeof($order->products);

in some various combinations and with some additional code.

 

I also tried

<?php 
$total_units = 0;
for( $i=0, $j=count($order->products); $i<$j; $i++) {
$total_units += $order->products[$i]['qty'];
}
?>     <?php echo $total_units . ' items'; ?>

This code works fine for displaying total items on the invoce.php

But there was no luck by get the total amount of items in the list for orders at orders.php

 

I suspect I need to attach the code to each specific order number. But I cant find out how.

Edited by redrum

Share this post


Link to post
Share on other sites

First >Great Contibution!<

 

Thank You

 

Didn't see a post on this so if I missed it "Sorry"

 

I did the manual modification because I have a heavely mod’d store and I found that

 

Step 6f in the manual modification instructions is incorrect

It removes the customer name on the admin/order.php page

 

It removes this code

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

 

Should read

 

FIND (around line 464)

     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";
     }
?>

REPLACE WITH:

     /*** BOF: Additional Orders Info ***/
     $rowcolor = '';
     $watchedPayment = GetAdditionalOrderInfo($aiPartsPayment, $orders['payment_method']);
     $addrMismatch = BillingShippingDontMatch($orders['orders_id']);

     if ($addrMismatch && tep_not_null($watchedPayment))
        $rowcolor = SHOW_ORDERS_COLOR_BOTH;
     else if ($addrMismatch)
        $rowcolor = SHOW_ORDERS_COLOR_ADDRESS;
     else if (tep_not_null($watchedPayment))
        $rowcolor = SHOW_ORDERS_COLOR_PAYMENT;

     if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
       echo '              <tr id="defaultSelected" class="dataTableRowSelected" style="background-color:' . $rowcolor . '" 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" style="background-color:' . $rowcolor . '" 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 '#' . $orders['orders_id']; ?></td>
<?php /*** EOF: Additional Orders Info ***/ ?>

Share this post


Link to post
Share on other sites

Jack,

 

I'm running v1.4 and have noticed that on the orders.php page when you go into admin and click Customers->Orders->Click on an order.

 

On that page it says "Customers #: "

 

It does not display the customers number. It does display it correctly on both the invoice.php and the packingslip.php pages.

 

Any ideas? Here is the code that I have where it query's that info and displays it on that page.

 

/*** BOF: Additional Orders Info ***/
 // Look up things in orders
   if (tep_not_null($oID))
 {  
   $the_extra_query = tep_db_query("select * from " . TABLE_ORDERS . " where orders_id = '" . tep_db_input($oID) . "'");
   $the_extra = tep_db_fetch_array($the_extra_query);
   $the_customers_id = $the_extra['customers_id'];
 }
 else if (isset($_GET['cID']))
 {  
    $orders_query_raw = tep_db_query("select o.customers_id, o.orders_id from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_STATUS . " s on ( o.orders_status = s.orders_status_id ) where s.language_id = '" . (int)$languages_id . "' and o.customers_id = '" . (int)$_GET['cID'] . "' order by o.orders_id DESC");
    $the_extra = tep_db_fetch_array($orders_query_raw);
    $the_customers_id = $the_extra['customers_id'];
    $oID = $the_extra['orders_id'];  
 }
 else
 { 
    $orders_query_raw = tep_db_query("select o.customers_id, o.orders_id 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");
    $the_extra = tep_db_fetch_array($orders_query_raw);
    $the_customers_id = $the_extra['customers_id'];
    $oID = $the_extra['orders_id'];
 } 

 // Check for other orders
 $numOtherCompletedOrders = 0;
 $numOtherOrders = 0;
 $ttlOtherOrders = 0; 

 $parts = explode(",", SHOW_ORDERS_STATUS_CHECK);
 $where = " where ( ";
 for ($i = 0; $i < count($parts); ++$i)
 {
   if ($where !== " where ( ")
    $where .= " or "; 
   $where .= " orders_status_name LIKE '" . strtolower(trim($parts[$i])) . "'"; 
 }
 $where .= " ) ";

 $the_extra_query= tep_db_query("select o.orders_id, o.orders_status, ot.text  from " . TABLE_ORDERS . " o left join " . TABLE_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id) where o.orders_id != '" . tep_db_input($oID) . "' and o.customers_id = '" . $the_customers_id . "' and ot.class = 'ot_total'");
 while ($the_extra= tep_db_fetch_array($the_extra_query))
 {
   $order_status_query = tep_db_query("select orders_status_id from " . TABLE_ORDERS_STATUS .  $where . " and language_id = '" . (int)$languages_id . "'");
   while ($orders_status = tep_db_fetch_array($order_status_query))
   {
     if ($the_extra['orders_status'] == $orders_status['orders_status_id'])
       $numOtherCompletedOrders++;
   }

   $numOtherOrders++;
   $ttlOtherOrders += GetNumber($the_extra['text']);
 }
 // Look up things in customers
 $the_extra_query= tep_db_query("select * from " . TABLE_CUSTOMERS . " where customers_id = '" . $the_customers_id . "'");
 $the_extra= tep_db_fetch_array($the_extra_query);
 $the_customers_fax= $the_extra['customers_fax'];
 $aiPartsPayment = explode(",", SHOW_ORDERS_HIGHLIGHT_PAYMENT);
 /*** EOF: Additional Orders Info ***/

 

/*** BOF: Additional Orders Info ***/
?>
<!-- Customers ID# // -->
<tr>
 <td class="main"><b>Customers # </b></td>
 <td class="main"><?php echo $the_customers_id; ?></td>
</tr>
<!-- add Order # // -->
<tr>
 <td class="main"><b>Order # </b></td>
 <td class="main"><?php echo tep_db_input($oID); ?></td>
</tr>
<!-- add date/time // -->
<tr>
 <td class="main"><b>Date & Time</b></td>
 <td class="main"><?php echo tep_datetime_short($order->info['date_purchased']); ?></td>
</tr>
         <tr>
 <td class="main"><b>Shipping Method:</b></td>
 <td class="main"><?php echo tep_get_orders_shipping_method($oID); ?></td>
</tr>
<?php
/*** EOF: Additional Orders Info ***/

Share this post


Link to post
Share on other sites

Jack,

 

I'm running v1.4 and have noticed that on the orders.php page when you go into admin and click Customers->Orders->Click on an order.

 

On that page it says "Customers #: "

 

It does not display the customers number. It does display it correctly on both the invoice.php and the packingslip.php pages.

 

Any ideas? Here is the code that I have where it query's that info and displays it on that page.

You could try the included orders page to see if it works correctly. If it does, then there is something wrong with the edits you made to that file.

Share this post


Link to post
Share on other sites

Figured it out. For those who have the "buySafe" code in their orders.php file please take note that the instructions tell you to copy some code before "include(DIR_WS_CLASSES . 'order.php');" around line 91. There are 2 instances of this in the orders.php file if there is the buySafe code in it. You will want to copy it before the 2nd instance of that code and not in the middle of the buySafe code.

 

Jack, if you would like to clarify this in future instructions all that would need to be changed for that instruction is:

 

Find:

 

include(DIR_WS_CLASSES . 'order.php');

?>

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

 

Add Before:

..................

 

Thanks,

Blaine

Share this post


Link to post
Share on other sites

Figured it out. For those who have the "buySafe" code in their orders.php file please take note that the instructions tell you to copy some code before "include(DIR_WS_CLASSES . 'order.php');" around line 91. There are 2 instances of this in the orders.php file if there is the buySafe code in it. You will want to copy it before the 2nd instance of that code and not in the middle of the buySafe code.

 

Jack, if you would like to clarify this in future instructions all that would need to be changed for that instruction is:

 

Find:

 

include(DIR_WS_CLASSES . 'order.php');

?>

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

 

Add Before:

..................

Thanks for the suggestion but contribution instructions are always written for a stcok shop. Trying to include instructions for non-stock shops is a never-ending battle. That's why I include completed files in my contributions.

Share this post


Link to post
Share on other sites

Hi there,

 

Im having a strange issue with this contribution where if i click on "click to see other orders" it is not showing me other orders this customer has made. For some reason the OID is defaulting to 80, for example if i look at a order i have a url like this

 

 

shop/admin/orders.php?page=1&oID=194

 

If i click on the link to view other orders i have the following link

 

 

shop/admin/orders.php?cID=80

 

One order will be in the name of bloggs and the other in smith so they are not even the same customer?


I dont help with templates (thats what the seller is for)

 

th search function will often help, when it dont try this in google.

 

site:http://forums.oscommerce.com then your search word

Share this post


Link to post
Share on other sites

Im having a strange issue with this contribution where if i click on "click to see other orders" it is not showing me other orders this customer has made. For some reason the OID is defaulting to 80, for example if i look at a order i have a url like this

 

 

shop/admin/orders.php?page=1&oID=194

 

If i click on the link to view other orders i have the following link

 

 

shop/admin/orders.php?cID=80

 

One order will be in the name of bloggs and the other in smith so they are not even the same customer?

Yes, that is strange. What oscommerce version are you using? Do you have some contribution installed that alters the way checkout works, like Purchase Without Account or one page checkout?

Share this post


Link to post
Share on other sites

Hi

 

Sorry for the delay, there is no contribution that alters the checkout process its ms2.2rc2 installed?


I dont help with templates (thats what the seller is for)

 

th search function will often help, when it dont try this in google.

 

site:http://forums.oscommerce.com then your search word

Share this post


Link to post
Share on other sites

Hi

 

Sorry for the delay, there is no contribution that alters the checkout process its ms2.2rc2 installed?

 

 

Sorry PWA IS installed


I dont help with templates (thats what the seller is for)

 

th search function will often help, when it dont try this in google.

 

site:http://forums.oscommerce.com then your search word

Share this post


Link to post
Share on other sites

Sorry PWA IS installed

I don't recall the code for that now but I do recall there was a problem getting it to work with PWA. I thought that was fixed since it worked here in my test shop and for others but maybe not. I had planned on converting this one for 2.3 at some point so I will look at that problem then. No idea when that will be though.

Share this post


Link to post
Share on other sites

First >Great Contibution!<

 

Thank You

 

Didn't see a post on this so if I missed it "Sorry"

 

I did the manual modification because I have a heavely mod’d store and I found that

 

Step 6f in the manual modification instructions is incorrect

It removes the customer name on the admin/order.php page

 

It removes this code

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

 

Should read

 

FIND (around line 464)

  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";
  }
?>

REPLACE WITH:

  /*** BOF: Additional Orders Info ***/
  $rowcolor = '';
  $watchedPayment = GetAdditionalOrderInfo($aiPartsPayment, $orders['payment_method']);
  $addrMismatch = BillingShippingDontMatch($orders['orders_id']);

  if ($addrMismatch && tep_not_null($watchedPayment))
	 $rowcolor = SHOW_ORDERS_COLOR_BOTH;
  else if ($addrMismatch)
	 $rowcolor = SHOW_ORDERS_COLOR_ADDRESS;
  else if (tep_not_null($watchedPayment))
	 $rowcolor = SHOW_ORDERS_COLOR_PAYMENT;

  if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
	echo '			  <tr id="defaultSelected" class="dataTableRowSelected" style="background-color:' . $rowcolor . '" 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" style="background-color:' . $rowcolor . '" 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 '#' . $orders['orders_id']; ?></td>
<?php /*** EOF: Additional Orders Info ***/ ?>

 

 

Mich, thanks so much for pointing that out! I was wondering why customers weren't showing up.

 

I did it the way you mentioned, but if you leave that long line in there then the "Click to see other orders" won't work or appear [on the right-hand side]

 

So basically, Jack (the contributor) was correct, that line needs to be replaced.

 

What was left out was the replacement line.

 

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

 

needs to be replaced with the following line of code:

 

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

 

 

 

so, it should, instead, read:

 

FIND (around line 464)

  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>

REPLACE WITH:

  /*** BOF: Additional Orders Info ***/
  $rowcolor = '';
  $watchedPayment = GetAdditionalOrderInfo($aiPartsPayment, $orders['payment_method']);
  $addrMismatch = BillingShippingDontMatch($orders['orders_id']);

  if ($addrMismatch && tep_not_null($watchedPayment))
	 $rowcolor = SHOW_ORDERS_COLOR_BOTH;
  else if ($addrMismatch)
	 $rowcolor = SHOW_ORDERS_COLOR_ADDRESS;
  else if (tep_not_null($watchedPayment))
	 $rowcolor = SHOW_ORDERS_COLOR_PAYMENT;

  if (isset($oInfo) && is_object($oInfo) && ($orders['orders_id'] == $oInfo->orders_id)) {
	echo '			  <tr id="defaultSelected" class="dataTableRowSelected" style="background-color:' . $rowcolor . '" 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" style="background-color:' . $rowcolor . '" 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 '#' . $orders['orders_id']; ?></td>
			<td class="dataTableContent"><?php echo '#' . $orders['customers_name']; ?></td>
<?php /*** EOF: Additional Orders Info ***/ ?>

Edited by d-woo

Share this post


Link to post
Share on other sites

Actually, Jack,

 

The "Click to see other orders" [TEXT_INFO_SEE_OTHER_ORDERS] only works sometimes...

 

There is a conflict with the latest customer and the customer that is being clicked on. Sometimes a customer with multiple orders shows "0".

 

I commented the if statement in the following code from your mod...just to check what cID it was using

 

//if ($numOtherOrders > 0) {
	  $contents[] = array('text' => sprintf(TEXT_INFO_OTHER_ORDERS_TOTALS, $numOtherCompletedOrders, $currencies->format($ttlOtherOrders)));
	  $contents[] = array('text' => '<a href="' . tep_href_link(FILENAME_ORDERS, 'cID=' . $the_customers_id) . '">' . TEXT_INFO_SEE_OTHER_ORDERS . '</a>');
    //}

 

So, this works sometimes and then sometimes it does not.

 

Please assisst.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×