// Returns next transaction number.
// Used only for transactions stored in tables without autoincremented key.
//
+
function get_next_trans_no ($trans_type){
$st = get_systype_db_info($trans_type);
display_error('Internal error: invalid type passed to get_next_trans_no()');
return 0;
}
- $sql = "SELECT MAX(`$st[2]`) FROM $st[0]";
-
+ $sql1 = "SELECT MAX(`$st[2]`) as last_no FROM $st[0]";
if ($st[1] != null)
- $sql .= " WHERE `$st[1]`=$trans_type";
+ $sql1 .= " WHERE `$st[1]`=".db_escape($trans_type);
+
+ // check also in voided transactions (some transactions like location transfer are removed completely)
+ $sql2 = "SELECT MAX(`id`) as last_no FROM ".TB_PREF."voided WHERE `type`=".db_escape($trans_type);
+ $sql = "SELECT max(last_no) last_no FROM ($sql1 UNION $sql2) a";
$result = db_query($sql,"The next transaction number for $trans_type could not be retrieved");
$myrow = db_fetch_row($result);
case ST_CUSTDELIVERY : return array("".TB_PREF."debtor_trans", "type", "trans_no", "reference", "tran_date");
case ST_LOCTRANSFER : return array("".TB_PREF."stock_moves", "type", "trans_no", "reference", "tran_date");
case ST_INVADJUST : return array("".TB_PREF."stock_moves", "type", "trans_no", "reference", "tran_date");
- case ST_PURCHORDER : return array("".TB_PREF."purch_orders", null, "order_no", "reference", "tran_date");
+ case ST_PURCHORDER : return array("".TB_PREF."purch_orders", null, "order_no", "reference", "ord_date");
case ST_SUPPINVOICE : return array("".TB_PREF."supp_trans", "type", "trans_no", "reference", "tran_date");
case ST_SUPPCREDIT : return array("".TB_PREF."supp_trans", "type", "trans_no", "reference", "tran_date");
case ST_SUPPAYMENT : return array("".TB_PREF."supp_trans", "type", "trans_no", "reference", "tran_date");
case 31 : return array("".TB_PREF."service_orders", null, "order_no", "cust_ref", "date");
case ST_SALESQUOTE : return array("".TB_PREF."sales_orders", "trans_type", "order_no", "reference", "ord_date");
case ST_DIMENSION : return array("".TB_PREF."dimensions", null, "id", "reference", "date_");
- case ST_COSTUPDATE : return null;
+ case ST_COSTUPDATE : return array("".TB_PREF."gl_trans", "type", "type_no", null, "tran_date");
}
display_db_error("invalid type ($type) sent to get_systype_db_info", "", true);