+//----------------------------------------------------------------------------
+// helper functions for script execution control
+//
+function processing_start()
+{
+ page_processing(false);
+ processing_end();
+ $_SESSION['Processing'] = $_SERVER['PHP_SELF'];
+}
+
+function processing_end()
+{
+ page_processing(true);
+ unset($_SESSION['Processing']);
+ if ( isset($_SESSION['Items']) ) {
+ unset($_SESSION['Items']->line_items);
+ unset($_SESSION['Items']);
+ }
+}
+
+function processing_active()
+{
+ return (isset($_SESSION['Processing']) && $_SESSION['Processing']==$_SERVER['PHP_SELF']);
+}
+/*
+ Check if the cart was not destroyed during opening the edition page in
+ another browser tab.
+*/
+function check_edit_conflicts($cartname='Items')
+{
+ global $Ajax;
+
+ if (get_post('cart_id') && $_POST['cart_id'] != $_SESSION[$cartname]->cart_id) {
+ display_error(_('This edit session has been abandoned by opening sales document in another browser tab. You cannot edit more than one sales document at once.'));
+ $Ajax->activate('_page_body');
+ display_footer_exit();
+ }
+}
+