PDF in Custom Module

I`m trying to add a ā€œGenerate PDFā€ button in a custom module.

I follow the procedure described at the forum inthis file:

Anyway, always fail at second step, this is when I do this:

DidnĀ“t work, after clic I have a blank screen. I canĀ“t view the detailed view of any registry.

This is what I try:

  1. Deactivate ajax for the module, error persist.
  2. Create a new module and repeat the process. Same error again.
  3. Import the module to a clean suitecrm installation, error repeat.

I`m out of ideas. ĀæSome idea, sugestion, modification?

Thanks.

As i can see in your atachment, you need to change if your working with Cases module:

$this->populateInvoiceTemplates();

for this:

$this->populateCasesTemplates();

and:

function populateInvoiceTemplates(){

for this:

function populateCasesTemplates(){

This is my working file view.detail.php in custom/modules/Cases/views/:

<?php if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); /** * Advanced OpenSales, Advanced, robust set of sales modules. * @package Advanced OpenSales for SugarCRM * @copyright SalesAgility Ltd http://www.salesagility.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE * along with this program; if not, see http://www.gnu.org/licenses * or write to the Free Software Foundation,Inc., 51 Franklin Street, * Fifth Floor, Boston, MA 02110-1301 USA * * @author SalesAgility */ require_once('include/MVC/View/views/view.detail.php'); class CasesViewDetail extends ViewDetail { function __construct(){ parent::__construct(); } /** * @deprecated deprecated since version 7.6, PHP4 Style Constructors are deprecated and will be remove in 7.8, please update your code, use __construct instead */ function CasesViewDetail(){ $deprecatedMessage = 'PHP4 Style Constructors are deprecated and will be remove in 7.8, please update your code'; if(isset($GLOBALS['log'])) { $GLOBALS['log']->deprecated($deprecatedMessage); } else { trigger_error($deprecatedMessage, E_USER_DEPRECATED); } self::__construct(); } function display(){ $this->populateCasesTemplates(); $this->displayPopupHtml(); parent::display(); } function populateCasesTemplates(){ global $app_list_strings, $current_user; $sql = "SELECT id, name FROM aos_pdf_templates WHERE deleted=0 AND type='Cases' AND active = 1"; $res = $this->bean->db->query($sql); $app_list_strings['template_ddown_c_list'] = array(); while($row = $this->bean->db->fetchByAssoc($res)){ if($row['id']){ $app_list_strings['template_ddown_c_list'][$row['id']] = $row['name']; } } } function displayPopupHtml(){ global $app_list_strings,$app_strings, $mod_strings; $templates = array_keys($app_list_strings['template_ddown_c_list']); if($templates){ echo '
'; foreach($templates as $template){ if(!$template){ continue; } $template = str_replace('^','',$template); $js = "document.getElementById('popupDivBack_ara').style.display='none';document.getElementById('popupDiv_ara').style.display='none';var form=document.getElementById('popupForm');if(form!=null){form.templateID.value='".$template."';form.submit();}else{alert('Error!');}"; echo ''; } echo '
'.$app_strings['LBL_SELECT_TEMPLATE'].':-
'.$app_list_strings['template_ddown_c_list'][$template].'
Cancel
'; } else{ echo ''; } } } ?>

Iā€™m not sure if youā€™re still working on this, but you made the same mistake that I did. Your button option 4 is incorrect syntax. It is missing the closing paren for the array. Here is the proper syntax:
array (
0 => ā€˜EDITā€™,
1 => ā€˜DUPLICATEā€™,
2 => ā€˜DELETEā€™,
3 => ā€˜FIND_DUPLICATESā€™,
4 => array ( ā€˜customCodeā€™ =>
ā€˜ā€™),
),