Need help showing related fields in listview

we added a non-db field which pulls data via a custom function, here’s an example

   array (
      'required' => false,
      'name' => 'sales_reps_full_name',
      'vname' => 'LBL_SALES_REPS_FULL_NAME',
      'type' => 'text',
      'massupdate' => 0,
      'no_default' => false,
      'comments' => '',
      'help' => '',
      'importable' => 'true',
      'duplicate_merge' => 'disabled',
      'duplicate_merge_dom_value' => '0',
      'audited' => false,
      'inline_edit' => true,
      'reportable' => true,
      'unified_search' => false,
      'merge_filter' => 'disabled',
      'size' => '20',
      'studio' => 'visible',
      'rows' => '4',
      'cols' => '20',
      'source' => 'non-db',
      'function' => 
      array (
        'name' => 'CommonUtils::getSalesRepsFullName',
        'returns' => 'html',
        'include' => 'custom/modules/ODS_Inventory/Utils/CommonUtils.php',
        'onListView' => true,
      ),
    ),

and the func for getSalesRepsFullName is

class CommonUtils
{
    /**
     * Возвращаем имена всех брокеров связанных с квартирой, через запятую
     * @param $inventory
     * @return string|null
     */
    static function getSalesRepsFullName($inventory)
    {
        if (!is_array($inventory) || empty($inventory['ID'])) {
            return null;
        }
        $return = array();
        global $db;
        $query = "SELECT users_id FROM users_ods_inventory WHERE ods_inventory_id = '{$inventory['ID']}' AND deleted = '0'";
        $result = $db->query($query);
        while ($row = $db->fetchByAssoc($result)){
            $return[] = BeanFactory::getBean('Users',$row['users_id'])->full_name;
        }
        return implode(', ' , $return);
    }

you can then specify the field name in listviewdefs.php like so:

  'SALES_REPS_FULL_NAME' =>
  array (
    'type' => 'currency',
    'currency_format' => true,
    'studio' => 'visible',
    'label' => 'LBL_SALES_REPS_FULL_NAME',
    'width' => '10%',
  ),
2 Likes