Index: uc_product/uc_product.module
===================================================================
--- uc_product/uc_product.module	(revision 3233)
+++ uc_product/uc_product.module	(working copy)
@@ -2114,3 +2114,49 @@
     'path' => drupal_get_path('module', 'uc_product') .'/views',
   );
 }
+
+/**
+ * Implementation of hook_feeds_node_processor_targets_alter().
+ */
+function uc_product_feeds_node_processor_targets_alter(&$targets, $content_type) {
+  // Proceed only if the content_type is a product type.
+  if (in_array($content_type, uc_product_types())) {
+    // Model
+    $targets['model'] = array(
+      'name' => t('Model/SKU'),
+      'callback' => 'uc_product_feeds_set_target',
+      'description' => 'Ubercart:'. t('Model/SKU'),
+    );
+    // List price
+    $targets['list_price'] = array(
+      'name' => t('List price'),
+      'callback' => 'uc_product_feeds_set_target',
+      'description' => 'Ubercart:'. t('List price'),
+    );
+    // Cost
+    $targets['cost'] = array(
+      'name' => t('Cost'),
+      'callback' => 'uc_product_feeds_set_target',
+      'description' => 'Ubercart:'. t('Cost'),
+    );
+    // Sell price
+    $targets['sell_price'] = array(
+      'name' => t('Sell price'),
+      'callback' => 'uc_product_feeds_set_target',
+      'description' => 'Ubercart:'. t('Sell price'),
+    );
+  }
+}
+
+/**
+ * Callback for mapping. Here is where the actual mapping happens.
+ *
+ * When the callback is invoked, $target contains the name of the field the
+ * user has decided to map to and $value contains the value of the feed item
+ * element the user has picked as a source.
+ */
+function uc_product_feeds_set_target(&$node, $target, $value) {
+  if (!is_array($value)) {
+    $node->$target = $value;
+  }
+}
