====== Search custom ProductFields during Productsearch ====== If you create an Invoice you could use the great Search function to select products. But what to do, if you store your unique product selector in a field, which won't be searched during this function? You probably could apply the following modification: But you probably will need some SQL knowledge! === File: modules/Products/models/Records.php === === Search === if($module == 'Products'){ $query = 'SELECT label, crmid, setype, createdtime FROM vtiger_crmentity INNER JOIN vtiger_products ON vtiger_products.productid = vtiger_crmentity.crmid WHERE label LIKE ? AND vtiger_crmentity.deleted = 0 AND vtiger_products.discontinued = 1 AND setype = ?'; }else if($module == 'Services'){ $query = 'SELECT label, crmid, setype, createdtime FROM vtiger_crmentity INNER JOIN vtiger_service ON vtiger_service.serviceid = vtiger_crmentity.crmid WHERE label LIKE ? AND vtiger_crmentity.deleted = 0 AND vtiger_service.discontinued = 1 AND setype = ?'; } Customize this queries, like you need. If you will query a custom fields (in this example cf_645), you need to modify the code in this way: if($module == 'Products'){ $query = 'SELECT label, crmid, setype, createdtime FROM vtiger_crmentity INNER JOIN vtiger_products ON vtiger_products.productid = vtiger_crmentity.crmid INNER JOIN vtiger_productcf ON vtiger_products.productid = vtiger_productcf.productid WHERE (label LIKE ? OR cf_645 LIKE ?) AND vtiger_crmentity.deleted = 0 AND vtiger_products.discontinued = 1 AND setype = ?'; $params[] = "%$searchKey%"; }else if($module == 'Services'){ $query = 'SELECT label, crmid, setype, createdtime FROM vtiger_crmentity INNER JOIN vtiger_service ON vtiger_service.serviceid = vtiger_crmentity.crmid WHERE label LIKE ? AND vtiger_crmentity.deleted = 0 AND vtiger_service.discontinued = 1 AND setype = ?'; }