Tạo mới một bảng dữ liệu trong Openbravo

I. Giới thiệu:
 Mọi dữ liệu đều phải được lưu trữ, Openbravo sử dụng bảng (table) để lưu trữ. Nói cách khác, bằng cách sử dụng một công cụ quản trị cơ sở dữ liệu (ví dụ, pgAdmin III hoặc phpPgAdmin cho PostgreSQL và Oracle SQL Developer hoặc Toad cho Oracle) .Trong phần này tôi sẽ trình bày cách tạo mới một bảng dữ liệu và khai báo bảng dữ liệu đó trong Openbravo. Hệ quản trị cơ sở dữ liệu tôi sử dụng ở đây là PostGre SQL (Đối với Oracle hoàn toàn tương tự)
II. Mục tiêu:

  Hãy tưởng tượng chúng ta đang phát triển một module nhân sự và chúng ta cần một cửa sổ để cho phép người sử dụng nhập tiền lương của nhân viên. Chúng ta cũng cần phải theo dõi mức lương của nhân viên để đưa ra những báo cáo cần lưu trữ. Mỗi bản ghi tiền lương cần phải có một trường " Valid From Date" cho biết thời điểm một mức lương cụ thể được tạo ra. Lưu ý rằng nhân viên phải thuộc hệ thống và được chứa trong bảng C_BPARTNER và chỉ định bởi các cột C_BPARTNER.ISMEPLOYEE. Vì vậy, chúng ta chỉ cần tạo một bảng cơ sở dữ liệu mà sẽ giữ tiền lương thực.
 
III.Module

 Tất cả các phát triển mới phải thuộc một Module sao cho Module đó không phải là module lõi. Chúng ta đã được hướng dẫn làm thế nào để tạo mới một module trong Openbravo ERP
 Một khi bạn đã đăng ký module, bạn cần phải quyết định về tiền tố cơ sở dữ liệu sẽ cho biết các thành phần DB thuộc về module này. Điều này được thực hiện bằng cách thêm prefix(es)  DB cho module. Bằng cách đó, bất kỳ đối tượng cơ sở dữ liệu nào (table, trigger, stored procedure) mà thuộc về module này sẽ cần phải có tên bắt đầu bằng prefix đã thêm vào. Trong ví dụ này của chúng ta hãy thêm vào tiền tố "EP"
  Cuối cùng, các gói dữ liệu cần phải được nhập vào trong tab  Data Package của cửa sổ Module.
Nhập một record mới với HR Data với Name and {modulePackage}.data (note that this package must be a subpackage of the one you entered on the level of module), ví dụ org.openbravo.howtos.data in case org.openbravo.howtos là package của module.

IV. Tạo mới một Table trong Database:

 Chúng ta hãy xây dựng một bảng mới có tên EP_SALARY để chứ dữ liệu như yêu cầu ở trên. Bảng EP_SALARY phải bao gồm các trường AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, UpdatedUpdatedBy  đó là "mandatory" và các yêu cầu về bảo mật cũng như tính hỗ trợ người dùng của ứng dụng.


Column name Type Length Note
EP_SALARY_ID CHAR 32 The primary key of the table that must follow the table name followed by the _ID.
AD_CLIENT_ID CHAR 32 Indicates which client (company) the record belongs to (multitenancy).
AD_ORG_ID CHAR 32 Indicates which organization (city/department/location) within a client a record belongs to.
ISACTIVE CHAR 1 This is intended for deactivating records that are not valid anymore but are referenced within the system and hence cannot be deleted.
CREATED DATE
Date/time of creation of a record.
CREATEDBY CHAR 32 Foreign key to AD_USER indicating the user that created this record.
UPDATED DATE
Date/time of last update of a record.
UPDATEDBY CHAR 32 Foreign key to AD_USER indicating the user that last updated this record.
C_BPARTNER_ID CHAR 32 Employee this salary belongs to.
AMOUNT NUMBER 10 The actual amount of the salary.
C_CURRENCY_ID CHAR 32 Foreign key to C_CURRENCY indicating the currency the amount is in.
VALIDFROM DATE
Date that this salary is valid from.

Để tạo bảo cơ sở dữ liệu trên, trong Postgresql bạn sử dụng cú pháp lệnh sau:

(Bạn vào Postgresql và khởi động database Openbravo mà bạn tạo lúc cài đặt để tạo mới bảng sau)

CREATE TABLE EP_SALARY
(
EP_SALARY_ID CHARACTER VARYING(32) NOT NULL,
AD_CLIENT_ID CHARACTER VARYING(32) NOT NULL,
AD_ORG_ID CHARACTER VARYING(32) NOT NULL,
ISACTIVE CHARACTER(1) NOT NULL DEFAULT 'Y',
CREATED TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now(),
CREATEDBY CHARACTER VARYING(32) NOT NULL,
UPDATED TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now(),
UPDATEDBY CHARACTER VARYING(32) NOT NULL,
C_BPARTNER_ID CHARACTER VARYING(32) NOT NULL,
AMOUNT NUMERIC NOT NULL,
C_CURRENCY_ID VARCHAR(32) NOT NULL,
VALIDFROM TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT EPSALARY_ISACTIVE_CHECK CHECK (isactive = ANY (ARRAY['Y'::bpchar, 'N'::bpchar])),
CONSTRAINT EP_SALARY_KEY PRIMARY KEY (EP_SALARY_ID), c
CONSTRAINT AD_ORG_CUS_PROJECT FOREIGN KEY (AD_ORG_ID)
REFERENCES AD_ORG (AD_ORG_ID),
CONSTRAINT AD_CLIENT_CUS_PROJECT FOREIGN KEY (AD_CLIENT_ID)
REFERENCES AD_CLIENT (AD_CLIENT_ID),
CONSTRAINT C_BPARTNER_EP_SALARY FOREIGN KEY (C_BPARTNER_ID)
REFERENCES C_BPARTNER (C_BPARTNER_ID),
CONSTRAINT C_BPARTNER_C_CURRENCY FOREIGN KEY (C_CURRENCY_ID)
REFERENCES C_CURRENCY (C_CURRENCY_ID)
);

V. Đăng ký table với Application Dictionary

 Các bước sau đây để đăng ký một bảng mới vừa tạo ở trên trong Application Dictionary của Openbravo.
 - Đầu tiên đăng nhập Openbravo với quyền System Administrator --> Sau đó vào phần Application Dictionary || Tables and Columns và nhấn nút create a new record, bạn nhập các thông tin như hình sau:



- Sau khi hoàn thành bạn nhấn nút Save

 Các trường trong cửa số trên (Để biết thêm thông tin có thể tham khảo mô tả tại AD_Table ):
  • Data Package specifies to which java data package within the module the table will belong when used within [ERP/2.50/Developers_Guide/Concepts/Data_Access_Layer DAL] (Data Access Layer).
  • Name Defines the name that Openbravo ERP uses to recognize the defined database table. This name is used in REST webservices and in the Data Access Layer. See here for more information.
  • Description Gives a small description of the table.
  • Help/Comments Defines the text that is displayed in Help window.
  • DB Table name Defines database table name as it was defined by the CREATE TABLE during its creation.
  • Java Class Name This will be the actual Java class within the Data Package of the module through which you will be able to access this table when using DAL.
  • Data Access Level determines what kind of data will the table contain due to the multitenancy functionality
    • System only: Only system records can be inserted into this table (AD_CLIENT_ID=0, AD_ORG_ID=0), for example AD_TABLE.
    • System/Client: System or client specific records can be inserted here (AD_CLIENT_ID=anything, AD_ORG_ID=0), for example AD_ROLE
    • Organization: Only client and organization specific data can be inserted into this table (AD_CLIENT_ID<>0, AD_ORG_ID<>0), for example C_INVOICE
    • Client/Organization: Only client specific data can be inserted here, however, it can belong to a specific organizations within that client or be shared among all (AD_CLIENT_ID<>0, AD_ORG_ID=anything), for example C_BPARTNER
    • All: Any combination of AD_CLIENT_ID and AD_ORG_ID can be inserted into this table

- Cũng trong cửa sổ trên bạn nhấn nút Create columns from DB  --> Bạn nhấn OK và bảng mới tạo sẽ được đăng ký và tự động cập nhật các cột

- Chuyển sang tab Columns để xem tất cả các cột (để biết thêm chi tiết xem bảng mô tả AD_Column) vừa được tạo ra trong cơ sở dữ liệu. Bạn có thể bổ sung thay đổi các thuộc tính của mỗi cột. Mỗi cột được gán một tham chiếu (trong đó xác định kiểu dữ liệu) tùy thuộc vào tên của nó và loại dữ liệu của nó.

   Chạy quá trình Synchronize Terminology ( bằng cách Application Dictionary || Synchronize Terminology). Quá trình này sẽ cố gắng để tìm thấy một thành phần ứng dụng hiện tại (trong module hiện đang phát triển) và như thế label, help và description nếu không tìm thấy, một cái mới được tạo ra.
 
   Mỗi bảng phải có ít nhất một cột đánh dấu dùng làm khóa. Các giá trị trong các khóa này dùng để phân biệt giữa các bộ dữ liệu nên nó không trùng nhau. Những khóa này cũng sẽ được sử dụng để xây dựng danh sách record.

   Hầu hết các cột trong ví dụ EP_SALARY của chúng ta sẽ được tự động phát hiện chính xác, tuy nhiên, một số cần sửa đổi:
  • Amount: Reference = Amount, Length = 10
  • C_BPartner_ID: Reference = Search, Reference Search Key = Business Partner, Length = 32, Link To Parent Column = Y
  • Valid From: Identifier = Y
  • Amount: Identifier = Y
-----------------------------------------------------------------------------------------
Bây giờ bạn đã tạo và đăng ký thành công một bảng mới trong Openbravo Tài liệu tham khảo:
http://wiki.openbravo.com/wiki/ERP/2.50/Developers_Guide/How_To_Create_a_Table

0 Nhận xét:

Đăng nhận xét

Rất mong các ý kiến của các bạn khi đọc bài viết này !