TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH HÓA ĐƠN ĐIỆN TỬ TRÊN .NET CORE Công ty thực tập : LBC international Người phụ trách : Nguyễn Tha
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH HÓA ĐƠN ĐIỆN TỬ
TRÊN NET CORE
Công ty thực tập : LBC international Người phụ trách : Nguyễn Thanh Cường Thực tập sinh : 16520199 - Nguyễn Tiến Đạt
TP Hồ Chí Minh, tháng 12 năm 2020
Trang 2Nguyễn Tiến Đạt
1
LỜI MỞ ĐẦU
Ngày nay, ngành kỹ thuật phần mềm là một bộ phận không thể thiếu của ngành công nghiệp phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngành kỹ thuật phần mềm đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tin thế giới, cả về phần cứng và phần mềm
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ Ngành công nghiệp non trẻ này đã và đang phát triển mạnh mẽ, để hòa nhập với những công ty hàng đầu về game trên thế giới Bên cạnh những công ty phát triển phần mềm trẻ tuổi trong nước, những công ty phần mềm khác trên thế giới (như LBC) cũng gia nhập vào thị trường Việt Nam, góp phần rất lớn vào sự phát triển tích cực của ngành phát triển phần mềm Việt
Ngành phát triển phần mềm được sinh ra là do nhu cầu của mọi người bằng những thiết bị công nghệ mới nhất Và cũng chính mọi người sẽ là nguồn nhân lực quan trọng cho việc phát triển của ngành phần mềm sau này Vì lý do này, em quyết định chọn lập trình phần mềm làm định hướng cho việc học tập của mình
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như muốn được tham gia làm phần mềm (Web) trong một môi trường chuyên nghiệp, em có dự định là
sẽ thực tập trong kì này Vì vậy, em quyết định chọn LBC international - một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này
Trang 3Nguyễn Tiến Đạt
2
LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Công ty LBC international đã tạo điều kiện cho em có cơ hội được thực tập tại công ty
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer, nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được một backend phục vụ cho Retail Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều thời gian,công sức để hướng dẫn chúng em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Nguyễn Thanh Cường, đã training NET core, hướng dẫn, giúp đỡ cho chúng em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm quen với môi trường mới, hướng dẫn các quy trình nghiệp vụ trong hệ thống Retails; Cảm ơn anh Long đã hướng dẫn giúp em giải đáp những khó khăn trong quá trình lập trình
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện
em làm bài báo cáo này
Nguyễn Tiến Đạt TpHCM, 17/12/2020
Trang 4Nguyễn Tiến Đạt
3
NHẬN XÉT CỦA KHOA
Trang 5Nguyễn Tiến Đạt
4
MỤC LỤC
1 Giới thiệu công ty LBC international 6 2 Sản phẩm của công ty 6 2.1 Các công cụ làm việc 7 2.2 Tìm hiểu ngôn ngữ C# nâng cao 7 2.3 Lập trình EInvoice với BKAV einvoice: 8 2.4 Lập trình trên Net
Core 10 2.5 Thực hiện project 11 2.6 Lịch làm việc 11 3: Chi tiết về project 13 3.1 Giới thiệu về Services 13 3.2 Front-End: 13 3.3 Thực hiện 14 3.4 Kế hoạch 14 TÀI LIỆU THAM KHẢO 16 TỔNG
KẾT 17
Trang 6Nguyễn Tiến Đạt
5
Chương 1: Giới thiêu công ty thực tập
1 Giới thiệu công ty LBC international
Là một đội ngũ năng động bao gồm các chuyên gia am hiểu về công nghệ lẫn thị trường bán lẻ Chúng tôi hỗ trợ tối ưu và cải tiến các nền tảng quản lý bán lẻ để đáp ứng với nhu cầu phát triển của doanh nghiệp và thị trường
Với hơn 10 năm kinh nghiệm làm việc với Retail Pro và hiện là đối tác chính thức của
họ tại thị trường Việt Nam, công ty không ngừng nỗ lực để giúp khách hàng tạo ra nhiều giá trị hơn bằng cách tối ưu hoá quy trình kinh doanh thông qua việc ứng dụng công nghệ
2 Sản phẩm của công ty
Retail Pro Prism - Giải pháp quản lý bán lẻ toàn diện dành cho các lĩnh vực đặc thù Retail Pro Prism là thế hệ tiếp theo của phần mềm quản lý bán lẻ thông minh do Retail Pro -nhà cung cấp giải pháp quản lý bán lẻ hàng đầu thế giới*- phát triển, với đầy đủ các phân hệ chức năng cho phép xử lý khối lượng công việc cho cả hệ thống
Trang 7(*) kết quả được công bố bởi tập đoàn nghiên cứu toàn cầu về công nghệ IHL vào tháng 11/2019
Nguyễn Tiến Đạt
6
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Tích hợp hóa đơn điện tử BKAV vào công nghệ NET core” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về quy trình bán lẻ đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển ứng dụng bán lẻ chuyên nghiệp
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triên (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công
ty
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…
Kết quả : Hiểu thêm về công ty LBC Int, quá trình thành lập và phát triển Có thêm các kỹ
năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Các công cụ làm việc
Thời gian : 4 ngày
Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc Trong thời
Trang 8gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các công cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như Microsoft Team - sử dụng trong làm việc nhóm, VMWare– Máy ảo với mục đích setup nhanh hơn, Notepad ++ - một chương trình soạn thảo văn bản rất hữu ích và phổ biến với lập trình viên, Retails Pro Prism ứng dụng bán lẻ của công ty, VisualStudio,…
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên
Kết quả : Lập trình sử dụng các công cụ miễn phí, giúp dễ dàng kết hợp các công cụ với
nhau, so với việc dung các IDE
2.2 Tìm hiểu ngôn ngữ C# nâng cao
Thời gian : 5 ngày (1 tuần)
Nguyễn Tiến Đạt
7
Nội dung : Được training về các kỹ thuật C# nâng cao, những kiến thức quan trọng cho
việc tối ưu trên NET core
- Lập trình hướng đối tượng
Các kiến thức cơ bản về lập trình hướng đối tượng như khái niêm, các đặc tính như tính kế thừa, tính đóng gói, tính ảo hóa, tính đa hình Ngoài ra, thực tập sinh còn được hướng dẫn về cách thiết kế lớp cho các đối tượng
- Con trỏ :
Con trỏ là môt phần rất quan trọng trong lập trình game, vì cần phải sử dụng con trỏ
để cấp phát động, truyền tham số qua lại các hàm, các lớp
- Quản lý code
Thực tập sinh sẽ được hướng dẫn về cách code sao cho dễ bảo trì, dễ đọc hiểu, gọn và sạch đẹp
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Trang 9Kết quả :
- Nâng cao kỹ năng lập trình với ngôn ngữ C#
- Có được những kiến thức quan trọng cho việc lập trình Backend sau này - Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúng chuẩn, dễ đọc, dễ hiểu
2.3 Lập trình EInvoice với BKAV einvoice:
Nội dung: Các kiến thức cơ bản về EInvoice để tạo một einvoice đơn giản: -
Khái niệm cơ bản về hóa đơn điện tử
Theo khoản 1 Điều 3 trong Thông tư số 32/2011/TT-BTC ngày 14/03/2011 của Bộ Tài Chính thì:
Hóa đơn điện tử là tập hợp thông điệp dữ liệu về bán hàng hoá, cung ứng dịch vụ được tạo, lập, gửi, nhận, lưu trữ quản lý bằng phương tiện điện tử
Hóa đơn điện tử được khởi tạo, lập, xử lý trên hệ thống máy tính của tổ chức đã được cấp mã số thuế khi bán hàng hóa, dịch vụ và được lưu trữ trên máy tính của các bên theo quy định của pháp luật về giao dịch điện tử
Nguyễn Tiến Đạt
8 Hóa đơn điện tử gồm các loại: hóa đơn xuất khẩu, hóa đơn giá trị gia tăng, hóa đơn bán hàng, hóa đơn khác gồm: tcm, vé, thẻ, phiếu thu tiền bảo hiểm,…; phiếu thu tiền cước vận chuyển hàng không, chứng từ thu cước phí vận tài quốc tế, chứng từ thu phí dịch vụ ngân hàng…, hình thức và nội dung được lập theo thông lệ quốc lế và các quy định của pháp luật có liên quan
Trang 10Hóa đơn điện tử đảm bảo nguyên tắc: xác định được số hóa đơn theo nguyên tắc liên tục và trình tự thời gian, mỗi số hóa đơn đảm bảo chỉ được lập và sử dịnh một lần duy nhất
- SOAP:
SOAP dựa hoàn toàn vào XML để cũng cấp các services truyền tin Microsoft ban đầu phát triển SOAP để thay thế cho các công nghệ cũ hơn không hoạt động tốt trên Internet như Distributed Component Object Model (DCOM) and Common Object Request Broker Architecture (CORBA) Những công nghệ này không thành công vì chúng dựa vào truyền tin nhị phân, cách truyền tin XML mà SOAP sử dụng làm việc tốt hơn qua Internet
XML được sử dụng để tạo ra các requests và nhận responses trong SOAP, nó có thể trở nên cực kỳ phức tạp Trong một số ngôn ngữ lập trình, bạn cần phải xây dựng các requests đó bằng tay, điều này trở nên mơ hồ vì SOAP không dung nạp được các lỗi Tuy nhiên, một vài ngôn ngữ khác có thể sử dụng các phím tắt mà SOAP cung cấp;
Có thể giúp bạn giảm bớt effort cần thiết để tạo request và phân tích responses Thực
tế, khi làm việc với NET, bạn thậm chí chưa bao giờ gặp đến XML
- Security
base64 là phương thức convert dạng mã hóa 2 chiều từ binary sang string để có thể gửi đi được trong network một cách dễ dàng Các binary lúc này sẽ được thể hiện bằng các ký tự mã ASCII
- Tăng tốc độ tải
Zip các Object của request giúp tăng tốc độ tải của hệ thống
Thực hiện :
Nguyễn Tiến Đạt
Trang 11- Tham gia đầy đủ các buổi training
- Làm các bài tập thực hành như tạo hóa đơn điện tử đơn giản, …
- Tìm kiếm tài liệu trên mạng để tìm hiểu thêm
Kết quả :
- Hiểu được những khái niệm cơ bản trong tạo lập hóa đơn điện tử
- Hiểu được việc quan trọng của Security trong việc gửi dữ liệu
2.4 Lập trình trên Net Core
Nội dung : Các kỹ thuật tạo ra một hóa đơn điện tử, sử dụng BKAV eHoaDon trong Net
Core
Định nghĩa về Net Core:
- ASP.NET Core là gì Nó là một open-source mới và framework đa nền tảng (cross-platform) cho việc xây dựng những ứng dụng hiện tại dựa trên kết nối đám mây, giống như web apps, IoT và backend cho mobile
- Ứng dụng ASP.NET Core có thể chạy trên NET Core hoặc trên phiên bản đầy đủ của .NET Framework Nó được thiết kế để cung cấp và tối ưu development framework cho những dụng cái mà được triển khai trên đám mây (cloud) hoặc chạy on-promise
- Nó bao gồm các thành phần theo hướng module nhằm tối thiểu tài nguyên và chi phí phát triển, như vậy bạn giữ lại được sự mềm dẻo trong việc xây dựng giải pháp của bạn Bạn có thể phát triển và chạy những ứng dụng ASP.NET Core đa nền tảng trên Windows, Mac và Linux.Tạo ứng dụng Android:
Được các trainer hướng dẫn tạo ra một ứng dụng cơ bản, cấu hình quyền truy cập cho android, cách sử dụng các công cụ để biên dịch, chạy android trên máy ảo trên PC
- Lập trình tạo lập và quản lý hóa đơn điện tử bằng C#:
Để có thể lập trình hóa đơn điện tử trên C# và đưa lên BKAV eHoaDon, lập trình viên phải hiểu được cách Retails Pro Prism hoạt động, sau đó hiểu được luồng hoạt động của BKAV ehoadon để đẩy dữ liệu lên Quá trình này mất rất nhiều bước như xử lý số liệu, bảo mật dữ liệu, tối ưu tốc độ tải lên
Thực hiện :
- Tham gia đầy đủ các buổi training
Trang 12Nguyễn Tiến Đạt
10
- Tạo ra một Service để tạo hóa đơn lưu vào hệ thống và đẩy lên BKAV ehoadon Kết quả:
- Đã có thể tạo ra Service để tạo hóa đơn lưu vào hệ thống và đẩy lên BKAV ehoadon 2.5
Thực hiện project
Sau ba tháng được training và thực hành, thực tập sinh đã nắm được những kiến thức cơ bản
về C#, BKAV eHoaDon, Net Core Trong tháng thứ hai và ba, trainer đã hướng dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project ứng dụng tạo ehoadon cho hệ thống công ty cung cấp cho khách hàng
Chi tiết đồ án sẽ được nói ở phần sau
2.6 Lịch làm việc
Tuần Công việc Người hướng dẫn Mức
độ hoàn thành
Nhận xét của người hướng dẫn
1 - Tìm hiểu về công ty,
cách tổ chức của công ty
- Làm quen với các công cụ làm việc trong công ty
- Học cách trao đổi, làm việc qua email
Chị Phạm Thanh Bình
2 - Tìm hiểu ngôn ngữ
lập trình C# nâng cao
- Thực hành C#
- Làm bài test C#
Anh Nguyễn Thanh Cường
ehoadon
- Thực hành một số luồng hoạt động
cơ bản
Anh Nguyễn Văn
Nguyễn Thanh Cường
Trang 134 - Tìm hiểu về Net
Core
- Thực hành tạo một
Service .Net Core
cơ bản
Anh Nguyễn Thanh Cường
Nguyễn Tiến Đạt
11
5 Giai đoạn Alpha:
- Lên kế hoạch
- Viết Service tạo hóa
đơn điện tử cho hệ
thống của mình
- Tìm hiểu các quy
trình nghiệp vụ
Anh Nguyễn Thanh Cường
6 Giai đoạn Alpha(tiếp): -
Viết code để đảm bảo
tính bảo mật dữ liệu
- Viết code Zip các
object để tăng tốc
độ tải
Anh Nguyễn Thanh Cường
7 Giai đoạn Beta:
- Viết Services tạo
ehoadon trên Bkav
- Viết Services tự động
tạo hóa đơn trên Bkav khi hệ thống tạo hóa đơn mới
Anh Nguyễn Thanh Cường
Trang 148 Giai đoạn Beta và giai
đoạn kết thúc, báo cáo :
- Viết các tính năng khác của ehoadon như hóa đơn giảm, hóa đơn giá trị gia tăng
- Tự tạo hóa đơn cuối ngày
- Fix bug backend, fix frontend
- Báo cáo cuối đợt thực tập
Anh Nguyễn Thanh Cường
Nguyễn Tiến Đạt
12
3: Chi tiết về project
3.1 Giới thiệu về Services
Services có chức năng lấy các hóa đơn và chia chúng theo trạng thái: Đã in hết mặt hàng trong hóa đơn, Chưa in hết, Chưa in mặt hàng nào Front-end chia các hóa đơn thành các màu theo trạng thái Sau đó người dùng chọn hóa đơn muốn in ehoadon, chọn các mặt hàng muốn in ra hóa đơn Cuối ngày những mặt hàng nào chưa được in ra và các mặt hàng đổi trả
sẽ được gom lại và in ra
1.1 Các Services
Get bills Today Lấy tất cả các hóa đơn
trong ngày
100%
Trang 15Create EInvoice Tạo hóa đơn điện tử với
những mặt hàng đã chọn
100%
Create EInvoice Sale
End Of Day
Tạo hóa đơn gồm tất cả các mặt hàng bán chưa được in trong ngày
90%
Create EInvoice Return
End Of Day
Tạo hóa đơn gồm tất cả các mặt hàng đổi trả trong ngày
100%
Create EInvoice Sale
By Day
Tạo hóa đơn gồm tất cả các mặt hàng bán chưa được in theo ngày
100%
Create EInvoice Return
By Day
Tạo hóa đơn gồm tất cả các mặt hàng đổi trả theo ngày
100%
3.2 Front-End:
Mô tả:
Là test các Service được tạo ra, được viết bằng HTML + CSS + JS Chia các hóa đơn bằng màu theo trạng thái : Vàng (đã in một ít), Trắng (đã in hết), Xanh (chưa in) Hiển
Nguyễn Tiến Đạt
13 thị các mặt hàng của hóa đơn được chọn và hiển thị màu theo trạng thái : Đỏ (hàng đổi trả), Trắng (đã in), Xanh (chưa in) Sử dụng AJAX để hiển thị nhanh mà không cần lấy dữ liệu
Trang 16mới từ server
3.3 Thực hiện
- Nguyễn Tiến Đạt
Và sự giúp đỡ tận tình của team trainer LBC international
3.4 Kế hoạch
Giai đoạn Alpha:
- Tìm hiểu quy trình nghiệp vụ
- Tìm hiểu ứng dụng Retails Pro Prism
- Tìm hiểu cấu trúc dữ liệu của ứng dụng
- Tìm hiểu quy trình gửi request của BKAV ehoadon
- Tạo một service test việc tạo ehoadon
Kết quả :
- Tính năng trên đã được thực hiện
Giai đoạn Beta:
Nguyễn Tiến Đạt