Luận văn Ứng dụng erp adempiere trong quản lý hợp đồng

- 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ế.

pdf67 trang | Chia sẻ: lylyngoc | Lượt xem: 2847 | Lượt tải: 2download
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:

  • pdfLUẬN VĂN- ỨNG DỤNG ERP ADEMPIERE TRONG QUẢN LÝ HỢP ĐỒNG.pdf