自动编号模块


对于在应用程序中创建的每个实体(发票、报价单、订单等),Dolibarr为其分配一个reference引用(编号或文本)。为了使这个引用(reference)能适应任何用途,Dolibarr使用编号模块来定义这个引用的生成规则。编号模块作为标准提供,因此有些模块是通用的,允许定义编号掩码(匹配x个数的字符、带或不带前缀、包括日期或不包括日期等),这可以满足大多数需求。然而,在某些情况下,作为标准提供的编号模块不能满足需求。在这种情况下,有必要开发自己的编号模块。

创建新的编号模块

例如,假设我们创建了一个新的发票编号模块,称为“terrebis”,其灵感来自提供的标准模块“terre”:


  • 将htdocs/core/modules/invoice/earth/terre.modules.php 复制并粘贴到 htdocs/core/modules/invoice/terrebis/terrebis.modules.php。您可以使用任何您想要的名字来代替terrebis,只要 它 还 没有 被 使用 并且 只 包含 字母 字符。
  • 编辑新文件以对代码进行如下更改:

1. 重命名类名以将旧类名替换为所选名称(保持相同的命名约定)。

2. 修改info()方法的代码,以返回模块的描述性文本说明。

3. 更改getExemple()方法的代码,以返回模块将返回的引用示例。

4. 更改canBeActivated()方法的代码,使其仅执行“return true;”;

5. 更改getNextValue()方法的代码,以返回下一个可用的引用字串。在该函数的代码中,您可以使用参数 $objsoc或$facture,这些参数包含与生成相关的合作方和与生成相关对象的信息(这些变量的名称可能因模块所处理的实体的性质而异)。您还可以使用$langs、$conf和$db对象,前提是您使用以下行声明了它们:

global $langs, $db, $conf

$langs:是翻译成用户语言的对象;

$conf:包含Dolibarr的所有配置;

$db:用于在数据库中执行SQL查询的数据库连接对象。

6. 保存:“terrebis”模板可在Dolibarr的发票模板列表中找到

测试此模块

通过从模块配置页面激活此模块来测试它。确保在下面的描述、示例和值列中获得一致的信息(分别由函数info()、getexample()和getNextValue()返回)。