SugarCRM - 通过PDF管理器添加PDF模板中的相关字段

时间:2014-04-10 09:49:49

标签: php templates pdf sugarcrm custom-fields

是否可以将相关模块的字段添加到PDF模板? 我在为Opportunity模块创建PDF模板时尝试获取帐户名称。 我尝试了$ account.name但它没有咬人。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这可以应用于任何模块。

创建此文件:custom / modules / Opportunities / sugarpdf / sugarpdf.pdfmanager.php

粘贴下面的代码

修复和重建

<?php

if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

require_once('include/Sugarpdf/sugarpdf/sugarpdf.pdfmanager.php');

class OpportunitiesSugarpdfPdfmanager extends SugarpdfPdfmanager
{

    function preDisplay()
    {
        parent::preDisplay();
        $this->set_account();
    }

    function set_account()
    {
        $account=array();
        if($this->bean->account_id)
        {
            $account_object=new Account();
            $account_object->retrieve($this->bean->account_id);
            $account_object = (array) $account_object;
            $account=$account_object["fetched_row"];
        }
        $this->ss->assign('account', $account);
    }
}

您现在可以通过调用

从相关帐户获取字段
  

{$ account.name},{$ account.billing_street_address}

在PDF管理器中。

答案 1 :(得分:1)

跟进原创(真棒)答案:

  1. 在最新版本的Sugar 7中,现在可以在PDF管理器的“链接”下拉列表中找到自定义关系,因此不再需要使用karlingen提供的自定义代码来填充包含父模块所在的相关记录的PDF。 &#34;许多&#34;在&#34;一对多&#34; relationship(即,下拉列表中的Links部分仅提供相关模块只有一条记录的关系)。

  2. 目前有一项增强请求,允许引用&#34;很多&#34; PDF模板关系的一面,类似于引用PDF的product_bundles数组。这可以使用karlingen的方法来完成,但只需要一些额外的工作。以下是获取联系人记录的相关案例的方法:

  3. 创建自定义文件:

      

    /custom/modules/Contacts/sugarpdf/sugarpdf.pdfmanager.php

    内容:

    <?php
    
    if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
    
    
    require_once('include/Sugarpdf/sugarpdf/sugarpdf.pdfmanager.php');
    
    
        class ContactsSugarpdfPdfmanager extends SugarpdfPdfmanager
        {
    
            public function preDisplay()
            {
                parent::preDisplay();
                $this->getCases();  
            }
    
            protected function getCases() 
            {
                $this->bean->load_relationship('cases');
                if($this->bean->cases) {
                    $cases_list = $this->bean->cases->getBeans();
    
                    $cases = array();
                    foreach ($cases_list as $case) {
                        $caseFields = PdfManagerHelper::parseBeanFields($case, true);
                        $cases[] = $caseFields;
                    }
    
                     $this->ss->assign('cases', $cases);
                }
            }
        }
    

    有了这个,你就不会得到&#34;案例&#34;在链接下,但您可以直接在PDF模板中添加引用,例如:

    {foreach from=$cases item="acase"}
        {$acase.name}
    {/foreach}