- Tìm hiểu được vai trò, ý nghĩa của ERP trong doanh nghiệp.
- Tìm hiểu được một giải pháp ERP trong thực tế là Adempiere.
- Xây đựng và triển khai được ứng dụng về quản lý hợp đồng trên hệ nguồn mở
Adempiere trong thực tế.
67 trang |
Chia sẻ: lylyngoc | Lượt xem: 2832 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn Ứng dụng erp adempiere trong quản lý hợp đồng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
.................. 53
Phụ lục 02: Định nghĩa các cột bắt buộc có trong một table của hệ thống Adempiere. .... 55
Tài liệu tham khảo ..............................................................................................................
Danh sách các hình
Hình 1. Tổng quan hệ thống ERP và các thành phần chính ............................................... 3
Hình 2. Mô hình kiến trúc hệ thống Adempiere [8] ......................................................... 13
Hình 3. “Window, Tab & Field” của Adempiere ............................................................. 18
Hình 4. “Table & Column” của Adempiere..................................................................... 19
Hình 5. Tạo Menu của Adempiere .................................................................................. 20
Hình 6. Mô tả quy trình quản lý hợp đồng mua [4] ......................................................... 23
Hình 7. Mô hình Use Case mức cao-Quản lý hợp đồng mua [4]...................................... 24
Hình 8. Biểu đồ phân rã chức năng-Quản lý hợp đồng mua ............................................ 25
Hình 9. Mô hình ER-Quản lý hợp đồng mua ................................................................... 26
Hình 10. Tạo bảng VTT_BuyingContract ...................................................................... 28
Hình 11. Tạo cửa sổ “VTT Buying Contract” ................................................................. 29
Hình 12. Tạo tab VTT Buying Contract .......................................................................... 30
Hình 13. Tạo tab Payment Progress ................................................................................ 31
Hình 14. Tạo tab Supplying Product ............................................................................... 32
Hình 15. Tạo Menu “VTT Buying Contract” .................................................................. 33
Hình 16. Tạo mới các role xử lý workflow...................................................................... 34
Hình 17. Tạo workflow “Buying Contract” .................................................................... 35
Hình 18. Tạo node Start workflow “VTT Buying Contract” .......................................... 36
Hình 19. Tạo node Prepare workflow “VTT Buying Contract” ..................................... 37
Hình 20. Tạo node Approved workflow “VTT Buying Contract” .................................. 38
Hình 21. Tạo node Doc Complete workflow “VTT Buying Contract” ........................... 39
Hình 22. Tạo node Doc Auto workflow “VTT Buying Contract” ................................... 40
Hình 23. Tạo node Send Request workflow “VTT Buying Contract”.............................. 41
Hình 24. Tạo node Update Payment Progress ................................................................. 42
Hình 25. Tạo node Update Performance Progress ........................................................... 43
workflow “VTT Buying Contract” .................................................................................. 43
Hình 26. Hiển thị workflow “VTT Buying Contract” ...................................................... 44
Hình 27. Tạo Process cho workflow “VTT Buying Contract” ......................................... 45
Hình 28. Gắn process “Buying Contract Process” vào trường Doc Action ...................... 46
Hình 29. Mô tả quy trình quản lý hợp đồng bán [4] ........................................................ 47
Hình 30. Mô hình Use Case mức cao-Quản lý hợp đồng bán [4] ..................................... 48
Hình 31. Biểu đồ phân rã chức năng-Quản lý hợp đồng bán ........................................... 49
Hình 32. Mô hình ER-Quản lý hợp đồng bán .................................................................. 50
Bảng ký hiệu và chữ viết tắt
STT Ký hiệu viết tắt Viết đầy đủ
1 AD Adempiere
2 CNTT Công nghệ thông tin
3 ERP Enterprise Resource Planning
4 ER Entity Relationship
5 VTT Viettel Technology
1
Mở đầu
Trong vài năm trở lại đây, cùng với sự phát triển của CNTT, ERP đã nhanh chóng
trở thành giải pháp được nhiều công ty đầu tư thích đáng do những lợi ích to lớn mà nó
mang lại. ERP là một trong ba mũi nhọn có tính chất đột phá cho hướng đi của công nghệ
phần mềm Việt Nam. Với dự đoán về sự bùng nổ áp dụng ERP trong vòng hai tới ba năm
tới, đây sẽ là một thị trường lớn cho các doanh nghiệp phần mềm Việt Nam có sản phẩm
ERP.
Dựa vào nhu cầu về ứng dụng quản lý hợp đồng của công ty cổ phần công nghệ
Viettel (Viettel Technology), nội dung của khóa luận được hình thành và được tập trung
giải quyết.
Cấu trúc khóa luận gồm bốn chương:
Chương 1: Giới thiệu về ERP.
Chương 2: Phân hệ quản lý hợp đồng trong ERP và các yêu cầu của bài toán
quản lý hợp đồng ở Viettel Technology.
Chương 3: Kiến trúc hệ thống phần mềm nguồn mở ERP Adempiere
Chương 4: Phân tích và triển khai phân hệ quản lý hợp đồng trên Adempiere ở
Viettel Technology.
Phần Kết Luận tổng kết và tóm lược nội dung của khóa luận.
2
Chương 1: Giới thiệu về ERP
1.1 Khái niệm ERP
ERP là viết tắt của cụm từ “Enterprise Resource Planning” có thể dịch là “Hoạch
định tài nguyên doanh nghiệp”.Theo [1] ERP được định nghĩa là một hệ thống ứng dụng
đa phân hệ” (Multi Module Software Application) giúp tổ chức, doanh nghiệp quản lý các
nguồn lực và điều hành tác nghiệp . Bản chất ERP là một hệ thống tích hợp các phần mềm
ứng dụng đa phân hệ nhằm giúp tổ chức, doanh nghiệp quản lý các nguồn lực và tác
nghiệp. Giải pháp ERP cung cấp cho các nhà quản lý doanh nghiệp khả năng quản lý và
điều hành tài chính – kế toán, quản lý vật tư, quản lý sản xuất, quản lý kinh doanh và phân
phối sản phẩm, quản lý dự án, quản lý dịch vụ, quản lý khách hàng, quản lý nhân sự, các
công cụ dự báo và lập kế hoạch, báo cáo, .v.v. Thêm vào đó, như một đặc điểm rất quan
trọng mà các giải pháp ERP cung cấp cho các doanh nghiệp, là một hệ thống quản lý với
quy trình hiện đại theo chuẩn quốc tế, nhằm nâng cao khả năng quản lý điều hành doanh
nghiệp cho lãnh đạo cũng như tác nghiệp của các nhân viên.
3
1.2 Các thành phần chính của ERP
Một hệ thống ERP gồm năm thành phần chính được thể hiện trong hình
1.
Hình 1. Tổng quan hệ thống ERP và các thành phần chính
a. Quản lý nguồn lực tài chính (FRM-Finance Resource Management)
Là chức năng giúp doanh nghiệp theo dõi, quản lý được các nguồn lực tài chính, từ
đó đưa ra được các kế hoạch sản xuất kinh doanh phù hợp với tình hình tài chính của
doanh nghiệp.
b. Lập kế hoạch sản xuất (MRP-Manufacturing Resource Planning)
Đây là chức năng giúp nhà quản lý có thể lập kế hoạch sản xuất kinh doanh trước
cho doanh nghiệp dựa trên các nguồn lực tài chính, nhân lực…có sẵn nhằm tối ưu hóa các
nguồn lực này.
c. Quản lý quan hệ khách hàng (CRM-Customer Relationship Management)
Là chức năng giúp doanh nghiệp theo dõi, quản lý được thông tin về các đối tác,
khách hàng từ đó đưa ra những đối sách phù hợp với các đối tác, khách hàng này.
Hệ
thống
ERP
Quản lý
nguồn lực
tài chính
Quản lý
chuỗi
cung ứng
Quản lý
nhân sự
Lập kế
hoạch
sản xuất
Quản lý
quan hệ
khách
hàng
4
d. Quản lý chuỗi cung ứng (SCM-Supply Chain Management)
Là chức năng giúp doanh nghiệp tham gia vào quá trình mua bán.
e. Quản lý nhân sự (HRM-Human Resource Management)
Đây là một chức năng rất quan trọng, đảm bảo sử dụng nguồn nhân lực một cách
hiệu quả.
Trong mô hình ta thấy cả năm thành phần được tích hợp trong một hệ thống chung
là ERP System. Hệ thống ERP có tác dụng điều phối các hoạt động của cả năm thành
phần, mỗi thành phần có thể tương tác trực tiếp với ERP System hoặc có thể tương tác
gián tiếp với nhau thông qua một kênh chung là ERP System.
1.3 Các đặc điểm của ERP
Trong bài giới thiệu ERP của FAST [2] đã nêu năm đặc điểm của một hệ ERP do
Marcelino Tito Torres đưa ra:
- ERP là một hệ thống tích hợp quản trị sản xuất kinh doanh (Integrated Business
Operating System). Tích hợp-có nghĩa là mọi công đoạn, mọi người, mọi phòng ban chức
năng đều được liên kết, cộng tác với nhau trong một quá trình hoạt động sản xuất kinh
doanh thống nhất.
- ERP là một hệ thống do con người làm chủ với sự hỗ trợ của máy tính (People
System Supported by the Computer). Những cán bộ chức năng, nghiệp vụ mới là chính,
còn phần mềm và máy tính chỉ là hỗ trợ. Người sử dụng phải được đào tạo cẩn thận, tính
tích cực của từng nhân viên là các yếu tố quyết định.
- ERP là một hệ thống hoạt động theo quy tắc (Formal System), nghĩa là các hoạt
động phải tuân theo các quy tắc và các kế hoạch rõ ràng. Kế hoạch sản xuất kinh doanh
phải được lập ra theo năm, tháng, tuần; hệ thống sẽ không hoạt động khi không có kế
hoạch; các quy tắc, quy trình xử lý phải được quy định trước.
- ERP là hệ thống với các tránh nhiệm được xác định rõ (Defined Responsibilities).
Ai làm việc gì, trách nhiệm ra sao phải được xác định rõ trước.
- ERP là hệ thống liên kết giữa các phòng ban trong công ty (Communication among
Departments). Các phòng ban làm việc, trao đổi, cộng tác với nhau chứ không phải mỗi
phòng ban là một cát cứ.
5
ERP giúp loại bỏ các hệ thống phần mềm riêng lẻ ở các bộ phận trong một doanh
nghiệp: Tài chính, Nhân sự, Kinh Doanh, Sản xuất, Kho... và thay thế tất cả bằng một
chương trình phần mềm hợp nhất phân chia theo các phân hệ phần mềm khác nhau, tạo
nên một mối quan hệ thống nhất với nhau. Nhờ vậy kế toán có thể nhìn vào kho để xem
đơn hàng đã xuất cho khách hàng chưa. Phần mềm ERP rất linh động trong việc cài đặt
các phân hệ theo yêu cầu của doanh nghiệp. Các doanh nghiệp có thể yêu cầu cài đặt một
vài phân hệ mà doanh nghiệp cần, các phân hệ còn lại còn lại có thể cài đặt sau mà không
ảnh hưởng đến hệ thống. ERP còn có chế độ phân quyền người sử dụng linh động ngay
trên giao diện sử dụng người quản trị. Có chế độ bảo mật an toàn.
Những lợi ích của doanh nghiệp có được sau khi triển khai ERP:
- Loại bỏ các sai sót có thể xảy ra khi nhiều người cùng nhập một dữ liệu. Điều này
có thể hiểu được bởi khi áp dụng ERP thì cơ sở dữ liệu của tất cả các phòng ban trong
doanh nghiệp là chung, thống nhất với nhau. Việc hai người nhập cùng một dữ liệu nhưng
lại có sai lệch là không thể bởi các ràng buộc về dữ liệu.
- Tăng tốc độ dòng công việc. Không cần phải nói nhiều, rõ ràng tốc độ của một
nhân viên cầm chứng từ giấy chạy từ phòng này sang phòng khác không thể sánh với tốc
độ của chứng từ điện tử chạy trên mạng máy tính. ERP còn tăng tốc độ dòng công việc
bằng cách giải quyết các “nút cổ chai”. Giả sử một doanh nghiệp đã trang bị cục bộ được
các hệ thống phần mềm cho bộ phận kế toán và bán hàng, nhưng bộ phận kho chưa được
trang bị, thì bộ phận kho lúc này sẽ trở thành một “nút cổ chai” làm chậm lại năng suất
làm việc chung và bắt các bộ phận khác phải chờ. ERP với tính chất đồng bộ sẽ là công
cụ để giải quyết các “nút cổ chai” này.
Ngoài ra, nếu doanh nghiệp cần tính toán với dữ liệu, như từ đơn đặt hàng để tính ra
khối lượng nguyên vật liệu cần mua, hoặc đưa ra kế hoạch sản xuất tối ưu cho các đơn đặt
hàng, thì sẽ không có cách nào làm tay cho kịp nếu những tính toán này không được tích
hợp ngay trong hệ thống quản lý.
- Dữ liệu tập trung. Lợi ích của việc này rất rõ ràng, thay vì duy trì nhiều CSDL (cơ
sở dữ liệu) cục bộ với dữ liệu nhiều khi không trùng khớp, doanh nghiệp sẽ có một CSDL
thống nhất và tập trung. Một ví dụ dễ thấy của CSDL tập trung là cho phép thường xuyên
đưa ra các báo cáo chính xác và kịp thời cho lãnh đạo, khắc phục tình trạng chung trong
các doanh nghiệp, nhất là doanh nghiệp lớn và phức tạp như các công ty sản xuất lớn, các
6
tổng công ty, là chỉ có thể ra được báo cáo tài chính vài lần trong một năm và số liệu
thường chậm so với thực tế nhiều tuần hoặc thậm chí nhiều tháng.
Dữ liệu tập trung còn là tiền đề đầu tiên cho việc phân tích các dữ liệu theo nhiều
góc khác nhau (Data Mining), nhằm đưa ra những báo cáo mang tính trợ giúp quyết định
kinh doanh.
- Dễ dàng kiểm soát một CSDL và các quy trình nghiệp vụ tập trung sẽ giúp bạn
lãnh đạo dễ dàng áp dụng các cơ chế kiểm soát nội bộ. Chức năng “tìm vết” (Audit Track)
của hệ thống ERP cho phép nhanh chóng tìm ra nguồn gốc những bút toán cần kiểm tra,
cũng như những nhân viên liên quan đến đường đi của bút toán đó.
Tuy nhiên việc triển khai một hệ thống ERP cũng có những hạn chế nhất định
như:
- Chi phí triển khai ban đầu cao do phải đầu tư về phần cứng và hạ tầng, bản quyền
phần mềm ERP (với phần mềm ERP nguồn mở thì không cần mất kinh phí cho việc mua
bản quyền) và kinh phí dịch vụ triển khai. Trong ba cấu phần này thì kinh phí dịch vụ
triển khai chiếm nhiều nhất.
- Về thời gian triển khai, khá nhiều dự án ERP bị trễ hạn nghiệm thu do doanh
nghiệp không tập trung nguồn lực và không lường trước được sự phức tạp khi triển khai
hệ thống.
Việc triển khai ban đầu gặp vô vàn khó khăn nhiều khi dẫn đến sự đổ vỡ dự án, đi
sâu hơn nữa vào một quy trình nghiệp vụ điển hình của ERP thì nó không cho phép ta sửa
trực tiếp một lỗi nhập sai như các phần mềm kế toán thông thường khác mà nó yêu cầu
phải nhập vào một phép tính bù trừ so với lỗi sai đó.
- Về yếu tố con người, sự khó khăn tiên quyết khi áp dụng sơ khai ERP chính là thái
độ và sự nhìn nhận đúng đắn của lãnh đạo doanh nghiệp, đó là người có ảnh hưởng rất lớn
đến hiệu quả của dự án này, kế đến là việc nhận thức chưa đúng mức về ERP của cán bộ
nhân viên khác, trình độ tin học của mỗi người là khác nhau, sự chấp nhận thay đổi so với
cái cũ của mỗi người là khác nhau.
7
Chương 2: Phân hệ quản lý hợp đồng trong ERP và các yêu
của bài toán quản lý hợp đồng ở Viettel Technology
Quản lý hợp đồng là một phân hệ nằm trong thành phần quản lý chuỗi cung ứng của
hệ thống ERP. Quản lý hợp đồng là một phần quan trọng trong tổng thể của hệ thống
ERP, nó có chức năng như là xương sống đảm bảo cho mọi hoạt động sản xuất kinh
doanh của một doanh nghiệp.
2.1 Nhu cầu và ý nghĩa của việc quản lý hợp đồng
Trong hoạt động sản xuất kinh doanh, mỗi một doanh nghiệp đều thường xuyên phải
thực hiện các hoạt động thương mại dưới dạng các hợp đồng mua và bán. Các hợp đồng
mua/bán thường được thực hiện bởi một đơn vị nhưng lại có liên quan đến rất nhiều
phòng ban (tài chính, nhân sự, kế hoạch, kho…), và nhiều khâu quản lý trong doanh
nghiệp (sản xuất, bán hàng, quan hệ khách hàng…). Vì vậy, trong khi thực hiện hợp đồng
sẽ có thể nảy sinh các vấn đề như: sự không thống nhất giữa các phòng ban về tiến độ
thực hiện, thanh toán hợp đồng…; nảy sinh mâu thuẫn với khách hàng, đối tác trong việc
thực thi hợp đồng… Bài toán về quản lý các hợp đồng mua/bán được đặt ra.
Về mặt ý nghĩa, quản lý hợp đồng nhằm mục đích đảm bảo quá trình thực hiện hợp
đồng được diễn ra thống nhất, đảm bảo hợp đồng được thực hiện đúng như đã ký kết,
giảm thiểu các thiệt hại trong trường hợp phát sinh tranh chấp và có cơ sở để buộc các
bên thực hiện đúng trách nhiệm của mình trong hợp đồng.
Hơn nữa, việc quản lý tốt được các hợp đồng mua/bán, sẽ có tác động tích cực tới
các khâu quản lý khác trong doanh nghiệp như hoạt động sản xuất, kinh doanh, tài chính,
quan hệ khách hàng…
2.2 Yêu cầu bài toán về quản lý hợp đồng ở Công ty Viettel Technology
- Công ty cổ phần công nghệ Viettel (Viettel Technology) là một công ty con trực
thuộc Tập đoàn viễn thông quân đội Viettel, với các lĩnh vực hoạt động cụ thể là:
+ Cung cấp các giải pháp tích hợp hệ thống ICT (Information and communication
technologies) cho Tập đoàn Viettel và các doanh nghiệp bên ngoài theo hướng giải pháp
doanh nghiệp.
8
+ Tư vấn thiết kế và giải pháp tự động hoá toà nhà.
+ Quản lý dịch vụ thuê (Managed Service).
+ Cung cấp các dịch vụ tư vấn về tối ưu hóa mạng lưới, quy hoạch mạng lưới và
công nghệ.
+ Phát triển và cung cấp phần mềm.
+ Sản xuất và cung cấp thiết bị phần cứng.
- Là một đơn vị trực tiếp sản xuất kinh doanh trong lĩnh vực công nghệ, Viettel
Technology cũng giống như các doanh nghiệp khác, hoạt động sản xuất kinh doanh luôn
gắn liền với các hoạt động mua và bán. Vì vậy, bên cạnh việc quản lý các hoạt động sản
xuất, kinh doanh, tài chính…công ty cũng thấy được sự cần thiết của việc quản lý hợp
đồng.
Theo tài liệu đặc tả yêu cầu người dùng dự án ERP-VTT [4] các yêu cầu chức năng
của bài toán về quản lý hợp đồng của công ty được khảo sát và mô tả như dưới đây:
2.2.1 Yêu cầu chức năng quản lý hợp đồng mua
- :
Thông tin chung về hợp đồng
Thông tin về tiến độ thực hiện hợp đồng
Thông tin về tiến độ thanh toán
- Các thông tin quản lý chung về hợp đồng:
Theo tờ trình
Số hiệu hợp đồng
Ngày ký hợp đồng
Đối tác cung cấp. Theo dạng danh mục, đối tác có các thông tin sau:
o Tên
o Địa chỉ
o Số điện thoại
o Mã số thuế
o Tài khoản
o Mở tại
9
o Đại diện
o Chức vụ
Mặt hàng cung cấp
o Số thứ tự
o Mô tả thiết bị
o Đơn giá (VNĐ)
o Số lượng
o Thành tiền (VNĐ)
o Bảo hành (Tháng)
Trách nhiệm của các bên
o Trách nhiệm bên A
o Trách nhiệm bên B
Ngiệm thu và bàn giao hàng hóa
o Thời gian cung cấp và bàn giao
o Địa điểm bàn giao
o Nghiệm thu sản phẩm
Tổng giá trị hợp đồng và phương thức thanh toán
o Tổng giá trị hợp đồng
o Đơn vị tiền
o Hình thức hợp đồng
o Hình thức thanh toán
Thanh toán L/C (Letter of Credit)
Thanh toán trực tiếp
Tệp tin đính kèm
Ghi chú
- Các thông tin về tiến độ thực hiện hợp đồng:
Biên bản bàn giao và nghiệm thu
o Số biên bản
o Theo hợp đồng số
o Ngày bàn giao và nghiệm thu
o Đại diện bên A
Tên
10
Chức vụ
o Đại diện bên B
Tên
Chức vụ
o Nội dung bàn giao và nghiệm thu
Số thứ tự
Mô tả sản phẩm
Số lượng
Số máy
o Chất lượng
o Kết luận
Biên bản thanh lý
o Số
o Theo hợp đồng số
o Theo biên bản nghiệm thu số
o Theo hóa đơn số
o Ngày
o Giá trị
o Khối lượng
- Các thông tin về tiến độ thanh toán:
Tiến độ thanh toán
o Giai đoạn
o Thời gian dự kiến
o Số tiền dự kiến
o Thời gian phải trả
o Số tiền phải trả
o Thời gian đã trả
o Số tiền đã trả
o Số hóa đơn chứng từ
o Số tiền còn phải trả
o Ghi chú
11
2.2.2 Yêu cầu chức năng quản lý hợp đồng bán
- , bao gồm cả:
Thông tin chung về hợp đồng
Thông tin về tiến độ thực hiện hợp đồng
Thông tin về tiến độ thanh toán
- Các thông tin quản lý chung về hợp đồng:
Theo tờ trình
Mã hợp đồng
Số hiệu hợp đồng
Loại hợp đồng
Ngày ký hợp đồng
Thông tin về đơn vị thực hiện:
Đơn vị thực hiện
Người phụ trách chung (tên, email, điện thoại)
Người phụ trách trực tiếp (tên, email, điện thoại)
Thông tin về Khách hàng
Tên khách hàng
Người phụ trách (tên, email, điện thoại)
Giá trị hợp đồng
Kế hoạch thực hiện (bao gồm nhiều giai đoạn và hiển thị chi tiết kết quả của
từng giai đoạn)
Giai đoạn
Kết quả chi tiết
Tập tin đính kèm
Ghi chú
- Các thông tin về tiến độ thực hiện hợp đồng:
Biên bản nghiệm thu
o Ngày nghiệm thu
o Khối lượng nghiệm thu
12
o Giá trị nghiệm thu (Giá trị này được cộng dồn (luỹ kế) Giá trị của
trường. Giá trị thực hiện trong báo cáo)
Hóa đơn
o Ngày xuất
o Giá trị (Giá trị này được cộng dồn Giá trị xuất hóa đơn trong báo cáo)
o Số lượng
Biên bản quyết toán và thanh lý
o Ngày xuất
o Giá trị
o Khối lượng
Bảo lãnh thực hiện hợp đồng
o Giá trị bảo lãnh
o Thời hạn bảo lãnh: Từ ngày ….đến ngày….
o Giá trị ký quỹ
o Ngân hàng
o Tài khoản ký quỹ
Bảo lãnh bảo hành
o Giá trị bảo hành
o Thời hạn bảo hành: Từ ngày ….đến ngày….
o Giá trị ký quỹ
o Ngân hàng
o Tài khoản ký quỹ
- Các thông tin về tiến độ thanh toán:
Tình hình thanh toán: có hai kiểu thanh toán
o Thanh toán tạm ứng (Ngày thanh toán, Nợ tạm ứng, Giá trị thanh toán)
o Thanh toán theo tiến độ (Ngày thanh toán, Nợ thanh toán theo tiến độ, Giá
trị thanh toán, Cho biên bản nghiệm thu nào)
13
Chương 3: Kiến trúc hệ thống phần mềm nguồn mở ERP
Adempiere
Là một công ty chuyên về công nghệ, Viettel Technology đã thấy rõ được tầm quan
trọng của việc ứng dụng ERP trong doanh nghiệp, giải pháp ERP phù hợp được công ty
lựa chọn là hệ nguồn mở Adempiere.
3.1 Tổng quan về adempiere
ADempiere là một phần mềm mã nguồn mở, được phát triển trên nền nguồn mở
khác Compiere. Kiến trúc của hệ thống ADempiere dựa trên nền tảng Compiere
Application Dictionary hay AD Engine, nền tảng này phục vụ mô hình ba lớp Model-
View-Logic.
Mô hình tổng quan về hệ thống Adempiere được thể hiện như hình 2.
Hình 2. Mô hình kiến trúc hệ thống Adempiere [8]
14
Model Layer
Tại lớp Model, AD Engine quản lý tất cả các vấn đề liên quan đến các bảng, các
trường (như việc tạo mới, cập nhật, xóa) trong Database, các kiểu dữ liệu cũng như các
ràng buộc, xác thực của các trường này. Nhiệm vụ của AD Engine là chuẩn bị dữ liệu cho
lớp View để hiển thị ra màn hình chương trình.
Tất cả các bảng và các trường được xây dựng thông qua cửa sổ AD Table &
Column. Trong Adempiere, một trường có thể được tự động cập nhật thông tin từ các
trường khác thông qua các Callout (việc xây dựng Callout cho các trường được thực hiện
bằng cách mở rộng từ lớp CalloutEngine.java).
View layer
Lớp View có chức năng chủ yếu là hiển thị các trường thông tin do lớp Model cung
cấp ra màn hình chương trình. Bên cạnh đó, lớp view cũng cung cấp sẵn những chức năng
cơ bản để người dùng thao tác với dữ liệu (thêm, sửa, xóa) hay hỗ trợ việc tìm kiếm các
bản ghi.
Logic layer
Lớp Logic thực hiện các tác vụ có tính logic cho dữ liệu, các tác vụ mang tính
nghiệp vụ, các tác vụ liên quan đến tài chính...
3.2 Kiến trúc cơ bản của một ứng dụng trên Adempiere
Theo báo cáo của Phạm Anh Tuấn [7] kiến trúc cơ bản của một ứng dụng trên
Adempiere gồm các thành phần:
- Lớp PO
- Docaction
- Window
- Proccess
- Workflow
3.2.1 Lớp PO
Lớp PO là khái niệm thuộc tầng Model chứa trong gói
Base/src/org/compiere/model/PO.java
15
Là lớp quan trọng trong hệ thống, được ánh xạ vào tất cả các bảng dữ liệu trong cơ
sở dữ liệu dựa vào hai lớp con M, X và Interface I thông qua bảng AD_Table.
Lớp PO: định nghĩa hầu hết các thủ tục cần thiết để thao tác với một bảng dữ
liệu trong cơ sở dữ liệu như save(), delete()...
Interface I: Khai báo các biến để thao tác với tên cột, các hàm get, set để lấy
hoặc thiết đặt giá trị cho một cột. Interface I cần được implement bởi lớp X.
Lớp X: là lớp extends từ lớp PO và implement interface I. Trong lớp X sẽ cài
đặt cho các phương thức được khai báo trong interface I (interface I và lớp X có
thể được sinh ra bằng một công cụ có sẵn của hệ thống Adempiere. Không cần
phải viết hai lớp này).
Lớp M: là lớp extends lớp X. Khi các xử lý của lớp X là chưa đáp ứng được các
thao tác yêu cầu cần thiết, ta cần phải tạo thêm lớp M với quy tắc đặt tên nhất
định. (Quy tắc đặt tên lớp M: Với các bảng có tiền tố là một hoặc hai chữ cái thì
bỏ các chữ cái tiền tố này và ký tự “_” , thay vào đó là chữ M.
Ví dụ: bảng AD_Table --> MTable. Với bảng có tiền tố là ba chữ cái trở lên thi
bỏ các ký tự “_” và thêm M vào phía trước. VD: VTT_Abc--> MVTTAbc). Khi
tạo lớp M, có bốn hàm thông dụng nhất mà thường hay được override (từ lớp PO)
là các hàm:
o BeforeSave(). Hàm này sẽ được gọi trước khi thực hiện hàm ghi dữ liệu
Save(). Sử dụng BeforeSave() cho mục đích thay đổi, kiểm tra thông tin trước
khi ghi vào cơ sở dữ liệu. Ví dụ: Trong CSDL có ba trường là “Đơn giá”,
“Tổng tiền”, “Số lượng”, nhưng trong cửa sổ chỉ hiển thị hai trường là “Đơn
giá”, “Số lượng”, thì trước khi Save() viết BeforeSave() để tính giá trị cho
“Tổng tiền”.
o AfterSave(). Hàm này thực thi sau khi đã thực hiện Save(). Sử dụng
AfterSave() nếu dữ liệu khi ghi vào cơ sở dữ liệu tác động đến các thành phần
khác của hệ thống. Ví dụ như khi lưu dữ liệu ở các dòng chi tiết của một hóa
đơn, thì cần cập nhật tổng tiền ở phần tổng hợp.
o BeforeDelete(). Tương tự BeforeSave(), BeforeDelete() thực thi trước khi
thực sự xóa dữ liệu trong cơ sở dữ liệu. Có thể dùng hàm này để kiểm tra các
ràng buộc, xóa trước các trường trong các bảng khác có ràng buộc cha, con với
bảng đang thực hiện xóa...
16
o AfterDelete(). Hàm này thực thi sau khi xóa dữ liệu trên cơ sở dữ liệu.
*Chú ý:
- Việc ánh xạ các lớp M, X, PO vào các bảng trong cơ sở dữ liệu được thực hiện
trong phương thức getClass của lớp MTable.
- Khi một bảng trong DataBase không được tạo lớp X, M và Interface I tương ứng
thì hệ thống sẽ tự động gọi một lớp default để đảm bảo việc thực hiện các thao tác tối
thiểu như thêm, sửa, xóa... Lớp này là GenericPO.java (Chúng ta không cần phải quan
tâm đến lớp này).
Ví dụ: Với bảng M_InOut trong DataBase
Bảng này sẽ được ánh xạ với các lớp và Interface sau để thao tác trong hệ thống
(Các lớp này đều có trong gói base/org/compiere/model):
Interface : I_M_InOut.
public interface I_M_InOut
Class: X_M_InOut
public class X_M_InOut extends PO implements I_M_InOut
Class: MInOut extends PO
public class MInOut extends X_M_InOut implements DocAction
Trong lớp MInOut override hai hàm: BeforeSave() và AfterSave() để làm các thao
tác xử lý trước và sau khi ghi dữ liệu vào cơ sở dữ liệu.
3.2.2 DocAction
DocAction là khái niệm thuộc tầng logic chứa trong gói
base/org/compiere/proccess/DocAction.java
DocAction là một interface, trong này định nghĩa các trạng thái và hành động cho
một document như phụ lục 01.
Khi thao tác với lớp PO, thì là đề cập đến các vấn đề liên quan đến tính toán dữ liệu,
lưu trữ... Nhưng khi làm với DocAction là liên quan đến quy trình. Như các giấy tờ sẽ
17
được lưu chuyển từ phòng ban này sang phòng ban khác như thế nào, trạng thái của một
document là như thế nào...
Để thao tác với DocAction thì phải implement nó.
Ví dụ: Với lớp MInOut:
public class MInOut extends X_M_InOut implements DocAction
Đồng thời bảng trong CSDL cũng phải có các trường sau:
- DocAction
- DocStatus
- Proccessed
- Proccessing.
- C_Doctype_ID
- Posted (Sẽ cần trường này nếu liên quan đến hoạch toán).
DocAction cần được kích hoạt bằng nút nhấn. Sau khi kích hoạt sẽ chạy hàm
processIt() trong lớp M tương ứng. (Với bảng M_InOut thì là hàm trong lớp MInOut).
Hai hàm được implement đáng chú ý nhất là: prepareIt() và completeIt():
- Hàm prepareIt() thực hiện tất cả các yêu cầu, các tác vụ cần thiết trước khi
document được thực hiện quá trình complete. Hàm prepareIt() có thể được gọi nhiều lần
cho đến khi hàm completeIt() thực thi.
- Hàm completeIt() thực hiện quá trình “complete document”. Sau khi thực hiện,
trạng thái của document sẽ chuyển thành “complete” và hành động tiếp theo sẽ là “close”.
- Ngoài ra, hàm reActivateIT() là hàm có chức năng làm ngược lại những gì hai hàm
completeIt() và prepareIt() đã làm.
Một vấn đề quan trọng khác trong quy trình là liên quan đến hoạch toán. Khi người
dùng post dữ liệu để hoạch toán. Gói base/src/org/compiere/acct chứa các lớp sẽ xử lý về
vấn đề hoạch toán.
3.2.3 Window
Window là khái niệm thuộc tầng View.
18
Window là khái niệm phổ biến nhất trong Adempiere. Window là nơi người dùng
thao tác với dữ liệu, đồng thời cũng là nơi người phát triển hệ thống có thể làm việc để
trực tiếp mở rộng hệ thống. Tất cả các window đểu có một giao diện đồng nhất, và giao
diện này được tạo ra trong quá trình chạy ứng dụng (Runtime). Một window sẽ có giao
diện tương tự như sau:
Hình 3. “Window, Tab & Field” của Adempiere
Cấu trúc một window:
- Phần trên cùng là các menu.
- Tiếp theo là các button thực hiện các thao tác thông dụng: New, delete, search, các
nút dịch chuyển qua các record, close...
- Phần bên trái là các tab, một window có thể có nhiều tab. Mỗi tab tương ứng với
một bảng trong cơ sở dữ liệu.
19
- Phía bên phải là chi tiết trong một tab. Gồm các bản ghi (mổi bản ghi tương ứng
một dòng trong cơ sở dữ liệu).
- Mỗi bản ghi gồm nhiều field.
- Mỗi field là một cột dữ liệu trong cơ sở dữ liệu. Tuy nhiên trong cơ sở dữ liệu, một
bản ghi có thể có nhiều cột, nhưng trên window có thể chỉ được cấu hình để hiển thị một
số cột.
- Có thể chuyển từ việc hiển thị nhiều dòng (grid) thành hiển thị chi tiết từng bản ghi
bằng cách ấn nút Grid Toggle.
Các bước tạo mới một window:
- Dùng window Table&Column để tạo mới một bảng trong cơ sở dữ liệu.
Hình 4. “Table & Column” của Adempiere
- Chú ý: Tất cả các bảng (table) được tạo trong cơ sở dữ liệu của hệ thống
Adempiere đều phải có các cột được định nghĩa như phụ lục 02 (Chúng ta có thể click
20
nút “Copy column from Table” rồi chọn table khác để lấy toàn bộ các cột trong table đó.
VD table: Temp_temp).
- Sau khi tạo mới bảng, sử dụng window “Window, Tab & Field” để tạo mới
window.
- Trong tab “Tab”, tạo mới Tab và trỏ Tab này vào Table mới tạo.
- Sau đó chọn “Create Field” để tạo các Field từ bảng trong cơ sở dữ liệu và chọn
các Field sẽ được hiển thị trên màn hình.
- Chú ý: Một bảng có thể có nhiều tab. Một tab tương ứng với một bảng trong cơ sở
dữ liệu.
- Sau khi tạo Window, sử dụng window “Menu” để tạo menu trỏ tới window mới
tạo.
Hình 5. Tạo Menu của Adempiere
Các chú ý khi tạo window:
21
- Khi tạo mới Table, tạo trường có thuộc tính “Mandatory” là trường bắt buộc phải
nhập
- Trường có kiểu Table, Table Direct, Search là các trường sẽ lấy dữ liệu từ các bảng
khác.
- Trường có kiểu là ID (identification) thì bắt buộc tên là tên_bảng +”_ID”.
- Khi muốn tạo hai tab có quan hệ cha-con thì hai tab đó phải có mức (level) là i và
i+1. Table trong tap i+1 phải có cột ID của table tap level i. Trong tab i+1 phải khai báo
“link column” là tên của cột ID của table trong tab i.
3.2.4 Process
Process là khái niệm thuộc tầng View.
Process được khai báo trong window: Report & Process.
Process là một lớp java tuân theo một chuẩn nhất định, process được thực thi khi
một sự kiện sảy ra trong bản thân chương trình của hệ thống Adempiere (như một nút
được nhấn).
Một process luôn phải có hai phương thức là:
- prepare(): làm các thao tác để chuẩn bị cho việc thực thi process.
- doIt(): đoạn code thực thi chức năng của process.
Thông thường một process được gán với sự kiện một nút được nhấn.
3.2.5 WorkFlow
WorkFlow là khái niệm thuộc tầng Logic.
WorkFlow là một quy trình nghiệp vụ. Khi một lớp implement DocAction thì tức là
đã phải dựa theo một WorkFlow.
Có ba loại Workflow trong Adempiere là:
- General workflow: Cung cấp hướng dẫn từng bước để hoàn thành một công việc.
- Document process workflow: Bắt đầu khi processing bất kỳ document nào.
- Document value workflow.
3.3 Đánh giá về hệ thống Adempiere
Hiện nay, bên cạnh Adempiere chúng ta cũng thấy có rất nhiều giải pháp phần mềm
ERP khác như:
22
+ Nguồn mở: Openbravo, Compiere, Opentabs…
+ Nguồn đóng: SAP, Oracle, Microsoft Dynamics…
Tuy nhiên Adempiere được Viettel lựa chọn phát triển vì được cộng đồng đánh giá
[9] với nhiều ưu điểm sau:
- Adempiere là một phần mềm nguồn mở và hoàn toàn miễn phí.
- Hệ thống Adempiere phù hợp với những doanh nghiệp vừa và nhỏ.
- Adempiere hỗ trợ sử dụng đa ngôn ngữ (trong đó có tiếng Việt), nhiều loại tiền tệ
và nhiều kiểu đối tượng là doanh nghiệp. Vì vậy cho phép doanh nghiệp sử dụng
Adempiere có thể cộng tác được với nhiều công ty nằm trong cùng một chuỗi cung ứng
hoặc trong cùng một tập đoàn quốc gia hoặc xuyên quốc gia.
- Hệ thống Adempiere ổn định, hiệu năng cao, linh hoạt, dễ sử dụng, dễ dàng trong
việc bảo trì vả mở rộng các ứng dụng của sản phẩm.
- Adempiere có giao diện người dùng thân thiện, trực quan, được tổ chức tốt.
- Adempiere là sản phẩm được xây dựng bởi một cộng đồng phát triển nên
Adempiere thường xuyên được cải tiến và tích hợp thêm những tính năng mới từ các
thành viên tham gia phát triển trên toàn cầu.
- Adempiere được hỗ trợ bởi nhiều công cụ để kiểm thử, nâng cấp, chuyển đổi và
sửa lỗi hay cải tiến mã nguồn.
- Adempiere được ứng dụng các công cụ nguồn mở hiện đại trong việc phát triển.
Bên cạnh những ưu điểm thì hệ thống cũng có những nhược điểm như:
- Adempiere là một hệ thống có cấu trúc khá phức tạp nên việc cài đặt là tương đối
khó.
- Hiệu quả của hệ thống sẽ bị ảnh hưởng khi ta thêm chức năng mới vào cấu trúc
hiện tại.
23
Chương 4: Phân tích và triển khai phân hệ quản lý hợp đồng
trên Adempiere ở Viettel Technology
4.1 Phân tích và triển khai bài toán quản lý hợp đồng mua trên Adempiere
4.1.1 Quy trình xử lý
4.1.1.1 Quy trình xử lý
Quy trình xử lý bài toán quản lý hợp đồng mua được mô tả như dưới đây (Tài liệu
đặc tả yêu cầu người dùng dự án ERP-VTT [4]):
Hình 6. Mô tả quy trình quản lý hợp đồng mua [4]
4.1.1.2 Mô tả các bước trong quy trình
Theo tài liệu đặc tả yêu cầu người dùng dự án ERP-VTT [4] quy trình xử lý của
bài toán quản lý hợp đồng mua qua các bước:
- Bước 1: Đơn vị, phòng ban có nhu cầu lập hợp đồng.
- Bước 2: Phòng Đầu tư kiểm tra hợp đồng. Nếu đồng ý thì chuyển qua phòng Tài
chính, nếu không đề nghị sửa.
24
- Bước 3: Phòng Tài chính kiểm tra hợp đồng. Nếu đồng ý thì chuyển lên Ban giám
đốc, nếu không đề nghị sửa.
- 4: Sau khi được Ban giám đốc phê duyệt, phòng Đầu tư cập nhật tiến độ
thực hiện hợp đồng, đơn vị phòng ban và phòng Đầu tư thực hiện việc nhập kho.
- 5: Phòng Tài chính theo dõi và cập nhật tiến độ thanh toán của hợp đồng.
4.1.2 Mô tả Use Case mức cao
Mô hình Use Case mức cao của quy trình quản lý hợp đồng mua được mô trong tài
liệu đặc tả yêu cầu người dùng của dự án ERP-VTT [4] như hình 7.
Hình 7. Mô hình Use Case mức cao-Quản lý hợp đồng mua [4]
Mô hình Use Case của Quản lý hợp đồng mua có ba tác nhân (actor) là: Đơn vị sử
dụng, Phòng Đầu tư, Phòng Tài chính.
- Khi một Đơn vị sử dụng có nhu cầu, hệ thống sẽ lập một hợp đồng mua theo các
yêu cầu mà đơn vị đưa ra.
25
- Khi phòng Đầu tư muốn cập nhật thông tin của hợp đồng mua, hệ thống sẽ phải
hiển thị các thông tin về tiến độ thực hiện của hợp đồng, thông tin của việc nhập kho và
cho phép phòng Đầu tư có thể thực hiện việc cập nhật.
- Khi phòng Tài chính muốn cập nhật thông tin của hợp đồng mua, hệ thống sẽ phải
hiển thị các thông tin về tiến độ thanh toán của hợp đồng và cho phép phòng Tài chính có
thể thực hiện việc cập nhật.
- Trong quá trình thực hiện hợp đồng, Đơn vị sử dụng cũng thường xuyên thực hiện
việc nhập kho, hệ thống phải theo dõi và cập nhật được thông tin này để cung cấp cho
phòng Đầu tư và Đơn vị sử dụng khi cần.
4.1.3 Biểu đồ phân rã chức năng
Hình 8. Biểu đồ phân rã chức năng-Quản lý hợp đồng mua
Phân hệ quản lý hợp đồng mua gồm có ba chức năng chính là:
- Quản lý thông tin chung về hợp đồng.
- Quản lý thông tin về tiến độ thực hiện hợp đồng.
- Quản lý thông tin về tiến độ thanh toán.
Mỗi chức năng sẽ được gán cho một role riêng:
- Chức năng quản lý thông tin chung về hợp đồng được gán cho Đơn vị sử dụng.
- Chức năng quản lý thông tin về tiến độ thực hiện hợp đồng được gán cho phòng
Đầu tư.
- Chức năng quản lý thông tin về tiến độ thanh toán được gán cho phòng Tài chính.
Quản lý hợp đồng mua
Thông tin chung
về hợp đồng
Thông tin về tiến độ
thực hiện hợp đồng
Thông tin về tiến độ
thanh toán
26
4.1.4 Mô hình ER
Hình 9. Mô hình ER-Quản lý hợp đồng mua
Các thực thể cùng các thuộc tính trong mô hình:
Ban
giám
đốc
Hợp
đồng
Phòng
tài
chính
Phòng
đầu tư
Đơn
vị sử
dụng
Kho
Kiểm
tra
Phê
duyệt
Y/C
nhập
kho
Y/C
nhập
kho
Cập nhật
thực hiện
Khởi
tạo
Cập nhật
thanh toán
Kiểm
tra
(1,1)
(1,1)
(1,1)
(1,1)
(1,n)
(1,1)
(1,1)
(1,1)
(1,1)
(1,n)
(1,1)
(1,n)
(1,n)
(1,1)
(1,1)
(1,n)
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID EMPLOYEE_ID
CONTRACT_ID BPARTNER_ID DEPARTMENT_ID
DATE
CREATBY
TOTALAMOUNT
CURRENCY
27
- Hợp đồng: CONTRACT_ID, DEPARTMENT_ID, BPARTNER_ID, DATE,
CREATBY, TOTALAMOUNT, CURRENCY.
- Đơn vị sử dụng: DEPARTMENT_ID, EMPLOYEE_ID.
- Phòng đầu tư: DEPARTMENT_ID, EMPLOYEE_ID.
- Phòng tài chính: DEPARTMENT_ID, EMPLOYEE_ID.
- Ban giám đốc: DEPARTMENT_ID, EMPLOYEE_ID.
- Kho: DEPARTMENT_ID, EMPLOYEE_ID.
4.1.5 Triển khai trên Adempiere
Việc triển khai module quản lý hợp đồng mua được thực hiện dựa trên các thành
phần chính của Adempiere là window, workflow, process và các mô tả chức năng của bài
toán.
4.1.5.1 Xây dựng window cho quản lý hợp đồng mua
Tạo bảng VTT_BuyingContract trong cơ sở dữ liệu với các trường thông tin như
mô tả ở phần yêu cầu chức năng.
Sử dụng chức năng Table & Column để tạo bảng VTT_BuyingContract trong
Adempiere:
28
Hình 10. Tạo bảng VTT_BuyingContract
Sau khi điền các thông tin cần thiết ta nhấn nút Create Column From Table để
lấy các trường có trong bảng VTT_BuyingContract trong cơ sở dữ liệu. Tiếp đó, ta dùng
tab Column để lấy các trường muốn hiển thị.
Sử dụng chức năng Window, Tab & Field để tạo mới cửa sổ VTT Buying
Contract:
29
Hình 11. Tạo cửa sổ “VTT Buying Contract”
Sử dụng tab Tab để tạo mới các tab:
30
Hình 12. Tạo tab VTT Buying Contract
Tab này sẽ hiển thị các thông tin chung về hợp đồng
31
Hình 13. Tạo tab Payment Progress
Tab này sẽ hiển thị các thông tin về tiến độ thanh toán
32
Hình 14. Tạo tab Supplying Product
Tab này sẽ hiển thị các thông tin về sản phẩm.
Sau khi tạo xong window VTT Buying Contract ta chạy file GenerateModel.java
trong gói org.adempiere.util để tạo lớp I, lớp X cho window vừa mới tạo.
4.1.5.2 Gắn vào menu
Ta sử dụng chức năng Menu để gắn menu VTT Buying Contract vào hệ thống
33
Hình 15. Tạo Menu “VTT Buying Contract”
4.1.5.3 Tạo workflow cho chức năng quản lý hợp đồng mua
Đăng nhập vào Adempiere với tài khoản là SuperUser và Role là VTT admin.
Tạo mới các role để xử lý workflow bằng việc sử dụng chức năng Role để tạo mới
các role sau: VTT Investment Dept Staff, VTT Financial Dept Staff, VTT Investment
Dept Chief, VTT Financial Dept Chief .
34
Hình 16. Tạo mới các role xử lý workflow
Sử dụng chức năng Workflow để tạo mới workflow cho chức năng quản lý hợp
đồng mua
35
Hình 17. Tạo workflow “Buying Contract”
Tạo mới các node cho workflow:
+ Node Start
36
Hình 18. Tạo node Start workflow “VTT Buying Contract”
Node Start sẽ khởi đầu cho một workflow
+ Node Prepare
37
Hình 19. Tạo node Prepare workflow “VTT Buying Contract”
Node Prepare sẽ chuẩn bị thiết lập các thông tin cho document.
+ Node Approved (node này được gán cho role là trưởng phòng đầu tư- Investment
Dept Chief)
38
Hình 20. Tạo node Approved workflow “VTT Buying Contract”
+ Node Doc Complete
39
Hình 21. Tạo node Doc Complete workflow “VTT Buying Contract”
Node Doc Complete đánh dấu việc một document đã được điền đầy đủ thông tin.
+ Node Doc Auto
40
Hình 22. Tạo node Doc Auto workflow “VTT Buying Contract”
+ Node Send Request
41
Hình 23. Tạo node Send Request workflow “VTT Buying Contract”
Node Send Request sẽ là node gửi các yêu cầu về việc cập nhật tiến độ thực hiện
hay tiến độ thanh toán.
+ Node Update Payment Progress (node này được gán cho role phòng tài chính-
Financial Dept Staff).
42
Hình 24. Tạo node Update Payment Progress
Node này có chức năng cập nhật thông tin về tiến độ thanh toán.
+ Node Update Performance Progress (node này được gán cho role Phòng đầu tư-
Investment Dept Staff).
43
Hình 25. Tạo node Update Performance Progress
workflow “VTT Buying Contract”
Node này có chức năng cập nhật tiến độ thực hiện.
Chúng ta có thể xem và chỉnh sửa workflow thông qua chức năng Workflow Editor
44
Hình 26. Hiển thị workflow “VTT Buying Contract”
4.1.5.4 Gắn workflow với Process
- Sử dụng chức năng quản lý Report&Process để tạo ra một process cho workflow
Buying Contract và gắn workflow vào.
o Name: Buying Contract Process
o Data Access level: chọn all.
o Report type: Standard.
o Workflow: Chọn Buying Contract
o Các thông số khác đặt mặc định.
45
Hình 27. Tạo Process cho workflow “VTT Buying Contract”
- Sử dụng chức năng Quản lý Table, Column and Field để gắn process vào trường
DocAction
o Reference: Button.
o Process: Chọn Buying Contract Process
o Reference Key: _DocumentAction
o Default Logic: CO
o Updateable: Tích chọn
o Các thuộc tính khác đặt giá trị mặc định
46
Hình 28. Gắn process “Buying Contract Process” vào trường Doc Action
4.2 Phân tích và triển khai bài toán quản lý hợp đồng bán trên Adempiere
4.2.1 Mô tả quy trình xử lý
4.2.1.1 Quy trình xử lý
Quy trình xử lý bài toán quản lý hợp đồng bán được mô tả như dưới đây (Tài liệu
đặc tả yêu cầu người dùng dự án ERP-VTT [4]):
47
Hình 29. Mô tả quy trình quản lý hợp đồng bán [4]
4.2.1.2 Mô tả các bước trong quy trình
Theo tài liệu đặc tả yêu cầu người dùng dự án ERP-VTT [4] quy trình xử lý của bài
toán quản lý hợp đồng bán qua các bước:
- Bước 1: Đơn vị, phòng ban có nhu cầu lập hợp đồng.
- Bước 2: Phòng Đầu tư kiểm tra hợp đồng. Nếu đồng ý thì chuyển qua phòng Tài
chính, nếu không đề nghị sửa.
- Bước 3: Phòng Tài chính kiểm tra hợp đồng. Nếu đồng ý thì chuyển lên Ban giám
đốc, nếu không đề nghị sửa.
- 4: Sau khi được Ban giám đốc phê duyệt, phòng Đầu tư cập nhật tiến độ
thực hiện hợp đồng, đơn vị phòng ban và Phòng đầu tư thực hiện việc xuất kho.
- 5: Phòng tài chính theo dõi và cập nhật tiến độ thanh toán của hợp đồng.
4.2.2 Mô tả Use Case mức cao
Mô hình Use Case mức cao của quy trình quản lý hợp đồng bán được mô trong tài
liệu đặc tả yêu cầu người dùng của dự án ERP-VTT [4] như hình 30.
48
Hình 30. Mô hình Use Case mức cao-Quản lý hợp đồng bán [4]
Mô hình Use Case của Quản lý hợp đồng bán có ba tác nhân (actor) là: Đơn vị sử
dụng, Phòng Đầu tư, Phòng Tài chính.
- Khi một Đơn vị sử dụng có nhu cầu, hệ thống sẽ lập một hợp đồng bán theo các
yêu cầu mà Đơn vị sử dụng đưa ra.
- Khi phòng Đầu tư muốn cập nhật thông tin của hợp đồng bán, hệ thống sẽ phải
hiển thị các thông tin về tiến độ thực hiện của hợp đồng, thông tin của việc xuất kho và
cho phép phòng Đầu tư có thể thực hiện việc cập nhật.
- Khi phòng Tài chính muốn cập nhật thông tin của hợp đồng bán, hệ thống sẽ phải
hiển thị các thông tin về tiến độ thanh toán của hợp đồng và cho phép phòng Tài chính có
thể thực hiện việc cập nhật.
- Trong quá trình thực hiện hợp đồng, Đơn vị sử dụng cũng thường xuyên thực hiện
việc xuất kho, hệ thống phải theo dõi và cập nhật được thông tin này để cung cấp cho
phòng Đầu tư và Đơn vị sử dụng khi cần.
49
4.2.3 Biểu đồ phân rã chức năng
Hình 31. Biểu đồ phân rã chức năng-Quản lý hợp đồng bán
Phân hệ quản lý hợp đồng bán gồm có ba chức năng chính là:
- Quản lý thông tin chung về hợp đồng
- Quản lý thông tin về tiến độ thực hiện hợp đồng
- Quản lý thông tin về tiến độ thanh toán
Mỗi chức năng sẽ được gán cho một role riêng:
- Chức năng quản lý thông tin chung về hợp đồng được gán cho Đơn vị sử dụng.
- Chức năng quản lý thông tin về tiến độ thực hiện hợp đồng được gán cho phòng
Đầu tư.
- Chức năng quản lý thông tin về tiến độ thanh toán được gán cho phòng Tài chính.
Quản lý hợp đồng bán
Thông tin chung
về hợp đồng
Thông tin về tiến độ
thực hiện hợp đồng
Thông tin về tiến độ
thanh toán
50
4.1.4 Mô hình ER
Hình 32. Mô hình ER-Quản lý hợp đồng bán
Các thực thể cùng các thuộc tính trong mô hình:
- Hợp đồng: CONTRACT_ID, DEPARTMENT_ID, BPARTNER_ID, DATE,
CREATBY, TOTALAMOUNT, CURRENCY.
- Đơn vị sử dụng: DEPARTMENT_ID, EMPLOYEE_ID.
Ban
giám
đốc
Hợp
đồng
Phòng
tài
chính
Phòng
đầu tư
Đơn
vị sử
dụng
Kho
Kiểm
tra
Phê
duyệt
Y/C
xuất
Y/C
xuất
Cập nhật
thực hiện
Khởi
tạo
Cập nhật
thanh toán
Kiểm
tra
(1,1)
(1,1)
(1,1)
(1,1)
(1,n)
(1,1)
(1,1)
(1,1)
(1,1)
(1,n)
(1,1)
(1,n)
(1,n)
(1,1)
(1,1)
(1,n)
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID
EMPLOYEE_ID
DEPARTMENT_ID EMPLOYEE_ID
CONTRACT_ID BPARTNER_ID DEPARTMENT_ID
DATE
CREATBY
TOTALAMOUNT
CURRENCY
51
- Phòng đầu tư: DEPARTMENT_ID, EMPLOYEE_ID.
- Phòng tài chính: DEPARTMENT_ID, EMPLOYEE_ID.
- Ban giám đốc: DEPARTMENT_ID, EMPLOYEE_ID.
- Kho: DEPARTMENT_ID, EMPLOYEE_ID.
4.2.5 Triển khai trên Adempiere
Việc triển khai chức năng quản lý hợp đồng bán hoàn toàn tương tự như phần triển
khai với chức năng quản lý hợp đồng mua với việc xuất phát từ bảng
VTT_SellingContracct trong cơ sở dữ liệu.
4.3 Đánh giá hiệu quả làm việc của hệ thống
Qua quá trình chạy thử, kết quả là các chức năng như lập hợp đồng, cập nhật tiến độ
thực hiện, cập nhật tiến độ thanh toán đã thỏa mãn được những yêu cầu ban đầu đề ra.
Trong thực nghiệm, hệ thống đã có thể hỗ trợ hàng chục người sử dụng cùng một
lúc. Tuy nhiên, do cơ sở dữ liệu là tương đối lớn (vì phải xây dựng cơ sở dữ liệu chung
cho cả doanh nghiệp) cho nên việc kết nối cơ sở dữ liệu là hơi mất thời gian.
Đồng thời trong quá trình thử nghiệm đã cho thấy dữ liệu luôn đạt được sự đồng
nhất mặc dù đã có nhiều người dùng thuộc nhiều phòng ban cùng tác động lên dữ liệu.
Với tính năng workflow, các hoạt động mua/bán của doanh nghiệp đều đã được thực
hiện theo đúng các quy trình nghiệp vụ với thời gian thực hiện được rút ngắn, các bước
thực hiện đều được gán với vai trò của mỗi nhân viên, phòng ban nhất định nên việc kiểm
soát trách nhiệm là đơn giản.
52
Kết Luận
Nhu cầu về việc triển khai ERP trong các doanh nghiệp ngày càng cần thiết, trong
đó việc xây dựng module Quản lý hợp đồng là một phần quan trọng trong tổng thể hệ
thống ERP chịu ảnh hưởng riêng bởi đặc trưng sản xuất kinh doanh của từng doanh
nghiệp.
Khóa luận này đã giúp chúng ta tiếp cận gần hơn với một hệ thống ERP, thực hiện
việc xây dựng và triển khai phân hệ Quản lý hợp đồng trong thực tế.
Khóa luận đã đạt được những kết quả sau:
- Tìm hiểu được vai trò, ý nghĩa của ERP trong doanh nghiệp.
- Tìm hiểu được một giải pháp ERP trong thực tế là Adempiere.
- Xây đựng và triển khai được ứng dụng về quản lý hợp đồng trên hệ nguồn mở
Adempiere trong thực tế.
Do thời gian và kiến thức hạn chế của tác giả nên khóa luận không khỏi có những
thiếu sót. Những thiếu sót này cần được bổ sung và tiếp tục hoàn thiện.
53
Phụ lục 01: Các trạng thái và hành động cho một document.
/* Complete = CO */
public static final String ACTION_Complete = "CO";
/* Wait Complete = WC */
public static final String ACTION_WaitComplete = "WC";
/* Approve = AP */
public static final String ACTION_Approve = "AP";
/* Reject = RJ */
public static final String ACTION_Reject = "RJ";
/* Post = PO */
public static final String ACTION_Post = "PO";
/* Void = VO */
public static final String ACTION_Void = "VO";
/* Close = CL */
public static final String ACTION_Close = "CL";
/* Reverse - Correct = RC */
public static final String ACTION_Reverse_Correct = "RC";
/* Reverse - Accrual = RA */
public static final String ACTION_Reverse_Accrual = "RA";
/* ReActivate = RE */
public static final String ACTION_ReActivate = "RE";
/* = -- */
public static final String ACTION_None = "--";
/* Prepare = PR */
public static final String ACTION_Prepare = "PR";
54
/* Unlock = XL */
public static final String ACTION_Unlock = "XL";
/* Invalidate = IN */
public static final String ACTION_Invalidate = "IN";
/* ReOpen = OP */
public static final String ACTION_ReOpen = "OP";
/* Drafted = DR */
public static final String STATUS_Drafted = "DR";
/* Completed = CO */
public static final String STATUS_Completed = "CO";
/* Approved = AP */
public static final String STATUS_Approved = "AP";
/* Invalid = IN */
public static final String STATUS_Invalid = "IN";
/* Not Approved = NA */
public static final String STATUS_NotApproved = "NA";
/* Voided = VO */
public static final String STATUS_Voided = "VO";
/* Reversed = RE */
public static final String STATUS_Reversed = "RE";
/* Closed = CL */
public static final String STATUS_Closed = "CL";
/* Unknown = ?? */
public static final String STATUS_Unknown = "??";
/* In Progress = IP */
55
public static final String STATUS_InProgress = "IP";
/* Waiting Payment = WP */
public static final String STATUS_WaitingPayment = "WP";
/* Waiting Confirmation = WC */
-public static final String STATUS_WaitingConfirmation = "WC";
Phụ lục 02: Định nghĩa các cột bắt buộc có trong một table của hệ thống Adempiere.
AD_CLIENT_ID NUMERIC(10)NOT NULL,
AD_ORG_ID NUMERIC(10) NOT NULL,
ISACTIVE CHAR(1)DEFAULT 'Y' NOT NULL,
CREATED DATE DEFAULT NOW() NOT NULL,
CREATEDBY NUMERIC(10)NOT NULL,
UPDATED DATE DEFAULT NOW()sNOT NULL,
UPDATEDBY NUMERIC(10)NOT NULL,…
- Chú ý: phải đặt tên cột ID của bảng là tên_bảng + “_ID”.
56
Tài liệu tham khảo
Tiếng Việt:
[1] ErpVietNam,Erp là gì,
[2] Fast, Giới thiệu về ERP,
thiu-v-erp-fast&catid=111%3Agiai-phap-erp&lang=vi&limitstart=1.
[3] Wiki, Hoạch định tài nguyên doanh nghiệp,
ạch_định_tài_nguyên_doanh_nghiệp.
[4] Lê Thị Thanh Nhàn, “Tài liệu đặc tả yêu cầu người dùng dự án ERP-VTT”, Viettel
Technologies, 2009, Chương 3, Tr.20-26.
[5] TS.Đỗ Việt Nga, ThS.Đinh Kim Dung, “Giáo trình Phân tích, thiết kế, xây dựng,
quản lý các hệ thống thông tin”, Viện Công nghệ thông tin, 2004, Chương 3, Tr.43-51.
[6] Trần Đình Quế, Nguyễn Mạnh Sơn, “Phân tích và thiết kế hệ thống thông tin”, Học
viện công nghệ bưu chính viễn thông, 2007, Chương 3, Tr.48-57.
[7] Phạm Anh Tuấn, “Báo cáo phân tích hệ thống Adempiere”, Viettel Technologies,
2009, Phần 3, Tr.22-32.
Tiếng Anh:
[8] Application Dictionary,
[9] Adempiere-erpcrm,
Các file đính kèm theo tài liệu này:
- LUẬN VĂN- ỨNG DỤNG ERP ADEMPIERE TRONG QUẢN LÝ HỢP ĐỒNG.pdf