$date_, $gl_item->amount, $person_type_id, $person_id,
$currency, "Cannot insert a destination bank transaction");
}
+ // store tax details if the gl account is a tax account
+
+ $amount = $gl_item->amount;
+ add_gl_tax_details($gl_item->code_id, $trans_type, $trans_no, $amount);
}
// do the source account postings
- add_gl_trans($trans_type, $trans_no, $date_, $bank_gl_account, 0, 0, "",
+ add_gl_trans($trans_type, $trans_no, $date_, $bank_gl_account, 0, 0, $memo_,
-$total, null, $person_type_id, $person_id);
add_comments($trans_type, $trans_no, $date_, $memo_);
}
//--------------------------------------------------------------------------------
+// Stores GL journal/bank transaction on tax account for tax report
+//
+function add_gl_tax_details($gl_code, $trans_type, $trans_id, $amount)
+{
+ $tax_type = is_tax_account($gl_code);
+ if(!$tax_type) return; // $gl_code is not tax account
+
+ $tax = get_tax_type($tax_type);
+ if ($gl_code == $tax['sales_gl_code'])
+ add_customer_trans_tax_detail_item($trans_type, $trans_id,
+ $tax['id'], $tax['rate'], 0, -$amount);
+ else
+ add_supp_invoice_tax_item($trans_type, $trans_id,
+ $tax['id'], $tax['rate'], 0, $amount);
+
+}
+//--------------------------------------------------------------------------------
function add_journal_entries($items, $date_, $ref, $reverse, $memo_=null)
{
begin_transaction();
0, "", get_company_currency(),
"Cannot insert a destination bank transaction");
}
+ // store tax details if the gl account is a tax account
+ add_gl_tax_details($journal_item->code_id,
+ $trans_type, $trans_id, $journal_item->amount);
}
-
+
add_comments($trans_type, $trans_id, $date_, $memo_);
references::save($trans_type, $trans_id, $ref);
0, "", get_company_currency(),
"Cannot insert a destination bank transaction");
}
+ // store tax details if the gl account is a tax account
+ add_gl_tax_details($journal_item->code_id,
+ $trans_type, $trans_id, -$journal_item->amount);
}
add_comments($trans_type, $trans_id_reverse, $reversingDate, $memo_);
add_supp_invoice_gl_item($trans_type, $invoice_id, $entered_gl_code->gl_code,
$entered_gl_code->amount, $memo_);
+
+ // store tax details if the gl account is a tax account
+ add_gl_tax_details($entered_gl_code->gl_code,
+ $trans_type, $invoice_id, $entered_gl_code->amount);
}
foreach ($supp_trans->grn_items as $entered_grn)
{
return $ret_tax_array;
}
+//
+// Get all taxes for given tax_type_id. This can be used when
+// no tax group exemptions are active (local sales).
+// To be used in quick entries.
+//
+function get_taxes_for_item_tax($tax_type_id)
+{
+ $item_tax_type = get_item_tax_type($tax_type_id);
+
+ // if the item is exempt from all taxes then return 0
+ if ($item_tax_type["exempt"])
+ return null;
+
+ // get the exemptions for this item tax type
+ $item_tax_type_exemptions_db = get_item_tax_type_exemptions($tax_type_id);
+
+ // read them all into an array to minimize db querying
+ $item_tax_type_exemptions = array();
+ while ($item_tax_type_exemp = db_fetch($item_tax_type_exemptions_db))
+ {
+ $item_tax_type_exemptions[] = $item_tax_type_exemp["tax_type_id"];
+ }
+
+ $ret_tax_array = array();
+
+ $tax_rates = get_all_tax_types_simple();
+ // if any of the taxes are in the exemptions, then skip
+ while($tax_rate = db_fetch($tax_rates))
+ {
+
+ $skip = false;
+
+ // if it's in the exemptions, skip
+ foreach ($item_tax_type_exemptions as $exemption)
+ {
+ if (($tax_rate['id'] == $exemption))
+ {
+ $skip = true;
+ break;
+ }
+ }
+
+ if (!$skip)
+ {
+ $index = $tax_rate['id'];
+ $ret_tax_array[$index] = $tax_rate;
+ }
+ }
+
+ return $ret_tax_array;
+}
+function is_tax_account($account_code)
+{
+ $sql= "SELECT id FROM ".TB_PREF."tax_types WHERE
+ sales_gl_code='$account_code' OR purchasing_gl_code='$account_code'";
+ $result = db_query($sql, "checking account is tax account");
+ if (db_num_rows($result) > 0) {
+ $acct = db_fetch($result);
+ return $acct['id'];
+ } else
+ return false;
+}
?>
\ No newline at end of file