SugarCRM - 如何将某些字段的计数器重置为零? (报价数量)

时间:2013-01-31 16:58:45

标签: quotes increment sugarcrm

我有报价编号字段,所以当打印PDF编号格式为55-JD-2012, 56-JD-2012,57-JD-2012等时。所以55,56,57是自动生成的报价编号。我有兴趣重置这第一个值,即报价编号值这当然是来自Quote模块的领域。 我希望它能在今年重置它,所以在打印PDF时我可以将其作为输出:55- JD -2013, 56 -JD -2013等。目前我得到的输出数字比目前的报价数字大1超过500。

如何在哪个文件或哪里重置此计数器?

1 个答案:

答案 0 :(得分:1)

SugarCRM中的Quote Number字段是一个自动增量字段(递增不是在SugarCRM本身,而是在数据库中)。它还在字段上有一个unique约束的索引。

因此,该字段无法简单地重置。报价编号必须是唯一的,并且必须自动递增。

为了在SugarCRM中有一个可重置的Quote Number字段,你需要创建一个带有一些特殊逻辑的新字段和/或创建一个SugarCRM包来定制默认的Quote Number字段的行为,或者是一个新的但是等效字段,并使用连接函数中的“引号”字段更新任何其他内容以使用新字段。

这将是最好的方式,尽管它需要最多的工作。如果您正在使用SugarCRM On Demand,这也是完成所需内容的最佳方式,而不是在您自己的服务器上托管它。它是唯一可以升级的安全方法。可能已经存在允许您执行此操作的程序包,因此您应该查看SugarExchange

或者,您需要更改Quotes数据库表vardefs,删除索引unique上的quote_num约束,然后重置数据库表的自动增量值以使其开始计数从你想要的任何数字。

为了做到这一点,尽管不推荐(因为打破兼容性与未来的SugarCRM更新,并且可能会对依赖于Quote Quote字段的这种特定行为的任何事情产生意想不到的副作用),修改,请按照以下步骤。

这假设您在自己的服务器上托管SugarCRM的实例而不是SugarCRM On Demand,并且您正在使用MySQL。还有几种不同的方法可以最终使报价编号重置;这只是其中之一 - 它可能不是最好的。

  1. 备份数据库和SugarCRM实例。当然,无论如何,你都应该定期进行这些备份。

  2. 修改{SugarCRM root}/modules/Quotes/vardefs.php以删除unique索引上的quote_num约束。您可以在indices数组的$dictionary['Quote']元素中找到该文件的底部。

    <强>之前:

    array('name' =>'quote_num', 'type'=>'unique', 'fields'=>array('quote_num', 'system_id'))

    <强>后:

    array('name' =>'quote_num', 'type'=>'index', 'fields'=>array('quote_num', 'system_id'))

  3. 执行快速修复和重建。您可以通过转到SugarCRM Admin页面,单击Repair,然后单击Quick Repair and Rebuild来完成此操作。第一次传递结束后,您将在页面底部看到一个文本框,其中包含一两个SQL语句。单击“执行”按钮将应用您对报价vardefs索引条目所做的更新。

  4. 重置quotes表的自动增量值。如果你的数据库是MySQL,你可以通过执行:ALTER TABLE quotes AUTO_INCREMENT=1来执行此操作(如果你想在1开始计数)。

  5. 完成这些步骤后,您的报价号码将再次从1开始(或您在ALTER TABLE声明中指定的任何数字),您将能够再次重新设置该号码。执行ALTER TABLE语句。