X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=inventory%2Fincludes%2Fdb%2Fitems_transfer_db.inc;h=f35bf3696c43439ca0bfcb6c26ba574a960e2a04;hb=dace790b5b71c554f8de87babda2585dfa2a074c;hp=4d4a438b62cd0bc181e07108c49840f3ec66cb29;hpb=da8311619dd73feae101d246a1957b972e00cbd2;p=fa-stable.git diff --git a/inventory/includes/db/items_transfer_db.inc b/inventory/includes/db/items_transfer_db.inc index 4d4a438b..f35bf369 100644 --- a/inventory/includes/db/items_transfer_db.inc +++ b/inventory/includes/db/items_transfer_db.inc @@ -1,28 +1,59 @@ . +***********************************************************************/ //------------------------------------------------------------------------------------------------------------- -function add_stock_transfer($Items, $location_from, $location_to, $date_, $type, $reference, $memo_) +function add_stock_transfer($Items, $location_from, $location_to, $date_, $reference, $memo_) { + global $SysPrefs, $path_to_root, $Refs; + begin_transaction(); - - $transfer_id = get_next_trans_no(systypes::location_transfer()); - - foreach ($Items as $line_item) + $args = func_get_args(); + $args = (object)array_combine(array('Items', 'location_from', 'location_to', + 'date_', 'reference', 'memo_'), $args); + $args->trans_no = 0; + hook_db_prewrite($args, ST_LOCTRANSFER); + + $transfer_id = get_next_trans_no(ST_LOCTRANSFER); + + if ($SysPrefs->loc_notification() == 1) { - add_stock_transfer_item($transfer_id, $line_item->stock_id, $location_from, - $location_to, $date_, $type, $reference, $line_item->quantity); + include_once($path_to_root . "/inventory/includes/inventory_db.inc"); + $st_ids = array(); + $st_names = array(); + $st_num = array(); + $st_reorder = array(); } - - add_comments(systypes::location_transfer(), $transfer_id, $date_, $memo_); - - add_forms_for_sys_type(systypes::location_transfer(), $transfer_id, $location_from, $location_to); - - references::save_last($reference, systypes::location_transfer()); - + foreach ($Items as $line_item) + { + if ($SysPrefs->loc_notification() == 1) + $loc = calculate_reorder_level($location_from, $line_item, $st_ids, $st_names, $st_num, $st_reorder); + add_stock_transfer_item($transfer_id, $line_item->stock_id, $location_from, + $location_to, $date_, $reference, $line_item->quantity); + } + + add_comments(ST_LOCTRANSFER, $transfer_id, $date_, $memo_); + + $Refs->save(ST_LOCTRANSFER, $transfer_id, $reference); + add_audit_trail(ST_LOCTRANSFER, $transfer_id, $date_); + + $args->trans_no = $transfer_id; + hook_db_postwrite($args, ST_LOCTRANSFER); + commit_transaction(); + + if ($SysPrefs->loc_notification() == 1 && count($st_ids) > 0) + send_reorder_email($loc, $st_ids, $st_names, $st_num, $st_reorder); - return $transfer_id; + return $transfer_id; } //------------------------------------------------------------------------------------------------------------- @@ -30,53 +61,56 @@ function add_stock_transfer($Items, $location_from, $location_to, $date_, $type, // add 2 stock_moves entries for a stock transfer // $date_ is display date (not sql) // std_cost is in HOME currency -// it seems the standard_cost field is not used at all +// it seems the unit_cost field is not used at all -function add_stock_transfer_item($transfer_id, $stock_id, $location_from, $location_to, - $date_, $type, $reference, $quantity) +function add_stock_transfer_item($transfer_id, $stock_id, $location_from, $location_to, + $date_, $reference, $quantity) { - add_stock_move(systypes::location_transfer(), $stock_id, $transfer_id, $location_from, - $date_, $reference, -$quantity, 0, $type); - - add_stock_move(systypes::location_transfer(), $stock_id, $transfer_id, $location_to, - $date_, $reference, $quantity, 0, $type); - + add_stock_move(ST_LOCTRANSFER, $stock_id, $transfer_id, $location_from, + $date_, $reference, -$quantity, 0); + + add_stock_move(ST_LOCTRANSFER, $stock_id, $transfer_id, $location_to, + $date_, $reference, $quantity, 0); + } //------------------------------------------------------------------------------------------------------------- - +// +// Get inventory transfer common data (currently this is still stored in stock_moves table). +// function get_stock_transfer($trans_no) { - $result = get_stock_transfer_items($trans_no); - if (db_num_rows($result) < 2) - { - display_db_error("transfer with less than 2 items : $trans_no", ""); - } - - // this function is very bad that it assumes that 1st record and 2nd record contain the - // from and to locations - if get_stock_moves uses a different ordering than trans_no then - // it will bomb - $move1 = db_fetch($result); - $move2 = db_fetch($result); - - // return an array of (From, To) - if ($move1['qty'] < 0) - return array($move1, $move2); - else - return array($move2, $move1); + // retrieve common data from any two from/to move records + $sql = "SELECT loc_from.*, loc_to.* + FROM + (SELECT trans_no, type, tran_date, reference, move.loc_code as from_loc, loc.location_name as from_name + FROM ".TB_PREF."stock_moves move + LEFT JOIN ".TB_PREF."locations loc ON loc.loc_code=move.loc_code + WHERE type=".ST_LOCTRANSFER." AND trans_no=".db_escape($trans_no). " AND qty<0 LIMIT 1) loc_from, + + (SELECT move.loc_code as to_loc, loc.location_name as to_name + FROM ".TB_PREF."stock_moves move + LEFT JOIN ".TB_PREF."locations loc ON loc.loc_code=move.loc_code + WHERE type=".ST_LOCTRANSFER." AND trans_no=".db_escape($trans_no). " AND qty>0 LIMIT 1) loc_to"; + + $result = db_query($sql, "Could not get transfer common data"); + + $data = db_fetch($result); + + return $data; } //------------------------------------------------------------------------------------------------------------- function get_stock_transfer_items($trans_no) { - $result = get_stock_moves(systypes::location_transfer(), $trans_no); - - if (db_num_rows($result) == 0) + $result = get_stock_moves(ST_LOCTRANSFER, $trans_no); + + if (db_num_rows($result) == 0) { - return null; + return null; } - + return $result; } @@ -84,7 +118,7 @@ function get_stock_transfer_items($trans_no) function void_stock_transfer($type_no) { - void_stock_move(systypes::location_transfer(), $type_no); + hook_db_prevoid(ST_LOCTRANSFER, $type_no); + void_stock_move(ST_LOCTRANSFER, $type_no); } -?> \ No newline at end of file