User Tools

Site Tools


tutorials:zencartmods:tariff.html

This is an old revision of the document!


This is a walkthrough for adding tariff data to each product.

This is also a general purpose tutorial for

  • adding a new field to each product which is editable from the admin product page.

DB Mods

As always, ALWAYS BACK UP YOUR DATABASE BEFORE APPLYING DB MODS.

ALTER TABLE `products` ADD `products_customs` TEXT NOT NULL;
ALTER TABLE `products` ADD `products_tariff_country` INT NOT NULL;
ALTER TABLE `products` ADD `products_tariff` VARCHAR( 255 ) NOT NULL;  

Adding a field to products

We'll be adding three fields (products_customs, products_tariff_country, products_tariff). This method will work in general for any field that you would add to the table 'products'.

Modified files:

  • admin/includes/modules/product/collect_info.php
  • admin/includes/modules/update_product.php

admin/includes/modules/product/collect_info.php

Find (line 41)

		       'master_categories_id' => ''
		       );

and replace with

		    'master_categories_id' => '',
		    'products_customs' => '',
		    'products_tariff_country' => 0,
		    'products_tariff' => ''
                    );

Find (line 62)

                                      p.products_price_sorter, p.master_categories_id     

and replace with

                                      p.products_price_sorter, p.master_categories_id,                                                                                                                                                                                        
                                      p.products_customs, p.products_tariff_country, p.products_tariff  

The first few lines of the file should now look like

<?php
/**                                                                                                                                                                                                                                                                           
 * @package admin                                                                                                                                                                                                                                                             
 * @copyright Copyright 2003-2010 Zen Cart Development Team                                                                                                                                                                                                                   
 * @copyright Portions Copyright 2003 osCommerce                                                                                                                                                                                                                              
 * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0                                                                                                                                                                                                   
 * @version $Id: collect_info.php 17947 2010-10-13 20:29:41Z drbyte $                                                                                                                                                                                                         
 */
if (!defined('IS_ADMIN_FLAG')) {
  die('Illegal Access');
}
$parameters = array('products_name' => '',
                    'products_description' => '',
                    'products_url' => '',
                    'products_id' => '',
                    'products_quantity' => '',
                    'products_model' => '',
                    'products_image' => '',
                    'products_price' => '',
                    'products_virtual' => DEFAULT_PRODUCT_PRODUCTS_VIRTUAL,
                    'products_weight' => '',
                    'products_date_added' => '',
                    'products_last_modified' => '',
                    'products_date_available' => '',
                    'products_status' => '',
                    'products_tax_class_id' => DEFAULT_PRODUCT_TAX_CLASS_ID,
                    'manufacturers_id' => '',
                    'products_quantity_order_min' => '',
                    'products_quantity_order_units' => '',
                    'products_priced_by_attribute' => '',
                    'product_is_free' => '',
                    'product_is_call' => '',
                    'products_quantity_mixed' => '',
                    'product_is_always_free_shipping' => DEFAULT_PRODUCT_PRODUCTS_IS_ALWAYS_FREE_SHIPPING,
                    'products_qty_box_status' => PRODUCTS_QTY_BOX_STATUS,
                    'products_quantity_order_max' => '0',
                    'products_sort_order' => '0',
                    'products_discount_type' => '0',
		    'products_discount_type_from' => '0',
		    'products_price_sorter' => '0',
		    'master_categories_id' => '',
		    'products_customs' => '',
		    'products_tariff_country' => 0,
		    'products_tariff' => ''
                    );
 
    $pInfo = new objectInfo($parameters);
 
    if (isset($_GET['pID']) && empty($_POST)) {
      $product = $db->Execute("select pd.products_name, pd.products_description, pd.products_url,                                                                                                                                                                             
                                      p.products_id, p.products_quantity, p.products_model,                                                                                                                                                                                   
                                      p.products_image, p.products_price, p.products_virtual, p.products_weight,                                                                                                                                                              
                                      p.products_date_added, p.products_last_modified,                                                                                                                                                                                        
                                      date_format(p.products_date_available, '%Y-%m-%d') as                                                                                                                                                                                   
                                      products_date_available, p.products_status, p.products_tax_class_id,                                                                                                                                                                    
                                      p.manufacturers_id,                                                                                                                                                                                                                     
                                      p.products_quantity_order_min, p.products_quantity_order_units, p.products_priced_by_attribute,                                                                                                                                         
                                      p.product_is_free, p.product_is_call, p.products_quantity_mixed,                                                                                                                                                                        
                                      p.product_is_always_free_shipping, p.products_qty_box_status, p.products_quantity_order_max,                                                                                                                                            
                                      p.products_sort_order,                                                                                                                                                                                                                  
                                      p.products_discount_type, p.products_discount_type_from,                                                                                                                                                                                
                                      p.products_price_sorter, p.master_categories_id,                                                                                                                                                                                        
                                      p.products_customs, p.products_tariff_country, p.products_tariff                                                                                                                                                                        
                              from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd                                                                                                                                                                            
                              where p.products_id = '" . (int)$_GET['pID'] . "'                                                                                                                                                                                               
                              and p.products_id = pd.products_id                                                                                                                                                                                                              
                              and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'");



Adding these variables here will auto-magically save these values to the DB, as long as there are corresponding input boxes in the user interface. So let make those next.

Find (line 74)

      $products_url = $_POST['products_url'];
    }

and repace with

      $products_url = $_POST['products_url'];
    }
 
    $countries_array = array(array('id' => '', 'text' => TEXT_NONE));
    $countries = $db->Execute("select countries_id, countries_name
                                   from " . TABLE_COUNTRIES . " order by countries_name");
    while (!$countries->EOF) {
      $countries_array[] = array('id' => $countries->fields['countries_id'],
                                     'text' => $countries->fields['countries_name']);
      $countries->MoveNext();
    }

Find (Line 513)

          <tr>
            <td class="main"><?php echo TEXT_PRODUCTS_SORT_ORDER; ?></td>
            <td class="main"><?php echo zen_draw_separator('pixel_trans.gif', '24', '15') . '&nbsp;' . zen_draw_input_field('products_sort_order', $pInfo->products_sort_order); ?></td>
          </tr>

and replace it with

          <tr>
            <td class="main"><?php echo TEXT_PRODUCTS_SORT_ORDER; ?></td>
            <td class="main"><?php echo zen_draw_separator('pixel_trans.gif', '24', '15') . '&nbsp;' . zen_draw_input_field('products_sort_order', $pInfo->products_sort_order); ?></td>
          </tr>
 
          <tr>
            <td colspan="2"><?php echo zen_draw_separator('pixel_black.gif', '100%', '3'); ?></td>
          </tr>
          	  <tr>
            <td class="main">Tariff #:</td>
            <td class="main"><?php echo zen_draw_separator('pixel_trans.gif', '24', '15') . '&nbsp;' . zen_draw_input_field('products_tariff', $pInfo->products_tariff); ?></td>
          </tr>
          <tr>
            <td class="main"><?php echo 'Country of Origin'; ?></td>
            <td class="main"><?php echo zen_draw_pull_down_menu('products_tariff_country', $countries_array, $pInfo->products_tariff_country); ?></td>
          </tr>
	  <tr>
		<td></td>
		<td>
<?php
echo zen_draw_textarea_field('products_customs', 'soft', '100%', '30', $pInfo->products_customs);
?>	
		</td>
	  </tr>

admin/includes/modules/update_product.php

find (line 52)

                            'products_price_sorter' => zen_db_prepare_input($_POST['products_price_sorter'])
                            );

and replace with

                            'products_price_sorter' => zen_db_prepare_input($_POST['products_price_sorter']),
			    'products_customs' => zen_db_prepare_input($_POST['products_customs']),
			    'products_tariff_country'  => zen_db_prepare_input($_POST['products_tariff_country']),
			    'products_tariff'  => zen_db_prepare_input($_POST['products_tariff'])
                            );



And you're done! Go create a new product or edit an existing one to make sure that everything works.

/home/ladyada/public_html/wiki/data/attic/tutorials/zencartmods/tariff.html.1305745416.txt.gz · Last modified: 2016/01/28 18:05 (external edit)