/**
  * @static
  * @param  array     $link
  * @param  MBPackage $package
  * @param  array     $allowedTypes list of types to allow as related fields
  * @return array
  */
 public static function getRelatableFieldsForLink($link, $package = null, $allowedTypes = array())
 {
     $rfields = array();
     $relatedModule = $link["module"];
     $mbModule = null;
     if (!empty($package)) {
         $mbModule = $package->getModuleByFullName($relatedModule);
     }
     //First, create a dummy bean to access the relationship info
     if (empty($mbModule)) {
         $relatedBean = BeanFactory::getBean($relatedModule);
         $field_defs = $relatedBean->field_defs;
     } else {
         $field_defs = $mbModule->getVardefs(false);
         $field_defs = $field_defs['fields'];
     }
     // Adding special fields not available in vardefs
     if ($relatedModule == 'Quotes') {
         $field_defs['taxrate_value'] = array('name' => 'taxrate_value', 'vname' => 'LBL_TAXRATE', 'type' => 'decimal');
         $field_defs['currency_iso'] = array('name' => 'currency_iso', 'vname' => 'LBL_CURRENCY', 'type' => 'varchar');
     } elseif ($relatedModule == 'Products') {
         $field_defs['discount_amount'] = array('name' => 'discount_amount', 'vname' => 'LBL_EXT_PRICE', 'type' => 'decimal');
     }
     $relatedFields = PdfManagerHelper::cleanFields($field_defs, $relatedModule, false, true);
     foreach ($relatedFields as $val) {
         $name = $val[0];
         //Rollups must be either a number or a possible number (like a string) to roll up
         if (!empty($allowedTypes) && !in_array($val[1], $allowedTypes)) {
             continue;
         }
         $def = $field_defs[$name];
         if (empty($mbModule)) {
             $rfields[$name] = empty($def['vname']) ? $name : str_replace(":", "", translate($def['vname'], $relatedModule));
         } else {
             $rfields[$name] = empty($def['vname']) ? $name : str_replace(":", "", $mbModule->mblanguage->translate($def['vname']));
         }
         //Strip the ":" from any labels that have one
         if (substr($rfields[$name], -1) == ":") {
             $rfields[$name] = substr($rfields[$name], 0, strlen($rfields[$name]) - 1);
         }
     }
     return $rfields;
 }