Показать вычисляемое поле в дашлете SuiteCRM

Я создал вычисляемое поле в пользовательском модуле. Таким образом, этот модуль суммирует все суммы счетов-фактур, сделанных по каждой продаже. Вычисляемое поле представляет собой сумму всех счетов, назначенных пользователю. Я уже сделал расчетное поле на детальном просмотре и его работе. Теперь я хочу показать вычисляемое поле в дашлете. Вот мой скриншот:

дашлет

Как видите, текущий столбец продаж пуст. Он должен быть заполнен целочисленным значением, показывающим общую сумму счета, сделанного по названию продажи. Я создал модуль, поле и макет с помощью SuiteCRM Studio & Module Builder. Как я могу показать вычисляемое поле в дашлете?

Вот функция для отображения вычисляемого поля на странице сведений, и она уже работает, однако она не работает в дашлете или списке:

public function preDisplay(){
    //$this->bean contains all the information on the Case
    //use that information to grab the related account bean, something like:
    //date format still error here

    $a = new AOS_Invoices();
    $validFromFormatted = date_create_from_format('m/d/Y', $this->bean->valid_from);
    $validToFormatted = date_create_from_format('m/d/Y', $this->bean->valid_through);
    $arr = $a->get_full_list(null,'(aos_invoices.assigned_user_id = \''.$this->bean->user_id_c.'\' and invoice_date between \''.date_format($validFromFormatted,'Y-m-d').'\' and \''.date_format($validToFormatted,'Y-m-d').'\')');


    $sum = 0;
    foreach($arr as $key=>$value){
        if(isset($value->total_amount))
            $sum += $value->total_amount;
    }

    $this->bean->current_sales = $sum;
    parent::preDisplay();
}

person michaelch    schedule 23.11.2015    source источник


Ответы (2)


Вместо создания пользовательского дашлета. Вместо этого вы можете создать отчет. Добавьте поле, которое вы хотите отобразить. Добавьте поле total amount, а затем установите общую функцию. Вы можете сгруппировать по названию продаж.

На главном экране добавьте дашлет отчетов, нажмите кнопку редактирования и выберите отчет, который вы только что создали.

person Daniel Samson    schedule 26.11.2015

Добавьте логический хук (before_save), который вычислит это поле при сохранении записи, а затем сохранит его в том же модуле.

Если у вас есть поле в том же модуле, просто добавьте его в дашлет, как обычные поля.

Преимущество использования этой логики:

  1. Уменьшите нагрузку на загрузку домашней страницы, потому что есть много других модулей, которые необходимо загрузить.
  2. Нет глубокой настройки, поэтому очень безопасно и удобно обновлять.
person Star    schedule 06.11.2017