/** * @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; }