<?php
/**********************************************************************
***********************************************************************/
function add_tax_type($sequence, $add_to_price, $name, $sales_gl_code, $purchasing_gl_code, $rate, $tax_code, $suspended)
{
    $sql = "INSERT INTO ".TB_PREF."tax_types (
                        sequence, add_to_price, 
                        name, sales_gl_code, 
                        purchasing_gl_code, rate, 
                        tax_code, suspended )
            VALUES (".db_escape($sequence).", ".db_escape($add_to_price).", "
                    .db_escape($name).", ".db_escape($sales_gl_code).", "
                    .db_escape($purchasing_gl_code).", $rate, "
                    .db_escape($tax_code).", ".db_escape($suspended).")";

    db_query($sql, "could not add tax type");
}

function update_tax_type($type_id, $sequence, $add_to_price, $name, $sales_gl_code, $purchasing_gl_code, $rate, $suspended)
{
    $sql = "UPDATE ".TB_PREF."tax_types 
                SET name = ".db_escape($name).",
                    sequence = ".db_escape($sequence).",
                    add_to_price = ".db_escape($add_to_price).",
                    sales_gl_code = ".db_escape($sales_gl_code).",
                    purchasing_gl_code = ".db_escape($purchasing_gl_code).",
                    rate = ".db_escape($rate).", 
                    suspended = ".db_escape($suspended)."  
            WHERE id = ".db_escape($type_id);

    db_query($sql, "could not update tax type");
}

function get_all_tax_types($all=false)
{
	$sql = "SELECT ".TB_PREF."tax_types.*,
                    Chart1.account_name AS SalesAccountName,
                    Chart2.account_name AS PurchasingAccountName
            FROM ".TB_PREF."tax_types 
                LEFT JOIN ".TB_PREF."chart_master AS Chart1 
                    ON ".TB_PREF."tax_types.sales_gl_code = Chart1.account_code
                LEFT JOIN ".TB_PREF."chart_master AS Chart2
                    ON ".TB_PREF."tax_types.purchasing_gl_code = Chart2.account_code "; 
            

	if (!$all) $sql .= " AND !".TB_PREF."tax_types.inactive";
    
        $sql .= " ORDER BY ".TB_PREF."tax_types.sequence";
    
	return db_query($sql, "could not get all tax types");
}

function get_all_tax_types_simple()
{
	$sql = "SELECT * FROM ".TB_PREF."tax_types ORDER BY sequence";

	return db_query($sql, "could not get all tax types");
}

function get_tax_type($type_id)
{
	$sql = "SELECT ".TB_PREF."tax_types.*,
                        Chart1.account_name AS SalesAccountName,
                        Chart2.account_name AS PurchasingAccountName
		FROM ".TB_PREF."tax_types 
                    LEFT JOIN ".TB_PREF."chart_master AS Chart1 
                        ON ".TB_PREF."tax_types.sales_gl_code = Chart1.account_code
                    LEFT JOIN ".TB_PREF."chart_master AS Chart2
                        ON ".TB_PREF."tax_types.purchasing_gl_code = Chart2.account_code 
                WHERE ".TB_PREF."tax_types.id=".db_escape($type_id);

	$result = db_query($sql, "could not get tax type");
	return db_fetch($result);
}

function get_tax_type_default_rate($type_id)
{
	$sql = "SELECT rate FROM ".TB_PREF."tax_types WHERE id=".db_escape($type_id);

	$result = db_query($sql, "could not get tax type rate");

	$row = db_fetch_row($result);
	return $row[0];
}

function delete_tax_type($type_id)
{
	begin_transaction();

	$sql = "DELETE FROM ".TB_PREF."tax_types WHERE id=".db_escape($type_id);

	db_query($sql, "could not delete tax type");

	// also delete any item tax exemptions associated with this type
	$sql = "DELETE FROM ".TB_PREF."item_tax_type_exemptions WHERE tax_type_id=".db_escape($type_id);

	db_query($sql, "could not delete item tax type exemptions");

	commit_transaction();
}

/*
	Check if gl_code is used by more than 2 tax types,
	or check if the two gl codes are not used by any other 
	than selected tax type.
	Necessary for pre-2.2 installations.
*/
function is_tax_gl_unique($gl_code, $gl_code2=-1, $selected_id=-1) {

	$purch_code = $gl_code2== -1 ? $gl_code : $gl_code2;

	$sql = "SELECT count(*) FROM "
		.TB_PREF."tax_types	
		WHERE (sales_gl_code=" .db_escape($gl_code)
		." OR purchasing_gl_code=" .db_escape($purch_code). ")";

	if ($selected_id != -1)
		$sql .= " AND id!=".db_escape($selected_id);

	$res = db_query($sql, "could not query gl account uniqueness");
	$row = db_fetch($res);

	return $gl_code2 == -1 ? ($row[0] <= 1) : ($row[0] == 0);
}

function is_tax_account($account_code)
{
	$sql= "SELECT id FROM ".TB_PREF."tax_types WHERE 
		sales_gl_code=".db_escape($account_code)." OR purchasing_gl_code=".db_escape($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;
}

function get_tax_type_by_name($tax_name)
{
    $sql = "SELECT * 
            FROM ".TB_PREF."tax_types WHERE name =".db_escape($tax_name);
    
    $result = db_query($sql,"Could not get_tax_type_by_name");
    return db_fetch($result);
}

function get_tax_type_unique_tax_code($tax_code, $selected_id){
    $sql = "SELECT tax_code, id  
            FROM ".TB_PREF."tax_types 
            WHERE tax_code = ".db_escape($tax_code);
    
    if($selected_id > 0){
        $sql .= " AND id <> ".db_escape($selected_id);
    }
    
    $result = db_query($sql,"Could not get_tax_type_unique_tax_code");
    return db_fetch($result);
}

function get_tax_type_unique_tax_name($tax_name, $selected_id){
    $sql = "SELECT name, id   
            FROM ".TB_PREF."tax_types 
            WHERE name = ".db_escape($tax_name);
    
    if($selected_id > 0){
        $sql .= " AND id <> ".db_escape($selected_id);
    }
    
    $result = db_query($sql,"Could not get_tax_type_unique_tax_name");
    return db_fetch($result);
}

?>