Magento - Payment Method for each Product - magento

There is the possibility to choose the form of payment for each product?
For example: In my store one product is selling for "cash in game", so by the time the customer is buying this product magento enable only the payment option "in game".
As for the other products that are bought for real money, it disables the payment option "in game" and enable payment for card credit (for exemplo).
I found some modules, but tested and did not work.
Thank's

yes you can do it by this module. for example we want to cash on delivery for some products ->
First create a product attribute (name : 'magepal_payment_filter_by_product', type : yes/no) to identify these products.
E.g base of Magento v1.7 you could
Auto enable payment module programmatically [see][1]
Enable all applicable payment module and filter which module to show where
In /app/code/local/MagePal/PaymentFilterByProduct/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<MagePal_PaymentFilterByProduct>
<version>1.0.1</version>
</MagePal_PaymentFilterByProduct>
</modules>
<global>
<helpers>
<paymentfilterbyproduct>
<class>MagePal_PaymentFilterByProduct_Helper</class>
</paymentfilterbyproduct>
<payment>
<rewrite>
<data>MagePal_PaymentFilterByProduct_Helper_Payment_Data</data>
</rewrite>
</payment>
</helpers>
</global>
</config>
In /app/code/local/MagePal/PaymentFilterByProduct/Helper/Payment/Data.php
<?php
class MagePal_PaymentFilterByProduct_Helper_Payment_Data extends Mage_Payment_Helper_Data
{
public function getStoreMethods($store = null, $quote = null)
{
$methods = parent::getStoreMethods($store, $quote);
if(!Mage::getStoreConfig('paymentfilterbyproduct/general_option/paymentfilterbyproduct_enable', Mage::app()->getStore()) || !$quote){
return $methods;
}
//get a list of product in cart
$cart = Mage::getSingleton('checkout/session');
$specialProductInCart = array();
foreach ($cart->getQuote()->getAllItems() as $item) {
$specialProductInCart[] = $item->getMagepalPaymentFilterByProduct();
}
// if special product in cart
// need to if check $item->getMagepalPaymentFilterByProduct() return 'yes/no' or '0/1)
if(in_array('yes', $specialProductInCart)){
$filter_csv = Mage::getStoreConfig('paymentfilterbyproduct/filter_option/paymentfilter_special_products', Mage::app()->getStore());
}
else{
$filter_csv = Mage::getStoreConfig('paymentfilterbyproduct/filter_option/paymentfilter_all_product', Mage::app()->getStore());
}
$filter_array = explode(",", $filter_csv);
foreach ($methods as $k => $method){
if(!in_array($method->getCode(), $filter_array))
unset($methods[$k]);
}//methods
return $methods;
}
}
In /app/code/local/MagePal/PaymentFilterByProduct/etc/system.xml
<?xml version="1.0"?>
<config>
<tabs>
<magepal translate="label" module="paymentfilterbyproduct">
<label>MagePal</label>
<sort_order>900</sort_order>
</magepal>
</tabs>
<sections>
<paymentfilterbyproduct translate="label" module="paymentfilterbyproduct">
<label>Payment Method Filter by Product</label>
<tab>magepal</tab>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<general_option translate="label">
<label>General Options</label>
<frontend_type>text</frontend_type>
<sort_order>1</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<paymentfilter_enable translate="label">
<label>Enable Payment Filter</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</paymentfilter_enable>
</fields>
</general_option>
<filter_option translate="label">
<label>Payment Method Filter Configuration</label>
<frontend_type>text</frontend_type>
<sort_order>2</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Please enable all applicable payment methods in system payment config</comment>
<fields>
<paymentfilter_all_products translate="label">
<label>Select Default Payment option for All Products</label>
<frontend_type>multiselect</frontend_type>
<source_model>MagePal_PaymentFilterByProduct_ActivePaymentMethod</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</paymentfilter_admin>
<paymentfilter_special_products translate="label">
<label>Select Payments for Cart with Special Products</label>
<frontend_type>multiselect</frontend_type>
<source_model>MagePal_PaymentFilterByProduct_ActivePaymentMethod</source_model>
<sort_order>40</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</paymentfilter_store>
</fields>
</filter_option>
</groups>
</paymentfilterbyproduct>
</sections>
</config>
In /app/code/local/MagePal/PaymentFilterByProduct/Helper/Data.php
<?php
class MagePal_PaymentFilterByProduct_Helper_Data extends Mage_Core_Block_Template
{
}
In /app/code/local/MagePal/PaymentFilterByProduct/ActivePaymentMethod.php
<?php
class MagePal_PaymentFilterByProduct_ActivePaymentMethod
{
//get all active (enable) payment method
public function toOptionArray()
{
$payments = Mage::getSingleton('payment/config')->getActiveMethods();
foreach ($payments as $paymentCode=>$paymentModel) {
if($paymentModel->canUseCheckout() == 1){
$paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title');
$methods[$paymentCode] = array(
'label' => $paymentTitle,
'value' => $paymentCode,
);
}
}
return $methods;
}
}
In /app/etc/modules/MagePal_PaymentFilterByProduct.xml
<?xml version="1.0"?>
<config>
<modules>
<MagePal_PaymentFilterByProduct>
<active>true</active>
<codePool>local</codePool>
</MagePal_PaymentFilterByProduct>
</modules>
</config>

Related

Magento My custom module block not show

I'm using Magento 1.9.2.2 and I'm trying to create a module which show a product list. Bellow my current code which doesn't render the block. I hope someone can put me in the right direction how to fix this.
app/etc/modules/Envato_All.xml
<?xml version="1.0"?>
<config>
<modules>
<Envato_Recentproducts>
<active>true</active>
<codePool>local</codePool>
</Envato_Recentproducts>
</modules>
</config>
app/code/local/Envato/Recentproducts/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Envato_Recentproducts>
<version>1.0</version>
</Envato_Recentproducts>
</modules>
<global>
<blocks>
<recentproducts>
<class>Envato_Recentproducts_Block</class>
</recentproducts>
</blocks>
<models>
<recentproducts>
<class>Envato_Recentproducts_Model</class>
</recentproducts>
</models>
</global>
</config>
app/code/local/Envato/Recentproducts/Model/Recentproducts.php
<?php
class Envato_Recentproducts_Model_Recentproducts extends Mage_Core_Model_Abstract
{
public function getRecentProduct()
{
$products = Mage::getModel("catalog/product")
->getCollection()
->addAttributeToSelect('*')
->setOrder('entity_id', 'DESC')
->setPageSize(5);
return $products;
}
}
app/code/local/Envato/Recentproducts/Block/Recentproducts.php
<?php
class Envato_Recentproducts_Block_Recentproducts extends Mage_Core_Block_Template
{
public function getRecentProducts()
{
// call model to fetch data
$arr_products = array();
$products = Mage::getModel("recentproducts/recentproducts")­->getRecentProducts();
foreach ($products as $product) {
$arr_products[] = array(
'id' => $product-­>getId(),
'name' => $product­->getName(),
'url' => $product­->getProductUrl(),
);
}
return $arr_products;
}
}
app/design/frontend/default/default/template/recentproducts/recentproducts.phtml
<?php
$products = $this­->getRecentProducts();
?>
<div id="product_list">
<h1>Recent Products</h1>
<?php if (is_array($products) && count($products)) { ?>
<?php foreach($products as $product) { ?>
<div>
<?php echo $product['name'] ?>
</div>
<?php } ?>
<?php } ?>
</div>
Used block
{{block type="recentproducts/recentproducts" name="recentproducts_recentproducts" template="recentproducts/recentproducts.phtml"}}
Have you tried to add "recentproducts/recentproducts" and set to allow under configuration->permission->Blocks?
don't forget to flush your cache after adding this..
Let me know

Generate sitemap not working

I need to generate sitemap and display in my view.But am getting this error:-
error on line 1 at column 2: StartTag: invalid element name
Controller:-
class Sitemap extends CI_Controller {
public function index()
{
$this->load->view('sitemap/sitemap.html');
}
}
View:-
<?php header('Content-type: text/xml'); ?>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.domain.com /</loc>
<lastmod>2008-01-01</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.domain.com/catalog?item=vacation_hawaii</loc>
<changefreq>weekly</changefreq>
</url>
</urlset>
Try like this : Sitemap generation with Codeigniter
contoroller:
Class Sitemap extends CI_Controller {
function index()
{
$data = "";//select urls from DB to Array
header("Content-Type: text/xml;charset=iso-8859-1");
$this->load->view("sitemap",$data);
}
}
view:
<?= '<?xml version="1.0" encoding="UTF-8" ?>' ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.domain.com /</loc>
<lastmod>2008-01-01</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.domain.com/catalog?item=vacation_hawaii</loc>
<changefreq>weekly</changefreq>
</url>
</urlset>
add line to config/routes.php :
$route['seo/sitemap\.xml'] = "seo/sitemap";
=> roev's answer

Can we use same observer class to handle global & frontend events in magento

I am currently working on Event observer pattern where we need to add custom field name to newsletter subscriber block. I am successfully done with the frontend part like adding the custom field to database using installer script & added the value in database entered by user from frontend.
Now I am stuck with displaying that custom field in magento admin in newsletter grid.
Here goes the config.xml file for this:-
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Scandi_Newsletter>
<version>0.1.0</version>
</Scandi_Newsletter>
</modules>
<global>
<resources>
<scandi_newsletter_setup>
<setup>
<module>Scandi_Newsletter</module>
<class>Scandi_Newsletter_Model_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</scandi_newsletter_setup>
<newsletter_write>
<connection>
<use>core_write</use>
</connection>
</newsletter_write>
<newsletter_read>
<connection>
<use>core_read</use>
</connection>
</newsletter_read>
</resources>
<events>
<newsletter_subscriber_save_before>
<observers>
<scandi_newsletter_model_observer>
<type>model</type>
<class>Scandi_Newsletter_Model_Observer</class>
<method>newsletterSubscriberSaveBefore</method>
</scandi_newsletter_model_observer>
</observers>
</newsletter_subscriber_save_before>
</events>
</global>
<adminhtml>
<events>
<adminhtml_block_html_before>
<observers>
<layout_before>
<class>Scandi_Newsletter_Model_Observer</class>
<method>addMassAction</method>
</layout_before>
</observers>
</adminhtml_block_html_before>
</events>
</adminhtml>
</config>
This is the code I am using for Observer.php:-
<?php
class Scandi_Newsletter_Model_Observer
{
public function newsletterSubscriberSaveBefore(Varien_Event_Observer $observer) {
$subscriber = $observer->getEvent()->getSubscriber();
$name = Mage::app()->getRequest()->getParam('subscriber_name');
$subscriber->setSubscriberName($name);
return $this;
}
public function addMassAction($observer)
{
echo "i am here"; die;
$block = $observer->getEvent()->getBlock();
$block = $observer->getBlock();
if ($block->getType() == 'adminhtml/newsletter_subscriber_grid') {
/* #var $block Mage_Adminhtml_Block_Newsletter_Subscriber_Grid */
$block->addColumnAfter('subscriber_name', array(
'header' => 'Name',
'type' => 'text',
'index' => 'subscriber_name',
), 'subscriber_id');
}
}
}
?>
I am confused with whether we can use same observer class for multiple events like I am using currently or not.
If yes,observer for admin part is not working.
Any suggestions on that???
Yes you can use same observer for multiple events. But the method invoked in each event should be defferent. ie
<adminhtml>
<events>
<adminhtml_block_html_before>
<observers>
<layout_before>
<class>Scandi_Newsletter_Model_Observer</class>
<method>addMassAction</method>
</layout_before>
</observers>
</adminhtml_block_html_before>
<another_event_reference>
<observers>
<some_other_unique_value>
<class>Scandi_Newsletter_Model_Observer</class>
<method>someOtherMethod</method>
</some_other_unique_value>
</observers>
</another_event_reference>
</events>
</adminhtml>
Now you need to define someOtherMethod() and addMassAction() inside Scandi_Newsletter_Model_Observer. Thats it.

How to create new fields for customer

I am developing a website with magento ver-1.6. I am try to create new fields for customer registration, but it not created. I followed the same way what we followed in ver-1.5.
Any variation in create customer fields in 1.6?
I don't know what you tried so I'm just going to list all the steps needed to add a new schooL customer attribute to the Magento 1.6.1 registration form.
Create a module preferably, or place similiar code to this in some .phtml file and run it once. If you're doing this proper and creating a module, put code like this into the mysql_install file:
<?php
$installer = $this;
$installer->startSetup();
$setup = Mage::getModel('customer/entity_setup', 'core_setup');
$setup->addAttribute('customer', 'school', array(
'type' => 'int',
'input' => 'select',
'label' => 'School',
'global' => 1,
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'default' => '0',
'visible_on_front' => 1,
'source'=> 'profile/entity_school',
));
if (version_compare(Mage::getVersion(), '1.6.0', '<='))
{
$customer = Mage::getModel('customer/customer');
$attrSetId = $customer->getResource()->getEntityType()->getDefaultAttributeSetId();
$setup->addAttributeToSet('customer', $attrSetId, 'General', 'school');
}
if (version_compare(Mage::getVersion(), '1.4.2', '>='))
{
Mage::getSingleton('eav/config')
->getAttribute('customer', 'school')
->setData('used_in_forms', array('adminhtml_customer','customer_account_create','customer_account_edit','checkout_register'))
->save();
}
$installer->endSetup();
?>
In your module config.xml file. Note that the name of my module is Excellence_Profile.
<profile_setup> <!-- Replace with your module name -->
<setup>
<module>Excellence_Profile</module> <!-- Replace with your module name -->
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
</profile_setup>
Here we will add our attribute, to the customer registration form. In version 1.6.0(+) the phtml file used is persistance/customer/register.phtml and in version 1.6.0(-) the phtml file used is customer/form/register.phtml
So we need to open the phtml file, based on magento version and add this code in the tag.
<li>
<?php
$attribute = Mage::getModel('eav/config')->getAttribute('customer','school');
?>
<label for="school" class="<?php if($attribute->getIsRequired() == true){?>required<?php } ?>"><?php if($attribute->getIsRequired() == true){?><em>*</em><?php } ?><?php echo $this->__('School') ?></label>
<div class="input-box">
<select name="school" id="school" class="<?php if($attribute->getIsRequired() == true){?>required-entry<?php } ?>">
<?php
$options = $attribute->getSource()->getAllOptions();
foreach($options as $option){
?>
<option value='<?php echo $option['value']?>' <?php if($this->getFormData()->getSchool() == $option['value']){ echo 'selected="selected"';}?>><?php echo $this->__($option['label'])?></option>
<?php } ?>
</select>
</div>
</li>
For magento 1.4.2(+) that is all that is required for the registration step. If you create a user from here, you should see the school text field in admin.
For magento 1.4.1(-), we need to do another thing open the your modules config.xml file and add:
<global>
<fieldsets>
<customer_account>
<school><create>1</create><update>1</update><name>1</name></school>
</customer_account>
</fieldsets>
</global>
Once, user has created his account in the MyAccount->Account Information section he should be able to edit the school field as well. For this open the phtml file customer/form/edit.phtml and put in the code in the :
<?php
<li>
<?php
$attribute = Mage::getModel('eav/config')->getAttribute('customer','school');
?>
<label for="is_active" class="<?php if($attribute->getIsRequired() == true){?>required<?php } ?>"><?php if($attribute->getIsRequired() == true){?><em>*</em><?php } ?><?php echo $this->__('School') ?></label>
<div class="input-box">
<select name="school" id="school" class="<?php if($attribute->getIsRequired() == true){?>required-entry<?php } ?>">
<?php
$options = $attribute->getSource()->getAllOptions();
foreach($options as $option){
?>
<option value='<?php echo $option['value']?>' <?php if($this->getCustomer()->getSchool() == $option['value']){ echo 'selected="selected"';}?>><?php echo $this->__($option['label'])?></option>
<?php } ?>
</select>
</div>
</li>
A registration form also shows up at the checkout page in magento. To add you field here, you need to edit checkout/onepage/billing.phtml for magento version 1.6(-) and persistant/checkout/onepage/billing.phtml for magento version 1.6(+) file and then find the code:
<?php if(!$this->isCustomerLoggedIn()): ?>
inside this if condition add your field
<li>
<li>
<?php
$attribute = Mage::getModel('eav/config')->getAttribute('customer','school');
?>
<label for="school" class="<?php if($attribute->getIsRequired() == true){?>required<?php } ?>"><?php if($attribute->getIsRequired() == true){?><em>*</em><?php } ?><?php echo $this->__('School') ?></label>
<div class="input-box">
<select name="billing[school]" id="school" class="<?php if($attribute->getIsRequired() == true){?>required-entry<?php } ?>">
<?php
$options = $attribute->getSource()->getAllOptions();
foreach($options as $option){
?>
<option value='<?php echo $option['value']?>'><?php echo $this->__($option['label'])?></option>
<?php } ?>
</select>
</div>
</li>
Next open your module config.xml or any other config.xml file, add the following lines:
<global>
<fieldsets>
<checkout_onepage_quote>
<customer_school>
<to_customer>school</to_customer>
</customer_school>
</checkout_onepage_quote>
<customer_account>
<school>
<to_quote>customer_school</to_quote>
</school>
</customer_account>
</fieldsets>
</global>
Next we need to make some changes in the quote table i.e sales_flat_quote table in magento. If you have a module then create an upgrade version of your sql file and put in this code:
$tablequote = $this->getTable('sales/quote');
$installer->run("
ALTER TABLE $tablequote ADD `customer_school` INT NOT NULL
");
After doing this make sure to clear you magento cache, specifically “Flush Magento Cache” and “Flush Cache Storage”.
Now when you place order, the customer is created with the correct school attribute.
I had problems to save the new fields in the checkout_register form.
I had to extend the global->fieldsets node:
<global>
<fieldsets>
<checkout_onepage_quote>
<customer_school>
<to_customer>school</to_customer>
</customer_school>
</checkout_onepage_quote>
<checkout_onepage_billing>
<school>
<to_customer>*</to_customer>
</school>
</checkout_onepage_billing>
<customer_account>
<school>
<to_quote>customer_school</to_quote>
</school>
</customer_account>
<sales_convert_order>
<customer_school>
<to_quote>*</to_quote>
</customer_school>
</sales_convert_order>
</fieldsets>
</global>

How do I add a filter on a product attribute to Magento Advanced Export Profiles?

I want to filter my data to csv using the "Manufacturer" field. I tried this, but it didn't work:
<action type="catalog/convert_adapter_product" method="load">
<var name="store"><![CDATA[0]]></var>
<var name="filter/manufacturer"><![CDATA[898]]></var>
</action>
<action type="catalog/convert_parser_product" method="unparse">
<var name="store"><![CDATA[0]]></var>
<var name="url_field"><![CDATA[0]]></var>
</action>
<action type="dataflow/convert_mapper_column" method="map">
<var name="map">
<map name="sku"><![CDATA[sku]]></map>
<map name="name"><![CDATA[name]]></map>
</var>
<var name="_only_specified">true</var>
</action>
<action type="dataflow/convert_parser_csv" method="unparse">
<var name="delimiter"><![CDATA[,]]></var>
<var name="enclose"><![CDATA["]]></var>
<var name="fieldnames">true</var>
</action>
<action type="dataflow/convert_adapter_io" method="save">
<var name="type">file</var>
<var name="path">var/export</var>
<var name="filename"><![CDATA[safety-gates-export.csv]]></var>
</action>
Any thoughts on how to get this to work with filtering on other attributes than the default ones?
Unfortunately, from reading the code it looks like the set of attributes you can filter on is very limited.
$attrFilterArray = array();
$attrFilterArray ['name'] = 'like';
$attrFilterArray ['sku'] = 'startsWith';
$attrFilterArray ['type'] = 'eq';
$attrFilterArray ['attribute_set'] = 'eq';
$attrFilterArray ['visibility'] = 'eq';
$attrFilterArray ['status'] = 'eq';
$attrFilterArray ['price'] = 'fromTo';
$attrFilterArray ['qty'] = 'fromTo';
$attrFilterArray ['store_id'] = 'eq';
To filter on other attributes requires a minor extension to the class.
/app/code/local/YourCompany/YourModule/Model/DataFlow/Catalog/Product/Adapter.php
<?php
class YourCompany_YourModule_Model_DataFlow_Catalog_Product_Adapter
extends Mage_Catalog_Model_Convert_Adapter_Product
{
/**
* Extend the parent method to add filtering capability for additional fields
*
* This is required since the parent load() uses a parent::setFilter instead of $this->setFilter
*
* #return Mage_Dataflow_Model_Convert_Adapter_Interface
*/
public function load()
{
// Add any additional attributes you want to filter on here
$attrFilterArray = array(
'manufacturer' => 'eq',
);
$this->setFilter($attrFilterArray, array());
return parent::load();
}
}
/app/code/local/YourCompany/YourModule/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<YourCompany_YourModule>
<version>0.0.1</version>
</YourCompany_YourModule>
</modules>
<global>
<models>
<catalog>
<rewrite>
<convert_adapter_product>YourCompany_YourModule_Model_DataFlow_Catalog_Product_Adapter</convert_adapter_product>
</rewrite>
</catalog>
</models>
</global>
</config>
I know this topic is old but this may help someone - works in Magento 1.9. This would be better as a Module but this is a "quick fix". Back up all files before uploading. I needed to add Product ID (from > to) and Manufacturer dropdown field but can easily be adopted for most attribute types.
FOR System > Import/Export > DataProfiles > Export All Products
app/code/core/Mage/Catalog/Model/Convert/Adapter/Product.php
copy to
app/code/local/Mage/Catalog/Model/Convert/Adapter/Product.php
FIND public function load()
Add Attributes to $attrFilterArray = array();
$attrFilterArray = array();
$attrFilterArray ['name'] = 'like';
$attrFilterArray ['entity_id'] = 'fromTo'; //Custom Field
$attrFilterArray ['manufacturer'] = 'eq'; //Custom Field
$attrFilterArray ['sku'] = 'startsWith';
$attrFilterArray ['type'] = 'eq';
$attrFilterArray ['attribute_set'] = 'eq';
$attrFilterArray ['visibility'] = 'eq';
$attrFilterArray ['status'] = 'eq';
$attrFilterArray ['price'] = 'fromTo';
$attrFilterArray ['qty'] = 'fromTo';
$attrFilterArray ['store_id'] = 'eq';
If type ="fromTo" you need to add an extra filter before return parent::load();
The following is for entity_id
if ($productId = $this->getFieldValue($filters, 'entity_id')) {
$this->_filter[] = array(
'attribute' => 'entity_id',
'from' => $productId['from'],
'to' => $productId['to']
);
$this->setJoinAttr(array(
'alias' => 'entity_id',
'attribute' => 'catalog_product/entity_id',
'bind' => 'entity_id',
'joinType' => 'LEFT'
));
}
Add the fields to the form
app/design/adminhtml/default/default/template/system/convert/profile/wizard.phtml
Duplicate as a Backup
Find
<div class="profile_entity_type_product">
Add extra Field Sets within this div
The following is for the fromTo for entity id
<span class="field-row">
<label for="product_filter_entity_id_from"><?php echo $this->__("Product ID:") ?></label>
<input class="input-text" style="width:5em" id="product_filter_entity_id_from" name="gui_data[product][filter][entity_id][from]" value="<?php echo $this->getValue('gui_data/product/filter/entity_id/from') ?>"/> <?php echo $this->__('to') ?>
<input class="input-text" style="width:5em" id="product_filter_entity_id_to" name="gui_data[product][filter][entity_id][to]" value="<?php echo $this->getValue('gui_data/product/filter/entity_id/to') ?>"/>
</span>
The following is for the Manufacturer dropdown
<span class="field-row">
<label for="product_filter_manufacturer"><?php echo $this->__("Manufacturer Name:") ?></label><select id="product_filter_manufacturer" name="gui_data[product][filter][manufacturer]">
<?php $manufacturer = Mage::getSingleton('eav/config')->getAttribute('catalog_product','manufacturer')->getSource()->getAllOptions(); ?>
<?php foreach ($manufacturer as $option): ?>
<option value="<?php echo $option['value'] ?>" <?php echo $this->getSelected('gui_data/product/filter/manufacturer', $option['value']) ?>><?php echo htmlspecialchars($option['label']) ?></option>
<?php endforeach ?>
</select>

Resources