Claudia Posted January 24, 2023 Share Posted January 24, 2023 I hate to keep bothering you all, but things have been creeping up and I don't know if it's related to CC6.4.9 and/or PHP 8. I haven't changed any of the code for this issue since 6.4.7 and I have basically the same thing in customers and products and it works fine. Here goes: On the main order page I have some custom columns that I have made editable. That way I don't have to go into each order and input the info. I input it from the main order page and it populates the individual order. Right now if I edit the info in the individual order it will populate the main order page. I just can't edit and save on the main order page. Well it will let me input in the info just won't save it. Thanks in advance. Here's my code in admin/skin/templates/order.index Line 18: <thead> <tr> <td> </td> <td nowrap="nowrap">{$THEAD.cart_order_id}</td> <td> </td> <td>{$THEAD.customer}</td> <td>Sold Site</td> <td>{$THEAD.date}</td> <td>Order Date</td> <td nowrap="nowrap">{$THEAD.status}</td> <td>Delivery Date</td> <td>Feedback</td> <td>{$THEAD.total}</td> <td> </td> </tr> </thead> Line 51: <td><span class="editable" name="venue_sold_site[{$order.cart_order_id}]">{$order.venue_sold_site}</span></td> <td>{$order.date}</td> <td><span class="editable" name="all_order_date[{$order.cart_order_id}]">{$order.all_order_date}</span></td> <td class="{$order.status_class}">{$order.status}</td> <td><span class="editable" name="all_delivery_date[{$order.cart_order_id}]">{$order.all_delivery_date}</span></td> <td><span class="editable" name="feedback[{$order.cart_order_id}]">{$order.feedback}</span></td> Here's my code in admin/sources/order.index.inc Line 963: $thead_sort = array( 'venue_sold_site' => $GLOBALS['db']->column_sort('venue_sold_site','Venue Sold Site', 'sort', $current_page, $_GET['sort']), 'cart_order_id' => $GLOBALS['db']->column_sort('cart_order_id', $lang['orders']['order_number'], 'sort', $current_page, $_GET['sort']), 'customer' => $GLOBALS['db']->column_sort('customer', $lang['orders']['title_customer'], 'sort', $current_page, $_GET['sort']), 'all_order_date' => $GLOBALS['db']->column_sort('all_order_date', 'Order Date', 'sort', $current_page, $_GET['sort']), 'all_delivery_date' => $GLOBALS['db']->column_sort('all_delivery_date', 'Delivery Date', 'sort', $current_page, $_GET['sort']), 'feedback' => $GLOBALS['db']->column_sort('feedback','Feedback', 'sort', $current_page, $_GET['sort']), 'status' => $GLOBALS['db']->column_sort('status', $lang['common']['status'], 'sort', $current_page, $_GET['sort']), 'date' => $GLOBALS['db']->column_sort('order_date', $lang['common']['date'], 'sort', $current_page, $_GET['sort']), 'total' => $GLOBALS['db']->column_sort('total', $lang['basket']['total'], 'sort', $current_page, $_GET['sort']) ); Quote Link to comment Share on other sites More sharing options...
bsmither Posted January 24, 2023 Share Posted January 24, 2023 There needs to be a review of the edits made to admin, /sources/order.index.inc.php. This file is the PHP code that will process and database the values for $_POST['venue_sold_site'], $_POST['all_order_date'], $_POST['all_delivery_date'], and $_POST['feedback']. Quote Link to comment Share on other sites More sharing options...
Claudia Posted January 24, 2023 Author Share Posted January 24, 2023 I have this: (Forgot to post it) } else { $GLOBALS['main']->errorMessage($lang['orders']['error_orders_delete']); } } } if ($updated) { $GLOBALS['main']->successMessage($lang['orders']['notify_orders_status']); } if (isset($_GET['redirect']) && $_GET['redirect'] == 'dashboard' && $_POST['multi-action'] == '') { httpredir('?', 'orders'); } else { httpredir(currentPage(array('print_hash', 'multi-action'), $add_array)); } } elseif (isset($_POST['venue_sold_site'])) { foreach ($_POST['venue_sold_site'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('venue_sold_site' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders Sold Sites were updated"); } elseif (isset($_POST['all_order_date'])) { foreach ($_POST['all_order_date'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('all_order_date' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders All Order Dates were updated"); } elseif (isset($_POST['all_delivery_date'])) { foreach ($_POST['all_delivery_date'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('all_delivery_date' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders All Delivery Dates were updated"); } elseif (isset($_POST['feedback'])) { foreach ($_POST['feedback'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('feedback' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders Feedbacks were updated"); } elseif (isset($_GET['search'])) { // Search by date range Quote Link to comment Share on other sites More sharing options...
bsmither Posted January 24, 2023 Share Posted January 24, 2023 Here is a condensed and abridged summation of the code (and a tad bit more) that was posted above: if (isset($_POST['multi-order'])) } elseif (isset($_POST['venue_sold_site'])) } elseif (isset($_POST['all_order_date'])) } elseif (isset($_POST['all_delivery_date'])) } elseif (isset($_POST['feedback'])) } elseif (isset($_GET['search'])) } else { $where = (isset($_GET['customer_id'])) } This shows that only one of these choices will ever happen. So, if you add a new item of data to 'venue_sold_site' and 'feedback', you will not get the 'feedback' processed because 'venue_sold_site' got to it first, and then that's all there is to it! Any number of rows can have new data added, as long as all of that new data is in the same column, per Save. Quote Link to comment Share on other sites More sharing options...
Claudia Posted January 24, 2023 Author Share Posted January 24, 2023 So what should my code be to be able to change them all at one time? Quote Link to comment Share on other sites More sharing options...
bsmither Posted January 24, 2023 Share Posted January 24, 2023 (edited) Is there a conversation on the forum where this was developed? Maybe this one? https://forums.cubecart.com/topic/57425-make-a-field-inline-editible-in-customers-list/ Edited January 24, 2023 by bsmither Quote Link to comment Share on other sites More sharing options...
bsmither Posted January 24, 2023 Share Posted January 24, 2023 Try this structure. Find: } else { if (isset($_POST['multi-order']) && !empty($_POST['multi-order'])) { // Update selected orders to given status Between the first and second line, put the revised custom code: } else { if (isset($_POST['venue_sold_site'])) { foreach ($_POST['venue_sold_site'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('venue_sold_site' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders Sold Sites were updated"); } if (isset($_POST['all_order_date'])) { foreach ($_POST['all_order_date'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('all_order_date' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders All Order Dates were updated"); } if (isset($_POST['all_delivery_date'])) { foreach ($_POST['all_delivery_date'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('all_delivery_date' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders All Delivery Dates were updated"); } if (isset($_POST['feedback'])) { foreach ($_POST['feedback'] as $order_id => $site_name) { $GLOBALS['db']->update('CubeCart_order_summary', array('feedback' => $site_name), array('cart_order_id' => $order_id)); } $GLOBALS['main']->successMessage("One or more orders Feedbacks were updated"); } if (isset($_POST['multi-order']) && !empty($_POST['multi-order'])) { // Update selected orders to given status This will do each column in turn. Quote Link to comment Share on other sites More sharing options...
Claudia Posted January 25, 2023 Author Share Posted January 25, 2023 I found the topic: https://forums.cubecart.com/topic/57993-save-reload-button-on-admin-orders-page/#comment-252113 I forgot to make this change in admin/skin/templates/order.index when I upgraded to 6.4.9. I kept my code as it was Change line 36 from: httpredir('?_g=orders&'.http_build_query($_POST)); To: if (array_walk_recursive($_POST['search'],function($v,$k)use(&$aSearch){$aSearch=sprintf("%s%s",$aSearch,$v);},$aSearch) && !empty($aSearch)) httpredir('?_g=orders&'.http_build_query($_POST)); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.