業務對象

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search


業務對象(簡稱『對象』)

所有業務對象都由從 CommonObject 類(在core/class/commonobject.class.php文件中定義)繼承的PHP類定義。

要查找與您感興趣的業務對象對應的類,請瀏覽Dolibarr的文件樹,查找文件 */class/*.class.php,因為所有類都位於與對象相關的目錄的 class 子目錄中。例如:

  • 對於合作方 htdocs/societe/class/societe.class.php
  • 對於客戶發票 htdocs/compta/facture/class/facture.class.php
  • 對於供應商發票 htdocs/fourn/class/fournisseur.facture.class.php

...

每個業務類都有4種CRUD方法,用於執行數據庫讀取或更新:

  • 創建(C表示創建):create()
  • 讀取(R表示讀取):fetch()
  • 更改(U代表更新):update()
  • 刪除(D代表刪除):delete()

請參閱下面的示例...

全部對象

類的繼承

  • Societe
  • Product
  • Account
  • AccountingAccount

業務對象之間的連結

一些業務對象相互關聯。這是在 Dolibarr 中通過 表llx_element_element 完成的。但是,您不必讀取此表來檢索連結到另一個表的對象。下面的代碼部分顯示了如何執行此操作:

如果是 Dolibarr 3.1及更高版本

// get invoices from an already loaded order:
// 从已加载的订单中获取发票:
$result = $order->fetchObjectLinked($order->id, 'commande', null, 'facture');
if ($result <= 0) {
    // handle error
}
// important notice : the newly populated arrays are associative. Keys are llx_element_element row ids.
// 重要提示:新填充的数组是关联的。主键是llx_element_element的row ids。

// now if we expect only one linked invoice:
// 现在,如果我们预计只有一个相关联的发票:

// WRONG way to get it ($invoice_id will be NULL): 
// 错误的获取方式($invoice_id将为NULL):
$invoice_id = $order->linkedObjectsIds['facture'][0]

// CORRECT way ($invoice_id will hold the ID):
// 正确的方式($invoice_id将保存id):
$invoice_id = array_values($order->linkedObjectsIds['facture'])[0]

// Better (if there are more than one linked invoices) :
// 更好的方式(如果有多个相关联的发票):
foreach ($order->linkedObjectsIds['facture'] as $element_element_id => $facture_id) {
    // process it(处理它)
}

如果是 Dolibarr 3.1 之前的版本

// This load the array linked_object with objects that link to this one
$object->load_object_linked($object->id, $object->element);
// To load array linked_object with objects that are linked by this one
$object->load_object_linked($object->id, $object->element);

// Then choose id with objects type you need
$org_order_array = $object->linked_object["commande"];

// Now use them
$thelinkedobjectid = $org_order_array[0];
// new order instance
$thelinkedobject = new Commande($object->db);
// load the object
$thelinkedobject->fetch($thelinkedobjectid);
// 将数组链接到与本对象相联系的的对象上。
$object->load_object_linked($object->id, $object->element);

// 然后根据需要的对象类型选择ID
$org_order_array = $object->linked_object["commande"];

// 使用
$thelinkedobjectid = $org_order_array[0];
// 新订单实例
$thelinkedobject = new Commande($object->db);
// 加载对象
$thelinkedobject->fetch($thelinkedobjectid);

示例

創建合作方的示例

以下是創建合作方(例如客戶公司)的示例:

如果您正在創建一個新腳本或外部腳本,則有必要在其代碼的開頭執行以下操作:

include('/pathofdolibarrhtdocs/master.inc.php');

這將初始化 Dolibarr 環境對象($conf、$db、$lang和$user對象)。如果希望在跟蹤中將操作(創建、更新)與特定用戶關聯,則必須在 include master.inc.php 之後執行:

$user->fetch(0,'loginuser');//loginuser 用户进行的该操作

現在我們可以編寫業務代碼了。

// We declare the class we want to use
include_once('/pathofdolibarrhtdocs/societe/class/societe.class.php');

// We create an instance of object to manipulate
$mycompany = new Societe($db);

// We set properties on object
$mycompany->nom='Big Brother';
$mycompany->client=1;

// If we want that creation is tagged as done by a particular user 'loginuser',
// you must uncomment this line to load all characteristics of this user.
// If we keep the comment, Dolibarr will use null into fields that should store the create or update user.
// $user->fetch('loginuser');

// We call method to create
$id=$mycompany->create($user);

// This is to read/load an already created object
$mycompany->fetch($id);

// To update object
$mycompany->nom='Big Brother 2';
$mycompany->update($user);

註:以上代碼,可以編寫在card.php文件中。響應操作按鍵的動作。

其他示例

您可以在 Dolibarr 快照的 dev/samples 目錄中找到 Dolibarr 對象操作(創建、讀取、修改、刪除)的更多示例。