Kryptronic Software Support Forum

You are viewing this forum as a guest. Login to an existing account, or create a new account, to reply to topics and to create new topics.

#1 07-25-2007 16:57:26

GoBrushless.com
Member
Registered: 06-29-2005
Posts: 431

"Pending Payment" versus Incomplete Orders

At what point does an order become a transaction?

Reason for asking is that I was running a few tests on the cart before going live and out of all my tests, only ONE order did I actually finalize and submit.

Low and behold, when I checked my "Review Online Orders" for my account, there were probably about 40 orders marked "Pending Payment".

Without any sort of batch processing functionality (ATS WHERE ARE YOU!?) this is a huge pain in the @ss.  Not to mention it's going to mean more "false" orders in my customers' "review online orders" pages which is going to confuse them.

Confused customers = fewer customers = extra email in my inbox = less sleep = very cranky CCP customer.

Suggestions?

Offline

 

#2 07-25-2007 17:45:12

dh783
Member
From: Avondale, Arizona
Registered: 04-06-2005
Posts: 6233
Website

Re: "Pending Payment" versus Incomplete Orders

An order becomes a transaction when you actually get paid for the item ( the gateway being used has retruned a completed transaction for the amount in question).

John

Offline

 

#3 07-25-2007 18:31:37

stevem
Member
Registered: 01-26-2007
Posts: 153

Re: "Pending Payment" versus Incomplete Orders

that can't be the case, though, as orders are showing up in my "review online orders" before I even submit them.  If i click "checkout", and then select "pay by mail", and hit continue, CCP logs that as a pending payment order even though on the NEXT screen you have to click "Submit this order"...

Offline

 

#4 07-25-2007 21:49:33

dh783
Member
From: Avondale, Arizona
Registered: 04-06-2005
Posts: 6233
Website

Re: "Pending Payment" versus Incomplete Orders

Order show up in the review online orders when the customer has selected a dilivery and payment method and clicked continue, which is just before the process button, but an order doesn't make a transaction unless I get paid in my book.

John

Offline

 

#5 07-26-2007 08:15:08

GoBrushless.com
Member
Registered: 06-29-2005
Posts: 431

Re: "Pending Payment" versus Incomplete Orders

Ok, but my question isn't personally when do other CCP users consider an order a "transaction".  I want to know when CCP determines at which point a "collection of stuff in their cart" becomes a logged, recorded, shows-up-in-review-online-orders ORDER.

I'm asking because I think it's making the decision a little prematurely.

Offline

 

#6 07-26-2007 14:30:23

cyberws
Member
From: Atlanta, GA
Registered: 02-05-2004
Posts: 756

Re: "Pending Payment" versus Incomplete Orders

I have created a script that you may use to purge your database of pending orders after a setup period.  It won't solve this problem completely but it will aid in at least keeping the invoices from piling up.

http://www.cyberws.com/info/ccp/

I hope it helps.  Comments and feedback are welcome.

Last edited by cyberws (07-26-2007 14:30:49)


Jeremy O

Production CCP .:. Version 6 w/QuickBuy and many in house hacks
Skills: PHP & Perl programming, Solaris & Linux server administration, Oracle OCP training and MySQL experience

Offline

 

#7 08-18-2007 09:59:17

webmaster
Administrator
From: York, PA
Registered: 04-20-2001
Posts: 19871
Website

Re: "Pending Payment" versus Incomplete Orders

An order shows up in the system when the customer reaches step 2 of 2 (review order) in checkout.  Typically the payment info is collected on that page or the user is linked over to a gateway.


Nick Hendler

Offline

 

#8 09-18-2007 22:43:40

PinkPanther
Member
From: USA
Registered: 07-11-2003
Posts: 216

Re: "Pending Payment" versus Incomplete Orders

webmaster wrote:

An order shows up in the system when the customer reaches step 2 of 2 (review order) in checkout.  Typically the payment info is collected on that page or the user is linked over to a gateway.

Nick and all,

In the CCP5 when customer went through all the steps except the payment page - their orders showed up under admin section as "payment pending". This was for the admins eyes only, however now with the CCP6, each customer can see their "payment pending" orders. Many of these orders pile up after customers add products and do not follow all the way through the checkout. When they relog in, they can find pending orders and get very confused.

Question is:

1) Is there away only the admin can see the pending payment transactions that are not "No Payment - Zero Balance", "Contact Customer", "Check Payment", or "Purchase Order"?

2) If this is not possible, is there away that the cart can ignore all transactions (which become pending) that do not follow all the way through the payment page. So if a customer does not click payment page and actually pick, Paypal, Credit Card, No Payment - Zero Balance", "Contact Customer", "Check Payment", or "Purchase Order"? etc., the transaction *won't* be recorded in anyway.

I prefer #1, it helps to see who leaves the cart without completing orders, but if I cannot have that, I rather not have customers see some odd "pending non-order order" in their account and get bombarded with concerned customers. It will be a major waste of time...

Thank you for the help.

K

Offline

 

#9 09-18-2007 23:10:56

dh783
Member
From: Avondale, Arizona
Registered: 04-06-2005
Posts: 6233
Website

Re: "Pending Payment" versus Incomplete Orders

I think the original idea was to let the customer still have a way to complete the order with out having to recreate the whole cart process since the invoices with pending payment have instruction to make a copy and send in a check. It would probably be just as good to give the customer the ability to delete the invoice(s) and/or a link to complete the order through the cart.

John

Offline

 

#10 09-19-2007 18:56:55

PinkPanther
Member
From: USA
Registered: 07-11-2003
Posts: 216

Re: "Pending Payment" versus Incomplete Orders

John,

Today a customer was going back and forth in the cart and in 5 hours time she had accumulated 23 pending invoices. I sympathize that it may have been a neat idea, but in the real world (or the world I am in), it is not working that well.

Now I had to assure her that these were not real orders and that she did not have to worry - we would delete them. She then got nervous that we could tinker with her account, delete orders etc. etc.. Which means one thing - in the future if she is missing anything in her account, she will think we did it. See where I am going with all this.

Over an hour and numerous e-mail later, I found salvation by trying to explain the inner workings of the cart (which is still puzzling to me).

Time is one commodity I need the most in my business. I should not have to spend it comforting people regarding the above.

Is there anyone that is involved with the cart can post some sort of a fix? Or am I on my own here sad

K

Offline

 

#11 09-20-2007 06:52:50

GoBrushless.com
Member
Registered: 06-29-2005
Posts: 431

Re: "Pending Payment" versus Incomplete Orders

couldn't agree with you more.

Offline

 

#12 09-20-2007 11:47:39

kiwimum
Member
Registered: 03-30-2004
Posts: 305
Website

Re: "Pending Payment" versus Incomplete Orders

This is going to be an issue for us as well. 

Please let us know how to hide pending / canceled orders so only admins can see.


Jessica
:: CCP5 > CCP6 > Magento > CCP7

Offline

 

#13 09-20-2007 20:26:07

kiwimum
Member
Registered: 03-30-2004
Posts: 305
Website

Re: "Pending Payment" versus Incomplete Orders

After spending time with my programmer trying to sort out how to fix this issue ourselves, it has become clear it is a major problem.

Why on earth does the cart add an order to the database before you've clicked "Process Order" on the "Review and Pay" screen?  Does not "Review and Pay" insinuate that you're not done?  What if you decide, upon *review* that you want to add something else to your order?  Too bad, you've already created a "pending" order in the database.  That's ridiculous.  It should not go into the database until the "Process Order" button has been pressed by the user.  *This is how every other shopping cart on the planet works.*  Please fix this bug as soon as possible as it's causing numerous headaches for myself and for others on this forum.


Jessica
:: CCP5 > CCP6 > Magento > CCP7

Offline

 

#14 09-20-2007 20:55:51

PinkPanther
Member
From: USA
Registered: 07-11-2003
Posts: 216

Re: "Pending Payment" versus Incomplete Orders

kiwimum wrote:

After spending time with my programmer trying to sort out how to fix this issue ourselves, it has become clear it is a major problem.

Why on earth does the cart add an order to the database before you've clicked "Process Order" on the "Review and Pay" screen?  Does not "Review and Pay" insinuate that you're not done?  What if you decide, upon *review* that you want to add something else to your order?  Too bad, you've already created a "pending" order in the database.  That's ridiculous.  It should not go into the database until the "Process Order" button has been pressed by the user.  *This is how every other shopping cart on the planet works.*  Please fix this bug as soon as possible as it's causing numerous headaches for myself and for others on this forum.

I am biting my lip, but it is not looking good for me. This and a few other "bugs" has made me put my business on hold and sooner or later, I am going to have to face the music. Plenty of potential here, just not enough support. How disappointing.

K

Offline

 

#15 09-20-2007 23:30:58

dh783
Member
From: Avondale, Arizona
Registered: 04-06-2005
Posts: 6233
Website

Re: "Pending Payment" versus Incomplete Orders

Removed information as it did not really work the way intended, and to not miss lead anybody.

John

Last edited by dh783 (10-12-2007 11:58:26)

Offline

 

#16 09-21-2007 12:05:26

kiwimum
Member
Registered: 03-30-2004
Posts: 305
Website

Re: "Pending Payment" versus Incomplete Orders

Thank you John, as always you're a huge help.  I'm having my programmer take a look at your instructions.  Crossed fingers.


Jessica
:: CCP5 > CCP6 > Magento > CCP7

Offline

 

#17 09-21-2007 12:27:13

kiwimum
Member
Registered: 03-30-2004
Posts: 305
Website

Re: "Pending Payment" versus Incomplete Orders

Okay, this is going to be helpful for us.  It's a shame we'll still have to deal with regularly deleting "pending" orders from the admin - especially without a batch function or even a toggle checkbox to bulk delete - but at least my customers will be spared the confusion.

It's not a bug if the program is working as it was ment too.

It is a bug if it's completely non-intuitive and not what the customer expects (customer meaning me as a client and also my customers)

This solution will not be helpful if someone WANTS to offer the "contact customer for order information" option. 

Your solution works to hide pending orders, but correct if I'm mistaken when I say that there are instances when a "pending" order is actually a completed order, ie. the user pressed the "process order" button and is paying with payment method that leaves it as "pending" such as "contact customer for order information.

So your solution only works if I don't use that kind of payment option.  If I do use that kind of payment option, your solution would only cause more grief.  Therefore, this is not a solution, but a work around that doesn't always work.  It SHOULD work as a customer would expect it to, ie when you press "Process Order" it processes your order, not before. 

Still, thank you for your help, John.  I'm just writing this all out for the benefit of Kryptronic, they need to fully understand what a big issue this is for many.

Last edited by kiwimum (09-21-2007 12:30:44)


Jessica
:: CCP5 > CCP6 > Magento > CCP7

Offline

 

#18 09-21-2007 14:05:56

dh783
Member
From: Avondale, Arizona
Registered: 04-06-2005
Posts: 6233
Website

Re: "Pending Payment" versus Incomplete Orders

If you make an if statement that would include the type of payment gateway that you are using that leaves the order as Pending Payment it will work as this example with both check and contact customer

Code:

if (($order['status'] != 'Pending Payment') || (($order['status'] == 'Pending Payment') && ($order['paymethod'] == 'check')) || (($order['status'] == 'Pending Payment') && ($order['paymethod'] == 'nopay'))) {

I only used the check paymet because it's what I use but you just have to know what the paymethod field holds.

As far as the orders go the customer should expect and should have an exact audit trail of what they have done with there account even if they did not complete the order (my opinion).

John

Offline

 

#19 09-21-2007 14:15:11

kiwimum
Member
Registered: 03-30-2004
Posts: 305
Website

Re: "Pending Payment" versus Incomplete Orders

John,

Okay, we've implemented your mods - but now even completed orders are hidden from the customer view.  Any ideas?

As far as the orders go the customer should expect and should have an exact audit trail of what they have done with there account even if they did not complete the order (my opinion).

Wow, I cannot fathom what kind of circumstances would make this necessary.  I can see keeping a record of pending orders AFTER clicking the button to submit the order - because then, clearly, it IS a pending order that just hasn't been completed by paying.  A cart that saves the orders before that button has been clicked is very confusing.

If there should be an exact audit trail then, it needs to be INTUITIVE of what the heck is going on.  To our average customer, you can't tell in the account manager than those orders were never completed.  Distinguishing them in the database would be nice, and then they could be separated in the account manager. "completed orders" and "started orders" or something.

My ladies go back and forth in their carts, submitting the same or slightly modified "pending order" 30 times within a couple of hours.  When they see all those orders in their account area, they freak out, thinking they've been charged that many times.  If those "pending orders" were organized under a heading in their account "Started, incomplete orders" or something descriptive - WITH AN OPTION TO DELETE THEM on the customer side, perhaps that could make some sense.  But how it is now?  No way, it's a customer service nightmare.

Last edited by kiwimum (09-21-2007 14:16:49)


Jessica
:: CCP5 > CCP6 > Magento > CCP7

Offline

 

#20 09-21-2007 14:26:01

popthestack
Member
Registered: 09-21-2007
Posts: 1

Re: "Pending Payment" versus Incomplete Orders

I find it funny that so much time is spent on rationalizing a problem by providing a work around.  Work arounds are great and necessary, but when a work around becomes the defense for a problem, that's ridiculous.

Having an order saved in the database, completely indistinguishable from other valid orders, before it's completed is non-intuitive, confusing, and a really poor design.

dh783 wrote:

As far as the orders go the customer should expect and should have an exact audit trail of what they have done with there account even if they did not complete the order (my opinion).

Customers don't expect it and won't ever expect it.  At least not the way it's implemented in CCP (non-intuitive, confusing, and poorly thought out).

Last edited by popthestack (09-21-2007 14:27:50)

Offline

 

#21 09-21-2007 14:57:42

kiwimum
Member
Registered: 03-30-2004
Posts: 305
Website

Re: "Pending Payment" versus Incomplete Orders

John,

Okay, we've implemented your mods - but now even completed orders are hidden from the customer view.  Any ideas?

Oops, we got this to work.  From my programmer:

so the hiding of completed orders was partially my fault, partially the stupid freaking editor i have.  the php files have some kind of weird line ending scheme (I think just CR) so when i open them in my editor all the line breaks look like double line breaks, and if put anything in there with only 1 line break, it removes it and puts it on the previous line.  and so anyway the line that pulls the orders from the database got commented out.

So it is working - and thank you again for the help.  I still stand by this issue being a problem and this work around only a temporary solution especially as it'll likely get overwritten during the next update.


Jessica
:: CCP5 > CCP6 > Magento > CCP7

Offline

 

#22 09-21-2007 16:40:06

dh783
Member
From: Avondale, Arizona
Registered: 04-06-2005
Posts: 6233
Website

Re: "Pending Payment" versus Incomplete Orders

Well looking at this agian it still want exclude multipal order if they are pending payment from the contact customer gateway or check for that matter, it does exclude pending payment order from other gateways thought. I have another idea and will let you know if I get it working.

John

Offline

 

#23 09-21-2007 16:41:29

cyberws
Member
From: Atlanta, GA
Registered: 02-05-2004
Posts: 756

Re: "Pending Payment" versus Incomplete Orders

Hello Group,

I wrote a script to handle pending invoices.  It is very flexible and require NO modification to the CCP code so as the code base changes you won't have to readd a hack.  It can be fully automated by crontabbing.  In addition you may opt to remove pending invoices or change them to cancelled.  Also you may set the time to perform this in seconds, minutes or days.  It will even optimized your tables and includes a test mode (for the removal part).

Yes, its free.

http://www.cyberws.com/info/ccp/

Good luck.


Jeremy O

Production CCP .:. Version 6 w/QuickBuy and many in house hacks
Skills: PHP & Perl programming, Solaris & Linux server administration, Oracle OCP training and MySQL experience

Offline

 

#24 09-21-2007 16:50:55

cyberws
Member
From: Atlanta, GA
Registered: 02-05-2004
Posts: 756

Re: "Pending Payment" versus Incomplete Orders

I will add you can edit the SQL statements to exclude any gateway you want by adding:

[query]
and paymethod not like 'nopay'
[/query]

To the end of the queries that have $orders_table in them.  Also you may change nopay to match whatever gateway you want.


Jeremy O

Production CCP .:. Version 6 w/QuickBuy and many in house hacks
Skills: PHP & Perl programming, Solaris & Linux server administration, Oracle OCP training and MySQL experience

Offline

 

#25 09-21-2007 19:13:57

dh783
Member
From: Avondale, Arizona
Registered: 04-06-2005
Posts: 6233
Website

Re: "Pending Payment" versus Incomplete Orders

Ok here is what i have come up with which will work with out to much moding done to the code. Frist create a new order status in the database khxc_selectcustom ( I just cloned the Pending Payment and changed this)

id = ccp0.orderstatus.NC
selectname* = Not Completed
selectvalue* = NC
selectorder = 6 (just because there are already 5 selection, and it was easier to place at the end than change all the orthers)

Then go to your private_dir/khxc/apps/{app}/ccp_order/ext/0000_status.php and find this code:

Code:

if (empty($order['gateway']['postorder'])) {

     if ($this->debug) {$this->debugger("exec: Post order updates required for the {$this->class} module.  Gateway does not support post order updates.");}

     return $order;

} // End of if statement.

change it to

Code:

if (empty($order['gateway']['postorder'])) {

     $order['order']['status'] = 'P';

     if ($this->debug) {$this->debugger("exec: Post order updates required for the {$this->class} module.  Gateway does not support post order updates, have set status to Pending Payment.");}

     return $order;

} // End of if statement.

Then go to private_dir/khxc/apps/{app}/ccp_checkout/ccp_checkout.php and find (just a part of the code is shown here)

Code:

// +--
// | Build out the order information and write it to the orders table.
// +--

$data = array('id'            => $this->cosess['order_number'],
              'epochorder'    => $this->globals('khxc_datetime.epoch'),
              'datemonth'     => $this->globals('khxc_datetime.month'),
              'dateday'       => $this->globals('khxc_datetime.day'),
              'dateyear'      => $this->globals('khxc_datetime.year'),
              'sessionid'     => $this->globals('khxc_session.sid'),
              'status'        => 'P',
              'paymethod'     => $gateway,
              'ordertotal'    => $this->totals['ordertotal'],

and set the status to NC

Code:

// +--
// | Build out the order information and write it to the orders table.
// +--

$data = array('id'            => $this->cosess['order_number'],
              'epochorder'    => $this->globals('khxc_datetime.epoch'),
              'datemonth'     => $this->globals('khxc_datetime.month'),
              'dateday'       => $this->globals('khxc_datetime.day'),
              'dateyear'      => $this->globals('khxc_datetime.year'),
              'sessionid'     => $this->globals('khxc_session.sid'),
              'status'        => 'NC',
              'paymethod'     => $gateway,
              'ordertotal'    => $this->totals['ordertotal'],

This will set the default status as Not Completed so that any order that doesn't get to the final process want be labled as Pending Payment. If the customer hits the final process button then all gateway that are set to update the order status will and all gateways set to not update the order status to Complete will set the status to Pending Payment.

From here you can go back to private_dir/khxc/apps/{app}/CCP/includes/orderlist.php and exclude all order for the customer with a status of Not Completed like this

Code:

     foreach ($orders as $num => $order) {

          if (!(empty($order['hasrecur']))) {$recur++;}

          $count++;

     } // End of foreach statement.

to

Code:

     foreach ($orders as $num => $order) {

          if (!(empty($order['hasrecur']))) {$recur++;}

if ($order['status'] != 'Not Completed') {

          $count++;

} // End of if statement.

     } // End of foreach statement.

and then

Code:

     foreach ($orders as $num => $order) {

          $link = $this->link_namespace($app,'ordersummary',array('ref' => $order['id']));

          print '<tr class="khxc_sorttable">' . $eol;

          print '<td class="khxc_sorttable">';
          print '<a href="' . $link . '" title="Review Order ' . $this->xhtml_encode($order['id']);
          print '">View Order</a></td>';

          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['id']) . '</td>' . $eol;
          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['date']) . '</td>' . $eol;
          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['status']) . '</td>' . $eol;

          if ($recur) {print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['recurtotal']) . '</td>' . $eol;}

          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['ordertotal']) . '</td>' . $eol;

          print '</tr>' . $eol;

     } // End of foreach statement.

to

Code:

     foreach ($orders as $num => $order) {

if ($order['status'] != 'Not Completed') {

          $link = $this->link_namespace($app,'ordersummary',array('ref' => $order['id']));

          print '<tr class="khxc_sorttable">' . $eol;

          print '<td class="khxc_sorttable">';
          print '<a href="' . $link . '" title="Review Order ' . $this->xhtml_encode($order['id']);
          print '">View Order</a></td>';

          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['id']) . '</td>' . $eol;
          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['date']) . '</td>' . $eol;
          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['status']) . '</td>' . $eol;

          if ($recur) {print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['recurtotal']) . '</td>' . $eol;}

          print '<td class="khxc_sorttable">' . $this->xhtml_encode($order['ordertotal']) . '</td>' . $eol;

          print '</tr>' . $eol;

} // End of if statement.

     } // End of foreach statement.

John

Offline

 

Board footer