Drupal: Remove tax line Item from Order Ubercart

This CodeLet let you allow Remove tax line item from order.

Install module and make changes as per instruction on CodeLet.

CodeLet: 

custom_uc_tax_remove.module

<?php
//$Id$
/**
* @file
* Custom Ubercart Tax remove module.
*
* Allows tax line item to be removed from orders.
* @author saru1683
*/

function custom_uc_add_deleted_lineitem_order_id($line_item_id) {

$sn__order_id = db_query("SELECT order_id FROM {uc_order_line_items} WHERE line_item_id = $line_item_id")->fetchField();
$data = array(
'order_id' => $sn__order_id,
);

drupal_write_record('custom_uc_tax_line_item_deleted', $data);
}

function custom_check_deleted_item($order_id) {
$sn__order_id = db_query("SELECT order_id FROM {custom_uc_tax_line_item_deleted} WHERE order_id = $order_id")->fetchField();
if(intval($sn__order_id) > 0)
return TRUE;
else
return FALSE;
}

function custom_uc_tax_remove_form_alter($form, &$form_state, $form_id) {
if($form_id == 'uc_order_edit_form') {
//_pre($form['line_items']);
}
}?>

--------------- .module file end---------------

Setup Instruction

Step-1). Open a file "MODULE_PATH/ubercart/uc_order/uc_order.line_item.inc" on your favourite editor.
Find the function uc_order_delete_line_item($id, $order = FALSE) //Line No:91 and make change as bellowed example.
<?php
function uc_order_delete_line_item($id, $order = FALSE) {
if ($order === FALSE) {
if(module_exists('custom_uc_tax_remove'))// add this line for taxes remove
custom_uc_add_deleted_lineitem_order_id($id);// add this line for taxes remove
db_delete('uc_order_line_items')
->condition('line_item_id', $id)
->execute();

}
else {
db_delete('uc_order_line_items')
->condition('order_id', $id)
->execute();
}

return TRUE;
}
?>

Step-2). Open a file "MODULE_PATH/ubercart/uc_order/uc_order.order_pane.inc" on your favourite editor.
Find the function uc_order_pane_line_items($op, $order, &$form = NULL, &$form_state = NULL) //Line no: 636 and make change as bellowed example.

<?php

function uc_order_pane_line_items($op, $order, &$form = NULL, &$form_state = NULL) {
switch ($op) {
...
...
case 'edit-form':
...
...
foreach ($items as $item) {
if (isset($item['add_list']) && $item['add_list'] === TRUE) {
$options[$item['id']] = check_plain($item['title']);
}

if (isset($item['display_only']) && $item['display_only'] == TRUE) {
$result = $item['callback']('display', $order);
if (is_array($result)) {
foreach ($result as $line) {
if($line['id'] == 'tax' && module_exists('custom_uc_tax_remove') && custom_check_deleted_item($order->order_id)) {// add this line to remove taxes
//do nothing
} else {// add this line to remove taxes
$line_items[] = array(
'line_item_id' => $line['id'],
'title' => $line['title'],
'amount' => $line['amount'],
'weight' => $item['weight'],
);
}// add this line to remove taxes
}
}
}
}
...
...
}
?>

Step-3). Open a file "MODULE_PATH/ubercart/uc_taxes/uc_taxes.modules" on your favourite editor.
Find a function uc_taxes_uc_order($op, $order, $arg2) Line no:183 and make change as bellowed example.

<?php
function uc_taxes_uc_order($op, $order, $arg2) {
switch ($op) {
...
...
// Now add line items for any remaining new taxes.
if (is_array($line_items)) {
if(module_exists('custom_uc_tax_remove') && custom_check_deleted_item($order->order_id)) {// add this line to remove taxes
} else { // add this line to remove taxes
foreach ($line_items as $line) {

$order->line_items[] = uc_order_line_item_add($order->order_id, 'tax', $line['title'], $line['amount'], $line['weight'], $line['data']);
$changes[] = t('Added %amount for %title.', array('%amount' => uc_currency_format($line['amount']), '%title' => $line['title']));
}
}// add this line to remove taxes

}

if (count($changes)) {
uc_order_log_changes($order->order_id, $changes);
usort($order->line_items, 'uc_weight_sort');
}
break;
}
}
?>

Is CodeLet useful?: 

Compatibility:

Image: 
Remove tax line item
Info file details: 

custom_uc_tax_remove.info

name = "Custom Ubercart"
description = "Customization on core Ubercart tax line item remove functionality from admin"
core = 7.x
package = "custom"

Install file details: 

custom_uc_tax_remove.install
<?php
//$Id$

/**
* @file
*
* hook = mg_permission
*
* @author JCS
*/

/**
* Implementation of hook_install
*
* @return unknown_type
*/
function custom_uc_tax_remove_install() {
drupal_install_schema('custom_uc_tax_line_item_deleted');
}

/**
* Implementation of hook_uninstall
*
* @return unknown_type
*/
function custom_uc_tax_remove_uninstall() {
drupal_uninstall_schema('custom_uc_tax_line_item_deleted');
}

/**
* Implementation of hook_schema
*
*
* @return unknown_type
*/
function custom_uc_tax_remove_schema() {
$schema['custom_uc_tax_line_item_deleted'] = array(
'description' => t("Store file permissions"),
'fields' => array(
'custom_id' => array(
'type' => 'serial',
'length' => 11,
'not null' => TRUE,
'unsigned' => TRUE,
),

'order_id' => array(
'type' => 'int',
'length' => 11,
'not null' => TRUE,
'unsigned' => TRUE,
),
),
'primary key' => array('custom_id'),
);

return $schema;
}