Πίνακας περιεχομένων

  1. Εισαγωγή

  2. Κατανόηση της αρθρωτής αρχιτεκτονικής του Dolibarr

  3. Γιατί να δημιουργήσετε μια προσαρμοσμένη ενότητα;

  4. Προαπαιτούμενα και Ρύθμιση Περιβάλλοντος Ανάπτυξης

  5. Δομή μιας ενότητας Dolibarr

  6. Δημιουργία του αρχείου περιγραφής ενότητας

  7. Δημιουργία της κύριας τάξης ενότητας

  8. Προσθήκη υποστήριξης γλώσσας

  9. Δημιουργία πινάκων βάσης δεδομένων για την ενότητα σας

  10. Σχεδιασμός της διεπαφής χρήστη

  11. Εφαρμογή Δικαιωμάτων και Ελέγχου Πρόσβασης

  12. Προσθήκη Επιχειρηματικής Λογικής με Κλάσεις

  13. Χρήση σκανδάλων και γάντζων

  14. Διαχείριση παραμέτρων διαμόρφωσης

  15. Ενσωμάτωση με υπάρχουσες ενότητες Dolibarr

  16. Δημιουργία λιστών, φίλτρων και συναρτήσεων εξαγωγής

  17. Δημιουργία PDF ή εγγράφων

  18. Βέλτιστες πρακτικές για ασφάλεια και απόδοση

  19. Δοκιμή και εντοπισμός σφαλμάτων στην ενότητα σας

  20. Συσκευασία και Διανομή της Μονάδας

  21. Ενημέρωση και Συντήρηση της Ενότητάς σας

  22. Συμπέρασμα


1. Εισαγωγή

Το Dolibarr ERP/CRM είναι μια ισχυρή πλατφόρμα ανοιχτού κώδικα, σχεδιασμένη να είναι ευέλικτη και επεκτάσιμη. Ένα από τα μεγαλύτερα πλεονεκτήματά της είναι η αρθρωτή δομή της, η οποία επιτρέπει στους προγραμματιστές να δημιουργούν αυτόνομα στοιχεία, γνωστά ως ενότητες (modules). Αυτά μπορούν να βελτιώσουν ή να μετασχηματίσουν πλήρως τη λειτουργικότητα του Dolibarr. Σε αυτό το άρθρο, θα περιγράψουμε ολόκληρη τη διαδικασία ανάπτυξης μιας προσαρμοσμένης ενότητας Dolibarr, από την ιδέα έως τη διανομή.


2. Κατανόηση της αρθρωτής αρχιτεκτονικής του Dolibarr

Κάθε χαρακτηριστικό στο Dolibarr ενσωματώνεται ως ενότητα. Μια ενότητα μπορεί:

  • Παρουσίαση νέων μενού

  • Προσθήκη πινάκων βάσης δεδομένων

  • Επεκτείνετε το περιβάλλον χρήστη με προσαρμοσμένες σελίδες ή καρτέλες

  • Ενσωματωθείτε στις επιχειρηματικές διαδικασίες

Οι ενότητες μπορούν να είναι βασικές (διατίθενται με το Dolibarr) ή προσαρμοσμένες (βρίσκονται στο /custom/). Αυτός ο διαχωρισμός επιτρέπει την καθαρή ανάπτυξη χωρίς να αγγίζει τα βασικά αρχεία, εξασφαλίζοντας ευκολότερες αναβαθμίσεις και συντήρηση.


3. Γιατί να δημιουργήσετε μια προσαρμοσμένη ενότητα;

Οι λόγοι για να αναπτύξετε τη δική σας ενότητα περιλαμβάνουν:

  • Προσθήκη λειτουργικότητας ειδικής για τον κλάδο

  • Αντικαταστήστε τις χειροκίνητες διαδικασίες με αυτοματοποίηση

  • Ενσωμάτωση εξωτερικών API ή συστημάτων

  • Προσαρμόστε το περιβάλλον χρήστη και τους επιχειρηματικούς κανόνες στον οργανισμό σας

Οι προσαρμοσμένες ενότητες μπορούν να κοινοποιηθούν στο Dolistore ή να διατηρηθούν εσωτερικά.


4. Προαπαιτούμενα και Ρύθμιση Περιβάλλοντος Ανάπτυξης

Για να ξεκινήσετε την ανάπτυξη:

  • Εγκαταστήστε μια τοπική παρουσία Dolibarr

  • Ενεργοποίηση λειτουργίας προγραμματιστή: $dolibarr_main_prod = 0;

  • Εγκατάσταση ενός προγράμματος επεξεργασίας κώδικα (VSCode, PhpStorm)

  • Εξοικειωθείτε με PHP, MySQL, HTML/CSS

Βεβαιωθείτε ότι έχουν εγκατασταθεί οι επεκτάσεις PHP (pdo, gd, intl, κ.λπ.).


5. Δομή μιας ενότητας Dolibarr

Μια τυπική ενότητα έχει την εξής διάταξη:

/custom/mymodule/
├── class/
├── core/
├── lang/
├── modulebuilder.txt
├── modMymodule.class.php
├── mymodule.php
  • modMymodule.class.php: το αρχείο περιγραφής

  • class/: τάξεις επιχειρηματικής λογικής

  • core/: σκανδάλες και άγκιστρα

  • lang/: αρχεία μετάφρασης

  • mymodule.php: σημείο εισόδου ή ελεγκτής


6. Δημιουργία του αρχείου περιγραφής ενότητας

Αυτό το αρχείο λέει στο Dolibarr πώς να καταχωρήσει την ενότητα σας:

class modMymodule extends DolibarrModules {
    public function __construct($db) {
        $this->numero = 123456; // Unique ID
        $this->rights_class = 'mymodule';
        $this->family = "custom";
        $this->name = preg_replace('/^mod/', '', get_class($this));
        $this->description = "My custom module";
        $this->version = '1.0.0';
        $this->const_name = 'MAIN_MODULE_MYMODULE';
        $this->config_page_url = array("mymodule_setup.php@mymodule");
        $this->dictionaries = array();
        $this->langfiles = array("mymodule");
        $this->parts = array();
        $this->modules = array();
        $this->rights = array();
    }
}

Ενεργοποιήστε την ενότητα από Ρύθμιση > Ενότητες/Εφαρμογές.


7. Δημιουργία της κύριας τάξης ενότητας

Τοποθετήστε το κύριο αρχείο κλάσης στο class/mymodule.class.php. Παράδειγμα:

class Mymodule extends CommonObject {
    public $element = 'mymodule';
    public $table_element = 'my_table';
    public $ismultientitymanaged = 1;
    public $fields = array(
        'title' => array('type' => 'varchar', 'label' => 'Title'),
        'amount' => array('type' => 'double', 'label' => 'Amount')
    );
}

Χρησιμοποιήστε αυτό για να ορίσετε τη δομή δεδομένων και τις αλληλεπιδράσεις.


8. Προσθήκη υποστήριξης γλώσσας

Δημιουργήστε αρχεία γλώσσας στην ενότητα:

/custom/mymodule/langs/en_US/mymodule.lang

Προσθέστε συμβολοσειρές όπως:

MyLabel=My Custom Label

Φορτώστε τα χρησιμοποιώντας $langs->load('mymodule');


9. Δημιουργία πινάκων βάσης δεδομένων για την ενότητα σας

Χρησιμοποιήστε σενάρια SQL που τοποθετούνται σε:

/install/mysql/tables/llx_my_table.key.sql

Το Dolibarr θα εκτελέσει αυτά τα βήματα όταν η ενότητα είναι ενεργοποιημένη. Ακολουθήστε τις συμβάσεις ονοματοδοσίας (llx_ πρόθεμα).


10. Σχεδιασμός της διεπαφής χρήστη

Δημιουργήστε σελίδες PHP στη ρίζα της ενότητας (π.χ., card.php, list.php). Χρησιμοποιήστε βοηθούς UI του Dolibarr:

llxHeader();
print load_fiche_titre($langs->trans("My Page"));

Οι πίνακες, οι φόρμες και τα μενού θα πρέπει να χρησιμοποιούν τις ενσωματωμένες συναρτήσεις του Dolibarr για λόγους συνέπειας.


11. Εφαρμογή Δικαιωμάτων και Ελέγχου Πρόσβασης

Στο αρχείο περιγραφής:

$this->rights[] = array('id'=>1, 'label'=>'Read', 'default'=>1, 'level'=>'read');
$this->rights[] = array('id'=>2, 'label'=>'Write', 'default'=>0, 'level'=>'write');

Ελέγξτε τα δικαιώματα χρησιμοποιώντας:

if ($user->rights->mymodule->read) { ... }

12. Προσθήκη Επιχειρηματικής Λογικής με Κλάσεις

Η επιχειρηματική λογική θα πρέπει να είναι συγκεντρωμένη σε κλάσεις:

class MymoduleManager {
    public function calculateSomething($input) {
        return $input * 2;
    }
}

Διατηρήστε τη λογική του ελεγκτή ελάχιστη και καθαρή.


13. Χρήση σκανδάλων και γάντζων

Δημιουργήστε εναύσματα σε:

/core/triggers/interface_99_modmymodule_Mytrigger.class.php

Παράδειγμα:

function run_trigger($action, $object, $user, $langs, $conf) {
    if ($action == 'BILL_CREATE') {
        // custom logic
    }
    return 0;
}

Τα hook επιτρέπουν την εισαγωγή UI ή λογικής σε συγκεκριμένα σημεία.


14. Διαχείριση παραμέτρων διαμόρφωσης

Αποθήκευση προσαρμοσμένων ρυθμίσεων χρησιμοποιώντας dolibarr_set_const() και ανάκτηση μέσω $conf->global->MYMODULE_SETTING.

Δημιουργία mymodule_setup.php αρχείο για τη σελίδα ρυθμίσεων με μια φόρμα.


15. Ενσωμάτωση με υπάρχουσες ενότητες Dolibarr

Χρησιμοποιήστε κοινές τάξεις όπως Facture, Product, ή Societe:

require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$invoice = new Facture($db);
$invoice->fetch($id);

Μπορείτε επίσης να συνδεθείτε στις διεπαφές τους.


16. Δημιουργία λιστών, φίλτρων και συναρτήσεων εξαγωγής

Χρήση list.php μορφή:

$sql = "SELECT rowid, title FROM llx_my_table";
$table = new Listview($db);
$table->render($sql);

Προσθέστε υποστήριξη εξαγωγής χρησιμοποιώντας το πλαίσιο εξαγωγής του Dolibarr.


17. Δημιουργία PDF ή Εγγράφων

Χρησιμοποιήστε TCPDF ή δημιουργήστε πάνω σε αυτό pdf_common.modules.php:

$pdf = new PDF_MyModule($db);
$pdf->write_file($object, $langs);

Τα αρχεία PDF αποθηκεύονται σε /documents/mymodule/.


18. Βέλτιστες πρακτικές για την ασφάλεια και την απόδοση

  • Απολυμάνετε όλα τα εισερχόμενα στοιχεία με GETPOST()

  • Χρήση διακριτικών για φόρμες

  • Επικύρωση δικαιωμάτων πριν από οποιαδήποτε κρίσιμη ενέργεια

  • Ελαχιστοποιήστε τα ερωτήματα βάσης δεδομένων. Χρησιμοποιήστε προσωρινή αποθήκευση εάν χρειάζεται

Αποφύγετε την αποκάλυψη εσωτερικής λογικής σε URL ή απαντήσεις.


19. Δοκιμή και εντοπισμός σφαλμάτων της ενότητας σας

Ενεργοποίηση καταγραφής:

$conf->global->MAIN_DISABLE_ALL_LOGS = 0;

Χρήση dol_syslog() για την καταγραφή συμβάντων. Δοκιμή του UI και της λογικής σε διάφορους ρόλους χρηστών.


20. Συσκευασία και Διανομή της Ενότητας

  • Συμπιέστε τον φάκελο της ενότητας σας σε zip, ώστε να μην υπάρχει πρόβλημα.

  • Συμπεριλάβετε README.md, CHANGELOG.txtκαι άδεια

  • Μεταφορτώστε στο Dolistore ή κοινοποιήστε το ιδιωτικά

  • Χρήση σημασιολογικής εκδοχής (1.0.1, 1.1.0)


21. Ενημέρωση και Συντήρηση της Ενότητάς σας

  • Διατηρήστε την συμβατότητα με παλαιότερες εκδόσεις, όταν είναι δυνατόν

  • Χρησιμοποιήστε το πεδίο έκδοσης της ενότητας για ελεγχόμενες ενημερώσεις

  • Δοκιμάστε με νέες εκδόσεις του Dolibarr πριν από την κυκλοφορία ενημερώσεων

Λάβετε υπόψη τα σχόλια των χρηστών κατά τον σχεδιασμό αλλαγών.


22. Σύναψη

Η ανάπτυξη μιας προσαρμοσμένης ενότητας για το Dolibarr μπορεί να φαίνεται τρομακτική στην αρχή, αλλά με μια καλή κατανόηση της αρχιτεκτονικής και των βέλτιστων πρακτικών της, η διαδικασία γίνεται διαχειρίσιμη και ικανοποιητική. Είτε προσαρμόζετε μια ροή εργασίας είτε δημιουργείτε μια επέκταση για δημόσια χρήση, η τήρηση αυτού του ολοκληρωμένου οδηγού διασφαλίζει ότι θα δημιουργήσετε ασφαλείς, αποτελεσματικές και συντηρήσιμες ενότητες.