SuiteCRM Make custom where condition query for popview

心不动则不痛 提交于 2019-12-13 02:12:57

问题


How to make the custom query for popup view, I made changes in ViewList as mentioned above but it doesn't affect on the list which came in popup view list.

My requirement is to pass product type when I open this from invoice module.

In invoice, we have a product line and service line, and from product module, i have differentiated product by type while adding new product as a "Goods" or "Service".

Now i have created 2 custom files, view.list.php, and view.popup.php.

But do not understand how to pass type flag from view.popup.php to view.list.php

Will be great if someone suggests me how to filter product data when relating popup called from the service line and popup called from the product line.

Thanks


回答1:


You will need to change the listing query and add condition accordingly.

Following are the steps you need to follow in order to extend the LlistView query:

Step 1: Create or edit custom/modules/Opportunities/views/view.list.php and add following code,

processSearchForm();
if(!$current_user->is_admin) // remove this condition if you dont want admin user to view the “Closed Lost” Opportunities.
$this->params[‘custom_where’] = ‘ AND opportunities.sales_stage <> “Closed Lost” ‘;

if (empty($_REQUEST[‘search_form_only’]) || $_REQUEST[‘search_form_only’] == false) {
$this->lv->setup($this->seed, ‘include/ListView/ListViewGeneric.tpl’, $this->where, $this->params);
$savedSearchName = empty($_REQUEST[‘saved_search_select_name’]) ? ” : (‘ – ‘ . $_REQUEST[‘saved_search_select_name’]);
echo $this->lv->display();
}
}

}

Step 2: Refresh list view!

The probable customizations you will see in the query are:

  1. Custom_form
  2. Custom_where
  3. Custom_select
  4. Custom_order_by



回答2:


This is what we had to do to make it upgrade safe:

  1. Create folder custom/modules/AOS_Products_Quotes/
  2. Create inside the folder a copy of the original Line_Items.php but name the function differently so it will not collide.
  3. Create a custom copy of the line_items.js
  4. Change the included script in the Line_Items.php to include the new JS $html .= '<script src="modules/AOS_Products_Quotes/line_items.js"></script>';
  5. Edit the line_items.js to filter your desired field

To call your custom Line_Items.php you have to do this change on AOS_Quotes/Ext/Vardefs/vardefs.ext.php:

$dictionary['AOS_Quotes']['fields']['line_items']=array(
    'required' => false,
    'name' => 'line_items',
    'vname' => 'LBL_LINE_ITEMS',
    'type' => 'function',
    'source' => 'non-db',
    'massupdate' => 0,
    'importable' => 'false',
    'duplicate_merge' => 'disabled',
    'duplicate_merge_dom_value' => 0,
    'audited' => false,
    'reportable' => false,
    'inline_edit' => false,
    'function' =>
        array(
            'name' => 'lx_display_lines',
            'returns' => 'html',
            'include' => 'custom/modules/AOS_Products_Quotes/Line_Items.php'
        ),
);

Make sure to edit the custom line_items.js to filter based on your needs. Look for sqs_objects that have a condition property where you can filter things, leaving hardcoded/default values or (what we do) get it from another JS call like window.getCurrenUserSettings

sqs_objects["product_name[" + prodln + "]"] = {


来源:https://stackoverflow.com/questions/48963940/suitecrm-make-custom-where-condition-query-for-popview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!