+//----------------------------------------------------------------------------
+// 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($cart_id, $cartname='Items')
+{
+ global $Ajax, $SysPrefs;
+
+ if ((!isset($SysPrefs->no_check_edit_conflicts) || $SysPrefs->no_check_edit_conflicts==0) && $cart_id && isset($_SESSION[$cartname]) && $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();
+ }
+}
+