This CodeLet let you allow Remove tax line item from order.
Install module and make changes as per instruction on CodeLet.
CodeLet
<?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']);
}
}
?>
<?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;
}
?>
<?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
}
}
}
}
...
...
}
?>
<?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;
}
}
?>
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
<?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;
}
?>