else
$memo_ = $_SESSION["wa_current_user"]->username . " - " . $memo_;
}
+ if (!is_subledger_account($account) && $account==get_company_pref('deffered_income_act') || $account==get_company_pref('grn_clearing_act'))
+ $person_id = $person_type_id = null;
+
$sql = "INSERT INTO ".TB_PREF."gl_trans ( type, type_no, tran_date,
account, dimension_id, dimension2_id, memo_, amount";
function add_gl_balance($type, $trans_id, $date_, $amount, $person_type_id=null, $person_id=null)
{
$amount = round2($amount, user_price_dec());
- if ($amount != 0)
+
+ if (floatcmp($amount, 0))
+ {
+ error_log(sprintf( _("Rounding error %s encountered for trans_type:%s,trans_no:%s"), $amount, $type, $trans_id));
return add_gl_trans($type, $trans_id, $date_, get_company_pref('exchange_diff_act'), 0, 0, "",
$amount, null, $person_type_id, $person_id, "The balanced GL transaction could not be inserted");
- else
+ } else
return 0;
-}
+}
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
-function get_gl_wo_cost_trans($trans_id, $person_id=-1)
+function get_gl_wo_cost_trans($trans_id, $cost_type=-1)
{
- $sql = "SELECT ".TB_PREF."gl_trans.*, ".TB_PREF."chart_master.account_name FROM "
- .TB_PREF."gl_trans, ".TB_PREF."chart_master
- WHERE ".TB_PREF."chart_master.account_code=".TB_PREF."gl_trans.account
- AND ".TB_PREF."gl_trans.type=".ST_WORKORDER
- ." AND ".TB_PREF."gl_trans.type_no=".db_escape($trans_id)."
- AND ".TB_PREF."gl_trans.person_type_id=".PT_WORKORDER;
- if ($person_id != -1)
- $sql .= " AND ".TB_PREF."gl_trans.person_id=".db_escape($person_id);
- $sql .= " AND amount < 0";
+ $sql = "SELECT costing.*, gl.*, chart.account_name, com.memo_ FROM "
+ .TB_PREF."wo_costing costing, "
+ .TB_PREF."gl_trans gl LEFT JOIN ".TB_PREF."comments com ON gl.type=com.type AND gl.type_no=com.id,"
+ .TB_PREF."chart_master chart
+ WHERE
+ costing.workorder_id=".db_escape($trans_id)
+ ." AND chart.account_code=gl.account
+ AND gl.type=costing.trans_type
+ AND gl.type_no=costing.trans_no";
+ if ($cost_type != -1)
+ $sql .= " AND costing.cost_type=".db_escape($cost_type);
+ $sql .= " AND amount < 0";
return db_query($sql, "The gl transactions could not be retrieved");
}
}
add_trans_tax_details($trans_type, $trans_no, $tax['id'], $tax['rate'], $included,
$amount, $net_amount, $ex_rate, $date, $memo);
-
+
}
//--------------------------------------------------------------------------------
// post to first found bank account using given gl acount code.
$is_bank_to = is_bank_account($journal_item->code_id);
- add_gl_trans($trans_type, $trans_id, $date_, $journal_item->code_id,
- $journal_item->dimension_id, $journal_item->dimension2_id,
- $journal_item->reference, $journal_item->amount);
+ add_gl_trans($trans_type, $trans_id, $date_, $journal_item->code_id,
+ $journal_item->dimension_id, $journal_item->dimension2_id,
+ $journal_item->reference, $journal_item->amount, null,
+ $journal_item->person_type_id,
+ $journal_item->person_id);
+
if ($is_bank_to)
{
add_bank_trans($trans_type, $trans_id, $is_bank_to, $ref,
add_gl_trans($trans_type, $trans_id_reverse, $reversingDate,
$journal_item->code_id, $journal_item->dimension_id, $journal_item->dimension2_id,
- $journal_item->reference, -$journal_item->amount);
+ $journal_item->reference, -$journal_item->amount,
+ null, $journal_item->person_type_id, $journal_item->person_id);
+
if ($is_bank_to)
{
add_bank_trans($trans_type, $trans_id_reverse, $is_bank_to, $ref,
//----------------------------------------------------------------------------------------
+function clear_gl_trans($type, $trans_id, $nested=false)
+{
+ if (!$nested)
+ begin_transaction();
+
+ $sql = "DELETE FROM ".TB_PREF."gl_trans WHERE type=".db_escape($type)
+ ." AND type_no=".db_escape($trans_id);
+
+ db_query($sql, "could not clear gl transactions for type=$type and trans_no=$trans_id");
+
+ if (!$nested)
+ commit_transaction();
+}
+
+//----------------------------------------------------------------------------------------
+
function void_journal_trans($type, $type_no, $use_transaction=true)
{
if ($use_transaction)
if (!$alsoclosed) {
$sql .= " AND gl_seq=0";
}
+ else
+ $sql .= " AND NOT ISNULL(a.gl_seq)";
+
$sql .= " GROUP BY gl.tran_date, a.gl_seq, gl.type, gl.type_no";
return $sql;
}