X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=includes%2Fhooks.inc;h=71717fc154202a4071612a4060bb428b3f371e6b;hb=e27f352665019d956e8bb4dc4b4086146f6e0535;hp=df906a91d4cb9194bb544b48d63981564b9e1def;hpb=e6af7f9f8087bc668eb55f3bf5acead018d38ad8;p=fa-stable.git diff --git a/includes/hooks.inc b/includes/hooks.inc index df906a91..71717fc1 100644 --- a/includes/hooks.inc +++ b/includes/hooks.inc @@ -190,6 +190,29 @@ class hooks { { return true; } + + /* + * Returns the quantity allowed to be dispatched for a particular item + * and a status (which can be used to style the row). + * 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. + */ + /* Default behavior check if there is enough quantity on hand and change the css + * class if needed */ + static function default_get_dispatchable_quantity($line_item, $location, $date, $qoh) { + global $SysPrefs; + + if ($SysPrefs->allow_negative_stock() || ($line_item->qty_dispatched <= $qoh)) { + return true; + } + return array($qoh, 'stockmankobg'); + return array($line_item->qty_dispatched, 'stockmankobg'); + } + } /* @@ -202,9 +225,10 @@ function install_hooks() $Hooks = array(); // include current language related $Hooks object if locale file exists - if (file_exists($path_to_root . "/lang/".$_SESSION['language']->code."/locale.inc")) + $lang_code = clean_file_name($_SESSION['language']->code); + if (file_exists($path_to_root . "/lang/" . $lang_code . "/locale.inc")) { - include_once($path_to_root . "/lang/".$_SESSION['language']->code."/locale.inc"); + include_once($path_to_root . "/lang/" . $lang_code . "/locale.inc"); $code = $_SESSION['language']->code; $hook_class = 'hooks_'.$code; $Hooks[$code] = new $hook_class; @@ -265,7 +289,7 @@ function hook_invoke_all($method, &$data, $opts=null) global $Hooks; $return = array(); - if (isset($Hooks[$ext]) + if (isset($Hooks)) { foreach($Hooks as $ext => $hook) if (method_exists($hook, $method)) { @@ -278,7 +302,7 @@ function hook_invoke_all($method, &$data, $opts=null) } set_ext_domain(); } - { + } return $return; } /* @@ -415,3 +439,19 @@ 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); +}