+//
+// Session handling hook. This is special case of hook class which have to be run before session is started.
+// If fa_session_manager class is defined in any installed extension, this class provides session handling
+// for application, otherwise standard php session handling is used.
+//
+function hook_session_start($company)
+{
+ if (class_exists('fa_session_manager')) {
+ global $SessionManager;
+ $SessionManager = new fa_session_manager($company);
+ return $SessionManager->installed;
+ }
+ return false;
+}
+//
+// Third party authentication modules.
+// Returns true after successfull authentication, false otherwise, null if no login hook is defined.
+//
+function hook_authenticate($login, $password)
+{
+ return hook_invoke_last('authenticate', $login, $password);
+}
+
+ /*
+ * Returns the quantity allowed to be dispatched for a particular item
+ * and a "reason" (css classes).
+ * This quantity would be the default value on the delivery note.
+ * The usual use case for this is when a item is in stock,
+ * but has been reserved by someone else.
+ * This allows extensions to implements its own priority algorithm.
+ * This function is by detail_id and not item in case the item is present
+ * more than one in the cart.
+ * If 'skip' is returned, the line will be skipped and not displayed
+ */
+function hook_get_dispatchable_quantity($line_item, $location, $date, $qoh) {
+ $result = hook_invoke_first('get_dispatchable_quantity', $line_item, array($location, $date, $qoh));
+ return $result !== null ? $result : hooks::default_get_dispatchable_quantity($line_item, $location, $date, $qoh);
+}